This Entry is about an article written by
Martin Fowler and James Lewis. Where he talks about the arising of the
architecture, that we call as microservice Architecture. This term is used to refer
a way of designing software in small independent services that will work together.
This is used mainly in business applications and have some peculiar
characteristics.
A
Business application is usually constructed in three main parts: an user
interface, a database and a server application. When you have a monolith
application, whenever you make a change on any of these parts, you have to
deploy all the application including those that you did not make a change. This
is an advantage for microservices, why? Because this kind of architecture are
independently deployable, you can change a service and then only deploy that
service, not all of them.
Here you have some of the main characteristics
described into this article.
Componentization via Services- A component
is described as a unit of software that is independently replaceable and
upgradeable. This allow us to have several components that together work as the
complete functionality, these services are components which communicate with a
mechanism such as web service request, or remote procedure call.
Organized around Business Capabilities- The
system design will be mostly a copy of the organization´s communication
structure.
Products not projects- do not look a
software as a set of specifications, look it as an on-going relationship
between the developer, software and the client.
Smart endpoint and dumb pipes- Endpoints do
all the work
Decentralized Governance- Microservices allows
you using different programming languages to build different services to make a
solution more efficient and well built.
Decentralized Data Management- Data can
also be represented in different forms depending on what the service needs.
Each service manages its own database.
Infrastructure Automation-Trying to automate
everything, from test to deployment.
Design for failure- Applications must be designed
to handle error gracefully.
Evolutionary Design-Have great change
control so you can make faster and well controlled changes to the software.
No hay comentarios.:
Publicar un comentario