lunes, 13 de marzo de 2017

Microservices

Figure 1: Monoliths and Microservices

Microservices is a term, that makes reference to an architectural style, meaning that a single application is developed as a small service. To understand better the term, the article make a contrast of what monolithic style means, and is a monolithic application bit as a single unit. An example, is the server-side application of an enterprise application, which handle HTTP requests, execute domain logic, retrieve and update data from a database; but the truth is that any small change to the application, require the entire monolith to be rebuilt and deployed, which is a pain.

So, that's why microservices are a way more better, because services are independently deployable and scalable; and allowing that different services can be written in different programming languages. Graphically, in Figure 1 we can see the differences between monolithic and micro services. But the truth is, that all not all the micro services have the same characteristic (but we expect the opposite), which are:

  • 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
So the main question is are Microservices the future? Despite the experiments and comparison made with the monolithic architecture, micro services have many advantages, but we need to consider that we can take a final decision, because architectural decisions are only evident several years after you made them, so is soon to make a final decision.
So from my point of view, seem to have so many advantages the micro services in contrast with monolithic, but taking in count the requirements of the system and implementing a new architecture involves too much time and money, that's why I think, not many companies have adapted this architecture. One good example of a website that knew who to use it is the The Guardian website, which the core stills built as monolithic, but they added features by building micro services that use the monolith's API.
Santorini, Greece
For more information visit Microservicies

jueves, 2 de marzo de 2017

The 4+1 View Model

The main topic of this blog is the 4+1 View Model, but we are going to complement it with another article and video, that in brief is about how blind men try to describe one creature, but their perspectives are so different, that did not get to a final decision and that's what happen when we try to build a software or in project if we see that way. So the article The Elephant and the Blind Programmers is kind of the video of the Six Blind Men, but the moral that one describe us is that a methodical war, where everyone fights to prove everyone is wrong, except him, but the truth is that everyone is right, about some part of the creature, but if they would join all their opinions, maybe it would be easier to came to a result, and that what the article tried to teach us. Mention this, we can now talk about the 4+1 Model, because what we mention before was like an analogy or the consequences of not having a good methodology, and this model is about four views, plus one that is an use-case view, which we will describe next:
Logical View. Tell us what sort of objects we are going to be building for the product. Include all the classes and objects, how they communicate and the sort of data.
Development View. (Which belongs to what) Tells the developer how the system is organized during the development. Also called implementation view.
Process View. Describes the concurrency and synchronized aspects in the process and software.
Physical View. Tells us how software and hardware are related. How the system will look like, when is in the system environment and what parts of the system goes where.
Use-Case View. This is the +1, also called scenarios, which describe is how the system interacts with the world
So this are important for developing software and having a good organization, to avoid situations like the blind men.
For more information visit 4+1 View into Software Architecture