Picture by nikko macaspac on Unsplash

When Developers Meet Ops

You’ve built your Java application and deployed it on Kubernetes in your dev environment. Eventually, this app will go to production and you will experience real usage. And then new unexpected problems will come. Those problems can be due to a lot of reasons: too many users, memory leaks, race conditions that are hard to identify in the development phase

Of course, the first thing that you want to do is to troubleshoot and run a Root Cause Analysis to find the culprit. …


Shit Happens All The Time

Recent news reminded a lot of people that a disaster can occur in any datacenter: 3.6 million websites went down after a fire blew up a datacenter of the french hosting company OVH. Octave Klaba, the CEO of OVH, quickly asked his customers to execute their disaster recovery plans.

It’s not my job to design, build and manage data centers, so I won’t lecture OVH here (and not only because Octave and I attended the same university). The rule is the same for everyone: sometimes, something will break and you have to prepare for it.

So let’s take this…


What Is The Goal Here?

When deploying a Nuxeo application, we often have some parameters that differ from one environment to another. For instance, the SAML endpoint may be different between production and development. To address that problem there are different solutions:

  • specialize some parameters in nuxeo.conf: the configuration then becomes the responsibility of the ops team and every change needs to be communicated to them
  • having several Nuxeo templates, one per environment that contains a different configuration. The ops team needs to know which template to activate depending on the environment where they deploy.

In a cloud-native world, applications are shipped as containerz, and…


Don’t block the loop! Picture by Stephen Hateley on Unsplash

What Does It Mean To Generate A Zip Server Side?

One of my reflexes, when I try to do something I’ve never done before, is first to query Google to have an idea if someone already encountered the problem and also get a rough idea about the various strategies to solve my problem. When I query “ generate zip in java servlet”, we quickly end up on solutions that make use of the ZipOutStream and usually either store the result into an array of bytes (very bad solution) or wrap the servlet response with the ZIP output stream.

The first…


Picture by frank mckenna on Unsplash

Immutable Infrastructure

In the DevOps culture, you may often hear about immutable infrastructure. This describes an infrastructure where deployments are reproducible and immutable: if executed twice, it should give the same result. It is important because it guarantees that a given deployment leads to only one given state.

For instance, when the underlying infrastructure needs to be changed (think of a disk failure), it is easy to redeploy our application on a new machine. Another use is when we detect that the application has been compromised, we can just shut down the actual deployment, and run a new one. And finally, when…


Photo by AJ Yorio on Unsplash

Inception

While playing recently with serverless technologies and Java, it came to my mind a very stupid idea: could we run Nuxeo in a Lambda? Why would I want that?

There are numerous situations when you may need light access to the document repository, just to get a document and do something quickly with it. Imagine for instance an external workflow engine that just needs to pull and push some metadata when the process is evolving. …


Picture by Randy Fath on Unsplash

The Nuxeo Platform was designed from the beginning to be a Service Oriented Platform. We embraced SOA from the beginning and that’s one of the reason why it’s so easy to do calls like Framework.getService(MyService.class) from every part of the code in Nuxeo.

We definitely love doing pluggable services, and when we want to introduce a new feature, our DNA tells us: what extension point and what service can we provide? Throughout the years, even the runtime part of the platform has evolved and it’s now even easier to implement a new component.

In…


Picture by Kai Dahms on Unsplash

What Problem Are We Trying To Solve?

I used to be a frontend developer in the past. However, life and job made me switch to the backend side and now to the joy of deploying those applications in the cloud.

Nowadays, all frontend applications subscribed to the single page app paradigm, using various frameworks like React, Vue, Angular or TheLastVeryPopularJsToy. They all have in common that they are web applications: all code is HTML, Javascript, CSS, and static assets. As a result, to host this application you just need to serve the static resources. …


Paweł Czerwiński on Unsplash

In part1 and part2 of this series, we created a small web application and deployed it in AWS lambda.

In this third part, we will take the same JAX-RS application and deploy it in Google Cloud. For that purpose, we will use Google AppEngine and use Google Datastore as a storage mechanism for our Movie objects.

Google App Engine

Google App Engine appeared in April 2008, and as a result, is by far the first Serverless application infrastructure. It existed even before the Serverless word appeared for the first time.

As with most Serverless environments, GAE imposes some constraints…


In the first part of this series, we described the small CRUD API that we wanted to build. It ended up by creating a simple web application that can run in every servlet container and stores its data in Memory.

In this second part, we will adapt the application to make it runnable in AWS as a serverless application. For that purpose, we will use the SAM framework, adapt our web application for AWS Lambda and finally use DynamoDB as a storage mechanism.

The SAM Framework

One of the most difficult thing when developing a serverless application is to keep our application organized…

Damien Metzler

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store