2-3: Microservices

We can define Microservices as an architectural style which approach is to develop a single application as a suite of small services, each of them, running its own processes and communicating via lightweight mechanisms, often Microservices uses an HTTP resource API. We also need to compare a traditional monolithic application in order to compare and to give a better explanation of what is a Microservice.

A monolithic application puts all its functionality into a single process and scales by replicating the monolith on multiple servers. But, microservices do not work like this, a microservices architecture puts each element of functionality into a separate service and scales by distributing these services across servers, replicating as needed.

Having this context, we can have a better idea of what is a Microservice. Now, it is time to enumerate the important characteristics of a Microservice Architecture, have in mind that it does not exist a silver bullet in development so, not all the characteristics displayed here will be found in all microservices applications:
  1. Components via Services: Microservice will use libraries, but their primary way of componentizing their own software is by breaking down into services. Remembering that a component is a unit of software that is independently replaceable and upgradeable.
  2. Organized around Business Capabilities: The microservice approach splits up into services organized around the business capability.
  3. Products not Projects: Microservice proponents tend to avoid the project model, preferring instead the notion that a team should own a product over its full lifetime. For example, Amazon's notion of "you build, you run it".
  4. Smart endpoints and dumb pipes: Microservice applications aim to be as decoupled and as cohesive as possible, they own their own domain logic, receiving a request, applying a logic as appropriate and producing a response.
  5. Decentralized Governance: Use the right tool for the job while monolithic applications cannot take advantage of different languages to a certain extent.
  6. Decentralized Data Management: each service manages its own database, either different instances of the same database technology, or entirely different database systems.
  7. Infrastructure automation: AWS has reduced the operational complexity of building and deploying and operating microservices.
  8. Design for failure: It is a kind of automated testing in production.
  9. Evolutionary design: Only a few modules or services might need to evolve in this case if you have more than one module that you constantly need to evolve it, these two services should be merged.

Finally, I think that microservices architecture is the future of web development even project development, but it is fairly new so we will need to wait in order to see this type of architecture in almost all kind of projects. Also, it is important to know how to build good microservices in order to be competitive in the professional world.

Comentarios

Entradas populares de este blog

Summary Second Period

2-4: Understanding the SOLID Principles