Portfolio /
Automation of project systems deployment. DevOps.
Environment on Docker containers

The solution to automate the deployment of the project environment will reduce the time to build the system by tens or even hundreds of times.

Modern online system is not only business logic, information on disks and a beautiful interface. It is also interaction with a large number of internal and external services.

Some services make it easier to work with social networks, others provide electronic payments, and others allow you to get the necessary data for payment. Simultaneously with the advantages that these services provide, the process of developing and testing the system itself becomes more complicated. In the process of debugging, it is often not possible to work with “combat” systems, and emulators either do not exist, or they require additional installation and configuration. The problem of deploying the environment can be solved with detailed instructions describing dozens of steps.

 

Another way is to automate the deployment process and run on a button. The solution is to reduce the time to prepare the tools, and you concentrate on the tasks that these tools solve.

Below we share the experience of automation.

Our solution built on Docker containers:

  • Platform independent
  • Allows you to easily add new system components.
  • Scales. It is possible to add resources to individual nodes, and increase the number of these nodes
  • Resistant to turning on / off the computer
  • Supports multiple versions of the system

As a result of the implementation of the solution in IFC ‘SMSFinance’ for the project infrastructure consisting of CRM system, call center, billing subsystem, as well as 27 external services, the deployment time was reduced from 2 days to 20 minutes.

DevOps Digital BSS platform with Kubernetes

Digital BSS operator system is a platform for effective digital transformation. There was a need to improve this solution to a boxed product.

In order to provide a boxed version of the platform to a wider range of customers, it is necessary that it meets the requirements of automatic installation, updating, scaling and monitoring. At the same time, it did not need control by product specialists.

 

Previously, the platform used the Ansible system for its deployment. To add the required capabilities to the platform, we implemented containerization using Docker technology. As a result, the environments of each module became isolated from each other, which simplified the development and test automation processes. Next, we implemented container management through Kubernetes. Kubernetes is a production-ready container orchestration system that is responsible for scaling, fault tolerance, and deployment. Thus, after the introduction of Kubernetes, the following features appeared in the product:

  • Service discovery and load balancing between services. Containers in Kubernetes access each other using services with assigned DNS names, between which traffic is distributed.
  • Automated deployment and rollback. To deploy the application, it is enough to describe the desired state of the containers that Kubernetes will support.
  • Resource allocation between containers. For each container, the required number of resources is specified, and Kubernetes performs the optimization.
  • Restoration of the container after a failure. If a problem occurs during deployment, Kubernetes restarts the application and checks its status. Only after confirmation of readiness translates client traffic.
  • The system can be deployed on multiple physical machines in a cluster or in the cloud.

Helm package manager was used to support the CI/CD infrastructure of the project. This made it possible to install and update modules with a managed configuration in an existing cluster. To monitor the state of the product we added the Prometheus monitoring system.

Thus, we built a platform-box solution. It is ready for automatic deployment and upgrade to any client infrastructure. It scales and has a closed self-sustaining ecosystem.

The project used technology:

  • Server technologies: JDK 11, Spring Boot 2.X, Gradle, Prometheus
  • DevOps: Kubernetes, Helm, TeamCity