CI / CD stands for “Continuous Integration” and CD stands for “Continuous Delivery”.
CI / CD refers to a development method that automatically tests for changes and bugs when developing software and applications, and keeps them in a state where they can be efficiently quality-controlled and released.
Here, we will explain for those who want to know the meaning of CI / CD again and those who want to know what it can be used for.
table of contents
- 1. What is CI / CD?
- 2. Why do you need CI / CD?
- 3. Relationship between CI / CD and agile development
- 4. What are the benefits of introducing CI / CD?
- 5. Recommended tool for CI / CD installation
- 6. Introduce CI / CD to develop an efficient system!
What is CI / CD?
CI / CD is an abbreviation for “Continuous Integration” and “Continuous Delivery”.
In Japanese, “CI” means “continuous integration” and “CD” means “continuous delivery”.
CI / CD does not refer to a single technology, but to a development method that constantly tests software changes and keeps them automatically ready for production. By incorporating CI / CD into system development, tests that were previously performed manually can now be performed automatically, errors and bugs can be found quickly, and changed parts can be automatically corrected and released efficiently. It will be like.
● CI (Continuous Integration)
As mentioned earlier, CI means “continuous integration”.
The word “Integration” means “integration”. The target of CI “integration” is “various tasks and tests”. By adding the meaning of “Continuous” to that, it becomes possible to continuously work, test, and develop the operation of the software. CI also speeds error detection and enables engineers to respond quickly.
● CD (Continuous Delivery)
CD, on the other hand, means “continuous delivery.”
“Delivery” is generally used to mean delivering something. However, in the delivery here, it is used to mean “delivery” or “publication”. The target that the CD “distributes” is “software in the development test stage”. By using a CD, software that has passed the test can be automatically released to the production environment.
Why do you need CI / CD?
The reason why CI / CD has become more important in recent years is that the idea of DevOps (a method in which development staff and operation staff collaborate and cooperate to develop flexibly and speedily) is being considered by various companies. It can be mentioned that it has been introduced.
Now, everything is done on a computer. It is no exaggeration to say that there are almost no companies or organizations that do not use any system or software. On the other hand, with the spread of these, the demand for quality has also increased. What was previously manually tested by each person is now automated, requiring greater efficiency and quality. These movements have been carried out in various fields, and an increasing number of companies and organizations are actively adopting automated testing.
Relationship between CI / CD and agile development
Agile development is a method of developing a product little by making small changes. This method proved to be effective in the actual development field, and agile development is now widespread. Speed is important in agile development. The key to success in agile development is how quickly you can test, release, and get feedback on small changes. And CI / CD holds the key to its success.
By using CI / CD, the conventional process of “change”-> “test”-> “release”-> “feedback” can be performed in a short period, and the development speed can be accelerated. CI / CD has become indispensable in agile development because it is now possible to do what was previously done manually more efficiently.
What are the benefits of introducing CI / CD?
The advantages of introducing CI / CD are as follows.
- Advantages (1) You can prevent forgetting to test by automated test.
- Merit (2) Improved reliability through automated tests
- Merit ③ Improvement of productivity by automated test
● Advantages (1) Preventing forgetting to test by automated test
By introducing CI / CD, you can prevent forgetting to test. It is common to test in any development. However, if you want to test manually, you will have to run the test command every time the developer makes any changes to your code. However, in the case of manual test commands, there is a risk of forgetting to execute the test command even if the developer is careful.
In system development, even if it is a small change, if you forget to test it, you may not notice the error in the middle and release it to the production environment. If you finally find the error after releasing it, you need to check where the error came from and fix it from that part.
In that respect, CI / CD ensures that predetermined tests are always executed, so you don’t have to worry about forgetting to test. As a result, it leads to reduction of correction man-hours and improvement of quality.
● Advantage (2) Improved reliability through automated tests
CI / CD can also improve the reliability of the test itself. This is because if you test manually, you may make a mistake in the procedure for executing the test command. In that case, the test is certainly running, but you are running the wrong test command and you may not get the correct results. As a result, what was successful in the first test may turn into a failure when done at a different time.
If you make a mistake in the procedure for executing a test command, you will not be able to believe the test in the first place. This overlaps with preventing forgetting to test, but with CI / CD, the test itself can be automated, eliminating these mistakes and increasing the reliability of the test.
● Advantage ③ Improved productivity through automated testing
CI / CD allows developers to proactively release new features, leading to increased productivity. Thorough testing and delivery are required to ensure the quality of frequently updated software on an ongoing basis. CI / CD, which enables stable deployment and delivery automatically, will reduce the heavy burden on developers and operations personnel and will allow you to add new functions with confidence.
Recommended tool for introducing CI / CD
When trying to deploy CI / CD in-house, it is common to use the tools already provided. There are two types of tools, “on-premises type” and “cloud type”. Both have advantages and disadvantages, so decide which one you should choose based on your team structure and your budget.
|On-premises type||Much open-source software with high extensibility||It is necessary to prepare your server that will increase the operating cost|
|Cloud type||You can adjust the performance for your company, which can be easily started without having your server.||Only those with fixed performance with low expandability can be selected|
The recommended tools for each of the on-premises types and the cloud type are as follows.
- On-premise type ① “Jenkins”
- On-premise type ② “Concourse CI”
- Cloud type ① “Circle CI”
- Cloud type ② “Travis CI”
● On-premise type ① “Jenkins”
A typical CI / CD tool is “Jenkins”. With Jenkins, you have a basic environment.
As open-source, it can be downloaded not only for Linux such as Windows, macOS, CentOS but also for Docker. With over 1,500 plugins, you can easily expand your functionality. Even when linking with “GitHub”, which is also famous as a development platform, it can be easily installed from the Jenkins plugin page.
● On-premise type ② “Concourse CI”
Concourse CI is a pipeline-based CI / CD tool developed in the Go language. Developed by Pivotal engineers in 2014 and released as open-source software. Compared to “Jenkins”, it is a tool that is not dependent on a specific individual, so it can also be used as a platform for automated processing of large-scale decentralized systems.
● Cloud type ① “Circle CI”
CircleCI is one of the tools used by many companies developing web applications. Since it is a SaaS-type tool, you do not need to prepare and build your server. Moreover, it is a very convenient service because it can be easily used just by setting it on the Web. Not only cloud type but also on-premises type, so it can be installed on your server.
● Cloud type ② “Travis CI”
Travis CI is a service operated and provided by Travis CI in Germany. We provide free services for open-source software. In addition, the source code itself is all open-sourced and published on GitHub, so it is common to use it in cooperation. By the way, Travis CI supports building and testing software implemented in various languages.
Let’s introduce CI / CD and develop an efficient system!
In recent years, the scale of software development has become large and complex. For this reason, agile development, which is a cycle of continuous development, testing, and release, has become widespread, even though it is divided into small pieces. Agile development has increased the number of releases, and it is not uncommon for some services to release new features every week. But on the other hand, increasing the number of releases also increases the cost of manual testing and remediation that deserves it. And the problem has become more and more non-negligible as technology has evolved.
CI / CD can solve that problem. CI / CD, which automatically tests and in some cases even the actual release, is a service that can be used not only by the system development industry but also by various companies. To develop efficient and high-quality systems and software, why not take this opportunity to consider the introduction of CI / CD.
If you ever want to know about similar things, check out the Facebook page Maga Techs