Microservices Parte 12
Microservices Parte 12
Thiago Lopes
http://pt.slideshare.net/thslopes
fb.com/thsolo
Based on the article Microservices of
(James Lewis and Martin Fowler)
The term "Microservice Architecture" describes a particular
way of designing software applications as suites of
independently deployable services. There are certain
common characteristics around organization around business
capability, automated deployment, intelligence in the
endpoints, and decentralized control of languages and data.
• Characteristics of a Microservice Architecture
• Componentization via Services
• Organized around Business Capabilities
• Products not Projects
• Smart endpoints and dumb pipes
• Decentralized Governance
• Decentralized Data Management
• Infrastructure Automation
• Design for failure
• Evolutionary Design
• Are Microservices the Future?
Deploy
Monolithic X Mocroservice
Characteristics of a Microservice Architecture
Using services like this does have downsides. Remote calls are
more expensive than in-process calls, and thus remote APIs need
to be coarser-grained, which is often more awkward to use. If you
need to change the allocation of responsibilities between
components, such movements of behavior are harder to do when
you're crossing process boundaries.
Characteristics of a Microservice Architecture
Decentralized Governance
• Build it / run it
• Teams are responsible for all aspects of the software they build
including operating the software 24/7
Decentralized Governance
You want to use Node.js to standup a simple reports page? Go for it.
C++ for a particularly gnarly near-real-time component? Fine. You
want to swap in a different flavour of database that better suits the
read behaviour of one component? We have the technology to rebuild
him.
Infrastructure Automation
• Automated Tests
• Automate Deployment
Characteristics of a Microservice Architecture
Infrastructure Automation
Characteristics of a Microservice Architecture
Infrastructure Automation
Characteristics of a Microservice Architecture
Any service call could fail due to unavailability of the supplier, the client
has to respond to this as gracefully as possible.
Since services can fail at any time, it's important to be able to detect the
failures quickly and, if possible, automatically restore service.
Evolutionary Design