domingo, 17 de marzo de 2019

MICROSERVICES


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