This post is part of the OpenStack Open Mic series to spotlight the people who have helped make OpenStack successful. Each week, a new contributor will step up to the mic and answer five questions about OpenStack, cloud, careers and what they do for fun.
Kyle Mestery is a Principal Engineer in the Office of the Cloud CTO at Cisco. Kyle is the Chief Architect for Cisco’s OpenStack development, and has been actively participating in OpenStack and Open Source development for many years. Kyle has over 15 years of experience in systems software development ranging from distributed filesystems to distributed virtual switches. He is also an active speaker at Open Source conferences, and is the founder of the Minnesota OpenStack Meetup. In addition to being an active contributor to OpenStack, Kyle is also an active contributor to Open vSwitch and libvirt. His current focus in OpenStack is the Modular Layer 2 Plugin, where he is working to ensure ML2 will work successfully with the Open vSwitch and Linux Bridge agents, as well as with a new OpenDaylight Mechanism Driver under development. Kyle lives in Minnesota with his wife and 3 wonderful kids, who have all been exposed to programming through Ruby for Kids. Follow Kyle on Twitter at @mestery.
1) What do you think are the benefits of the open, community-driven approach to development?
I think the main benefit from open, community-driven development is the fact you feel like you belong to something throughout the entire process. Participating in the development of something like OpenStack means you are working with a large number of people spanning the entire globe. And the first you’ll notice is the sense of community one feels when doing this sort of development. The learning process you go through when getting your first commit may be a little steep, but once you’ve gone through it you’ll find you’ve made new connections from the people who assisted you along the way. And once you’ve made more than a handful of commits, you’ll be able to switch around and help other people make their first commit.
In addition, open development means everything is done in the open. From the initial design of a feature, to the development of the feature, to it’s eventual inclusion into the source tree and it’s documentation, all of this is done in the open. This means anyone can comment and contribute along the way. And this is what makes Open Source development so powerful. Open development and Open Source level the playing field and allow a much broader scope of people to become involved at every step of the process.
2) What are the essentials for someone just getting started with OpenStack? Sites? Books? Conferences? People?
When you’re just getting started with OpenStack development and you’ve never used git, gerrit, and other open source tooling technologies, the task can be somewhat daunting. Colin McNamara has put together a great presentation which covers “How To Survive Your First OpenStack Checkin”. He’s given this talk at the last two OpenStack Conferences, and it’s a great talk for someone beginning their OpenStack development journey. I highly recommend new developers to OpenStack to have a look at Colin’s slides:
Another great resource for someone just getting started with OpenStack are local User groups. One of the great things about OpenStack is the community of people who exist inside the ecosystem. There are User groups everywhere, and there is likely one close to where you live. Joining your local User group is a great way to get to know people using and developing OpenStack who live close to you. You’ll find a local community where you can share ideas and learn from others. And if there isn’t a local User group near you, why not start your own?
Another critical resource for people new to OpenStack is IRC. IRC, for those new to it, stands for Internet Relay Chat, and is a way the majority of developers and users in the OpenStack community communicate with each other. There are IRC channels covering many sub topics of OpenStack, joining the appropriate one is a great way to ask questions as a user or a developer. You’ll find core developers for each of the OpenStack project are always on IRC and are willing to help.
3) What other open sources projects do you think work well with OpenStack, and why?
The list of Open Source projects which work well together with OpenStack is quite large. I’ll focus on a few which I’m familiar with and actively am involved with:
Open vSwitch is an Open Source virtual switch, originally developed by Nicira, now VMware. Open vSwitch has a large number of contributors, and is the base virtual switch for a large number of OpenStack Neutron plugins. The fact so many Neutron plugins rely on Open vSwitch running on each host makes it a core component of most OpenStack deployments.
libvirt is a library for managing and running virtual machines. libvirt supports a large number of hypervisors, and is a critical component of most KVM-based Linux hypervisor deployments. In OpenStack, when you run with KVM hypervisors you are using libvirt to run virtual machines on compute hosts. libvirt integrates nicely with OpenStack Nova to handle this, and is a critical component of OpenStack deployments with KVM.
Ryu is an Open Source component-based Software Defined Networking framework. Ryu is modular and supports a large number of protocols underneath. Since the Folsom release of OpenStack, Ryu has been an optional plugin for OpenStack Neutron. The flexibility of Ryu makes it an interesting choice for Elastic Cloud Platforms when deploying OpenStack.
OpenDaylight is an Open Source Software Defined Networking Controller sponsored by the Linux Foundation and developed by many different companies and individuals. OpenDaylight is a relatively new Open Source project, but the momentum behind it has been amazing to watch over the last 6 months. Work is currently underway to develop an OpenStack Neutron Modular Layer 2 MechanismDriver for OpenDaylight, with the hope of this becoming the reference controller MechanismDriver for ML2.
4) How would you suggest to someone that they should pick OpenStack for deployment? What is the most compelling argument for OpenStack in your mind?
OpenStack is a great deployment option if you’re looking for an Elastic Cloud Platform and you want to take advantage of the things a platform like that can provide. If you’re looking to deploy something along the lines of Amazon Web Services in your own lab or datacenter, OpenStack is a great choice. The scalability and flexibility provided by OpenStack map perfectly into this use case. And if you are already familiar with Amazon Web Services, deploying OpenStack into your own datacenter will provide you with familiar functionality for your local tenants and users.
Another great reason to pick OpenStack is if you’re looking at deploying your own Platform as a Service. Anyone looking to deploy something like OpenShift Agile or CloudFoundry should look seriously at how they can deploy those items on top of OpenStack. Someone looking to deploy Hadoop in an Elastic Cloud Platform should look at OpenStack as the underlying cloud platform for their Hadoop deployment. These are examples of strong use cases for applications deployed on top of OpenStack. And when you start to think in terms of scalability, flexibility, and manageability at the application level, OpenStack becomes a compelling option.
The most compelling argument for deploying OpenStack is the fact it allows you to unlock the power of your applications and run them in a truly elastic fashion on top. Once you start to think outside of the typical enterprise computing box, you realize how powerful this can become. And when you start to think in terms of elastic computing and computing on demand, deploying OpenStack becomes even more compelling. The simplicity and scalability of OpenStack makes it a compelling deployment option for anyone looking to deploy any type of cloud computing setup.
5) What is the most common misconception you hear about OpenStack?
The most common misconception I hear about OpenStack currently is the fact people new to OpenStack think it’s an enterprise virtualization platform which is a replacement for vSphere. In my opinion, this is a rather limiting view of OpenStack, and doesn’t take into account what OpenStack was designed to be. OpenStack was designed to be an Elastic Cloud Platform more in line with what Amazon Web Services is. Trying to box OpenStack into being a replacement for something like vSphere limits the true power of OpenStack. This common misconception comes from enterprise users and developers who have years of experience with vSphere. It’s true that OpenStack is slowly developing features which put it more in line with an enterprise virtualization platform. But it’s more interesting to think outside of that box and imagine what you can do with a truly Elastic Cloud Platform. Once you do that, the possibilities you open are amazing. Thinking in terms of application scalability opens up new doors where you are no longer limited by hardware, but are more in tune with what the software can provide you and what you can do with the software you develop and/or run on top of OpenStack.