We sat down with Tony Pujals, Director of Cloud Engineering at Appcelerator, to better understand the microservices trend and where it is headed. In this second installment of Q&A discussions, Tony talks about the some of the challenges the microservices approach faces and how those challenges are being overcome.
How divided is the developer community on microservices?
There was more pushback on microservices in the early days. Some complained about having a new term for what they perceived as essentially SOA. Microservice is an instance of SOA, but without all the overhead and baggage that came to be associated with industry SOA. Perhaps the biggest complaint, however, has to do with the concern that microservices trades one set of problems for another. There are legitimate concerns about managing and monitoring operational complexity. At question is how to effectively manage and orchestrate so many services as you move from a relatively easy monolithic model to a huge cluster of independent, distributed services.
I suppose this is somewhat similar to the early days when people were still trying to figure out how to have an effective cloud strategy — you know it’s big and it’s happening, so it’s on your radar, but the picture isn’t perfectly clear and the recipes are still being written.
How can we start to solve the challenges associated with microservices and increase adoption?
Start removing the impediments for developers. When the technical and organizational processes involved in creating and deploying any kind of application are burdensome, it isn’t worth the effort to create a microservice for each and every API or worker you might consider.
Consider moving to a platform that involves less ceremony and effort to create and start new services. I’m partial to Node and Go, but these aren’t the only solutions. However, they do exemplify what I mean by lightweight in terms of ceremony, with very minimal project boilerplate and only a few lines of code to expose a network service. They don’t require an application server and a ton of deployment artifacts. A reduction in friction and overhead stimulates and encourages microservice development the same way that cheap branching completely changes the way programmers leverage branches as part of their development workflow.
These platforms also provide good performance with a tiny footprint. This is a perfect match for lightweight containers instead of heavyweight virtual machines. So again, remove impediments by leveraging Docker to be able to test services in environments that you can spin up in the amount of time it takes to start a process on Linux.
Like the analogy to the way that Git provides cheap branches allowing developers to quickly and easily isolate their code while developing a feature, Docker allows developers to quickly and easily isolate their runtime dependencies in environments that they can launch with a simple command. Thanks to Docker, it is easy to share these environments with other developers and testers and push them out through to production. Developers can launch containers that are exactly the same as what will run in production; and neither developers nor devops need to install specific dependencies on any machines other than Docker itself. Docker eliminates the friction that developers, testers, and devops experience when setting up an environment to be able to run a specific version of something.
You can definitely get started today removing impediments to transitioning to microservices to exploit their benefits. Docker has been production-ready for a long time now, so teams can at least start building a few API services and begin incorporating Docker in their workflow and environment. Even Netflix didn’t get to six hundred services overnight. With respect to service orchestration, the industry has made great strides over the past year. I personally am extremely excited by the latest orchestration features in Docker 1.12.
Tony Pujals is our Director of Cloud Engineering. At Appcelerator, Tony plays a key role in improving the process of building, deploying, orchestrating and monitoring containerized microservices. He is a member of the Docker Captains team as well as a dedicated user of the Node platform and the co-founder of the third-biggest meetup for Node developers globally.