Read how Moment built the foundation for growth with a DigitalOcean to AWS migration and application modernization with Amazon EKS.
Moment is a photography focused ecommerce platform that exists to inspire and enable creatives around the globe to obtain the right gear, learn new skills and take epic trips as they explore their passion for photography.
The company started with a kickstarter campaign in 2013, offering accessories for smartphones, and has now grown its portfolio to offer products ranging from camera gear and accessories to courses from professionals as well as guided adventures and tours.
Increase platform up-time during high traffic periods and improve the customer experience.
Moment’s eCommerce platform, shopmoment.com, had been experiencing traffic spikes year over year, during high traffic shopping events such as Black Friday and Cyber Monday. At the time, their website was hosted on DigitalOcean, which lacked the capabilities required to keep up with the pace of demand growth the company experienced. The inflexibility of the platform from fragile infrastructure & limited auto-scaling, combined with the database and web app running on the same instance, caused significant disruptions to their sales during these high traffic times. In addition, each deployment to production took down their entire site and they didn’t have a quick roll back mechanism.
These limitations resulted in poor customer experience on their website, and could pose undesirable consequences if they were left unchecked. Moment realized that in order to keep up with demand while minimizing platform costs, they needed to migrate their eCommerce platform to AWS, without disrupting their day to day visitor traffic and sales.
In order to improve long term functionality and scalability, and automate deployments, Caylent also recommended modernizing Moment’s infrastructure on AWS.
Caylent engaged with Moment to move them from single VMs on DigitalOcean to containerized microservices hosted in Amazon EKS, fronted by Amazon EC2 load balancers, using Caylent’s Delivery Methodology (CDM) consisting of DevOps workflows, and Well-Architected aligned security and networking best practices. In addition, part of the migration effort included rehosting Moment’s database backend from DigitalOcean to Amazon RDS Aurora.
To deploy the landing zone for the migration, Caylent developed IaC Terraform templates to set up a multi-account environment on AWS. The team then configured CI/CD pipelines, which use Github as their version control system (VCS) and CircleCI, to deploy code first to a QA/staging account, then to a production account. As part of the modernization effort, Caylent worked with Moment in a series of workshops to analyze the monolithic application as deployed on Digital Ocean, to see how it could be decomposed into microservices and containerized. In the refactor, the team wrote Dockerfiles, built container images, and pushed them to ECR. Databases were moved to S3 and ultimately into Aurora.
Amazon ECR was used to store application container images, from where the application deployment pipeline build process can retrieve them. Amazon EKS is used to orchestrate app function and scale. Amazon CloudWatch metrics are used to collect some system/infra level metrics. Prometheus and Grafana are also used for system metrics. Customer connections to the app now ingress directly to the AWS production environment through AWS Elastic Load Balancer. Application containers running in Amazon EKS communicate with Amazon RDS on the backend for database communication.
In terms of security, the solution utilizes AWS Key Management Service to encrypt data at rest, AWS Certificate Manager to secure client connection endpoints (i.e. ALB/ELB) and AWS Cloudtrail to capture all the activity across all Moment accounts.
After security implementations were in place, the next step was to cut over from the old DigitalOcean hosted platform to the new solution. The cutover involved pointing the DNS at Cloudflare to a temporary maintenance page, retiring DigitalOcean servers, and rehosted mySQL databases in Amazon RDS. CircleCI deployed the Terraform infrastructure as code that defined the new production site. Cloudflare was directed away from the maintenance page after acceptance testing was performed on the site to determine functionality and decide whether to proceed or rollback.
Since the migration, Moment has been in an on-going DevOps implementation engagement with Caylent. This phase focuses on a longer term partnership plan to provide DevOps support to empower Moment’s engineering and developer teams with self-service capabilities, tools, and improvements to developer experience. Following the migration, Moment elected to engage Caylent Pods team to manage day-to-day operational & performance issues so they could free up their internal team to focus on revenue-generating product development.
As a result of migrating to AWS and modernizing their eCommerce application using containers, Moment has achieved 100% up-time even through peak traffic during high volume sales events. Adopting microservices and implementing DevOps best practices have enabled them to reduce their release times by 50%. More importantly, updates and new features can be implemented seamlessly, enabling Moment to offer a strong customer experience all-year round.
WE'RE HERE TO HELP
Ready to Accelerate Your Native Cloud Journey
With two distinct delivery models, Caylent is able to meet you where you are in your cloud journey and deliver whether a tightly-scoped project and budget or if you require ongoing support to drive your vision forward.