Our own Kent Bye had a chance to chat with GitHub infrastructure engineer James Fryman to hear about some of the benefits Puppet provides to the biggest source control repository out there.
Here's the full transcript:
JAMES FRYMAN: GitHub is the number one source control repository in the world, and we've grown exponentially over the last five years -- that's only helped by Puppet allowing us to scale quickly and rapidly and easily.
So at GitHub our core mission is to help developers work smarter and better together than apart. A lot of the workflow that we developed is focused on collaboration with developers, doing things like pull request in order to collaborate more efficiently. And Puppet certainly helps us with that by allowing us to collaborate cooperatively with our developers in order to build infrastructure. So it's no longer operations building infrastructure, it's a collaboration between all of the folks, the operations folks and the development folks using a common language that we can express, "What does infrastructure need to look like?"
At GitHub, we use Puppet in order to do initial configuration of our servers through provisioning as well as initial deployment of our applications and management of state throughout the lifecycle of the machine.
We create common patterns for use within Puppet in order to make the development time and the deployment time as short and small as possible so we go from development to production very quickly.
One of the big things we focus on is "ship code, ship quickly to get it out there so that people can give you comments and opinions of how things are working." And Puppet enables us to really just cut out many steps in the provisioning through deployment process.
GitHub uses Puppet in order to deploy to multiple clouds and multiple data centers. It allows much flexibility with server types, hardware types -- all within the same code base. So we're able to maintain extreme agility, extreme flexibility even with terms of business cost. When we want to move to a different cloud from a costing perspective Puppet is not a roadblock, it's actually an enabler for us. It helps accelerate that decision-making process. That's the flexibility that we go with Puppet is we're not boxed into any one given technology. We can very quickly pivot onto a new technology. And that very much aligns with it get it out and ship it.
Configuration management and Puppet comes along, and I no longer have to wait for many departments to figure out how they're going to orchestrate deployment. And I don't have to wait two weeks lead time for some networks or some servers. I can define some code. Puppet takes care of the magic. And now I'm moving. It's no longer about staleness. It's about "What's coming?" And that's the interesting part, that's what Puppet provides.
We have a relatively small operations team, around 10 or 12 at this point. And we manage 500 nodes, and that's up from 200 not less than six months ago. So our continual growth, in order to support folks wanting to make their code public, that growth trajectory is only helped by Puppet enabling us to scale very quickly.
And I can scale myself to hundreds of nodes, thousands of nodes, tens of thousands of nodes. I've been in an environment that managed somewhere in the 10,000s of nodes. And that's exciting to be able to see and orchestrate entire farms of servers to just provide a business value without really having to try all that hard. It just becomes very easy.
Success for me when using an automation tool means I get to go to the bar sooner. I no longer have to worry about how many servers do I have to manually touch. Or even "Did my script run properly?" I can set it, and forget it. And that allows me to go spend more time with my family, which is what really matters. I enjoy technology, but at the end of the day I want to go spend time with family and friends. I'm no longer encumbered by these manual processes. I can orchestrate significant numbers of machines without even really trying, and that's fantastic.