With the advent of cloud computing, new models have appeared that, in addition to streamlining infrastructure and service provision, allow companies to use a technology that adapts to their needs and thus only pay for the services they use at all times.
This new paradigm also allows "unlimited" use of resources and services completely managed by third parties, which enables companies to focus on their business, making technology a commodity.
What is Cloud Native
Cloud Native is a way of working that deals with how applications are created and deployed, not where, by exploiting the advantages of the delivery model offered by cloud computing.
The four pillars on which Cloud Native pivots are:
1 Devops
Over the last few years we have worked in scenarios in which development teams and operations work isolated, in silos, without a shared vision of what is truly important: the product. These teams, on numerous occasions, have completely different objectives.
For development, the priority is to deliver the changes in the product. For operations it is to guarantee stability in the infrastructure that allow these products to be exploited, which ends up in silos and a failure in the development and production of the product.
With the inclusion of the term Devops we break this barrier between operations and development teams down, sharing vision and objectives so that the product we are developing is the only important thing for the whole team.
"DevOps allows you to deliver software faster, with higher quality, lower cost and a very high frequency of releases".
2 Continuous Delivery
I still feel chills when, back in 2002, I had to write down in a notebook each file that I interacted with to develop a new feature of a product.
And after that, I was able to identify the ones I had to upload manually to an FTP to later to put them in the famous weblogic webapps directory by requesting by mail to the operations department of Company X.
But it did not end there, I had to restart the application server development environment, which incidentally had an operating system different than my development machine (but we'll talk about that later).
Sometimes it worked at a first try!
Nowadays it does not make sense to work manually. All the steps in the construction and deployment of our product have to be automated in order to avoid human errors and speed up the construction and deployment process.
This is what Continuous Delivery is about. It is the way to automate the tasks of construction and deployment, put our products in production in the shortest possible time, with the lowest cost and with the maximum guarantee of quality.
3 PaaS containers
Is it really necessary to continue hearing "in my machine this works" when it is not working in production or test environments?
The containers are the answer to the previous question. With containers we can guarantee that a product is executed in the same way in any environment in which it is deployed.
Simplifying a lot, it's a twist to virtualization, since different containers share layers of the same operating system, making them much lighter than a virtual machine.
4 Microservices
If we take stock of everything we have seen so far: Cloud, Continuous Delivery, Containers, Devops... we can consider the possibility of taking another step in the development of applications using the microservice pattern to go to a distributed architecture.
The great advantages of using this pattern are:
- Efficient resource management: our microservice system scales automatically, adjusting the consumption in memory and CPU to the demand of our microservices at all times.
- Decoupling between functionalities: each microservice covers a single functionality and does it well.
- Independent and reduced DevOps equipment: a change in a complete functionality does not imply having to modify or suffer if we introduce an error in functionality. Additionally, thanks to the reduced granularity of the microservices, they make the Continuous Delivery more efficient, reducing the Time To Market and guaranteeing the quality of the product.
It is a complex pattern not without challenges to overcome if you want to implement it successfully. It is impossible to find a silver bullet for these challenges posed by the market and companies.
Fortunately, thanks to experience and knowledge, together with common design patterns and specific tools, it is possible to make the most of this architecture and obtain all the aforementioned benefits.
The major players in the market have understood that these are the pillars on which their technology must be raised in order to maximize business performance.
The question is not whether you should bet on cloud native, but whether you are going to bet right now or miss out.
Comments are moderated and will only be visible if they add to the discussion in a constructive way. If you disagree with a point, please, be polite.
Tell us what you think.