Image for post
Image for post

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 : 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…


Image for post
Image for post
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 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…


Image for post
Image for post
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…


Image for post
Image for post
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. …


Image for post
Image for post

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 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…


Image for post
Image for post

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. …


Image for post
Image for post

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

Image for post
Image for post

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


Image for post
Image for post

Maxim Melnikov on Unsplash

Concurrency has always been a problem in software development. As soon as you have several paths of execution, some part of your program may access the same resource at the same time… and problems happen at that particular moment.

In Java, we have several synchronization mechanisms that allow preventing problems to occur. When it comes to distributed workload, we are not working inside the same JVM and we may be confronted with the same dangers.

Imagine for instance that you have a cluster of servers that have to access a common resource. Let’s say for instance…


TL;DR; This post is the intro to a series that will explore multi-cloud serverless development in coding in Java.

What is serverless?

By far, it’s the new buzz word of the moment, hence this blog post! If we want to be more descriptive we would say that a common definition could be: an infrastructure that lets you build your application without managing any server and that is billed on a usage basis. This last part is important, it can be translated as: if you don’t use it, then you don’t pay for it.

This provides several advantages. First, you do not manage the…

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