Future of containers and microservices

Chanaka Fernando
Microservices Learning
4 min readMay 9, 2018

--

It’s all here. Microservices are real so do the container based deployments, service mesh implementations and serverless frameworks. They all came as concepts and internal projects of internet giants like Google, Lyft, Amazon and made it through to the enterprise eco systems. Container based deployments made it possible to optimize the resource utilization with proper isolation of application runtimes. This made the mircoservices style of application development a reality and allowed the developers to build efficient, reliable and highly distributed enterprise applications which can serve the demands of companies like Google, Uber and Amazon users.

Kubernetes made the infrastructure a more controlled and a reliable entity so that application developers don’t need to worry about intermittant failures of a part of your infrastructure. It made your data center a single computing entity on which you can deploy your applications with confidence. Cloud computing companies like Amazon, Microsoft and Google offers kubernetes as a service so that users can directly reap the benefits from the cloud.

All these technologies made once a really complicated component (server infrastructure) into a simple and reliable thing which application developers can rely on without bothering much. The next level of this development was the serverless frameworks where you don’t need to even think about the existence of your infrastructure (aka serverless). Rather you can write your business logic and hand it over to the cloud provider so that they will make it a network accessible endpoint or a function.

All these developments made your enterprise eco system a plethora of endpoints which you need to interconnect to provide meaningful services to your end customer. If you are implementing a microservices based architecture within your enterprise, you need to make sure that interservice communication is properly handled within the system. The concept of a service mesh is trying to solve this problem of inter-service communication through a data plane which makes data flows across microservices network and the control plane which defines and controls the wiring of these microservices.

That’s what we have in the enterprise. What’s next? The above mentioned technologies improved the reliability, scalability and efficiency of the resources. All those technologies made your enterprise more and more disaggregated or distributed. Now everything has become an endpoint and you need to interact with multiple of those to offerIt’s all here. Microservices are real so do the container based deployments, service mesh implementations and serverless frameworks. They all came as concepts and internal projects of internet giants like Google, Lyft, Amazon and made it through to the enterprise eco systems. Container based deployments made it possible to optimize the resource utilization with proper isolation of application runtimes. This made the mircoservices style of application development a reality and allowed the developers to build efficient, reliable and highly distributed enterprise applications which can serve the demands of companies like Google, Uber and Amazon users.

Kubernetes made the infrastructure a more controlled and a reliable entity so that application developers don’t need to worry about intermittant failures of a part of your infrastructure. It made your data center a single computing entity on which you can deploy your applications with confidence. Cloud computing companies like Amazon, Microsoft and Google offers kubernetes as a service so that users can directly reap the benefits from the cloud.

All these technologies made once a really complicated component (server infrastructure) into a simple and reliable thing which application developers can rely on without bothering much. The next level of this development was the serverless frameworks where you don’t need to even think about the existence of your infrastructure (aka serverless). Rather you can write your business logic and hand it over to the cloud provider so that they will make it a network accessible endpoint or a function.

All these developments made your enterprise eco system a plethora of endpoints which you need to interconnect to provide meaningful services to your end customer. If you are implementing a microservices based architecture within your enterprise, you need to make sure that interservice communication is properly handled within the system. The concept of a service mesh is trying to solve this problem of inter-service communication through a data plane which makes data flows across microservices network and the control plane which defines and controls the wiring of these microservices.

That’s what we have in the enterprise. What’s next? The above mentioned technologies improved the reliability, scalability and efficiency of the resources. All those technologies made your enterprise more and more dis-aggregated or distributed. Now everything has become an endpoint and you need to interact with multiple of those to offer a meaningful service to your customers. How do you build applications on top of this advanced system? Are you going back to a monolithic ESB or a Message Broker which runs all of your integration logic? It is not possible.

The next big thing is here!. Ballerina is a cloud native programming language which is built specifically to solve this problem. It comes with an intuitive programming syntax with built-in support for integration heavy use cases. Ballerina allows you to

  • Build integration (micro) services with minimum effort
  • Process data and events coming from existing systems and transform them naively without converting into canonical data formats
  • Handle endpoint failures with advanced technologies like async calls, circuit breakers
  • Generate docker/kubernetes artifacts directly from the code with annotations
  • Build applications which runs multiple tasks in parallel and in an asynchronous manner
  • View the program in a visually appealing sequence diagrammatic representation

In addition to the above mentioned features, Ballerina comes with a full eco-system of tools including

  • Ballerina Composer (IDE) and IDE plugins for VSCode, Vim and few others
  • Test framework to implement tests for individual ballerina programs
  • Document generation framework to generate documentation for ballerina programs
  • Ballerina central as shared repository which can be used to exchange the connectors and libraries written by other people

You can learn more about Ballerina by visiting the following website.

https://ballerina.io/

--

--

Chanaka Fernando
Microservices Learning

Writes about Microservices, APIs, and Integration. Author of “Designing Microservices Platforms with NATS” and "Solution Architecture Patterns for Enterprise"