Discuss project
How We Work

How We Work

Software Development Processes

Continuous Integration / Continuous Delivery

Continuous Integration & Continuous Delivery or CI/CD approach has become an essential part of modern software development processes. It accelerates builds and deployment as well as increases the quality of software solutions and products.

CI/CD process contains common stages:

  • tracking of changes in the source code repository
  • project build
  • automated tests (unit-tests, static code analysis, integrated tests, UI tests)
  • deployment of the artifacts to different landscapes

CI/CD process can be visualized as a pipeline with each stage serving as a quality gateway. CI/CD tools support regular automated builds for fast code verification, bug detection and integration checks. Continuous integration makes the process more predictable due to early and steady bug detection, fixing and inconsistencies between implemented code and business requirements.

Continuous Integration
Continuous Integration

CI/CD reduces time to market – time from initial request with software requirements to production release and market availability.

Continuous Delivery
Continuous Delivery


Quality Assurance

Previously testing process was decentralized: projects had separate stages of development and testing, Quality Assurance (QA) team implemented software checks as a standalone process.

CI/CD supports uninterrupted quality assurance: tests are running on all stages. There are different kinds of tests running after each source code change with CI/CD tools and test frameworks:

  • unit tests
  • static code inspection
  • deployment of test landscapes and automated integration testing
  • automated load and stress testing

For instance, when a developer makes a change in the central repository with a git push, CI server runs unit tests. If tests are not passed, build fails and a developer gets a notification. Nest stage includes a static code inspection with special tools like Sonar. If tests are passed, build is deployed to the integration test landscape for functional and load tests. Tests run in parallel. If all tests are green, release is deployed to the production landscape.


Team Roles in Continuous Integration/Delivery and Quality Assurance

Developers

Unit test which decrease the risk of failure of application modules and services.

Testers (QA)

Test creation and functional testing.

Business Analysts

Usability testing and acceptance testing: decrease of the risk of the new functionality not meeting end user expectations.

System Engineers (SE/DevOps)

Application deployment, data migration, scaling and increasing product availability. Automation of infrastructure deployment as a part of CI/CD and Infrastructure as Сode (IaC) allow to create new landscapes like DEV/QA/PROD with one button click.

Infrastructure as Сode


Tools

The most frequently used CI/CD tools
(* — tools illustrated below)

Maven* Gradle

build tools

Ansible*

infrastructure configuration management tools

Git*

version control systems

Nexus*

centralized artifact repository

GitLab CI*
Bamboo Jenkins*

CI/CD servers

GitLab*

centralized source code repository