From a technology strategy standpoint, Pagero has chosen to go with the Java technology stack. In order to ensure high scalability, we have chosen not to utilize enterprise application servers for our services. Instead, we are building autonomous services deployed in a micro service architecture using Scala. Scala is a programming language that combines known object orientation paradigms and the very powerful concepts of functional programming.
When using a service based pattern to build applications, it is important to ensure reliable and fast communication between services. Our backend core is built around a redundant Rabbit MQ setup and using Google’s protobuf technology for efficient serialization of data between services.
Deployment wise, all applications made available in the private cloud from which our services are operated run on Linux in a micro service architecture. In order to ensure a tight version control of our applications and ensure continuous delivery for production and test environments, we have chosen to use DockerTM technology. DockerTM is an open source virtualization technology for lightweight deployment structures (i.e. running several containers in parallel on the same operating system). DockerTM containers isolate single software processes, network, user ids and mounted file systems from the others on a running Linux system. This caters for separation of duties between development/operation teams and the ability to secure services from malicious attacks. Because the system boundaries for our services are well defined, both functionally and physically (deployment wise), we provide for an excellent ability to scale individual services as needed.
It’s a technology race!