AWS Startups Blog

CoreOS and Startup Infrastructure That Scales

Guest post by Alex Polvi, CEO of CoreOS


CoreOS1

I am a two-time entrepreneur. The first time I got funding through Y Combinator for Cloudkick, a company that was acquired in December 2010. My second time in YC (which I like to refer to as my “sophomore year”) I started the company where I am now CEO, CoreOS. The idea for CoreOS came to me when I was thinking about what I could personally do to make a difference in the future of the Internet. So I thought big and thought perhaps I could be a part of helping to secure the back end of the Internet.

All About CoreOS

At its heart, CoreOS is a Linux operating system for massive server deployments. We took inspiration from how large Internet companies such as Netflix, Twitter, and Pinterest create a resilient and downtime-free architecture. We took these philosophies and incorporated them into CoreOS so we could offer this type of architecture to everyday companies, both big and small.

We set ourselves apart from other operating systems in that we require you to use containers to run your applications, and we only include the essentials in the operating system. Because of this, our OS is lightweight and consumes 40% less RAM on boot than an average Linux installation.

With CoreOS, we also have a unique update philosophy. If you want to play with the most recent (but not the most secure and tested software), you use the alpha channel; but if you are looking to use CoreOS in a production environment, then you use our stable channel. This model allows us to quickly and reliably keep your servers up to date with the latest security and stability patches.

CoreOS is open source so you can try CoreOS right now on Amazon EC2. It is simply an image you can choose when spinning up a server. For those wanting more support in setting up and using CoreOS, we also have a Managed Linux offering, which includes support from our team. We recently announced our stable version, meaning CoreOS is now production ready and can be run in production environments.

AWS makes it super easy to spin up clusters of CoreOS instances using AWS CloudFormation. For those of you who don’t know, AWS CloudFormation gives developers and sysadmins an easy way to create and manage a collection of related AWS resources, provisioning and updating them in an orderly and predictable fashion. In CoreOS’s case, AWS CloudFormation will launch a cluster of CoreOS machines with a security and Auto Scaling group. You can easily fill out a simple form and begin running a cluster in no time. For more information and to get CoreOS running on EC2 today, check out our documentation and follow the steps on our site.

Four Lessons Learned

Since I am working on startup number two, I am obviously passionate about startups. In many ways CoreOS helps startups with some of their scaling problems by helping you to get to that warehouse-scale compute level quickly if needed. Some of the things I advocate most are to rely on your cloud provider, focus on product differentiation, and get your product to market quickly.

In between my time with Cloudkick and CoreOS, I traveled to various countries meeting entrepreneurs and speaking at startup events. I have spent a lot of time with startupsmy startups, friend’s startups, international startupsand I have seen startups struggle with the best way to set up and scale their infrastructure. Here are some tidbits on what early stage companies should consider about their infrastructure when they are getting off the ground.

Rely on Your Cloud Provider

When you are trying to figure out your product market fit, avoid trying to figure out the nuances of running Nginx or tuning databases. Instead, use the services your cloud provider gives you, such as Amazon Relational Database Service or AWS Elastic Beanstalk. While your product might be very unique, your server infrastructure will not be. Use standard services and avoid as much as possible setting up and managing your own servers. Even in a cloud environment, servers will burden you, and they should be avoided at all costs. Instead, lean on the platform services that your cloud gives you.

Expect a Rewrite

Starting up is half ambition and half figuring out what the heck you are supposed to be building. It is okay to design software that you expect to throw away, because you likely will have built the wrong thing anyway. In fact, I think every software product that receives significant traction has been rewritten. It is okay to cut some corners early on, because you need traction more than you need ultra-scalable software.

Ship

Your product will need to get to market as fast as possible, so forget about engineering perfection and instead focus on making sure you are building something that people want. As soon as you have your minimal unit of usefulness, ship it. Using the tools from your cloud provider, you can ship your MVP without ever needing to write a deployment automation system or configuring a database. Take advantage of that. Ship your product, even at the expense of technical excellence, as getting your product into the hands of your users is the most important thing an early-stage company can do.

Monitor Everything

Once you ship, make sure you monitor your infrastructure. It is important that your product is up and online for your customers to experience. The less downtime you have, the more your customers love and respect you. I once had a cloud monitoring company, so of course I am passionate about the topic, but monitoring gives you better insight and data to know how your infrastructure is working. This information will help you fine tune operations when you get to that point.

Just to restate, here is the overarching lesson in all of this: Get your product to market as fast as possible and focus on your differentiation. Your server environment will not differentiate youyour product will, so focus relentlessly on building something people want and not server infrastructure!

If you have any questions about CoreOS or startup infrastructure be sure to connect with me on Twitter @polvi.