Docking micro Services (Part-1)

In this series I will cover on how to use docker/docker-compose to manage micro-services and their dependencies. This will enable you to create a reproducible environment that can be used for spawning any number of services really easily.

Lets start with a breif history on Microservice Architectures:

Microservices - also known as the microservice architecture - is an architectural style that structures set of applications as a collection of loosely coupled services, which implement business capabilities.

What are some the characteristics of a Micro service architecture ?

  1. Set of collaborating (micro)services, each of which implements a limited set of related functionality
  2. Microservices communicate with each other asynchronously over the network using language agnostic APIs (e.g. REST)
  3. Microservices are developed, deployed and maintained independently of each other
  4. Microservices use their own persistent storage area (DB/ReplicaSets/Shards) with data consistency maintained using data replication
  5. Microservices architecture enables the continuous delivery/deployment of large, complex applications.
  6. Microservices encourages application/usage of wide variety technology stack to to provide tailored solution to a business problem.(Gateways, Cloud Computing, Distributed computing etc)

Where does Docker fit in here ?

Docker is an open source tool designed to ease creation, deployment, and running of applications by using virtualization/containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. This makes applications ‘Portable and Scalable’.

Contrary to monolithic applications, micro-services have variable number of individual services which all need to communicate with each other, either directly or via an event stream. Building, maintaining and scaling this architecture is not trivial. That is where docker comes into rescue.

Docker

In the next tutorial lets dive into action by building micro services.

Cheers and Happy Building 🤘

Avinash Erupaka

Avinash Erupaka

I am a technology leader, with experience driving all aspects of technology transformation, from strategy to future state architecture. For last 10 years I worked for major corporations building B2B, B2C & internal platforms. I worked in the capacity of a senior dev, tech lead, Platform architect with hand-on experience driving technology strategy enabling business strategy. My expertise is in disciplines like distributed cloud Architectures, Data engineering and analytics, web and mobile application development, IoT, automation, security by design , agile - devsecops practices. I love managing teams and solving complex problems. I love tech, teaching, traveling, and fitness level boxing. I have proficiency using tools like React.js, Redux, Bootstrap, Material Design for the front end. Node.js, Scala, Clojure and Java for the back end. I leverage AWS, GCP, AZURE, OCI cloud platforms and I am a Multi Cloud Certified Architect. Opinions are my own and not the views of my employer.