SlideShare a Scribd company logo
1 of 29
Download to read offline
A	Primer	to	Containerization	&	
Microservices
Shiju	Varghese
About	Me
• Consulting	Solutions	Architect	
• Focused	on	Go	and	Google	Cloud	
						@shijucv	|	https://medium.com/@shijuvar
Agenda
• Introduction	to	Microservices	
• Introduction	to	Containerization	
• An	Overview	of	Container	Ecosystem	
• Microservices	on	Containers
Microservices
Monolith Microservices
• Composed	of	a	suite	of	small	
services.	
• Each	service	runs	in	its	own	
process.	
• Greater	flexibility	for	scalability.
• Put	all	business	capabiliKes	
into	a	single	applicaKon.	
• ApplicaKon	runs	in	a	single	
process.	
• Scales	horizontally	by	running	
mulKple	instances	of	monolith.
Microservices	is	an	architectural	style	in	which	software	
applications	are	composed	of	a	suite	of		independently	
deployable,	small,	modular	services.	Each	of	these	
Microservices	focuses	on	completing	one	task	that	
represents	a	small	business	capability.	They	
communicate	with	each	other	using	language-agnostic	
protocols	such	as	Representational	State	Transfer	
(REST),	or	messaging	systems.	
In	a	nutshell,	Microservices	are	small,	autonomous	
services	that	work	together.
» Software	broken	up	into	functional	components.	
» Componentization	via	Services	in	which	each	service	
is	packaged	as	one	unit	of	execution.	
» Independent,	autonomous	process	with	no	
dependency	on	other	Microservices.	
» Services	are	organized	around	business	capability.	
» Decentralization	of	Data	Management.	
» Independently	replaceable	and	upgradeable.	
Autonomous	Services	around	Bounded	
Context
Communication	between	Services	
» Synchronous	
» REST	
» Asynchronous	
» AMQP	
» 	RabbitMQ,	Apache	Kafka,	Cloud	native	Pub/Sub
Key	Benefits
» Tackles	the	problem	of	complexity.		
» Flexibility	for	Polyglot	technology	stack.	
» Resilience.	
» Flexibility	for	Scalability.	
» Ease	of	Deployment.	
» Organisational	Alignment.	
» Composability.			
» Optimising	for	Replaceability.
Deploying	Microservices
Unit	of	Deployment
» Physical	Server	
» Virtual	Machine	(VM)	
» Container
Deployment	Patterns
» Multiple	Service	Instances	per	Host		
» Service	Instance	per	Host		
» Serverless	Deployment		
» AWS	Lambda	
» Google	Cloud	Functions
Running	Microservices	on	Containers
A	collection	of	independent,	autonomous	
containers	participating	in	an	application	
defines	the	Microservices	architecture.	
Microservices	-	Unit	of	Deployment	of	
as	Container
Container
» Lightweight	Linux	environment.	
» Hermetically	sealed,	deployable	app.	
» Separate	apps	from	infrastructure.	
» Develop	app	against	an	idealized	OS	-	A	static	Linux	
environment.	
» Popularized	and	revolutionized	by	Docker.
Why	Do	Developers	Like	It?
» Reliable	deployment	
» Static	application	environment;	Immutable	infrastructure			
» Portability	
» Separate	applications	from	where	it	runs	
» Repeatable	runnable	artifact	
» Run	anywhere	
» Speed	and	Lightweight	
» Boots	in	seconds	
» 100	-1000	containers	on	one	machine.	
» Loosely	Coupled	
» Compose	apps	from	autonomous	Microservices
Docker
Docker	is	an	open-source	engine	to	easily	create	
lightweight,	portable,	self-sufficient	containers	
from	any	application.	The	same	container	that	a	
developer	builds	and	test	on	a	laptop	can	run	at	
scale,	in	production,	on	VMs,	private	cloud,	
public	clouds	and	more.
» Open	platform	for	containers.	
» An	ecosystem	for	build,	ship,	and	run	distributed	
applications.	
» A	lightweight	container	virtualization	platform.	
» Built	on	LinuX	Containers	(LXC)	
» Written	in	Go	language.
Components	of	Docker
» Docker	-	A	portable,	lightweight	runtime	and	
packaging	tool	for	building	containerized	apps.	
» Docker	Hub	-	Software	as	a	Service	platform	for	
sharing	and	managing	Docker	images.
Docker	Fundamentals
» 	Docker	Images	-	Images	hold	your	apps.	
» 	Docker	Registries	-	Registry	for	sharing	Docker	
images	via	Docker	Hub	or	private	registry	system.	
» 	Docker	Containers	-	Create	containers	from	Docker	
images	to	run	apps.	
» Dockerfile	-	A	text	document	that	contains	
instructions	to	build	a	docker	image.
Docker	Compose
Compose	is	a	tool	for	defining	and	running	multi-
container	Docker	applications.
#	golang	image	where	workspace	(GOPATH)	configured	at	/go.	
FROM	golang	
#	Copy	the	local	package	files	to	the	container’s	workspace.	
ADD	.	/go/src/github.com/shijuvar/go-web/taskmanager	
#	Setting	up	working	directory	
WORKDIR	/go/src/github.com/shijuvar/go-web/taskmanager	
#	Get	godeps	for	managing	and	restoring	dependencies	
RUN	go	get	github.com/tools/godep	
#	Restore	godep	dependencies	
RUN	godep	restore		
#	Build	the	taskmanager	command	inside	the	container.	
RUN	go	install	github.com/shijuvar/go-web/taskmanager	
#	Run	the	taskmanager	command	when	the	container	starts.	
ENTRYPOINT	/go/bin/taskmanager	
#	Service	listens	on	port	8080.	
EXPOSE	8080
//	Build	image	from	Dockerfile	
$	docker	build	-t	taskmanager	.	
//	Run	Docker	image	and	publishing	a	web	app	
$	docker	run	—publish	3000:8080	—name	goweb	—rm	taskmanager
Container	Clusters
» Docker	Swarm	
» Google	Kubernetes	
» CoreOS	Tectonic	
» Apache	Mesos
Container-Centric	Micro	OS
» CoreOS	
» Ubuntu	Snappy	
» RancherOS	
» Red	Hat	Atomic	Host	
» VMware	Photon
Containerization	on	Cloud
Container	as	a	Service	(CaaS)
» Google	Container	Engine	
» Amazon	EC2	Container	Service
Shiju	Varghese	
gophermonk@gmail.com

More Related Content

What's hot

Microservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservices
Miguel Pastor
 

What's hot (20)

Microservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservicesMicroservices: The OSGi way A different vision on microservices
Microservices: The OSGi way A different vision on microservices
 
[APIdays Paris 2019] API Management in Service Mesh Using Istio and WSO2 API ...
[APIdays Paris 2019] API Management in Service Mesh Using Istio and WSO2 API ...[APIdays Paris 2019] API Management in Service Mesh Using Istio and WSO2 API ...
[APIdays Paris 2019] API Management in Service Mesh Using Istio and WSO2 API ...
 
Microservice architecture
Microservice architectureMicroservice architecture
Microservice architecture
 
[Workshop] API-driven Integration
[Workshop] API-driven Integration[Workshop] API-driven Integration
[Workshop] API-driven Integration
 
Hyperledger Fabric EVM Integration Feb 20, 2018
Hyperledger Fabric EVM Integration Feb 20, 2018Hyperledger Fabric EVM Integration Feb 20, 2018
Hyperledger Fabric EVM Integration Feb 20, 2018
 
Spring cloud-netflix-oss-microservices
Spring cloud-netflix-oss-microservices Spring cloud-netflix-oss-microservices
Spring cloud-netflix-oss-microservices
 
How to Build a Scalable, Distributed, Multi-Cloud API Architecture on Kubernetes
How to Build a Scalable, Distributed, Multi-Cloud API Architecture on KubernetesHow to Build a Scalable, Distributed, Multi-Cloud API Architecture on Kubernetes
How to Build a Scalable, Distributed, Multi-Cloud API Architecture on Kubernetes
 
Real-Time ETL in Practice with WSO2 Enterprise Integrator
Real-Time ETL in Practice with WSO2 Enterprise IntegratorReal-Time ETL in Practice with WSO2 Enterprise Integrator
Real-Time ETL in Practice with WSO2 Enterprise Integrator
 
Eco system apps
Eco system appsEco system apps
Eco system apps
 
Exposing Lambda Functions as Managed APIs
Exposing Lambda Functions as Managed APIsExposing Lambda Functions as Managed APIs
Exposing Lambda Functions as Managed APIs
 
Continuous Integration and Continuous Deployment (CI/CD) with WSO2 Enterprise...
Continuous Integration and Continuous Deployment (CI/CD) with WSO2 Enterprise...Continuous Integration and Continuous Deployment (CI/CD) with WSO2 Enterprise...
Continuous Integration and Continuous Deployment (CI/CD) with WSO2 Enterprise...
 
Implementing Microservices with NATS
Implementing Microservices with NATSImplementing Microservices with NATS
Implementing Microservices with NATS
 
[WSO2 API Manager Community Call] Expose Services as Managed APIs
[WSO2 API Manager Community Call] Expose Services as Managed APIs [WSO2 API Manager Community Call] Expose Services as Managed APIs
[WSO2 API Manager Community Call] Expose Services as Managed APIs
 
WSO2 API microgateway introduction
WSO2 API microgateway introductionWSO2 API microgateway introduction
WSO2 API microgateway introduction
 
What’s New with Flowable?
What’s New with Flowable?What’s New with Flowable?
What’s New with Flowable?
 
Rapid Application Development with Docker
Rapid Application Development with DockerRapid Application Development with Docker
Rapid Application Development with Docker
 
Bluemix overview with Internet of Things
Bluemix overview with Internet of ThingsBluemix overview with Internet of Things
Bluemix overview with Internet of Things
 
Resume
ResumeResume
Resume
 
Microservices, Containers, and Beyond
Microservices, Containers, and BeyondMicroservices, Containers, and Beyond
Microservices, Containers, and Beyond
 
How to move from Monolith to Microservice
How to move from Monolith to MicroserviceHow to move from Monolith to Microservice
How to move from Monolith to Microservice
 

Viewers also liked

Essence Of Containerizati on 230508
Essence Of Containerizati on 230508 Essence Of Containerizati on 230508
Essence Of Containerizati on 230508
jansowri
 

Viewers also liked (10)

Hide your development environment and application in a container
Hide your development environment and application in a containerHide your development environment and application in a container
Hide your development environment and application in a container
 
Containerization using docker
Containerization using dockerContainerization using docker
Containerization using docker
 
Essence Of Containerizati on 230508
Essence Of Containerizati on 230508 Essence Of Containerizati on 230508
Essence Of Containerizati on 230508
 
Software Containerization
Software ContainerizationSoftware Containerization
Software Containerization
 
Docker containerization cookbook
Docker containerization cookbookDocker containerization cookbook
Docker containerization cookbook
 
Intro to containerization
Intro to containerizationIntro to containerization
Intro to containerization
 
Let’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkinsLet’s start Continuous Integration with jenkins
Let’s start Continuous Integration with jenkins
 
Enterprise Development Trends 2016 - Cloud, Container and Microservices Insig...
Enterprise Development Trends 2016 - Cloud, Container and Microservices Insig...Enterprise Development Trends 2016 - Cloud, Container and Microservices Insig...
Enterprise Development Trends 2016 - Cloud, Container and Microservices Insig...
 
Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...Containerization is more than the new Virtualization: enabling separation of ...
Containerization is more than the new Virtualization: enabling separation of ...
 
How did we get to Containers: A brief History of Computing
How did we get to Containers: A brief History of ComputingHow did we get to Containers: A brief History of Computing
How did we get to Containers: A brief History of Computing
 

Similar to A Primer to Containerization & Microservices

Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based Architectures
Angelos Kapsimanis
 

Similar to A Primer to Containerization & Microservices (20)

Introduction To Microservices
Introduction To MicroservicesIntroduction To Microservices
Introduction To Microservices
 
Discussion About Microservices Architecture
Discussion About Microservices ArchitectureDiscussion About Microservices Architecture
Discussion About Microservices Architecture
 
Introduction to Microservices.pdf
Introduction to Microservices.pdfIntroduction to Microservices.pdf
Introduction to Microservices.pdf
 
Microserces Architecture
Microserces ArchitectureMicroserces Architecture
Microserces Architecture
 
Microservices - an integration perspective
Microservices - an integration perspectiveMicroservices - an integration perspective
Microservices - an integration perspective
 
Microservice's in detailed
Microservice's in detailedMicroservice's in detailed
Microservice's in detailed
 
Micro services overview
Micro services overviewMicro services overview
Micro services overview
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...Architecting for speed: how agile innovators accelerate growth through micros...
Architecting for speed: how agile innovators accelerate growth through micros...
 
Microservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design PatternMicroservice Architecture Software Architecture Microservice Design Pattern
Microservice Architecture Software Architecture Microservice Design Pattern
 
Microservice
MicroserviceMicroservice
Microservice
 
DevOps-training-in-chandigarh-Join-now--
DevOps-training-in-chandigarh-Join-now--DevOps-training-in-chandigarh-Join-now--
DevOps-training-in-chandigarh-Join-now--
 
Fun Times With Microservices
Fun Times With MicroservicesFun Times With Microservices
Fun Times With Microservices
 
Fun Times with Microservices
Fun Times with MicroservicesFun Times with Microservices
Fun Times with Microservices
 
Software Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based ArchitecturesSoftware Architectures, Week 3 - Microservice-based Architectures
Software Architectures, Week 3 - Microservice-based Architectures
 
Liferay as a Microservice Platform
Liferay as a Microservice PlatformLiferay as a Microservice Platform
Liferay as a Microservice Platform
 
microservices in mulesoft
microservices in mulesoftmicroservices in mulesoft
microservices in mulesoft
 
Microservices.pptx
Microservices.pptxMicroservices.pptx
Microservices.pptx
 
A Guide on What Are Microservices: Pros, Cons, Use Cases, and More
A Guide on What Are Microservices: Pros, Cons, Use Cases, and MoreA Guide on What Are Microservices: Pros, Cons, Use Cases, and More
A Guide on What Are Microservices: Pros, Cons, Use Cases, and More
 
Vision of a microservice revolution
Vision of a microservice revolutionVision of a microservice revolution
Vision of a microservice revolution
 

More from Shiju Varghese

More from Shiju Varghese (20)

Building Modern Distributed Applications in Go with Service Weaver
Building Modern Distributed Applications in Go with Service WeaverBuilding Modern Distributed Applications in Go with Service Weaver
Building Modern Distributed Applications in Go with Service Weaver
 
Microservices in Go with Go kit
Microservices in Go with Go kitMicroservices in Go with Go kit
Microservices in Go with Go kit
 
NATS: A Cloud Native Messaging System
NATS: A Cloud Native Messaging SystemNATS: A Cloud Native Messaging System
NATS: A Cloud Native Messaging System
 
Event-Driven Microservices With NATS Streaming
Event-Driven Microservices With NATS StreamingEvent-Driven Microservices With NATS Streaming
Event-Driven Microservices With NATS Streaming
 
Inter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPCInter-Process Communication in Microservices using gRPC
Inter-Process Communication in Microservices using gRPC
 
Building Microservices with gRPC and NATS
Building Microservices with gRPC and NATSBuilding Microservices with gRPC and NATS
Building Microservices with gRPC and NATS
 
Writing HTTP Middleware In Go
Writing HTTP Middleware In GoWriting HTTP Middleware In Go
Writing HTTP Middleware In Go
 
Building RESTful Services With Go and MongoDB
Building RESTful Services With Go and MongoDBBuilding RESTful Services With Go and MongoDB
Building RESTful Services With Go and MongoDB
 
Docker and Kubernetes
Docker and KubernetesDocker and Kubernetes
Docker and Kubernetes
 
Practicing Mindfulness
Practicing MindfulnessPracticing Mindfulness
Practicing Mindfulness
 
Azure DocumentDB
Azure DocumentDBAzure DocumentDB
Azure DocumentDB
 
Azure Mobile Services .NET Backend
Azure Mobile Services .NET BackendAzure Mobile Services .NET Backend
Azure Mobile Services .NET Backend
 
Windows Azure Mobile Services
Windows Azure Mobile ServicesWindows Azure Mobile Services
Windows Azure Mobile Services
 
JavaScript, Meet Cloud : Node.js on Windows Azure
JavaScript, Meet Cloud : Node.js on Windows AzureJavaScript, Meet Cloud : Node.js on Windows Azure
JavaScript, Meet Cloud : Node.js on Windows Azure
 
Introduction to Node js
Introduction to Node jsIntroduction to Node js
Introduction to Node js
 
Windows Azure Cloud Services
Windows Azure Cloud Services Windows Azure Cloud Services
Windows Azure Cloud Services
 
Windows Azure Webs Sites
Windows Azure Webs SitesWindows Azure Webs Sites
Windows Azure Webs Sites
 
Building Apps with Node.js
Building Apps with Node.jsBuilding Apps with Node.js
Building Apps with Node.js
 
Node on Windows Azure
Node on Windows AzureNode on Windows Azure
Node on Windows Azure
 
Introducing Razor - A new view engine for ASP.NET
Introducing Razor - A new view engine for ASP.NET Introducing Razor - A new view engine for ASP.NET
Introducing Razor - A new view engine for ASP.NET
 

Recently uploaded

EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 

Recently uploaded (20)

Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
Raspberry Pi 5: Challenges and Solutions in Bringing up an OpenGL/Vulkan Driv...
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

A Primer to Containerization & Microservices