Over the last few months, I have been to a couple of conferences on cloud technologies. It’s hard to go to a tech conference and not see a topic on cloud computing (or Big Data, but that’s a topic for another time). There are many types of clouds, too, but in this blog we are not talking about backups, CDN, or even SAAS solutions like our own, which some refer to as the cloud as well. We are strictly talking about cloud hosting. Computing, storage, and infrastructure, like databases, web servers, load balancers, etc.
Many technology companies use public clouds like Amazon’s EC2; others use private clouds like OpenStack or Eucalyptus. Why should one consider such a move and what are we here at Constant Contact up to?
Going to the cloud for infrastructure hosting is a common trend, and if I were a startup company today, I would definitely use one of these services. But for larger, more established firms like Constant Contact, things are a little more complicated.
Before we go there, let’s talk about why companies use the cloud:
1) You are a startup and don’t want to spend time and resources on IT. Clouds are self-serve and any half-way decent developer should be able to figure out how to deploy an application on Amazon.
2) Some companies have inconsistent loads that spike abnormally at certain times. Being able to spin up new servers on demand and tearing them down when you’re done can be a real cost-saver here. Thus the term ‘elastic cloud.’
3) If you grow very fast or suspect you might: clouds grow with you, effortlessly.
There are other reasons, but to sum it up, most of it has to do with agility. Real business agility, actually.
But there is a trend where big names are moving away from the cloud, at least partially, and bucking the trend. Why would they do that?
There are three major factors that play a role here.
1) Security. It’s still tedious to explain to people why the cloud is secure. Or is it? It’s somewhat opaque, and self-serving development organizations often don’t understand cloud security and its complexities. One could argue the same is true for datacenter security if you host yourself, but that is a much more established field with established solutions.
2) Performance. Sometimes it’s hard to guarantee a good SLA when you are hosted in the cloud and some companies bring their applications in-house to manage performance better.
3) Cost. All the agility comes with a price. Many will argue that having your own IT staff is expensive, too, but if you are a very large company, public clouds can get *really* expensive. Ask Zynga, Netflix, and many others.
The nay-sayers will say that ‘the cloud is immature’ and therefore ‘only small companies use the cloud.’ Well, Zynga, Netflix, and Dropbox are pretty big. Of course, there is also Amazon running on Amazon’s cloud. So, I don’t really buy that argument anymore.
Last fall, I attended the MassTLC Cloud Summit and heard a lot about all these pros and cons. If you get a chance, it’s worth attending these conferences.
But enough about what others do. What are we at Constant Contact going to do?
For me, it’s a decision of weighing agility against the downsides. At Constant Contact, we have *LOTS* of servers and consume a lot of bandwidth, so cost is a major factor here.
However, if I look closer, our problem is actually a little simpler. We don’t need more agility for our production systems. We have lots of fine-tuned infrastructure and pride ourselves in high availability and performance. We could optimize utilization and reduce cost, sure.
Our main problem is agility in engineering. We have a dozen engineering teams cranking out code. Engineers need environments to develop in and sometimes they need them today. We strive for high engineering velocity so removing all impediments is a primary concern.
We are currently working on building our own private cloud using Eucalyptus or OpenStack (stay tuned for which one we’ll pick). Think of it as our own private Amazon EC2 system. The primary purpose is to de-couple engineering from operations processes. The vision is part of our continuous delivery initiative: if an engineering team needs a new application or service set up, all it should take is a name. Source code repositories, build, deploys, and testing setup are all fully automated, even the provisioning of infrastructure from bare metal. Ambitious? Sure. Possible? Watch us do it! We’ll be posting on our progress on this blog.
Let me end with a pitch: this is cool stuff. Cutting edge – like many other things we are doing here at Constant Contact. We are always looking for talent. Come and check us out.
Leave your thoughts below in the Comments section.
Leave a Comment