Skip to main content

Microservices


On today’s blog entry we are going to talk about the Microservices architecture. This architecture has an approach where when we are developing a single app, we develop it as lots of small services, each of them running on its own process and communicating with each other with something that can bind them together. Now I have already used microservices without knowing I was actually using them, perhaps this architecture is quite intuitive for best practices or something like that, but anyway the author of the article gives some characteristics about this which are the following:

·         Componentization via Services: The components of the microservice need to be gather into libraries that will be used later on by the microservice to communicate with remote parts of the whole program.
·         Organized around Business Capabilities: This characteristic refers that we need to create divisions, each of the divisions need to be focused on the business capability which include various things like storage, interface, and many other stuff, now for this part the team developing this part needs to have different knowledge not only about programming, but also knowledge about project management, databases and obviously user interaction or experience.
·         Products not Projects The resultant software needs to be acknowledged not as another project, but as a potential product which characteristic can be used to improve the whole capability of the business than just a small part of it
·         Smart endpoints and dumb pipes: The endpoints should be for all the logic of receiving requests and applying it accordingly, and the pipes should be like small messages buses that behaves as a message router.
·         Decentralized Governance: This refers that the developers should use any tool at their disposal so the work can be done more faster and in form, but also they should probably code in any language so they can use those tools at their fullest so the system is not language based, but technology based.
·         Decentralized Data Management: the conceptual model of the world will differ between systems, so you should prefer letting each service manage its own database, either different instances of the same database technology (Polyglot Persistence).
·         Infrastructure Automation: automated test ad automate deployment.
·         Design for failure: Our software must tolerate the failure of the external services.
·         Evolutionary Design: Design software that is capable to evolve in the future.

Comments

Popular posts from this blog

Ethical Reflection on Ready Player One

Todays blog is the last one!!!!!! It has been quite a journey, but as everything, its time to end this. On today’s blog we are going to talk about a book, Ready Player One, written by Ernest Cline, this is the book that everyone in my class has been reading during the semester, and it was really, really good, I actually enjoyed it a lot. The plot is quite simple, it talks about a kid called Wade Watts, in a world were the actual real world is kind of a huge disaster for not saying other words, but in the book exist another world, a virtual one called the Oasis, were technically everyone plays it, because it was a whole new world, not only a videogame, in there people can have jobs, meet people, study in schools. The creator of the Oasis was James Halliday, and I say was because in the book he is dead, and after his dead he created 3 easter eggs that, when a player has the three, that player will own the oasis, and be the richest person in the world, and that is the goal of our dear...

Is Design Dead?

On today’s entry we are going to talk about the article “Is design dead?”, which talks about how the design has been changing through the years and how the good practices were developed in order to create a good design. Is no lie that for all the people that develops software, is kind of difficult to come up with a good design because of the lack of and standards to create it, other areas may have standards or even a methodology, but not us. Because of these needs, developers have created a bunch of good practices, not to create, but to reach a good design probably in a 85% of success. For example, a good practice is a that the code we create has to be modular in order to make corrections or complete alterations in a easier, this changes may occur for many reasons, manteinance, update the information or just to simply chage the entire code to something more efficient, the same goes to the design, but the problem is that a design is more difficult to modify when is already d...