Articles

Architecture
_
cloud
_
for
_
microservices,
_
the
_
work
_
of
_
teams

Cloud Solutions  ·  Custom Software

Developing ‘cloud’ applications requires mastering microservices architectures, with a team of highly specialised programmers that is in harmony with the rest of the company’s departments.

I still remember when I arrived in my first IT department, in a well-known ceramics company. They had just implemented BAAN, if ever those gigantic ERPs had just been implemented. It testifies that the chief consultant stayed on the company's staff, to adjust the system, they said. Almost 20 years later, nothing is the same.

Those large applications were monolithic, designed for predictable scalability, had a powerful relational database, with synchronised processing, and on local racks. They were updated occasionally, I could spend an entire night on it because, each time they updated, there was a large volume of improvements, and the administration was mostly manual.

The appearance of the cloud has changed everything.. The applications are broken down into smaller, decentralised services. These services communicate through APIs or through the use of events or asynchronous messaging. Applications scale elastically, horizontally, adding new instances as required. Different storage technologies are combined and processing is asynchronous. Updates are frequent and administration automated.

And that implies the making of many decisions.

Y eso lleva implícitas la toma de muchas decisiones. The three basic decisions have to do with:

First, the process service or hosting model for the computing resources on which the applications will run. Microsoft Azure, Amazon Web Services or Google Cloud have become the benchmarks in this field, although there are times when we must resort to other hosting solutions.

Second, to define what the data storage will be like. In this sense, the term ‘polyglot persistence’ has been coined, which is the use of different databases depending on their type or on how the data is going to be used, even if they ultimately report to the same application.

Third, is the choice of a messaging service, which will generate asynchronous communications.

Having a strategic partner with Cuatroochenta's experience to guide us in this field is an added value for both management and IT departments, as it will determine many aspects of the design of subsequent applications.

Another decision to make when we make the leap to the cloud is the style of architecture with which we are going to implement our application. And if there is a style that has become particularly popular, it is that of microservices. In this architecture, an application is made up of many small and independent distributed services, each of which provides a solution to a specific functionality. All these standalone functionalities are flexibly integrated via an API.

However, there are certain challenges to be addressed because, although it is true that each service is much simpler and more flexible in terms of development, all of them must be integrated harmoniously, taking into account that this architecture allows different teams working with different languages, different databases for each service, and different philosophies. That is why it is convenient to define standards for the entire project without compromising the flexibility provided by this architecture.

Without a doubt, having a consolidated DevOps culture will help the end user to benefit from an efficient application. A bad development can generate problems in the integrity of the data (which can be independent in each service), or a latency that is too high due to an excessive chain of dependency of the service (one service calls another and so on, so that congestion may occur if the design is not optimal). It must also be taken into account, in terms of dependency on services, that updating one should not influence the functionality of the rest, so version control is a very important aspect.

The agility that this architecture allows makes the administration of services one of its strengths, from updating a service to adding new features, with scalability being another strength. At Cuatroochenta, we use Kubernetes as an orchestrator to package a higher density of services per host, thus increasing efficiency in the use of resources.

With this philosophy, at Cuatroochenta we have developed applications such as the Butech Calculator, for the Porcelanosa Group subsidiary of the same name, an app that allows us to determine the amount of ceramic materials necessary for the development of architecture projects. We have also participated in the development of the digital transformation of a well-known civil works construction company, for which we have developed a web application capable of effectively managing all documentation regarding the subcontractors with which it works.

For us, the most important thing is that each part of the company does its work as if it were a microservice at the service of the whole:

1. Business Analysis determines, with the client, which is the best solution, setting clear objectives in order to personalise the development with the most appropriate methodology: Scrum, Agile, Critical Path Method (CPM), or Critical Chain Project Management (CCPM).

2. Design applies the omnichannel perspective, based on the experience obtained via the feedback of the approximately five million people who use the applications developed by Cuatroochenta.

3.Only in the event that ur own or third-party tools cannot adapt, do we develop a customised cloud application, based on the aforementioned or any other architecture that the client may need.

4. The application is put to the test by a beta-testing teambeta-testing ocused on stress tests, verification of routes and compliance with the requirements and project design.

5.  Then, our cybersecurity team ciberseguridad will take charge of the security audits agreed with the client.

Less than two years ago, this article would have been different, because the world of programming was a little different. Perhaps this is one of the things that makes Cuatroochenta different: the assurance our clients have that we will always provide them with the most advanced solutions to evolve with them towards digital transformation..