The Customer is a US multi-business enterprise operating in a range of industries, such as fashion retail, hospitality, and restaurant.
The Customer had an IT infrastructure consisting of more than 50 servers with a range of integrated systems: an ecommerce website, CRM, a data warehouse, and others.
The number of the Customer’s clients was rapidly increasing together with their needs, so the Customer needed to frequently update their applications to keep their clients satisfied. To meet these and other business needs, the Customer needed their IT infrastructure properly managed, regularly enhanced without critical operational errors and system failures, and continuously monitored to make sure their web services were highly available.
To solve the Customer’s infrastructure management tasks, we assigned a team of DevOps practitioners with the expertise in system administration and software development. By combining the development (Dev) and operations (Ops) specialists’ efforts, our team aimed at significantly accelerating the delivery of new software features, fixes, and updates in alignment with the Customer’s business objectives.
The Customer’s IT infrastructure included three key elements integrated with each other: an eCommerce website, CRM, and data warehouse. To ensure the faultless performance of the integrated systems, Our Team set up and managed the tools for load balancing, infrastructure monitoring and log management. To manage the Customer’s eCommerce website, Our DevOps practitioners implemented the continuous integration and continuous delivery (CI/CD) pipeline.
CI/CD pipeline implementation
Using Stash as a source code repository and Jenkins as a CI/CD automation tool, DevOps engineers designed a CI/CD pipeline to accelerate the processes of developing, testing and releasing the updates and bug fixes for the Customer’s web applications based on Pimcore, Magento, Akeneo, etc. Our team applied Docker to containerize the Customer’s web applications and used the Distributed Cloud Operating System (DC/OS) based on the Apache Mesos distributed systems kernel to manage the containers. With the use of Ansible, Our team managed applications configurations.
With CI/CD pipeline implementation, Our DevOps practitioners aligned the development, test and stage environments with the production environment to eliminate the differences between them, and automated performance testing of web applications.
Load balancing and HTTP caching
For proper load balancing, network traffic distribution and HTTP caching across the Customer’s IT infrastructure, Our DevOps engineers used the following tools:
- Nginx – as a web server processing users’ requests.
- Traefik – as a load balancer responding to users’ requests and directing them to the right resource.
- HAProxy – as a load balancer distributing the requests across the Customer’s multiple servers while ensuring their high availability.
- Varnish – as an HTTP reverse proxy cache accelerating web servers’ response to the users’ requests of the Customer’s clients.
IT infrastructure monitoring and log management
To monitor disk usage, RAM and CPU consumption, DevOps engineers set up and applied Zabbix. Our team used Blackbox Exporter to monitor web services availability. To collect the data on web services availability from Blackbox Exporter and send alert notifications on the web services issues, Our DevOps engineers used Prometheus. For constant container performance monitoring, Our DevOps engineers applied Container Advisor.
For convenient web application log management, Our team applied the ELK stack: Logstash (L) parsed web application logs, sent them to Elasticsearch (E) where the logs were collected and filtered, and Kibana (K) worked as a visualization tool allowing for using the data stored in Elasticsearch to build charts and graphs with analytics results.
With the DevOps practices that we introduced and applied, the Customer got the proper management of their IT infrastructure and benefited from the high availability of the IT infrastructure. As a result of Our DevOps engineers’ work, the Customer got the possibility to enhance the ecommerce solution frequently without disruptions to the business process.
Technologies and Tools
Source code repository: Stash.
Continuous deployment: Jenkins.
Configuration management: Ansible.
Containerization and container management: Docker, Distributed Cloud Operating System (DC/OS), Apache Mesos.
Load balancers and HTTP caches: Nginx, HAProxy, Traefik, Supervisor, Varnish.
Server monitoring: Zabbix, Prometheus, Blackbox Exporter, Container Advisor.
Log management: Elasticsearch, Logstash, Kibana (ELK).