Editor’s note: Flywheel, a WP Engine company that specializes in managed WordPress hosting, needed more robust infrastructure for the platform it uses to run sites for over 35,000 agencies and creative brands. Moving to Google Kubernetes Engine gave them the reliability and resource utilization they needed; rearchitecting their application as a multi-tier, cloud-native application running on Google Cloud managed services gave them new levels of operational efficiency and helped to control their costs. Read on to hear how they did it.
Flywheel specializes in providing powerful website solutions to creative agencies and has built a platform that’s custom-configured and optimized for the WordPress CMS. By offering dedicated resources, robust workflow tools, staffing WordPress experts, and focusing on the speed of our sites, we’re able to provide great site performance and user experience for our customers.
From our partners:
To achieve great site performance and great user experience, we have to innovate in and around WordPress, as it evolves with users’ expectations. In an increasingly competitive landscape where digital is the new norm, our users’ expectations of our platform have never been higher.
In our early days, we built a single tier, VM-based platform and custom orchestration tools to operate it (like many SaaS companies). Initially, this approach worked, but as we grew, we experienced high operational overhead, high maintenance needs, low resource utilization, and a lack of agility due to strong couplings.
We found ourselves spending more time on feeding the thing we had built rather than supporting our customers with new features and products. We also lacked the ability to analyze the data within our platform at scale. We knew we needed to evolve our platform to one with lower operational overhead and the agility to shift quickly in response to customer needs.
As a part of reengineering our architecture, we decided to experiment with Google Kubernetes Engine (GKE), Filestore, Cloud SQL, and BigQuery on Google Cloud. We quickly discovered some important advantages that allowed us to improve performance, better manage our costs, and gain critical smart analytics capabilities:
- Resource efficient Kubernetes apps: We were very impressed by GKE’s resource utilization. We were able to run the nodes at >90% CPU load, thereby reducing our unused resources by 85%. In addition, GKE kept nodes running reliably at this level without any issues. On our previous provider, the VMs could not take a high CPU load and would often become unreachable.
- High-performance, fully managed file storage: Filestore is a fully managed, NoOps service that is integrated with GKE. As such, we were able to easily grow or shrink the filesystem based on the needs of our customers, without having to operate it ourselves.
- Fully managed relational database service for MySQL: With Cloud SQL, we were able to scale our databases effortlessly, without compromising performance or availability. We also saw a significant reduction in maintenance costs.
- Serverless, highly scalable, and cost-effective data warehouse: We were thrilled by the power of BigQuery to analyze our data and the ability to share the findings with a few clicks. By integrating BigQuery into our new architecture, we have the smart analytics capabilities we need, with zero operational overhead.
We wanted to take advantage of GKE’s improved resource utilization and reliability, plus implement several managed services to avoid the toil of operating all of the tiers ourselves. To do that, however, we needed to implement some simple changes to our architecture.
Building a container-based, multi-tier application
To start, we redesigned our architecture to use lightweight containers. We knew this would require significant manual refactoring and we wanted to get it right the first time. We relied heavily on the team at Google Cloud to help us design and validate this architecture before we started writing any code. Google’s expertise with regards to developing and running cloud native software was a key differentiator in choosing them as a partner. It was through this deep partnership and tight collaboration that we were able to build and execute the right strategy and achieve our desired outcomes.
This design decision stemmed from the greater resource utilization of container-based applications. Our VM-based platform often left a considerable amount of CPU idle, up to 85% in some cases. With container-based workloads running on GKE, we went from using only 30% of the CPU on average to 90%, a 200% increase!
From there, we followed one of the most important principles in software engineering: keep it simple. Our goal was that every single WordPress site on our platform would operate with maximum performance and reliability. To achieve this, we mainly relied on three Google Cloud services:
- Filestore to manage the filesystem
- Cloud SQL to manage the databases
- GKE with Cluster Autoscaling and cluster multi-tenancy to run the code
While there are more components in our new architecture, because we chose managed services, this did not add additional overhead to our teams. We focus on achieving our goal of maximizing site performance, while Google Cloud focuses on reliability and scalability of the services. Through the Google Cloud Console UI, REST APIs or the Cloud SDK, we can easily scale the components out or in based on customers’ needs. This gives us the flexibility and control our teams need to manage and operate our platform.
How does BigQuery fit in this picture?
Once our core platform was architected and running in GCP, we began feeding data from the platform into BigQuery for quick analysis. If there were performance bottlenecks in the system, we could quickly identify and remediate them. If our customers had unused resources, we could highlight them and make recommendations to improve their efficiency. These new discoveries from the data within our platform gave us the agility we needed to respond to the dynamics of our market and the needs of our customers.
Looking back, this project was incredibly beneficial because it cut out the manual toil of maintaining a custom platform, custom orchestration tools, and custom components, allowing us to spend more time supporting our customers with new products and features. Our customers’ goal is to easily publish websites that load quickly and reliably, and our new architecture helped us achieve this outcome with lower operational overhead, lower maintenance needs, increased resource utilization and improved scalability.
It was not only the incredible technology that drove us to choose Google Cloud, but also their team’s unique knowledge of what it takes to scale. Google has nine products with over one billion users each, and is uniquely positioned to offer expertise in achieving peak performance. This collaborative partnership with their teams helped guide us on our journey to accomplish this critical strategic initiative.
By Micah Knox and Charles Wagner. Source: Google Cloud Blog.
For enquiries, product placements, sponsorships, and collaborations, connect with us at firstname.lastname@example.org. We'd love to hear from you!
Our humans need coffee too! Your support is highly appreciated, thank you!