0% found this document useful (0 votes)
58 views

Microservices Parte 12

The document discusses microservices architecture, which involves designing software applications as independently deployable services. Key characteristics include organizing services around business capabilities, automated deployment, smart endpoints and decentralized governance. Microservices are componentized and communicate through APIs rather than shared databases. While this allows for scalability and flexibility, it also introduces complexity in handling failures across services. The document argues microservices may be the future for software design and development.

Uploaded by

Caio Silva
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
58 views

Microservices Parte 12

The document discusses microservices architecture, which involves designing software applications as independently deployable services. Key characteristics include organizing services around business capabilities, automated deployment, smart endpoints and decentralized governance. Microservices are componentized and communicate through APIs rather than shared databases. While this allows for scalability and flexibility, it also introduces complexity in handling failures across services. The document argues microservices may be the future for software design and development.

Uploaded by

Caio Silva
Copyright
© © All Rights Reserved
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 23

MICROSERVICES

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

Componentization via Services

Our definition is that a component is a unit of software that is


independently replaceable and upgradeable.

We define libraries as components that are linked into a program


and called using in-memory function calls, while services are out-
of-process components who communicate with a mechanism
such as a web service request, or remote procedure call.
Characteristics of a Microservice Architecture

Componentization via Services

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

Organized around Business Capabilities

Large monolithic applications can always be modularized around


business capabilities.

The necessarily more explicit separation required by service


components makes it easier to keep the team boundaries clear.
Characteristics of a Microservice Architecture

Products NOT Projects

Most application development efforts that we see use a project model:

• deliver some piece of software;


• the software is handed over to a maintenance organization and the
project team that built it is disbanded.

Microservice proponents tend to avoid this model, preferring instead the


notion that a team should own a product over its full lifetime.

Smaller granularity of services can make it easier to create the personal


relationships between service developers and their users.
Characteristics of a Microservice Architecture

Smart endpoints and dumb pipes

Enterprise Service Bus (ESB), where ESB products often include


sophisticated facilities for message routing, choreography,
transformation, and applying business rules.

The microservice community favours an alternative approach:to be


as decoupled and as cohesive as possible, receiving a request,
applying logic as appropriate and producing a response.
Characteristics of a Microservice Architecture

Smart endpoints and dumb pipes

The two protocols used most commonly are HTTP request-


response with resource API's and lightweight messaging
• The best expression of the first is "Be of the web, not behind the
web" (Ian Robinson). Teams use the principles and protocols
that the world wide web is built on.
• Simple implementations such as RabbitMQ or ZeroMQ

The biggest issue in changing a monolith into microservices lies in


changing the communication pattern.
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

Being woken up at 3am every night by your pager is certainly a


powerful incentive to focus on quality when writing your code.
Characteristics of a Microservice Architecture

Decentralized Governance

Not every problem is a nail and not every solution a hammer.

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.

Of course, just because you can do something, doesn't mean you


should- but partitioning your system in this way means you have the
option.
Characteristics of a Microservice Architecture

Decentralized Data Management


Characteristics of a Microservice Architecture

Decentralized Data Management

Decentralizing responsibility for data across microservices has


implications for managing updates. The common approach to dealing
with updates has been to use transactions to guarantee consistency
when updating multiple resources. This approach is often used within
monoliths.
Characteristics of a Microservice Architecture

Decentralized Data Management

Decentralizing responsibility for data across microservices has


implications for managing updates. The common approach to dealing
with updates has been to use transactions to guarantee consistency
when updating multiple resources. This approach is often used within
monoliths.
Characteristics of a Microservice Architecture

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

Design for failure

A consequence of using services as components, is that applications


need to be designed so that they can tolerate the failure of services.

Any service call could fail due to unavailability of the supplier, the client
has to respond to this as gracefully as possible.

This is a disadvantage compared to a monolithic design as it introduces


additional complexity to handle it.
Characteristics of a Microservice Architecture

Design for failure

Since services can fail at any time, it's important to be able to detect the
failures quickly and, if possible, automatically restore service.

• Real-time monitoring of the application


• Business relevant metrics

Monitoring is vital to spot bad emergent behavior quickly so it can be


fixed.
Characteristics of a Microservice Architecture

Evolutionary Design

Change control doesn't necessarily mean change reduction.

If you find yourself repeatedly changing two services together, that's a


sign that they should be merged.

The Guardian website is a good example of an application that was


designed and built as a monolith, but has been evolving in a
microservice direction. The monolith still is the core of the website, but
they prefer to add new features by building microservices that use the
monolith's API.
Are Microservices the Future?
Thiago Lopes
http://pt.slideshare.net/thslopes
fb.com/thsolo
Based on the article Microservices of (James Lewis and Martin Fowler)

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy