SlideShare a Scribd company logo
1 of 35
The end of the monolith?
Elastically scalable architectures
with microservices.
Monolithic architecture
Feel the pain
intro
Netflix, PayPal, Twitter, Amazon…
What do they have in common?
Are monolithic architectures dead?
Distributed architecture with smaller services
about me
Javier Arias, senior software engineer at Telefonica.
Working during last year with a microservices in EyeOS, helping
to create an VDI (Virtual Desktop Infrastructure) platform.
@javier_arilos
http://about.me/javier.arilos
Back to the question
Objective:
To discuss about microservices
concepts & misconceptions
Are monolithic architectures dead?
A brief history of architectures
Mainframes,
Client/server (2 and then 3 tiers)
SOA
Microservices
Mainframe, Client/Server, SOA, Microservices…
They tried to solve architectural problems
And the history repeats
but… there is no silver bullet
The catalysts
Agile everything
The catalysts (I)
Cloud and containers
The catalysts (II)
Continuous Integration and Delivery
Automate QA and Deployment, Feedback
The catalysts (III)
Microservices
And we, software
engineers are fashion
victims.
Microservices are
trendy, since 2014.
Microservices definition
Loosely coupled
service oriented architecture
with bounded contexts.
(Adrian Cockcroft)
Loosely coupled
released & upgraded independently
no shared database
avoid complex middlewares (SOA)
service oriented architecture
run as standalone processes
talk via APIs, semantic versioning
with bounded contexts
size & responsibilities matter a lot.
organized around business capabilities
Domain Driven Design & bounded contxts
Microservice characteristics
microservice anatomy
persistence & language
spoiled by choice?
be careful when adding technologies
microservices talking to microservices
API + lightweight communications
HTTP vs lightweight message bus
are your microservices good citizens?
stateless: key for scalability
failure ready: death or dependency failure
idempotent: repeated reqs yield same result
operations ready: logging, correlation...
we know how to develop microservices
microservices are dynamic
services start / stop all the time
where are my services?
service discovery
DNS vs Database Query
failure detection
scaling
microservices: stateless, discoverable
manual scale is boring let’s go dynamic
how we decide on scaling?
Information, from:
servers
channel
still awake?
please wake up your buddies around!
just 10 slides to go… :-)
monolith vs microservices: the essence
deploy many collaborating processes
vs
deploy single platform of components
simpler to deploy
more difficult to scale, specially deployment
monolith vs microservices: deploy
more complexity
scales better (software, teams and deployment)
microservices: many processes 2 deploy
monolith: one single ‘thing’ 2 deploy
prone to coupling: code, database
in-process calls
much easier to refactor and test
monolith vs microservices: distributed
computing
decoupled by deployment
distributed computing is hard:
failure-ready, many moving parts, testing
microservices: distributed computing
monolith: no distributed computing
consistency, simpler
operations are simpler
monolith vs microservices: platform
best tool for the job, more freedom, more
complexity
operations are more complex
microservices: many technoligies
monolith: constrained technologies
size
cost
microservices
monolith
New project: monolith or microservices?
WHY DON’T WE
FOLLOW THE
HAPPY PATH?
wrong monolith
what is really wrong with monoliths?
bad designed monoliths
well designed monoliths
lower coupling, design for change
DDD with bounded contexts
API:
Facade Design Pattern
No
database
sharing
size
cost
microservices
monolith
can we now follow the happy path?
remember...
whatever your problems are...
there is no silver bullet
references
talk abstract
In the last years the microservices architecture style has been
gaining traction with some companies such as Netflix, Yelp,
Gilt, PayPal. Many of that companies abandoned their previous
monolithic architecture and moved to a microservices approach.
Does that mean that monolithic architectures are a thing of the
past?
In this talk we will review some key microservices concepts (and
misconceptions), search for the essence of microservices
architectures and discuss about different approaches to
implement them from the industry, including how we implemented
it in EyeOS.

More Related Content

What's hot

Beyond the brokers - Un tour de l'écosystème Kafka
Beyond the brokers - Un tour de l'écosystème KafkaBeyond the brokers - Un tour de l'écosystème Kafka
Beyond the brokers - Un tour de l'écosystème KafkaFlorent Ramiere
 
AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)
AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)
AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)Amazon Web Services
 
Netflix security monkey overview
Netflix security monkey overviewNetflix security monkey overview
Netflix security monkey overviewRyan Hodgin
 
AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)
AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)
AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)Amazon Web Services
 
Tokyo azure meetup #12 service fabric internals
Tokyo azure meetup #12   service fabric internalsTokyo azure meetup #12   service fabric internals
Tokyo azure meetup #12 service fabric internalsTokyo Azure Meetup
 
AWS Innovation at Scale – Rodney Haywood
AWS Innovation at Scale – Rodney HaywoodAWS Innovation at Scale – Rodney Haywood
AWS Innovation at Scale – Rodney HaywoodAmazon Web Services
 
AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)Amazon Web Services
 
Architecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopArchitecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopSudhir Tonse
 
AWS Lambda - A quick introduction #advancedaws
AWS Lambda - A quick introduction #advancedawsAWS Lambda - A quick introduction #advancedaws
AWS Lambda - A quick introduction #advancedawsChris Richardson
 
Netflix Open Source Meetup Season 4 Episode 3
Netflix Open Source Meetup Season 4 Episode 3Netflix Open Source Meetup Season 4 Episode 3
Netflix Open Source Meetup Season 4 Episode 3aspyker
 
Spring Cloud Netflix OSS
Spring Cloud Netflix OSSSpring Cloud Netflix OSS
Spring Cloud Netflix OSSSteve Hall
 
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...Amazon Web Services
 
Paris Kafka Meetup - patterns anti-patterns
Paris Kafka Meetup -  patterns anti-patternsParis Kafka Meetup -  patterns anti-patterns
Paris Kafka Meetup - patterns anti-patternsFlorent Ramiere
 
Netflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open SourceNetflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open Sourceaspyker
 
Increase Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web ServicesIncrease Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web ServicesAmazon Web Services
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation ProjectsAmazon Web Services
 
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaSAWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaSRightScale
 

What's hot (20)

Beyond the brokers - Un tour de l'écosystème Kafka
Beyond the brokers - Un tour de l'écosystème KafkaBeyond the brokers - Un tour de l'écosystème Kafka
Beyond the brokers - Un tour de l'écosystème Kafka
 
Sundog Media Toolkit
Sundog Media Toolkit Sundog Media Toolkit
Sundog Media Toolkit
 
AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)
AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)
AWS re:Invent 2016: VMware and AWS Together - VMware Cloud on AWS (ENT317)
 
Jug - ecosystem
Jug -  ecosystemJug -  ecosystem
Jug - ecosystem
 
Netflix security monkey overview
Netflix security monkey overviewNetflix security monkey overview
Netflix security monkey overview
 
AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)
AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)
AWS re:Invent 2016: NEW LAUNCH! Lambda Everywhere (IOT309)
 
Tokyo azure meetup #12 service fabric internals
Tokyo azure meetup #12   service fabric internalsTokyo azure meetup #12   service fabric internals
Tokyo azure meetup #12 service fabric internals
 
AWS Innovation at Scale – Rodney Haywood
AWS Innovation at Scale – Rodney HaywoodAWS Innovation at Scale – Rodney Haywood
AWS Innovation at Scale – Rodney Haywood
 
AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)AWS re:Invent 2016: Securing Container-Based Applications (CON402)
AWS re:Invent 2016: Securing Container-Based Applications (CON402)
 
Architecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash WorkshopArchitecting for the Cloud using NetflixOSS - Codemash Workshop
Architecting for the Cloud using NetflixOSS - Codemash Workshop
 
AWS Lambda - A quick introduction #advancedaws
AWS Lambda - A quick introduction #advancedawsAWS Lambda - A quick introduction #advancedaws
AWS Lambda - A quick introduction #advancedaws
 
Netflix Open Source Meetup Season 4 Episode 3
Netflix Open Source Meetup Season 4 Episode 3Netflix Open Source Meetup Season 4 Episode 3
Netflix Open Source Meetup Season 4 Episode 3
 
Spring Cloud Netflix OSS
Spring Cloud Netflix OSSSpring Cloud Netflix OSS
Spring Cloud Netflix OSS
 
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
AWS re:Invent 2016: Service Integration Delivery and Automation Using Amazon ...
 
Paris Kafka Meetup - patterns anti-patterns
Paris Kafka Meetup -  patterns anti-patternsParis Kafka Meetup -  patterns anti-patterns
Paris Kafka Meetup - patterns anti-patterns
 
Netflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open SourceNetflix Cloud Architecture and Open Source
Netflix Cloud Architecture and Open Source
 
Increase Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web ServicesIncrease Speed and Agility with Amazon Web Services
Increase Speed and Agility with Amazon Web Services
 
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
(SPOT205) 5 Lessons for Managing Massive IT Transformation Projects
 
Introduction to Microservices
Introduction to MicroservicesIntroduction to Microservices
Introduction to Microservices
 
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaSAWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
AWS vs. Azure vs. Google vs. SoftLayer: Network, Storage and DBaaS
 

Viewers also liked

Europython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with PythonEuropython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with PythonJavier Arias Losada
 
Sketching Web APIs
Sketching Web APIsSketching Web APIs
Sketching Web APIsronniemitra
 
Grokking microservices in 5 minutes
Grokking microservices in 5 minutesGrokking microservices in 5 minutes
Grokking microservices in 5 minutesAndrew Siemer
 
7 lessons to learn of Brazil defeat, to your company
7 lessons to learn of Brazil defeat, to your company 7 lessons to learn of Brazil defeat, to your company
7 lessons to learn of Brazil defeat, to your company Alexandre Uehara
 
Data science for advanced dummies
Data science for advanced dummiesData science for advanced dummies
Data science for advanced dummiesSaurav Chakravorty
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackPedro J. Molina
 
Quero trabalhar com big data data science, como faço-
Quero trabalhar com big data   data science, como faço-Quero trabalhar com big data   data science, como faço-
Quero trabalhar com big data data science, como faço-Alexandre Uehara
 
Data Science & Big Data, made in Switzerland
Data Science & Big Data, made in SwitzerlandData Science & Big Data, made in Switzerland
Data Science & Big Data, made in SwitzerlandThilo Stadelmann
 
Rapid Api Prototyping
Rapid Api PrototypingRapid Api Prototyping
Rapid Api PrototypingKong Inc.
 
Introduction to Machine Learning
Introduction to Machine LearningIntroduction to Machine Learning
Introduction to Machine LearningRaveen Perera
 
Distribute and Monetize APIs
Distribute and Monetize APIsDistribute and Monetize APIs
Distribute and Monetize APIsKong Inc.
 
Tools for designing and building great APIs
Tools for designing and building great APIsTools for designing and building great APIs
Tools for designing and building great APIsKong Inc.
 
Microservices vs History
Microservices vs History  Microservices vs History
Microservices vs History Kong Inc.
 
7 historical software bugs
 7 historical software bugs 7 historical software bugs
7 historical software bugsAlexandre Uehara
 
Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)Nordic APIs
 
API Management - The Value of the Management Part
API Management - The Value of the Management PartAPI Management - The Value of the Management Part
API Management - The Value of the Management PartMenno Abbink
 
Apinf Open Api Management
Apinf Open Api Management Apinf Open Api Management
Apinf Open Api Management Taija Björklund
 

Viewers also liked (20)

Europython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with PythonEuropython - Machine Learning for dummies with Python
Europython - Machine Learning for dummies with Python
 
Sketching Web APIs
Sketching Web APIsSketching Web APIs
Sketching Web APIs
 
Agile Science
Agile ScienceAgile Science
Agile Science
 
Grokking microservices in 5 minutes
Grokking microservices in 5 minutesGrokking microservices in 5 minutes
Grokking microservices in 5 minutes
 
7 lessons to learn of Brazil defeat, to your company
7 lessons to learn of Brazil defeat, to your company 7 lessons to learn of Brazil defeat, to your company
7 lessons to learn of Brazil defeat, to your company
 
Data Science For Dummies From a Dummy
Data Science For Dummies From a DummyData Science For Dummies From a Dummy
Data Science For Dummies From a Dummy
 
ES6 metaprogramming unleashed
ES6 metaprogramming unleashedES6 metaprogramming unleashed
ES6 metaprogramming unleashed
 
Data science for advanced dummies
Data science for advanced dummiesData science for advanced dummies
Data science for advanced dummies
 
Opensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN StackOpensouthcode: Microservicios sobre MEAN Stack
Opensouthcode: Microservicios sobre MEAN Stack
 
Quero trabalhar com big data data science, como faço-
Quero trabalhar com big data   data science, como faço-Quero trabalhar com big data   data science, como faço-
Quero trabalhar com big data data science, como faço-
 
Data Science & Big Data, made in Switzerland
Data Science & Big Data, made in SwitzerlandData Science & Big Data, made in Switzerland
Data Science & Big Data, made in Switzerland
 
Rapid Api Prototyping
Rapid Api PrototypingRapid Api Prototyping
Rapid Api Prototyping
 
Introduction to Machine Learning
Introduction to Machine LearningIntroduction to Machine Learning
Introduction to Machine Learning
 
Distribute and Monetize APIs
Distribute and Monetize APIsDistribute and Monetize APIs
Distribute and Monetize APIs
 
Tools for designing and building great APIs
Tools for designing and building great APIsTools for designing and building great APIs
Tools for designing and building great APIs
 
Microservices vs History
Microservices vs History  Microservices vs History
Microservices vs History
 
7 historical software bugs
 7 historical software bugs 7 historical software bugs
7 historical software bugs
 
Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)
 
API Management - The Value of the Management Part
API Management - The Value of the Management PartAPI Management - The Value of the Management Part
API Management - The Value of the Management Part
 
Apinf Open Api Management
Apinf Open Api Management Apinf Open Api Management
Apinf Open Api Management
 

Similar to Elastically scalable architectures with microservices. The end of the monolith?

DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleDevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleJAXLondon_Conference
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"Daniel Bryant
 
Microservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech TalksMicroservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech TalksPedro Mendes
 
Microservices - when, why and how incontrodevops.it
Microservices  - when, why and how incontrodevops.itMicroservices  - when, why and how incontrodevops.it
Microservices - when, why and how incontrodevops.itGiuseppe Lavagetto
 
Microservices and modern backends - Azure Meetup Frankfurt
Microservices and modern backends  - Azure Meetup FrankfurtMicroservices and modern backends  - Azure Meetup Frankfurt
Microservices and modern backends - Azure Meetup FrankfurtDamir Dobric
 
Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Ken Owens
 
From monolithic to microservices to serverless
From monolithic to microservices to serverlessFrom monolithic to microservices to serverless
From monolithic to microservices to serverlessDavide Taibi
 
Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?pflueras
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMiki Lombardi
 
node.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontiernode.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontierbcantrill
 
Gitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsMariano Cunietti
 
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and MicroservicesAccelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and MicroservicesRick Hightower
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary SoftwareYun Zhi Lin
 
Containers and Why They Matter
Containers and Why They MatterContainers and Why They Matter
Containers and Why They MatterRay Lukas
 

Similar to Elastically scalable architectures with microservices. The end of the monolith? (20)

DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve PooleDevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
DevOps and the cloud: all hail the (developer) king - Daniel Bryant, Steve Poole
 
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
JAXLondon 2015 "DevOps and the Cloud: All Hail the (Developer) King"
 
Microservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech TalksMicroservices - Peixe Urbano Tech Talks
Microservices - Peixe Urbano Tech Talks
 
Microservices - when, why and how incontrodevops.it
Microservices  - when, why and how incontrodevops.itMicroservices  - when, why and how incontrodevops.it
Microservices - when, why and how incontrodevops.it
 
Let's talk about... Microservices
Let's talk about... MicroservicesLet's talk about... Microservices
Let's talk about... Microservices
 
Microservices and modern backends - Azure Meetup Frankfurt
Microservices and modern backends  - Azure Meetup FrankfurtMicroservices and modern backends  - Azure Meetup Frankfurt
Microservices and modern backends - Azure Meetup Frankfurt
 
Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!Enabling application portability with the greatest of ease!
Enabling application portability with the greatest of ease!
 
From monolithic to microservices to serverless
From monolithic to microservices to serverlessFrom monolithic to microservices to serverless
From monolithic to microservices to serverless
 
agile microservices @scaibo
agile microservices @scaiboagile microservices @scaibo
agile microservices @scaibo
 
Microservices vs monolithics betabeers
Microservices vs monolithics   betabeersMicroservices vs monolithics   betabeers
Microservices vs monolithics betabeers
 
Micro services
Micro servicesMicro services
Micro services
 
Microservices Architecture
Microservices ArchitectureMicroservices Architecture
Microservices Architecture
 
Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?Isn't the Monolith Just Enough?
Isn't the Monolith Just Enough?
 
Micro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - PlansoftMicro Front-End & Microservices - Plansoft
Micro Front-End & Microservices - Plansoft
 
Are Microservices our future?
Are Microservices our future?Are Microservices our future?
Are Microservices our future?
 
node.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontiernode.js and Containers: Dispatches from the Frontier
node.js and Containers: Dispatches from the Frontier
 
Gitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operationsGitops: a new paradigm for software defined operations
Gitops: a new paradigm for software defined operations
 
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and MicroservicesAccelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
Accelerate Delivery: Business case for Agile DevOps, CI/CD and Microservices
 
A Tale of Contemporary Software
A Tale of Contemporary SoftwareA Tale of Contemporary Software
A Tale of Contemporary Software
 
Containers and Why They Matter
Containers and Why They MatterContainers and Why They Matter
Containers and Why They Matter
 

More from Javier Arias Losada

Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Javier Arias Losada
 
Pybcn machine learning for dummies with python
Pybcn machine learning for dummies with pythonPybcn machine learning for dummies with python
Pybcn machine learning for dummies with pythonJavier Arias Losada
 
OSCON - ES6 metaprogramming unleashed
OSCON -  ES6 metaprogramming unleashedOSCON -  ES6 metaprogramming unleashed
OSCON - ES6 metaprogramming unleashedJavier Arias Losada
 
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsFull Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsJavier Arias Losada
 
Rabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging PatternsRabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging PatternsJavier Arias Losada
 
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingNoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingJavier Arias Losada
 
From Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndromeFrom Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndromeJavier Arias Losada
 

More from Javier Arias Losada (7)

Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?Why do lazy developers write beautiful code?
Why do lazy developers write beautiful code?
 
Pybcn machine learning for dummies with python
Pybcn machine learning for dummies with pythonPybcn machine learning for dummies with python
Pybcn machine learning for dummies with python
 
OSCON - ES6 metaprogramming unleashed
OSCON -  ES6 metaprogramming unleashedOSCON -  ES6 metaprogramming unleashed
OSCON - ES6 metaprogramming unleashed
 
Full Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.jsFull Stack Bus with Javascript, RabbitMQ and Postal.js
Full Stack Bus with Javascript, RabbitMQ and Postal.js
 
Rabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging PatternsRabbitmq, amqp Intro - Messaging Patterns
Rabbitmq, amqp Intro - Messaging Patterns
 
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel MessagingNoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
NoSQL Matters BCN 2013. Sprayer Low Latency, Reliable, Mutichannel Messaging
 
From Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndromeFrom Java to Python: beating the Stockholm syndrome
From Java to Python: beating the Stockholm syndrome
 

Recently uploaded

SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsChristian Birchler
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Developmentvyaparkranti
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfRTS corp
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalLionel Briand
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLionel Briand
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identityteam-WIBU
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITmanoharjgpsolutions
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...Bert Jan Schrijver
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptxVinzoCenzo
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profileakrivarotava
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxAndreas Kunz
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfkalichargn70th171
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsSafe Software
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesKrzysztofKkol1
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...OnePlan Solutions
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldRoberto Pérez Alcolea
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slidesvaideheekore1
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxRTS corp
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...OnePlan Solutions
 

Recently uploaded (20)

SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving CarsSensoDat: Simulation-based Sensor Dataset of Self-driving Cars
SensoDat: Simulation-based Sensor Dataset of Self-driving Cars
 
VK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web DevelopmentVK Business Profile - provides IT solutions and Web Development
VK Business Profile - provides IT solutions and Web Development
 
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdfEnhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
Enhancing Supply Chain Visibility with Cargo Cloud Solutions.pdf
 
Precise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive GoalPrecise and Complete Requirements? An Elusive Goal
Precise and Complete Requirements? An Elusive Goal
 
Large Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and RepairLarge Language Models for Test Case Evolution and Repair
Large Language Models for Test Case Evolution and Repair
 
Post Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on IdentityPost Quantum Cryptography – The Impact on Identity
Post Quantum Cryptography – The Impact on Identity
 
Best Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh ITBest Angular 17 Classroom & Online training - Naresh IT
Best Angular 17 Classroom & Online training - Naresh IT
 
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
JavaLand 2024 - Going serverless with Quarkus GraalVM native images and AWS L...
 
Osi security architecture in network.pptx
Osi security architecture in network.pptxOsi security architecture in network.pptx
Osi security architecture in network.pptx
 
SoftTeco - Software Development Company Profile
SoftTeco - Software Development Company ProfileSoftTeco - Software Development Company Profile
SoftTeco - Software Development Company Profile
 
VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024VictoriaMetrics Anomaly Detection Updates: Q1 2024
VictoriaMetrics Anomaly Detection Updates: Q1 2024
 
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptxUI5ers live - Custom Controls wrapping 3rd-party libs.pptx
UI5ers live - Custom Controls wrapping 3rd-party libs.pptx
 
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdfExploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
Exploring Selenium_Appium Frameworks for Seamless Integration with HeadSpin.pdf
 
Powering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data StreamsPowering Real-Time Decisions with Continuous Data Streams
Powering Real-Time Decisions with Continuous Data Streams
 
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilitiesAmazon Bedrock in Action - presentation of the Bedrock's capabilities
Amazon Bedrock in Action - presentation of the Bedrock's capabilities
 
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
Tech Tuesday - Mastering Time Management Unlock the Power of OnePlan's Timesh...
 
Keeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository worldKeeping your build tool updated in a multi repository world
Keeping your build tool updated in a multi repository world
 
Introduction to Firebase Workshop Slides
Introduction to Firebase Workshop SlidesIntroduction to Firebase Workshop Slides
Introduction to Firebase Workshop Slides
 
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptxThe Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
The Role of IoT and Sensor Technology in Cargo Cloud Solutions.pptx
 
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
Revolutionizing the Digital Transformation Office - Leveraging OnePlan’s AI a...
 

Elastically scalable architectures with microservices. The end of the monolith?

Editor's Notes

  1. What do Netflix, Yelp, Gilt, PayPal, Twitter, Amazon and others have in common? they started with a monolithic architecture, they are very successful companies and needed to scale: software, teams and do agile deployments they started to feel pain by being blocked, by the architecture to scale and deploy. they broke their monoliths into a distributed architecture with smaller services to release the pain Are monoliths obsolete? Are monoliths a thing of the past?
  2. Are monoliths obsolete? Are monoliths a thing of the past? The objective of the talk is to show the main concepts and misconceptions about microservices versus monoliths.
  3. MAINFRAMES huge iron servers, server room, all applications in the same host, users were able to access the mainframe via "dumb terminals" 1950s mainframes begin to be available to big corporations and schools in the 1970s, IBM released an operating system called VM that allowed admins on their System/370 mainframe systems to have multiple virtual systems, or "Virtual Machines" (VMs) on a single physical node NASA shutted down its last mainframe in 2012, but probably, many of the your money transactions are still safely executed and stored in mainframes. CLIENT/SERVER as PCs improved their power, the idea to move processing capacity to the client started to catch on. Client/server came in two flavors: 2 tiers, where local PCs run applications that connect to the shared database or even mainframe (mixing behaviour and database). 3 tiers, client, application server running the application, database. SOA SOA means so many different things to different people. For some SOA is about exposing software through web services For some SOA implies an architecture where applications disappear, core services that supply business functionality and data separated by UI aggregators that apply presentations that aggregate together the stuff that core services provide For some SOA is about allowing systems to communicate over some form of standard structure (usually XML based) (CORBA with angle brackets) For some SOA is all about using (mostly) asynchronous messaging to transfer documents between different systems. Essentially this is EAI MICROSERVICES Microservices could be seen as a subset of SOA where many of the ambiguity is removed.
  4. CHEMISTRY. a substance that causes or accelerates a chemical reaction without itself being affected. INTRO: When talking about microservices architectures, we must talk not only about technology, but also about the complete software development cycle. AGILE: Agile software development and agile (or lean) product management, bring shorter release cycles, faster time-to-market, and more frequent small changes. CONTAINERS: Cloud and containers allow easiest application deployment, and programmable infrastructure (eg. elastically scale, single-use test environments…) CONTINUOUS INTEGRATION: Continuously merging code to main branch combined to automated tests (unit, integration, end to end, performance) in a pipeline makes that software at the end of the process may be deployed to production at any moment.
  5. CHEMISTRY. a substance that causes or accelerates a chemical reaction without itself being affected. INTRO: When talking about microservices architectures, we must talk not only about technology, but also about the complete software development cycle. AGILE: Agile software development and agile (or lean) product management, bring shorter release cycles, faster time-to-market, and more frequent small changes. CONTAINERS: Cloud and containers allow easiest application deployment, and programmable infrastructure (eg. elastically scale, single-use test environments…) CONTINUOUS INTEGRATION: Continuously merging code to main branch combined to automated tests (unit, integration, end to end, performance) in a pipeline makes that software at the end of the process may be deployed to production at any moment.
  6. CHEMISTRY. a substance that causes or accelerates a chemical reaction without itself being affected. INTRO: When talking about microservices architectures, we must talk not only about technology, but also about the complete software development cycle. AGILE: Agile software development and agile (or lean) product management, bring shorter release cycles, faster time-to-market, and more frequent small changes. CONTAINERS: Cloud and containers allow easiest application deployment, and programmable infrastructure (eg. elastically scale, single-use test environments…) CONTINUOUS INTEGRATION: Continuously merging code to main branch combined to automated tests (unit, integration, end to end, performance) in a pipeline makes that software at the end of the process may be deployed to production at any moment.
  7. Continuous Integration is a software development practice where members of a team integrate their work frequently into the main branch of the Version Control System, usually each person integrates at least daily - leading to multiple integrations per day. Each integration is verified by an automated build (including test) to detect integration errors as quickly as possible. Automatic build steps: unit tests code quality metrics package (eg: create RPM, Docker container, Virtual Machine) component, integration, end2end, performance tests Many teams find that this approach leads to significantly reduced integration problems and allows a team to develop cohesive software more rapidly.
  8. There is no single definition, and it depends on who you speak to. My current favorite is the definition from Adrian Cockcroft, who is the architect behind Netflix migration to microservices architecture. Loosely coupled service oriented architecture with bounded contexts. (Adrian Cockcroft)
  9. There is no single definition, and it depends on who you speak to. My current favorite is the definition from Adrian Cockcroft, who is the architect behind Netflix migration to microservices architecture. Loosely coupled service oriented architecture with bounded contexts. (Adrian Cockcroft)
  10. The main treat of loosely coupled services is the fact that they can be released and upgraded independently. Shared databases was used frequently in the past to integrate different applications. It is one of the worst forms of coupling and forces to be very careful when making any change to the data or its schema. In microservices, each microservice cares about a little responsibility, and owns its data. No access to the domain managed by the microservice can be done if not done using APIs Other sources of coupling can be shared libraries. During the SOA fever, many middleware vendors proposed to add a coordination layer between applications. That layer would be responsible of many data transformations, routing, coordination of processes… and even some business logic. The result is that delivering new functionalities is coupled to many more pieces, making it much more difficult.
  11. Each microservice run as a standalone process, this can lead to horizontal scalability, given the All microservices talk exclusively using APIs, no database sharing. This reduces coupling, but we still have services coupled by the API. When changing the API we can break everything or be forced to deploy different services at the same time. Semantic versioning helps reduce (not avoid) this problems. In semantic versioning we use the different tokens in the version (eg: 2.3.23) to represent the impact of the changes in the API, from right to left: patch changes (bugfixing), minor changes (new functionalities), major changes (incompatible API changes). Semantic versioning and microservices running as standalone processes help to design strategies for migrating APIs to major version releases (eg: having different versions running at the same time while migrating dependent services).
  12. SIZE: Size is very important when talking about microservices. Microservices should have a size so that it is manea egarding size, there is some controversy here. Some sources insist in defining microservices by the number of Lines of Code (LOC), but this is arbitrary and a non-sense. The key point is HOW DO YOU DECIDE WHAT RESPONSIBILITIES BELONG TO A PARTICULAR SERVICE? A service must specialize in do one thing and do it well. When it needs help, talks to other microservices by using their APIs. Microservices should be organized by responsibility, domain or business capability. Eric Evans in DDD (Domain Driven Design) talks about designing domain models as a very important part. When designing a system, the business model must reflect the reality: Customer, Bill, Product, Stock, Payment, … but in complex systems there are different realities. The same entity, eg: Customer has different properties in different contexts: eg departments of marketing, finance, logistics. DDD defines BOUNDED CONTEXTS as a way to split big domain models in sets of entities that are significant in a given context (eg. finance department). Different contexts may have completely different models for common concepts with mechanisms to map between these polysemic concepts for integration. SIZE AND CHATTY APIS: You must strike a balance here. If you fragment too much, cohesion of your application is too low, APIs are too chatty and you need too many interactions between microservices to do just one thing. If you make services too big, you risk to couple too much functionalities together.
  13. PERSISTENCE AND LANGUAGE: one advantage of microservices is that each one is a standalone process that is independently developed, tested, released and operated. Each microservice uses its own data storage backend(s). Using different databases for different purposes is known as Polyglot Persistence. This means that services can be developed using different programming languages and use different data storages. While this is stated as an advantage of microservices over monolithic architectures, we must be careful here. Finding a balance between finding the best tool for the job and introducing more complexity by using many different technologies. I read an article some time ago that stated that when you develop an application you have a small number of tokens for investigation and problems. If you choose technologies that are immature or inestable you lose some of your tokens. The nice thing about boring technologies is that the capabilities of these things are well understood. But more importantly, their failure modes are well understood. When you choose a new technology, you are putting more stress in many aspects:operations, learning curve. You have to monitor the thing. You have to figure out unit tests, if it is a DB create and maintain a cluster, ...
  14. Smart endpoints and dumb pipes: no intelligence should go into the communication mechanism (avoid ESB approach) * Two main communication mechanisms: HTTP request response and lightweight message bus * In a monolith components call each other via method invocation. A big issue migrating to microservices is converting to coarser grained APIs or end with chatty communications.
  15. Other important characteristics of microservices: STATELESS: Being stateless mean that they do not keep any state inside. Stateless services only need the information in a request to handle it. Of course, for handling requests we will need to query databases or talk to other services, but no state is kept outside of the databases. Statelessness implies that services can be started/stoppped at any moment without any risk, and that all requests can be load balanced between different service instances to improve scalability. IDEMPOTENT: repeated operations should yield the same result, or at least be prepared to receive repeated operations without failing. FAILURE READY: our microservices should be prepared to not lose operations in case of death or failure of a dependency (eg mongodb, redis, …) EXAMPLE, if a request makes different two changes to a database and the process fails between first and second, our platform should ensure that we will receive the same request again later. A simple way of achieving this is using some message broker like RabbitMQ and manual Acknowledge of messages. If a process fails without acknowledge, it is requeued and delivered to another consumer. When a brother process receives the request, repeats the first operation and it must not fail (Eg do upsert instead of insert, go on on duplicated...), then finish with the second operation and confirm the message in RabbitMQ GOOD CITIZENS: there are many other small features that are very important in microservices architectures. (Eg do upsert instead of insert, go on on duplicated...)
  16. Let’s talk about other important aspects about microservices
  17. With microservices, the execution environment is very dynamic, microservices can be started or stopped at any time. An important question arises: WHERE ARE MY SERVICES? service discovery helps you have such a dynamic environment and be able to know the addresses of your services. In EyeOS we are using consul.io Discovering our services comes in two flavours: DNS: our services know the name of the service, discovery service returns one of the available IPs Database like Query: our services request the database about the service address, and then uses it. It is very important to have service discovery linked to failure detection, so that discovery service returns only addresses of services that are running, and dynamically changes this list as services start or stop.
  18. Now, you already have a successful project under heavy load from your uses… and you need to scale it. Your microservices need to be stateless so that they can easily be started/stopped at any moment. When you start a new service instance, it must start receiving requests. If you are using HTTP, you need your service discovery solution to be able to get requests to the new instance. If you are using a message broker, the new service will be a new competing consumer for a given queue/topic and automatically receives all messages. With stateless services and load balancing, now, we can scale our services manually. Since we have virtualization or containers, we can programatically add new nodes to our infrastructure, our microservices can be added and automatically start adding more processing capabilities to the platform. In this moment, we would have the technical capabilities to dynamically scale. We need something that is able to start/stop microservices instances. That piece of code needs to know when to do it. How we decide about scaling? Monitoring, but what? CPU? Requests received by a microservice? Request time, as seen by client? we can have many of them, we would need to aggregate data… If you are using a message broker, there is a simple measure to check: QUEUE SIZE. Using it you can know when a microservice is receiving more requests that it is capable of processing.
  19. As a summary, we can see some of the advantages of microservices design: simple, loosely coupled (only talk through API) physical: by physical here I mean features that are a consecuence of services released as a set of independent computer programs in different processes. appropiate tool for the job, deliver independently, enabler for continuous delivery. This good parts are consequences of the microservices architecture.
  20. As a summary, we can see some of the advantages of microservices design: simple, loosely coupled (only talk through API) physical: by physical here I mean features that are a consecuence of services released as a set of independent computer programs in different processes. appropiate tool for the job, deliver independently, enabler for continuous delivery. This good parts are consequences of the microservices architecture.
  21. As a summary, we can see some of the advantages of microservices design: simple, loosely coupled (only talk through API) physical: by physical here I mean features that are a consecuence of services released as a set of independent computer programs in different processes. appropiate tool for the job, deliver independently, enabler for continuous delivery. This good parts are consequences of the microservices architecture.
  22. As a summary, we can see some of the advantages of microservices design: simple, loosely coupled (only talk through API) physical: by physical here I mean features that are a consecuence of services released as a set of independent computer programs in different processes. appropiate tool for the job, deliver independently, enabler for continuous delivery. This good parts are consequences of the microservices architecture.
  23. What is really wrong with monoliths? Bad Design and coupling. But you can do bad design also with microservices. It is true that it is much more easier to couple (code or database) when everything is in the same process and there are no clear APIs between modules. But it is our fault as developers, not that monoliths are flawed. On the other side, monoliths keeps many things much simpler (monitoring, CI, deployment, communications between modules, scaling, …). In simple projects, monoliths can help to deliver functionality faster… which is what it is expected from us. In the first slide we were talking about Amazon, Netflix, Twitter… all started with monoliths and they went very very far before having o split them. Not that all of our projects will be as successful as that companies. For that reason, we should be very careful when deciding what architectural style to use.