CI/CD best practices on aws

1.First of all,what is CI/CD?

CI-Continuous Integration (CI) is a collaboration between development engineers through automated testing, validation, and feedback to ensure that the code contributed by developers with different functions is kept in sync. For example, the development team puts their code base on Gitlab, and then each developer has a copy of the development test locally, and ultimately we want to integrate each developer's code snippet into the master branch. Before that, we need to create a test case guarantee that the program can not only run in a single step, but also run according to the logic of the main branch without affecting other modules. In a continuously integrated scenario, developers can constantly pull test cases to verify that the program is working, that it is compatible with the main line, and that there are no significant changes to release.

 

 

Related image

 

CD-Continuous Deployment (Continuous Deployment), or CD, is the deployment of programs that are continuously integrated to the environment, which can be multiple scenarios for a particular project, such as the development environment (Dev Environment), Test Environment, Production Environment, and more. Of course, it also includes scenarios such as high availability, load balancing, and so on in each environment.

 

CI/CD did not appear only to conform to the idea that software development and operations should work together, but to be able to publish high-quality software more frequently and to achieve this goal by facilitating communication and collaboration.

 

 

2.CI/CD Practice in SilverLining

At SilverLining, tools for continuous integration and continuous deployment are Gitlab Source Manager, Atlassian Jira and Jenkins.Let's take the development of the ProtecEasy project as an example, starting with developing Leader to break down a complex function into sub-tasks. And in Jira input, assigned to the appropriate engineer. After the development engineer completes a function, he needs to perform local unit tests. The unit test is passed to indicate that the local development is complete.Next, we need to pull some integration requirements that are designed to A set of test cases before the local snippet is incorporated into the bus, including installation, test case execution, semantic analysis, unit testing, and comments (developed in collaboration with other members of the project team, must be compatible with the review function).

 

 

 

When the code is incorporated into Master Branch, automated integration testing is triggered on Jenkins. We will continue to test the installation, build, create defects, create versions, and push to the 'commit' phase, which is a watershed for continuous integration and ongoing deployment.

 

Then, as the deployment phase, Jenkins gets the installation package from the 'Submit' library and continues to load-balanced testing, concurrent connection testing, application installation, validation, and submission. In a load-balanced environment, there are testers, and even end users, who are submitted into production after completing tests for all function points.

 

 

3.Aws Public Cloud Introduction of CI/CD Practice

 

SilverLining found the aws cloud is a useful assistant for the implementation of CI/CD  practice. Prior to accepting SilverLining Product Director Offer, I personally worked on many different software development teams in China and the United States, including Silicon Valley unicorn start-ups, large e-commerce companies in the United States, and large Chinese state-owned enterprises. I found that the difficulty in practicing CI/CD in many organizations was how to deploy application and test code to the infrastructure because teams needed to provision and deploy infrastructure, requiring network engineers, IT operations and system administrators to understand the technology, combine software and hardware, and build networks. Create virtual machines and give them to developers or operations personnel to configure them, and then have others deploy the application on it. This process needs to be handled by multiple people and relies on a lot of labor, i.e. unstable, time-consuming, and additional costs.

 

 

 

While SilverLining as aws premier partnerall of our services including CI/CD are based on aws implementation. We found that we had a CI/CD server configured on aws and shut down after 15 minutes of operation, for which you only had to pay a 15-minute fee. Compared with the traditional methods described above, it is flexible, efficient and cost-effective. There are also limitations to testing infrastructure code using traditional physical hardware because not everyone can access it. The aws cloud popularizes ci/CD practices and translates their benefits into enterprise operating costs.