Floating on a Cloud: Inside Our Blog Architecture
Did you notice the new blog design? The new name? That's not all the "new" that comes with our blog refresh. We've re-architected the blog from the ground up. And we are flying high as this new blog takes advantage of our own cloud services.
In this post, I talk about the tools and technologies driving Cloud Matters. From HP Cloud Compute to Object Storage, CDN, and DBaaS, we are using end-to-end cloud services. We've also had the opportunity to take advantage of some open source tools as well as our partnership with ActiveState to bring you this new blog.
Read on for an insider's view of our blogs cloudy architecture.
A Compute Foundation
Our new blog software platform (which I'll talk about more later in this post) runs on a LAMP (Linux, Apache, MySQL, PHP) stack, so we knew we needed to target that environment. We decided to split the database and PHP servers, so our front-line web servers are Apache/PHP servers.
We did some benchmarking and determined that we could comfortably run the blog site on a handful of medium-sized compute instances, but we opted for large instances since it gives us room to grow. And when it came to setting up the network, we used floating IPs. This has afforded us a very important layer of flexibility: We can swap server instances without so much as a DNS change. In fact, we can do it through the Management Console.
Finally, when it came to configuring the operating system, we looked to one of our partners for a flexible way of deploying apps to the cloud. (After all, we have app!)
Stackato: A Private PaaS
Stackato, ActiveState's PaaS product, is built on Cloud Foundry, but with a deployment and operations layer that offers the flexibility we need to rapidly update our web software. Stackato's clustering model has enabled us to deliver a stable and scalable configuration that we simply could not have accomplished in our pre-cloud configuration.
The Stackato cluster provides us with a private PaaS. It's like having our very own Heroku. Into this environment, we've deployed our blog site's Content Management System (CMS), which is built on Drupal.
Drupal in the Cloud
Drupal is an open source CMS built in PHP. We use it for a number of projects, and some of our team (myself included) are active members of the community. Drupal meets our blogging needs today, and offers the flexibility for adding tomorrow's features.
Deploying it onto our Stackato cluster of Compute instances was easy -- perhaps a great subject for a future post -- but what really made this solution shine was our ability to connect Drupal to the HP Cloud over REST APIs.
Object Storage and Drupal
Object Storage is not just reliable, it's also fast. Yet we are performance nerds here, and fast isn't good enough. We want lightning! So we augmented our Object Storage with another HP Cloud service.
Seamless CDN for Edge Caching
Object Storage serves objects from one of our data centers. But for faster delivery, Content Delivery Networks (CDNs) can improve delivery speed by pushing objects out to servers that are geographically closer to the request. The shorter physical distance between your computer and these files makes delivery faster. Sometimes a lot faster.
HP Cloud Object Storage is tightly integrated with our CDN service, and we took advantage of that. We enabled CDN and watched seconds drop from our page load times. While we keep working on ways to make the web faster, we're pretty happy with where we've landed today.
As excited as we are about Object Storage and CDN, we're thrilled with our last component.
MySQL, But Not My Problem
My team loves all things developer-ish. But to be honest, managing MySQL has never been a strong point for me. When HP Cloud's Relational Database for MySQL team announced private beta, our team clamored to get in on the action. And we are loving it.
What we get is a highly tuned MySQL database. What we don't get is any management responsibilities. Our database instance is just there and running. Drupal and Stackato both work with Relational Database, so we were thrilled that not only did we get off the DB Admin hook, but also didn't have to write additional code.
We know that Relational Database for MySQL is still in beta, but after a few months of testing we are convinced that it fits our needs today. Brian Aker and his crack team of database commandos have built a great service. If you think you'd like to try out Relational Database for MySQL, drop that team a line. Last I heard, they still had some spots in the next beta round.
Something For You Too
Our goal wasn't just to build a site, but to learn what it's like to really use our own cloud. We wanted to identify pain points, find gaps, confront challenges, and then come out on the other side with something to offer you.
And so we have.
First, we have released open source PHP bindings for the HP Cloud services. These evolved out of our own needs, and we fast-tracked them out to the community.
Second, on top of those, we've built Drupal modules to help others streamline their own deployments to HP Cloud. Those, too, are open source, and are available from Drupal.org.
And along the way we've contributed to various other open source tools, not just to make them work with our services, but to be part of that effort to build a better set of tools. It's been an exciting time for our team, and we're going to keep up the momentum.
We've learned a lot, and we're eager to spread our knowledge. Jump on over to the community site, where we do our best to help you solve problems. Or follow our GitHub organization, where we're posting many of our tools. On Twitter we share the latest news. Finally, we have a wealth of developer documentation that grows daily.