Maximum Microservice Excitement at OSCON 2015
Every summer since 1999, tech publisher O’Reilly has held the Open Source Convention, commonly known as OSCON. Tech giants, community celebrities, and dedicated hackers all gather to discuss and discover what’s new and, at least in the case of the crowdfunded $9 C.H.I.P computer, bleeding edge. At Kiosk, we leverage open source projects for our clients so OSCON is not only an opportunity to stay up-to-date with the OS community, but to stay ahead of the game. This year the biggest focus was on scalability and concurrency of web applications via microservices.
Microservices are small pieces of software that do one thing, and do it well. By decoupling monolithic web applications into its constituent pieces, developers can easily write new features, fix bugs, or even completely rewrite parts of an application without negatively affecting the application as a whole. More powerful than this, however, is that by breaking up functionality the microservices can run on different servers altogether.
Enter Docker, an open source tool that allows you to package up everything you need to run your program in an object called a container. This packaging ensures your program runs the same not matter where it is deployed. This, in turn, provides quick scalability. Is your application grinding to a halt because of too many connections? Just add more containers to the cluster! Many sessions at OSCON covered real world examples of running Docker in production stacks, like Bridget Kromhout’s talk on Docker at her company, DramaFever, or Nick Shadrin’s talk on using nginx with Docker.
Building on the container concept, Google launched its Kubernetes product during OSCON 2015. If Docker handles clusters of containers, think of Kubernetes as the overseer for Docker. Its job is to wrangle all the containers your business runs and bundle them into a compute node, a process called orchestration. With Kubernetes, a lot of the difficult and tedious scheduling of scaling your applications is handled automatically.
This whole technology stack is a different way of thinking about web application development, one particularly suited to small teams (not unlike Kiosk). By thinking about larger applications as a series of interconnected microservices, we can instil a sense of ownership of a microservice in a developer which, in turn, leads to a happier and more productive developer. Changes to how these microservices interact requires a conversation with another developer, and encouraging communication helps everyone keep the overall goal of any project in mind.
To borrow a phrase from one of the sessions, microservices are not a free lunch. There are pitfalls in converting a project to microservices and further “containerizing” might not be the best approach. There’s a lot of work that goes into the conversion process and it is a fairly new technology, which comes with its own set of pitfalls. Overall, though, having a proper understanding of your project’s scope at the beginning can alleviate these issues. We’re already begun taking initial steps to implement containers for one of our internal reporting projects. Hopefully, we’ll be able to share more as development proceeds.