Localytics is a fast growing company in the mobile analytics space. Their applications are architected from the ground up for Amazon Web Services (AWS), including the use of Auto Scaling Groups (ASGs) and application services such as RDS, SQS, SNS, and S3. A recent initiative introduced the use of Cloud Formation and Chef to better handle the creation and deployment of new applications, particularly micro-services. The company engaged Bitlancer both to augment their fast-growing developer team, and to help create standardized methodologies and practices for managing infrastructure and continuous delivery.
Situation at the beginning of the engagement:
- Strong application architecture consuming numerous Amazon services, but infrastructure managed via numerous methods: some with Rightscale, others with Chef, micro-services with custom code, with no clearly defined standardization strategy.
- Strong team knowledge of architecting applications for Amazon, but little internal knowledge of best practices around Cloud Formation or Chef for management of underlying infrastructure and network configuration.
- Large, growing team of developers with no reliable way to manage authentication and authorization.
How Bitlancer has helped:
- Helped define an internal, next generation Amazon implementation, which included investigating use of services such as Cloud Formation, Amazon Code Deploy and Simple AD, and potential logging and monitoring solutions, such as LogEntries and Newrelic.
- Helped architect and document Amazon implementation from the ground up, including the use of Cloud Formation for infrastructure orchestration, Chef for instance provisioning and management, SimpleAD for central authentication + authorization of instance access, IAM Users and Roles for Amazon access control, and an internal Ruby tool for tying all of these pieces together.
Of the items above, we put extra emphasis on Chef:
- Defined a standard based on the Berkshelf Way and Environment Cookbook Pattern.
- Implemented numerous base cookbooks to build a picture of a standard instance.
- Implemented integration and unit testing with Test Kitchen + Docker for local development and/or kitchen-ec2 for testing within Amazon.
- Fully documented the work to be expanded on by team members.
We also focused on central authentication + authorization of instance access:
- Investigated the benefits and drawbacks of OpenLDAP vs. SimpleAD for directory service.
- Implemented a solution on top of SimpleAD for use with Linux machines via the System Security Services Daemon (SSSD), and fully documented the solution in a community blog post and related open-source Chef cookbooks.
- Authored a public blog post, “Implementing a Centralized Directory Service for AWS Infrastructure with Amazon Simple AD and SSSD.”
Helped implement Continuous Delivery with ThoughtWorks Go:
- To allow developers to easily consume the new infrastructure for new and existing applications.
- Focused on Chef pipelines:
- Created multiple pipeline templates for building, testing (integration and unit testing with test kitchen), and deploying new and existing Chef cookbooks, which enforced numerous standards while allowing development teams the flexibility to deploy updates to their applications on their own schedule and terms.
- Tooling is more streamlined, which blurs the line between infrastructure and application code while still allowing developers to focus on what they’re good at.
- Less complexity involved in creating a new micro-service: follow instructions and consume tools built by the tooling and automation teams, but understand them enough to modify and expand for your application, as necessary.
- Everyone has a better understanding of what DevOps means to Localytics.
- Developers are more self-sufficient.
- Engineers were excited to consume the new tools available to them.