Creation of the microservices architecture for the management software and its adaptation for different platforms
Client: The organization is specialized in developing and spreading of management systems for the educational sphere in South Africa.
The customer works on designing a complex management system which includes different parts developed by a big number of separate dev teams. In order to maintain such a complex system and keep it stable and entire the need to split it into the microservices has appeared. Another key requirement was connected with the necessity to make the software widespread among the target audience: the request was to make the system able to be installed “almost anywhere”.
The infrastructure inside AWS was prepared. It consisted of:
- VPC with public/private networks in different AZs;
- security groups
- DB instances (RDS Oracle);
- set of EC2 instances acting as Docker Swarm nodes;
- bastion host (used for accessing internal resources and for further infrastructure management);
- ECR for storing docker images;
- AWS CodePipeline/CodeBuild/CodeDeploy for CI/CD needs;
- ALB with target rules for separating traffic between tenants.
All the parts above were described as Terraform code, they stored in a separate repo and has been deployed using Terraform community edition.
In conjunction with developers, the microservice has been created to deploy new software instance for a tenant:
- site wizard to collect all needed information about new tenant;
- CodeBuild pipeline to trigger new Docker stack creation and Terraform execution on a bastion host;
- setup logs and metric collection into Elastic Cloud (ELK managed service from ELK creators);
- setup monitoring of all resources using Prometheus/Grafana.
The cooperation proceeds in the mode of the maintenance and further management (modifications of the infrastructure, adding new microservices, monitoring).
The organization does not feel a discomfort in designing the software with the use of a set of separated developers’ team. Particular issues and changes made by certain teams do not threaten to break the stability of the entire system. The bugs and
issues in the code can be detected and eliminated operatively. The new parts of the code are fast delivered to the central pipeline. All the preparation is made to adopt the software to the installation on different platforms.
Bring us your toughest challenge and we’ll perform you route
to an efficient solution.