Throughout history, automation has been a great incentive for humans. Since the beginning of time, man has created a large number of gadgets to facilitate all types of work; In addition, he has devised many methods to increase production by reducing costs and effort.
Automation: CI/CD
The division of labor in a manufacturing process into independent phases developed more vigorously during the second half of the 18th century, was the first step towards automation.
Mechanization was the next stage since, taking advantage of the advantage provided by the division of labor, it allowed machines to be manufactured that reproduced the tasks of a worker. Mechanization supported by motorization and energy technology gave way to the industrial production system.
Industrial robots are extremely adept at moving and manipulating light and heavy parts. These are several separate machines that are integrated in a chain and that at first glance appear to be one. In 1920 the automobile industry converted these concepts into an integrated production system with the goal of reducing costs on the assembly line. This is the concept that most people associate with automation.
Many industries are highly automated, and most of them use automation technology to carry out some stage of their activities. Now, everyone knows that the computer industry is no different from the rest. The rise of new technologies has made it a very important and constantly changing industry. Software is a crucial element that has allowed great cost savings and a great increase in productivity when performing simple and repetitive tasks such as sending an email or even much more complex tasks such as invoicing a company.
Automation in Software Development
Just as all factories have implemented technology to save costs, be more productive, and obtain quality products, software development solution is immersed in such a demanding environment that it has to adapt, it is obliged to meet the demands of the market, to deliver applications of quality and as soon as possible if you do not want to become obsolete.
For all these reasons, implementing automation tools in the software development process is very important. Expediting the delivery of a software product is vital and reducing development time is an increasingly requested requirement. Furthermore, the added value of delivering a quality product with less effort is essential.
For all these reasons, the objective of this post is to emphasize the value that automation has in application development.
Less and less due to all the tools we have, but until recently the development process was archaic, slow, and inefficient. In fact, not too many years ago, and even today, many companies do not even use version control. Therefore, the flow that software development followed consisted of: requirements gathering, analysis, programming of all functionality, manual testing, and manual deployment.
One of the main problems came when making changes to the code to develop a new functionality of the application: when testing things that did before stopped working, not having version control, finding the error was very slow. On the other hand, after having carried out tests, a manual deployment was carried out but many times we stopped copying things or executing commands, that is, it was another point susceptible to human errors. Given this problem, the concepts of Continuous Integration (CI), Continuous Delivery (CD – Continuous Delivery), and Continuous Deployment (CD – Continuous Deployment) arise. They provide us with a computing model to distribute applications faster and more securely.
Continuous Integration (CI)
The main goal of continuous integration is to implement an automatic and consistent process for building, packaging, and testing applications. This allows developer teams to upload code to version control, leading to better collaboration and code quality.
In this process, an artifact is easily prepared and compiled and tests are automatically executed. Focus your efforts on checking the application so that it does not “break” when uploading new changes to the main branch of the repository in version control.
Continuous Delivery (CD)
Continuous delivery goes one step further: it is the continuation of continuous integration, it allows you to generate artifacts ready to be deployed to production manually automatically. However, sometimes we do not have an artifact to deliver as in the case of a compiled application, such as a website; In this case, the website is deployed in a staging or QA environment so that it is validated before moving to production.
Continuous Deployment (CD)
Continuous deployment is the last phase of this application delivery model. This stage focuses on automatically deploying the artifact or application to production, without human intervention. That is, once the code is committed to version control, continuous integration will run, generate the artifact, and automatically deploy it to production. Only if a failure occurs in any step of the flow will the deployment not take place.
It is a quite critical step, so it is advisable to carry out a detailed study of whether it is advisable to apply it or not in an application.
The following diagram briefly explains the functionality of each step in this model:
Conclusions
Today we are involved in a very changing world, in a society that advances by leaps and bounds and at dizzying speed.
The rise of new technologies has allowed companies to grow very quickly, which a priori can be a very positive thing. However, just as they have grown, they could become obsolete if they do not meet the needs of their customers. It should be noted that customer requirements constantly change, so you have to be very flexible and agile to adapt to these needs.
The world of software development is no exception. In fact, it may be the other way around, the automation of compilation, packaging, and deployment processes, encompassed in the concepts of Integration, Deployment, and Continuous Delivery, allow software to be developed much faster and with higher quality.
For all these reasons, we encourage you to start implementing these processes in your development. The optimization of time and the quality of your applications will be increased, which will result in much happier customers and a more productive business with the same resources.