Case Study - Wordpress Containerization - Skybound
Stratus10 assisted Skybound in building the infrastructure and containerizing their WordPress website. The customer’s WordPress site was containerized and the database was hosted using serverless technology to provide a site that is portable, easily managed, and automatically scalable. The infrastructure and delivery pipelines have been automated, giving the customer reliable, repeatable deployments.
Skybound is a multiplatform content company that works closely with creators and their intellectual properties, extending their stories to further platforms including comics, television, film, tabletop and video games, books, digital content, events, and beyond. The company is the home of notable properties including The Walking Dead, Invincible and Superfight.
Skybound was facing challenges around scaling their VMs when the website was hit with high traffic loads as well as managing their code and deployment pipelines. Manually creating and maintaining new environments was excessively time consuming, and the size of the website's codebase along with the large number of images and assets made managing deployments a tedious and long process.
Skybound’s solution required a scalable, flexible, and secure infrastructure as well as a seamless way to deploy changes to their code without affecting the end-users. By containerizing the WordPress website and its source code and leveraging AWS services such as Fargate, ECS, CloudFormation, CloudWatch, and other services, Skybound now has the ability to seamlessly manage their code changes, deploy to multiple environments, and scale up without user interruption.
Stratus10 was the perfect fit to deliver a containerized solution for Skybound that was repeatable and flexible enough to adjust to their high traffic demands. Our expertise across the AWS suite of services resulted in the best solution for Skybound that leveraged services they didn’t even know were available. Stratus10’s knowledge of application containerization and autoscaling techniques, as well as well-architected practices, helped Skybound achieve this environment. Finally, Stratus10 was able to deliver parameterized CloudFormation templates that removed the complexity of creating new environments.
- All infrastructure automated using IaC technologies
- The full WordPress installation for each environment has been containerized
- Utilizes managed serverless database to reduce cost and provide automatic scaling
- Continuous integration and delivery pipelines were created to automate build and deployment to dev, staging, and production
- CDN used to accelerate content delivery globally
Each environment is built as a Docker image and stored in Amazon ECR (Elastic Container Registry). Amazon ECS (Elastic Container Service) is used to manage the lifecycle and placement of tasks, and Fargate is used to provide fully managed task execution and eliminate the need to manually maintain and scale instances.
All the infrastructure necessary to host each environment, including the VPC, networking components, security groups, database, ECS clusters, Fargate tasks, and IAM entities are captured in CloudFormation templates, providing a reliable, repeatable, mechanism for infrastructure creation that can be audited and version controlled.
Amazon Aurora Serverless for MySql was selected as the database for each environment. As a fully managed service, the tasks of database maintenance have all been eliminated, the cost of running the database is optimized since it only utilizes what is needed, and scaling is automatic as the load varies.
Using Amazon’s CodePipeline, pipelines have been created to both build/update the infrastructure and to deploy application changes to staging and production, upon approval. GitHub is used to store application code and infrastructure templates. CloudFormation is used to deploy infrastructure, and AWS CodeBuild is used to build docker images.
Amazon CloudFront is used to cache content and deliver the customer’s various media with low latency to Skybound’s geographically diverse user base.
CloudFormation “environment” templates were written to create all necessary resources for each environment. The templates are parameterized so that they can be reused to create each environment (dev/staging/production). The environment templates create the following resources:
- CloudFront distributions
- S3 buckets
- VPC, route tables, subnets, internet gateways, load balancers, target groups, security groups
- Aurora RDS clusters, RDS subnets, and secrets
- ECS clusters
- ECS task definitions and task roles
- Auto-scaling roles, targets, and policies
- Container security groups
- CloudWatch Log groups
Using AWS CodePipeline, multiple pipelines were configured to create the infrastructure for the dev, staging, and production environments. Additional pipelines were configured to deploy the WordPress site to each environment.
Results and Benefits
By implementing Stratus10’s solution, Skybound has seen improved performance, increased security, and has created a well-architected environment for their WordPress deployments. Application components are now segregated, allowing for “least privilege” principles to be leveraged. Autoscaling via containers running on Fargate will ensure system reliability while reducing unnecessary delays during scaling events. Site reliability has significantly increased with the implementation of AWS CloudFront as a CDN. Finally, by using AWS Cloudwatch, administrators can see pertinent data and actionable insights to monitor Skybound's website and respond to system-wide performance changes.
Use case: App Modernization / Containerization
Date: May 2021