Flux7 Deploys DevOps Based Microservices in Support of Next Generation Pharmacology Engine
This pharmacology organization is pushing rapid advances in medicine, nutrition and even vaccines through its advanced scientific research. This company harnesses the power of nature to improve healthcare and patient well-being.
This organization was looking to proactively build a next generation platform to support the evolution of its pharmacology engine. To achieve the competitive advantage this firm sought from its new platform, it needed to be stable, support a high level of availability, and facilitate a higher level of development productivity. The IT team also wanted to use automation to drive higher deployment frequency, with an ultimate goal to automate the configuration, deployment, and auto-scaling of services.
In assessing the firm’s technology and business needs, Flux7 recommended a DevOps, AWS-based microservices architecture. This architecture offers all the benefits that the firm sought and would grow with the company’s new pharmacology engine.
To begin work, Flux7 helped the IT team design the AWS based microservices environment with a focus on automation for delivery, configuration and auto-scaling that would deliver a higher level of availability and developer productivity. The microservices environment was built with two AWS ECS clusters, featuring HashiCorp Consul server for service discovery and the company’s applications which are deployed within application containers.
The DevOps consultants at Flux7 built the solution with three unique architecture layers:
- Infrastructure Layer — This layer features networking, IAM roles, ECS clusters, ECS Instances, and ELB. Each of these elements is deployed using AWS CloudFormation templates, which make for the easy creation and management of a collection of related AWS resources. Once the platform resources are created and deployed via AWS CloudFormation templates, we move to the next layer.
- Management Layer — This architecture layer uses Jenkins automation to deploy the NGINX, Consul, and Registrator microservices. These microservices are responsible for discovering a service and are deployed soon after the cluster is deployed.
- In-House Microservices Layer — Once management microservices are deployed, in-house application microservices are deployed. Again, Jenkins automation is used to deploy these microservices. For both microservices layers, Jenkins builds to Docker and then pushes to ECR, Amazon’s EC2 Container Registry. Jenkins then triggers the deployment job which pulls and deploys the image to the particular ECS cluster.
From here, the ECS cluster automatically takes four steps. It 1) pulls the new container image, 2) starts new containers with the new image, 3) stops and removes old containers as new ones come up, and then 4) the Consul-based service registry self-updates NGINX so traffic is routed to the new containers.
With the combination of CloudFormation templates that automate the process of deploying a correctly configured infrastructure layer, and Jenkins automation, Flux7 was able to automate the deployment, configuration and delivery of the microservices. During the course of the automated process, QA is notified of a new build in the pipeline. QA then builds the code, runs the Docker image, copies the artifact and pushes the image to ECR. From here development deploys to the appropriate cluster.
Auto-scaling was achieved with ECS Service Auto Scaling, which adjusts desired count up or down based on CloudWatch alarms which are built using metrics specific to the pharmacology company’s environment. In addition, Service Auto Scaling was paired with Auto Scaling for Amazon EC2 to allow the firm to scale their clusters in response to rising or falling demand. Last, autoscaling was achieved through the use of context based routing and load balancing across the company’s clusters.
Security of the team’s IP was also very important to this organization. As a result, one step the teams took was to provide secrets to code through Amazon EC2 Systems Manager Parameter Store. The solution centrally stores the company’s secrets, like passwords, and encrypts them through AWS Key Management Service. In addition, AWS CloudTrail logs all Parameter Store activity for complete auditability.
As a result of its new AWS microservices architecture, this pharmacology company was able to create a stable platform for its next generation pharmacology engine. In the process, the firm was able to apply DevOps-based automation which allowed for much greater automation of the configuration, deployment and delivery process as well as auto-scaling of services. The development team as a result of its new architecture is spending less time on tactical, manual tasks and more time on strategic solution delivery, ultimately helping the firm deliver the greatest goal of its new engine: greater wellness for its customers.
- Stable, flexible platform
- Higher deployment frequency
- Greater Development efficiency/productivity
- AWS based microservices architecture
- Greater automation with Jenkins and CloudFormation Templates
- ECS Auto-scaling