Microservices are becoming the architecture style of choice of modern, large scale distributed systems. While microservices have typically been associated with container platforms like Docker, CoreOS or Kubernetes, there have been a gap in the market in terms of programming models and frameworks that allow developers to seamlessly implement microservices solutions.
Traditionally, the well-known microservices implementations have been associated with highly sophisticated engineering teams from internet giants like Netflix, LinkedIn or Uber that have the culture nad talent to assemble different open source technologies to provide a robust experience for developers authoring microservices solutions. The next phase in the evolution of microservices is provide platforms that enable those key building blocks and patters allowing mainstream developers implement robust microservices solutions. In recent months, the focus in the microservices space seems to be shifting from infrastructure to development interfaces.
What are Some of the Key Capabilities of Microservices Solutions?
As the theory about microservices evolves, we are discovering new and interesting capabilities that are relevant in microservices solutions. From the first generation of microservices implementations, there are a few capabilities that have become essential building blocks microservices solutions. Here is an initial list:
· Service Authoring: Development interfaces that abstract the core patterns of microservices solutions.
· Service Discovery: Infrastructure for dynamically publishing and discovery microservices in a specific domain. Technologies like Consul.io or Etcd have become popular choices in this area.
· Service Description: Metadata models for describing the capabilities of microservices. Technologies like Swagger or Thrift are good examples of these capabilities.
· Persistence: Microservices require isolated data persistence models to maintain its state. NOSQL databases are the technology of choice in this area.
· Messaging Middleware: Queuing, pubsub and other fundamental message exchange patterns should be enabled in microservices solutions. Technologies like RabbitMQ or Kafka are popular options in this area.
· Deployment Automation: Microservices technologies should abstract the process of packaging and deploying microservices in container technologies. Technologies like Kubernetes or Racher are a good choice in this domain.
· Others: API Gateways, messaging monitoring, testing are other relevant capabilities that should be considered in microservices solutions.
3 Microservices Development Platforms You Should Know About
The space for microservices development platforms is relatively new. However, already there have been major developments in this area including the first versions of some of the following platforms:
· Spring Cloud / Cloud Foundry: The combination of Spring Cloud and Cloud Foundry is a popular choice for the implementation of microservices solutions. Spring Cloud provides a robust framework that abstracts the core capabilities of microservices and it provides native integration with popular open source microservices technologies such as Netflix OSS. Cloud Foundry provides the core infrastructure building blocks for deploying and running microservices built with Spring Cloud.
· Lagom: Created by the authors of the popular Akka framework, Lagom is a microservices platforms that enables the implementation of microservices solutions. Lagom combines popular open source technologies like Akka, Cassandra, Kafka, etc in a simple programming model that abstract the implementation, deployment and runtime management of microservice solutions.
· Azure Service Fabric: With the release of the Azure Service Fabric, Microsoft becomes the first incumbent to enter the microservices development platform space. These new addition to the Azure platform, provides the infrastructure and programming model to author microservices solutions that can be deployed both on-premise or on the Azure platform. The Azure Service Fabric abstracts some of the key components of microservices solutions including discovery, description, messaging, persistence, etc.