For companies that develop software, there are a number of different cloud technologies, architectures, toolsets, and languages to choose from. The approach that is settled on is largely dependent on the preferences of the development teams, organizational strategy, and the product itself. Once a direction is set it can be challenging to shift the organization into a different approach due to changes that could potentially be made to the architectural layout, not to mention the processes that have been built up over time to support an end-to-end development lifecycle and pipeline.
Ultimately, the needs of a business require a fresh approach to address the challenges ahead. ClearScale was engaged by a company that needed to undergo this type of transition to support a new SaaS product they were developing which needed a cloud-independent strategy. With a complex development environment that had already been manually deployed to AWS, our client needed a much more refined and easily deployable approach, since they lacked redundancy and automation.
Needing a production-grade cloud architecture to support their needs, ClearScale reviewed the client’s requirements and identified a number of ways we could implement a robust solution that provided the scalability of AWS with the architectural management toolsets that existed elsewhere in the market — namely CloudFormation, Chef, Marathon, Mesos, Artifactory, and Zookeeper. By taking this approach, it provided end-to-end automation when it was implemented.
Our client’s development teams use Docker to manage their development efforts within containers that allow them to pre-define the various runtime environments and the programming language the team has decided to use. Management of these Docker containers was architected to be hosted by Apache Mesos. To ensure that these containers would be properly deployed and managed, however, ClearScale implemented a framework called Marathon, a production-grade orchestration platform that pulled Docker elements directly from Artifactory.
This approach provides 100% uptime by proactively monitoring activity within the environment and immediately seeking out other candidate containers if a failure occurs. With no impact on the application, Marathon will immediately scale and recover using Marathon REST APIs to identify where spare capacity is located and then dynamically shift the containers to nodes that meet the criteria needed to keep the application available.
ClearScale coupled the Marathon framework with an additional service called Zookeeper which manages failover of clustered nodes. By implementing Zookeeper, we were able to have it monitor the remaining nodes during an outage event and select a new master node to allow the application to continue running unabated.
Once these pieces of infrastructure were in place, we worked on migrating the services that had been deployed in development and test environments within AWS Virtual Private Cloud (VPC) to a production-ready VPC. To do this, ClearScale, an AWS Premier Consulting Partner, leveraged other AWS services such as Identity and Access Management (IAM) to provide a secure environment within AWS that adhered to our client’s corporate security procedures and requirements. ClearScale also invoked the Amazon Elastic Search service which provides a clustered indexed data storage for use in the client’s product.
Within the development, staging, and production environments in AWS, ClearScale also implemented Chef, a service that helps manage the deployment of code to the various environments using smaller packets of code called recipes. This allows for Continuous Integration (CI) and Continuous Deployment (CD) strategies that our client required. Chef was instantiated to set up recipes for configuring the base infrastructure components; in addition to Mesos and Marathon, these included a data warehouse, HBase, RabbitMQ, SMTP servers, HAProxy for both internal and external proxy routing, ELK stack for application logging and alerting, and Active Directory. Chef was then used to configure and deploy Marathon templates.
The customized solution that ClearScale deployed to AWS for our client’s SaaS product and continuous integration development strategy demonstrates the flexibility of AWS services and solutions. AWS does not limit a customer’s ability to deploy a customized solution to fill specific needs. Rather, the teams at AWS recognize that customers have a variety of needs and requirements that Amazon needs to support regardless of whether or not the services that are implemented are entirely AWS-offered solutions.
This is the true power behind utilizing AWS. By leveraging many of the services they provide — such as scalability, event logging, and monitoring, and S3 buckets to store static files — and then integrating other services available in the development space that is widely used and supported, ClearScale can not only devise a solution that meets a client’s immediate need, but also a solution that will scale to meet future needs.
Re-architecting a previously deployed solution that was already in AWS and designing an entirely new continuous integration and deployment approach while insuring 100% uptime with minimal failover faults is a daunting task, even under the best circumstances. Leveraging Amazon’s AWS services and scalable architecture and embedding a client-required solution made the job easier. When all was said and done, ClearScale was able to deliver a quality development and production environment to our client with a unique architecture that met their strategy of requiring a Cloud-independent solution.
At ClearScale, we have proven time and again that no challenge is too great for our dedicated teams. Regardless of your organization’s need, ClearScale will work closely with you to fully understand your needs and requirements and create a SaaS solution that exceeds your expectations.