[EDEN DIARY_TD] CI/CD by Kevin Yoo

By November 23, 2018 English

CI/CD
By Kevin Yoo

The Edenchain Platform is cloud-based, and all back-end systems are running in the cloud. E-Garden, EIAM, TX server, API Gateway, and Endpoint Server, as well as Testnet, do not have any software components that do not work in the cloud.
Designing and operating systems based on the cloud has great benefits for Continuous Integration (CI) / Continuous Delivery (CD). This is because you can automate all the processes necessary for the CI / CD.
The developer can control the series of processes that commits using Git, reflect them to the branch, and distribute them to the appropriate production server according to the staging policy so that developers and operators can minimize mistakes and perform system updates in a short period of time. Distributing software with new features can be very daunting and difficult for developers and a QA Engineer. If the process of software distribution is complex and a large number of people are involved, a small mistake can ruin the entire system. In the worst-case scenario, if it does not work properly, it can be a very significant problem. For this reason, every developer and QA engineer is in a state of overdrive as soon as the deployment plan for the new software is introduced. It takes a few weeks from the time the distribution begins to the time it is confirmed to work reliably.
The CI/CD was first proposed in the XP (Xtreme Programming) methodology to solve this problem. The CI / CD consists of a pipeline of distributions, with each step automatically proceeding to the next step if there are no problems. Passing the designed pipeline without problems means that you can deploy all Builds without being examined. It means that you can run the process from the moment the developer blows Commit through to the automation.

source – https://en.wikipedia.org/wiki/Continuous_delivery

In EdenChain, this CI / CD is not an option but an essential element. Because the Edenchain back-end is composed of a number of complex components (as shown in the diagram below), if one distribution fails, the entire system may not work properly. It is not the stage where the development of the Edenchain Platform is finalized, but involves the process of developing a large number of components. It is, therefore, where we need CI/CD.

Proper Orchestration is a key element of CI / CD. Configuration tools such as Puppet and Chef have functions that can efficiently perform Orchestration work in many ways.
Build deployments require server configuration, workflow management, and service registration and startup. These tools provide a dedicated programming language so engineers can automate fine-grained settings as they wish, and even re-use the code. \
The active use of Container in the Edenchain platform is also favorable for CI / CD.

CI/CD Flow

EdenChain has the following CI / CD automated flows:

  1. Push to repository
  2. Code Analysis
  3. Unit Testing
  4. Packaging & Test release
  5. Production Release

As you can see from the above flow, if the developer runs the first step, “Push to repository”, the next steps are done automatically and virtually without any human intervention.

One of the important principles in applying CI / CD is that the problem that occurs in a pipeline failure should be resolved first, before other tasks. This approach is intuitive, for if you do not solve the problem, you will not be able to move on to the next step; developers need to identify the problem first and take the appropriate action to avoid potential problems.

In addition, if you proceed without paying attention to about pipeline problems, your company’s Quality Assurance Process can also be hit hard. This is because if problems that occur on the CI/CD are ignored, they will propagate throughout the system.  Any problems in CI / CD Flow should be resolved with great care.

Comments

In software development, the integration and testing stages are considered to be the most difficult and painful phase in the entire software lifecycle. It is not an easy task to integrate, test, and deploy software that many people have worked to develop, and it causes many problems if not properly addressed.

CI / CD automates, simplifies, and continuously integrates and tests software, making a significant contribution to the quality of the software. In addition, productivity can be greatly improved.

Edenchain will continue to develop and utilize CI / CD to develop software quickly and to effectively integrate and manage it into a final, high-quality product.