SlideShare a Scribd company logo
LOWERING THE RISK OF
MONOLITH TO MICROSERVICES
One organization’s journey to microservices
@christianposta
Chief Architect, Cloud applications
8 May, 2018
Christian Posta
Chief Architect, cloud application development
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com
Slides: http://slideshare.net/ceposta
•  Author “Microservices for Java developers”,
“Introducing Istio Service Mesh”, and other
•  Committer/contributor to open-source projects
•  Blogger, speaker, writer
http://bit.ly/istio-book
@christianposta
LOW RISK
MONOLITH
MICROSERVICES
@christianposta
Low Risk
“The existence of more than one possibility. The “true” outcome/state/result/value is not know”
“A state of uncertainty where some of the possibilities involve a loss, catastrophe, or other
undesirable outcome”
- Douglas Hubbard
@christianposta
Monolith
An existing large application developed over the course of many years by different
teams that provides proven business value. Its structure has eroded insofar it
has become very difficult to update and maintain.
@christianposta
Microservice
A highly distracting word that serves to confuse developers, architects,
and IT leaders into believing that we can actually have a utopian application
architecture.
@christianposta
Microservice
A highly distracting word that serves to confuse developers, architects,
and IT leaders into believing that we can actually have a utopian application
architecture.
An architecture optimization that treats the modules of an application
as independently owned and deployed services for the purposes of
increasing an organization’s velocity
@christianposta
We can now assert with confidence that high IT
performance correlates with strong business
performance, helping to boost productivity,
profitability and market share.
https://puppet.com/resources/whitepaper/2014-state-devops-report
@christianposta
https://puppet.com/resources/whitepaper/2015-state-devops-report
@christianposta
https://puppet.com/resources/whitepaper/state-of-devops-report
@christianposta
Goal
We want to use microservices architecture, where it makes sense, to help
speed up an organization’s development velocity while lowering the chances of
bad things happening or being able to understand and recover quickly if it does.
MEET OUR CASE STUDY
@christianposta
https://developers.redhat.com/ticket-monster/
@christianposta
@christianposta
Some pain maintaining a monolith:
•  Making changes in one place negatively affects unrelated areas
•  Low confidence making changes that don’t break things
•  Spend lots of time trying to coordinate work between team members
•  Structure in the application has eroded or is non-existant
•  We have no way to quantify how long code merges will take
@christianposta
Some pain maintaining a monolith:
•  Development time is slow simply because the project is so big (IDE
bogs down, running tests is slow, slow bootstrap time, etc)
•  Changes to one module force changes across other modules
•  Difficult to sunset outdated technology
•  We’ve built our new applications around old premises like batch
processing
•  Application steps on itself at runtime managing resources, allocations,
computations
QUICK INTERLUDE:
WHEN TO DO MICROSERVICES
@christianposta
Microservices is about optimizing for speed
@christianposta
So, do we microservices all the way down?
@christianposta
Ask a very honest, and critical, question:
Is our application architecture the bottleneck
for being able to go faster?
@christianposta
“No”, “Not really”, “Not yet”… then stop
Go find out what is. Improve that. Then come back.
MEANWHILE…
@christianposta
How do you break this thing up?
@christianposta
Some ramblings…
•  Do one thing and do it well
•  Single responsibility principle
•  Organize around nouns
•  Organize around verbs
•  Bounded context
•  Products not projects
•  Unix philosophy
@christianposta
Reminds me of yesteryear
https://www.infoq.com/presentations/SOA-Business-Autonomous-Components
@christianposta
Try one more time…
•  Identify modules, boundaries
•  Align to business capabilities
•  Identify data entities responsible for features/modules
•  Break out these entities and wrap with an API/service
•  Update old code to call this new API service
@christianposta
Identify modules Break out API Rinse, repeat
@christianposta
Generally good; misses a lot of detail!
@christianposta
Try one more time…
•  Not easy to “re-modularize” a monolith
•  Tight coupling/integrity constraints between normalized tables
•  Difficult to understand which modules use which tables
•  We cannot stop the world to perform migrations
•  there will be some ugly migration steps that cannot just be wished
away
•  there is probably a point of diminishing returns where it doesn’t
make sense to break things out of the monolith
@christianposta
Make sure…
•  You have test coverage for existing project (ie, passing tests, CI
processes, etc)
•  Consider Arquillian for integration testing
•  Make sure you have some level of monitoring to detect issues /
exceptions / etc
•  Have some level of black-box system tests in place / load testing
(JMeter, Gattling)
•  Can deploy reliable to an environment (ideally OpenShift/
Kubernetes!)
•  Have some kind of CI/CD to be able to make changes economical
OUR MONOLITH
@christianposta
Our monolith
@christianposta
Break out UI (if applicable)
@christianposta
Deployment v release gives us flexibility
QUICK INTERLUDE:
DEPLOYMENT VS RELEASE
@christianposta
Decoupling deployment from release
Here, we’ve deployed Orders v1.1
Orders v1.1 does NOT take traffic
@christianposta
Decoupling deployment from release
Here, we’ve begun a release of Orders v1.1
Using traffic control, we can
direct a fraction of traffic to v1.1
Meet	Istio.io	
http://istio.io
An	open-source	service	mesh	
@christianposta
A	service	mesh	is	decentralized	application-	
networking	infrastructure	between	your	services		
that	provides	resiliency,	security,	observability,		
and	routing	control.		
	
A	service	mesh	is	comprised	of	a	data	plane	
and	control	plane.	
Time	for	de=initions:	
@christianposta
@christianposta
MEANWHILE…
@christianposta
Let’s call it backend now…
@christianposta
Introduce a new Orders service
@christianposta
Introducing new service API
•  We want to focus on the API design / boundary of our extracted
service
•  This may be a re-write from what exists in the monolith
•  We should iterate on the API and share with our collaborators
•  We can stub out the service with Microcks/Hoverfly
•  This service will have its own data storage
•  This service will not receive any traffic at this point
•  Put in place “walking skeleton” to exercise CI/CD pipeline
@christianposta
apicur.io for designing the API
@christianposta
Create an implementation
@christianposta
Shared data
•  New service will share concepts with monolith
•  We will need a way to reify that data within the microservice
•  The monolith probably doesn’t provide an API at the right level
•  Shaping the data from the monolith’s API requires boiler plate
code
•  Could create a new API for the monolith
•  Could copy the data
•  Could connect right up (yuck!)
@christianposta
Virtualize the data?
•  Focus on the new service’s domain model
•  Eliminate any boiler plate code
•  Read only virtual view of the monolith’s data
•  Read/write our own database, without changing data model
•  Part of a series of steps that ends with eliminating the virtual view
@christianposta
Virtualize the data?
QUICK INTERLUDE:
BOILERPLATE DATA INTEGRATION
@christianposta
http://teiid.jboss.org
@christianposta
https://github.com/teiid/teiid-spring-boot
@christianposta
Set up Spring Boot
@christianposta
@christianposta
MEANWHILE…
@christianposta
Mirror traffic to new service
@christianposta
Mirror traffic to new service
QUICK INTERLUDE:
TRAFFIC MIRRORING
@christianposta
Mirror traffic with Istio
@christianposta
Traffic compare/tap with Diffy
https://github.com/twitter/diffy
MEANWHILE…
@christianposta
Feature flags for runtime kill switch
@christianposta
Async Change Data Capture with Debezium.io?
@christianposta
Eliminate dependency on monolith DB
@christianposta
Recap
•  Write lots of tests (for monolith if you can; especially new service)
•  Use advanced deployment techniques (canarying, tap compare,
mirroring)
•  Use fine-grain traffic control to separate deployment from release
•  Reduce boiler plate code for data integration in initial service
implementation
•  Use technical debt to your advantage
•  Have lots of monitoring in place
•  Leverage your deployment and release infrastructure to
experiment and learn!
Quick demo?
BTW: Hand drawn diagrams made with Paper by FiftyThree.com ☺
Twitter: @christianposta
Blog: http://blog.christianposta.com
Email: christian@redhat.com
Slides: http://slideshare.net/cepostaFollow up links:
•  http://openshift.io
•  http://launch.openshift.io
•  http://blog.openshift.com
•  http://developers.redhat.com/blog
•  https://www.redhat.com/en/open-innovation-labs
•  https://www.redhat.com/en/technologies/jboss-middleware/3scale
•  https://www.redhat.com/en/technologies/jboss-middleware/fuse
THANK YOU
plus.google.com/+RedHat
linkedin.com/company/red-hat
youtube.com/user/RedHatVideos
facebook.com/redhatinc
twitter.com/RedHat

More Related Content

What's hot

Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
Christian Posta
 
The hardest part of microservices: your data
The hardest part of microservices: your dataThe hardest part of microservices: your data
The hardest part of microservices: your data
Christian Posta
 
API Gateways are going through an identity crisis
API Gateways are going through an identity crisisAPI Gateways are going through an identity crisis
API Gateways are going through an identity crisis
Christian Posta
 

What's hot (20)

Making sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverlessMaking sense of microservices, service mesh, and serverless
Making sense of microservices, service mesh, and serverless
 
Microservices Journey Summer 2017
Microservices Journey Summer 2017Microservices Journey Summer 2017
Microservices Journey Summer 2017
 
Atlanta Microservices Day: Istio Service Mesh
Atlanta Microservices Day: Istio Service MeshAtlanta Microservices Day: Istio Service Mesh
Atlanta Microservices Day: Istio Service Mesh
 
A Microservice Journey
A Microservice JourneyA Microservice Journey
A Microservice Journey
 
Istio: solving challenges of hybrid cloud
Istio: solving challenges of hybrid cloudIstio: solving challenges of hybrid cloud
Istio: solving challenges of hybrid cloud
 
Managing your camels in the cloud with CI/CD
Managing your camels in the cloud with CI/CDManaging your camels in the cloud with CI/CD
Managing your camels in the cloud with CI/CD
 
KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...
KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...
KubeCon NA 2018: Evolution of Integration and Microservices with Service Mesh...
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
Microservices and APIs
Microservices and APIsMicroservices and APIs
Microservices and APIs
 
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
The Hardest Part of Microservices: Your Data - Christian Posta, Red HatThe Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
The Hardest Part of Microservices: Your Data - Christian Posta, Red Hat
 
The hardest part of microservices: your data
The hardest part of microservices: your dataThe hardest part of microservices: your data
The hardest part of microservices: your data
 
Microservices with Spring Cloud, Netflix OSS and Kubernetes
Microservices with Spring Cloud, Netflix OSS and Kubernetes Microservices with Spring Cloud, Netflix OSS and Kubernetes
Microservices with Spring Cloud, Netflix OSS and Kubernetes
 
PHX DevOps Days: Service Mesh Landscape
PHX DevOps Days: Service Mesh LandscapePHX DevOps Days: Service Mesh Landscape
PHX DevOps Days: Service Mesh Landscape
 
DevNexus 2015
DevNexus 2015DevNexus 2015
DevNexus 2015
 
Java one kubernetes, jenkins and microservices
Java one   kubernetes, jenkins and microservicesJava one   kubernetes, jenkins and microservices
Java one kubernetes, jenkins and microservices
 
Microservices with Apache Camel, DDD, and Kubernetes
Microservices with Apache Camel, DDD, and KubernetesMicroservices with Apache Camel, DDD, and Kubernetes
Microservices with Apache Camel, DDD, and Kubernetes
 
API Gateways are going through an identity crisis
API Gateways are going through an identity crisisAPI Gateways are going through an identity crisis
API Gateways are going through an identity crisis
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Intro to Knative
Intro to KnativeIntro to Knative
Intro to Knative
 
Fuse integration-services
Fuse integration-servicesFuse integration-services
Fuse integration-services
 

Similar to Lowering the risk of monolith to microservices

How to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesHow to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
VMware Tanzu
 
#EuropeanSP--11 Strategic Considerations for SharePoint Migrations
#EuropeanSP--11 Strategic Considerations for SharePoint Migrations#EuropeanSP--11 Strategic Considerations for SharePoint Migrations
#EuropeanSP--11 Strategic Considerations for SharePoint Migrations
Christian Buckley
 

Similar to Lowering the risk of monolith to microservices (20)

Sidecars and a Microservices Mesh
Sidecars and a Microservices MeshSidecars and a Microservices Mesh
Sidecars and a Microservices Mesh
 
Microservices vs monolithics betabeers
Microservices vs monolithics   betabeersMicroservices vs monolithics   betabeers
Microservices vs monolithics betabeers
 
QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes QCon 2015 - Microservices Track Notes
QCon 2015 - Microservices Track Notes
 
The Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going DistributedThe Economics of Scale: Promises and Perils of Going Distributed
The Economics of Scale: Promises and Perils of Going Distributed
 
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
Smaller is Better - Exploiting Microservice Architectures on AWS - Technical 201
 
From Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical DebtFrom Monoliths to Services: Paying Your Technical Debt
From Monoliths to Services: Paying Your Technical Debt
 
Responsible Microservices
Responsible MicroservicesResponsible Microservices
Responsible Microservices
 
IoT to Cloud the DevOps Way
IoT to Cloud the DevOps WayIoT to Cloud the DevOps Way
IoT to Cloud the DevOps Way
 
DevOps: Automate all the things
DevOps: Automate all the thingsDevOps: Automate all the things
DevOps: Automate all the things
 
The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)The Lost Tales of Platform Design (February 2017)
The Lost Tales of Platform Design (February 2017)
 
Evolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service meshEvolution of integration and microservices patterns with service mesh
Evolution of integration and microservices patterns with service mesh
 
DevOps Days Ohio
DevOps Days OhioDevOps Days Ohio
DevOps Days Ohio
 
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to MicroservicesHow to Overcome Data Challenges When Refactoring Monoliths to Microservices
How to Overcome Data Challenges When Refactoring Monoliths to Microservices
 
Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...
Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...
Large-Scale Enterprise Platform Transformation with Microservices, DevOps, an...
 
Citizen Developer Tools are not just for Citizen Developers (session at Share...
Citizen Developer Tools are not just for Citizen Developers (session at Share...Citizen Developer Tools are not just for Citizen Developers (session at Share...
Citizen Developer Tools are not just for Citizen Developers (session at Share...
 
#EuropeanSP--11 Strategic Considerations for SharePoint Migrations
#EuropeanSP--11 Strategic Considerations for SharePoint Migrations#EuropeanSP--11 Strategic Considerations for SharePoint Migrations
#EuropeanSP--11 Strategic Considerations for SharePoint Migrations
 
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
Citizen Developer Tools (session at SharePoint Saturday Houston 4/28/2018) by...
 
Citizen Developer Tools @ Valo Solutions / Blue Meteorite Monday session
Citizen Developer Tools @ Valo Solutions / Blue Meteorite Monday sessionCitizen Developer Tools @ Valo Solutions / Blue Meteorite Monday session
Citizen Developer Tools @ Valo Solutions / Blue Meteorite Monday session
 
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
AWS Community Day: From Monolith to Microservices - What Could Go Wrong?
 
From Monolith to Microservices - What Could Go Wrong?
From Monolith to Microservices - What Could Go Wrong?From Monolith to Microservices - What Could Go Wrong?
From Monolith to Microservices - What Could Go Wrong?
 

More from Christian Posta

Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)
Christian Posta
 
Role of edge gateways in relation to service mesh adoption
Role of edge gateways in relation to service mesh adoptionRole of edge gateways in relation to service mesh adoption
Role of edge gateways in relation to service mesh adoption
Christian Posta
 

More from Christian Posta (17)

Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Understanding Wireguard, TLS and Workload Identity
Understanding Wireguard, TLS and Workload IdentityUnderstanding Wireguard, TLS and Workload Identity
Understanding Wireguard, TLS and Workload Identity
 
Compliance and Zero Trust Ambient Mesh
Compliance and Zero Trust Ambient MeshCompliance and Zero Trust Ambient Mesh
Compliance and Zero Trust Ambient Mesh
 
Cilium + Istio with Gloo Mesh
Cilium + Istio with Gloo MeshCilium + Istio with Gloo Mesh
Cilium + Istio with Gloo Mesh
 
Multi-cluster service mesh with GlooMesh
Multi-cluster service mesh with GlooMeshMulti-cluster service mesh with GlooMesh
Multi-cluster service mesh with GlooMesh
 
Multicluster Kubernetes and Service Mesh Patterns
Multicluster Kubernetes and Service Mesh PatternsMulticluster Kubernetes and Service Mesh Patterns
Multicluster Kubernetes and Service Mesh Patterns
 
Cloud-Native Application Debugging with Envoy and Service Mesh
Cloud-Native Application Debugging with Envoy and Service MeshCloud-Native Application Debugging with Envoy and Service Mesh
Cloud-Native Application Debugging with Envoy and Service Mesh
 
Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)Kubernetes Ingress to Service Mesh (and beyond!)
Kubernetes Ingress to Service Mesh (and beyond!)
 
The Truth About the Service Mesh Data Plane
The Truth About the Service Mesh Data PlaneThe Truth About the Service Mesh Data Plane
The Truth About the Service Mesh Data Plane
 
Deep Dive: Building external auth plugins for Gloo Enterprise
Deep Dive: Building external auth plugins for Gloo EnterpriseDeep Dive: Building external auth plugins for Gloo Enterprise
Deep Dive: Building external auth plugins for Gloo Enterprise
 
Role of edge gateways in relation to service mesh adoption
Role of edge gateways in relation to service mesh adoptionRole of edge gateways in relation to service mesh adoption
Role of edge gateways in relation to service mesh adoption
 
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and LinkerdNavigating the service mesh landscape with Istio, Consul Connect, and Linkerd
Navigating the service mesh landscape with Istio, Consul Connect, and Linkerd
 
Chaos Debugging for Microservices
Chaos Debugging for MicroservicesChaos Debugging for Microservices
Chaos Debugging for Microservices
 
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
Leveraging Envoy Proxy and GraphQL to Lower the Risk of Monolith to Microserv...
 
Service-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Service-mesh options with Linkerd, Consul, Istio and AWS AppMeshService-mesh options with Linkerd, Consul, Istio and AWS AppMesh
Service-mesh options with Linkerd, Consul, Istio and AWS AppMesh
 
Intro Istio and what's new Istio 1.1
Intro Istio and what's new Istio 1.1Intro Istio and what's new Istio 1.1
Intro Istio and what's new Istio 1.1
 
API World: The service-mesh landscape
API World: The service-mesh landscapeAPI World: The service-mesh landscape
API World: The service-mesh landscape
 

Recently uploaded

AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
Alluxio, Inc.
 

Recently uploaded (20)

Cyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdfCyaniclab : Software Development Agency Portfolio.pdf
Cyaniclab : Software Development Agency Portfolio.pdf
 
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERRORTROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
TROUBLESHOOTING 9 TYPES OF OUTOFMEMORYERROR
 
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
Paketo Buildpacks : la meilleure façon de construire des images OCI? DevopsDa...
 
GraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysisGraphAware - Transforming policing with graph-based intelligence analysis
GraphAware - Transforming policing with graph-based intelligence analysis
 
Advanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should KnowAdvanced Flow Concepts Every Developer Should Know
Advanced Flow Concepts Every Developer Should Know
 
iGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by SkilrockiGaming Platform & Lottery Solutions by Skilrock
iGaming Platform & Lottery Solutions by Skilrock
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
Into the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdfInto the Box 2024 - Keynote Day 2 Slides.pdf
Into the Box 2024 - Keynote Day 2 Slides.pdf
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Studiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting softwareStudiovity film pre-production and screenwriting software
Studiovity film pre-production and screenwriting software
 
De mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FMEDe mooiste recreatieve routes ontdekken met RouteYou en FME
De mooiste recreatieve routes ontdekken met RouteYou en FME
 
Designing for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web ServicesDesigning for Privacy in Amazon Web Services
Designing for Privacy in Amazon Web Services
 
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
Abortion ^Clinic ^%[+971588192166''] Abortion Pill Al Ain (?@?) Abortion Pill...
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
Field Employee Tracking System| MiTrack App| Best Employee Tracking Solution|...
 
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdfA Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
A Comprehensive Appium Guide for Hybrid App Automation Testing.pdf
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
AI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in MichelangeloAI/ML Infra Meetup | ML explainability in Michelangelo
AI/ML Infra Meetup | ML explainability in Michelangelo
 
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.ILBeyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
Beyond Event Sourcing - Embracing CRUD for Wix Platform - Java.IL
 
Vitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume MontevideoVitthal Shirke Microservices Resume Montevideo
Vitthal Shirke Microservices Resume Montevideo
 

Lowering the risk of monolith to microservices