Hey You are an internet company, based in Sydney Australia, who have developed an App which helps you find nearby restaurants and order coffee and food. Hey You is evolving the way that people order and pay at cafes, restaurants and bars. Hey You connect customers with businesses through their app, so that you can order ahead and pay through your mobile.
Hey You understand that humanity is at the core of all hospitality and they bring this to their users through the app. Hey You focus on building connections between customers and businesses every day. Helping venues grow and run their businesses to transforming the way customers order at their favorite venues.
After significant business growth Hey You required increased automation and scalability within their cloud application environment.
Deployment of a scalable, auto recoverable and highly available environment in the Cloud utilising multiple AWS services.
New environment allows for triggered automated deployments and automatic scalability of the application stack. This has reduced running costs significantly so that this project will have paid for itself within a few short months.
Post Implementation review with Sek-Mun Wong, CTO of Hey You
What were some pain points being experienced that prompted a search for a cloud services provider?
From being a startup there was an organically built and undocumented infrastructure which was difficult to manage and maintain.
DevOps was required to be implemented and the correct tooling setup for our business needs as well as for our developers to continue managing and maintaining the environment.
Without a DevOps team in place we decided to bring in a “team” with the right experience to setup the environment correctly, so we looked at an outsource partner with the right skills.
On reflection if we had done this at a much earlier stage we would have saved a lot of time and effort.
What was the engagement process like? How was PolarSeven found?
I met PolarSeven at the AWS Summit last year while I was starting to look for a partner and met up with Darrell (PolarSeven CEO). We discussed our requirements and moved forward from there
What due diligence process was undertaken to minimise risk and ensure the best provider was successfully engaged?
We trusted the fact the PolarSeven were an AWS Advanced Consulting Partner and we also did some reference checks with AWS, which all came back as positive.
A key validation was talking through the process with Darrell (PolarSeven CEO) and finding that there was a good match there for skills and also understanding of the business requirements for our needs.
What solution was implemented within the business?
As the requirements called for a multiple factors to be covered with automation the following AWS services and tooling were selected as part of the continuous deployment pipeline:
- AWS CodePipeline: A continuous delivery service you can use to model, visualize, and automate the steps required to release your software.
- AWS CodeBuild: A fully managed build service that compiles source code, runs tests, and produces software packages that are ready to deploy. AWS CodeBuild uses a buildspec.yml file in the root of the application source code directory. This file contains instructions for AWS CodeBuild to follow for its execution.
- AWS CodeDeploy: A deployment service that automates application deployments to Amazon EC2 instances or on-premises instances in your own facility. AWS CodeDeploy uses a appspec.yml file in the root of the application source code directory. This file contains instructions for AWS CodeDeploy to follow for its execution.
- AWS CloudFormation: A service which gives developers and systems administrators an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion.
- Amazon Simple Notification Service: A web service that makes it easy to set up, operate, and send notifications from the cloud. It provides developers with a highly scalable, flexible, and cost-effective capability to publish messages from an application and immediately deliver them to subscribers or other applications.
- Amazon EC2: A web service that provides secure, resizable compute capacity in the cloud. It is designed to make web-scale cloud computing easier for developers.
- Amazon Simple Storage Service (S3): An object storage built to store and retrieve any amount of data from anywhere
- HashiCorp Packer: Packer is an open source tool for creating identical machine images for multiple platforms from a single source configuration.
One of the core requirements of the production environment was to ensure the boot time of new Amazon EC2 instances is as fast as possible. This was driven by the nature of Hey You customers and the traffic profile (application gets a lot of flash traffic) on the V2 API application stack.
Due to this requirement, it was decided to bake everything into the Amazon Machine Images (AMI) for deployment to production environments.
Leveraging HashiCorp’s Packer, all production application instances are ‘baked’ into Amazon Machine Image’s (AMI), triggered from a commit into the application source code ‘master’ branch.
AWS CodePipeline orchestrates the baking process using AWS CodeBuild as the build service.
AWS CodeBuild provisions an Amazon EC2 instance and pushes the source code obtained by AWS CodePipeline to the ‘Packer’ build.
Finally ‘Packer’ executes an installation script deploying the web service and all dependant packages before stopping the instance and creating an encrypted AMI. The AMI is then deployed using AWS Cloudformation and Amazon EC2 Autoscaling rolling updates.
All other environments (test, staging) remain consistent with production by executing the same scripts and deployment process using AWS CodePipeline and AWS CodeDeploy. Continuous deployments are executed on a commit trigger on the ‘develop’ branch.
All infrastructure from each application stack, continuous deployment pipeline and build or deployment services are provisioned using AWS Cloudformation and committed to source control.
What specifications needed to be adhered to?
Following best practice for security of the environment was obviously important.
We also wanted to ensure there was no manual configuration, so no back doors into the environment, and to ensure fully automated and scalable environment.
What were some of the alternative options proposed, that were not undertaken and why?
We were looking at Dockerizing the platform but decided not to at this stage as it would be to much work to do at this stage.
We will be looking at that in the future but decided that a clean environment at this stage would work for now and then dockerise later.
How would you describe the project in terms of success? Was business value realised?
Very successful. The PolarSeven team worked well considering the lack of documentation on old environment.
We have ended up with fully automated deployment on staging and production.
Autoscaling on instances, which is saving a lot on running costs of the environment.
We are saving around 10 C4 large servers per day and the project will pay for itself over a couple of months.
What were some KPIs used to measure the success of the project?
The reduction in running cost of the environment is a major KPI as this will ensure that the project will recover the cost of implementation.
What changed culturally within the business and the workflow once you had moved to the new production environment?
Our workflow is easier now for deployments, with automation testing and rolling back is easy.
Previous manual deployments were much harder to manually spin up and test which could be quite stressful.
Were there any unexpected benefits that arose once the project had been completed?
With the new deployment request numbers on the environment are the same but CPU on servers is running much lower so the system is running around 10% more efficiently.
This wasn’t something we had expected but is a nice side benefit.
Do you see yourselves expanding to utilise more AWS services into the future?
How did you rate your experience with PolarSeven?
Overall a very good experience
The team worked well and delivered more than the initial scope of works and over delivered on the end result.
Would you use PolarSeven again?
Yes, we do have some other plans to enhance the environment further with containerisation.
Once we have completed a couple of months of utilising this environment and reviewed our final cost savings we will be re-engaging for more improvements.
Would you recommend PolarSeven to others?
Yes, definitely. I would highly recommended PolarSeven as an agile partner with the correct skills to implement this type of work.