Select
Continuous delivery Microservices platform Cloud migration Analytical data platform Cloud-native data platform

Many companies have begun moving off third-party monolithic products to new microservices architectures based on open source and cloud-native technologies. These architectures provide higher scalability and greater customization than the monolithic platforms. Continuous delivery, quicker updates, and easier testing are also among the improvements gained by moving to microservices.

However, building a new architecture brings new levels of complexity, requiring the orchestration of hundreds of small services and components. To reap the benefits of microservices without suffering from over-complexity, microservices architecture should be supported by a platform. Without one, there will be a loss of efficiency and stability, leading to high maintenance and development costs. The platform supports microservices development and management through all stages of the process, from build to production.

We have built blueprints for continuous delivery, deployment and run-time service management since 2008. Initially, we focused on building traditional deployment automation, and working with configuration management tools. While we became experts in these tools and techniques, we saw problems with sub-optimal application-to-infrastructure interfaces, as well as difficulties with achieving efficient configuration management. When public cloud became mature, we switched to immutable infrastructure and modern configuration management techniques that rely on the self-sufficiency of deployed systems, and which require little to no manual intervention.

We have helped clients of all sizes in a variety of different industries replatform to microservices and the cloud, and currently have hundreds of architects and engineers working on developing, deploying, managing and supporting container or VM-based microservices platforms for them. We have published a book based on our experiences that describes how to build continuous delivery and microservices platforms in the modern ecosystem with cloud, open source and automation tools.

A long history working with microservices
A microservices platform is a layer between infrastructure-as-a-service (cloud) and applications. It is different than a platform-as-a-service, because it doesn't involve the application of technology choices for databases, caches, messaging or middleware. The microservices platform's own technology stack is configured specifically for them.

Designing a high level architecture

SCHEME1.svg

Choosing a technology stack

A technology stack is determined by an application packaging mechanism, which has two options that allow it to achieve an immutable infrastructure:

  • Containers, in which Kubernetes is the standard management technology choice. Kubernetes comes in different offerings, including native cloud-managed, in-house deployed or with add-ons such as OpenShift. Less standard choices may include Docker Swarm, Mesos Marathon or proprietary cloud offerings.
  • VM images, in which the Hashicorp stack is the best technology option.

In both cases, additional technologies are required to implement a service mesh (Istio, Envoy, Linkerd), feature flags management and the continuous delivery process.

Developing with continuous integration

cont integr.svg

Since the microservices platform design starts with application packaging options, it naturally integrates with a continuous delivery platform and pipeline.

Technologies like Spinnaker may further improve environment management and simplify the process.

Code packaging

Code packaging

Produce self-contained Docker containers or VM images to enable a stable infrastructure.
Artifact repository

Artifact repository

Store and track versioned application artifacts that are ready for deployment.
Automatic deployment

Automatic deployment

Deploy and configure applications from packages of the required version with no manual intervention.
Service registry and discovery

Service registry and discovery

Automatically register dynamic application endpoints, and allow applications to find endpoints of dependencies.
Service mesh

Service mesh

Increase the flexibility of deployment, releases and configuration management.
Feature flag management

Feature flag management

Safely switch feature flags and change business configurations in run-time.
Run-time lifecycle management

Run-time lifecycle management

Increase application autonomy with processes like auto-scaling and self-healing.
Logging and monitoring

Logging and monitoring

Enable quick troubleshooting of issues, bugs and breaks, as soon as they appear.
Note: this blueprint can be alternatively implemented with Hashicorp stack based on VM images.
High level architecture
Container orchestration system
Performs containerization
Application framework and inversion control container for Java
Creates, changes, and improves infrastructure
Data center application scheduler
Containerization software built around Docker, managed by Kubernetes
Clustering and scheduling tool for Docker containers
Container orchestration platform
Connects, secures, controls, and observes services
Edge and service proxy for cloud applications
Proxy that provides service discovery, routing, failure handing, and visibility
Multi-cloud continuous delivery platform
Makes it easy to deploy, manage, scale containerized applications using Kubernetes
Cluster manager and orchestrations system for Docker containers
Manages Kubernetes environment
Container orchestration system
Performs containerization
Application framework and inversion control container for Java
Creates, changes, and improves infrastructure
Data center application scheduler
Containerization software built around Docker, managed by Kubernetes
Clustering and scheduling tool for Docker containers
Container orchestration platform
Connects, secures, controls, and observes services
Edge and service proxy for cloud applications
Proxy that provides service discovery, routing, failure handing, and visibility
Multi-cloud continuous delivery platform
Makes it easy to deploy, manage, scale containerized applications using Kubernetes
Cluster manager and orchestrations system for Docker containers
Manages Kubernetes environment

Schedule a free workshop with one of our architects to learn more

This field is requiredPlease enter your name
This field is requiredPlease enter your email
This field is requiredPlease enter company name