Containers are changing the way developers architect, build, test and deploy cloud-based applications. At the Container Summit held yesterday in New York, the convergence of Docker, microservices and OS-level virtualization was front and center.
“Containers are eating the world,” said the event’s emcee, Joyent CEO Scott Hammond, borrowing from Netscape founder Marc Andreessen’s famous declaration about software. “Everyone is using containers, learning about them, experimenting with them, and you have to wonder why?”
Hammond introduced many of the day’s themes—Docker, microservices, DevOps and the cloud—as a collection of new development models, organizations, skillsets and technologies coming together to enforce this trend of containerization, woven together by the need for speed.
“As developers, we have this love affair with containers because they allow us to simplify and accelerate the development process, and get from dev to test to runtime very fast,” he said.
As Gartner cloud infrastructure analyst Dennis Smith put it at the conference, containers are on the rise in application development, OS architecture and infrastructure management because of their relationship with the future of cloud computing. According to him, Gartner projected that by 2020 at least 70% of new application development projects will be deployed on cloud architectures, up from less than 10% today.
Tying it into containers, Smith said automation is the “secret sauce” to any successful cloud implementation, whether public or private.
“DevOps is microservices using bite-sized infrastructure components, or containers, in a highly automated fashion in terms of provisioning, managing and operating all linked into a Continuous Integration deployment system,” he said.
Docker deployment and microservices
As pronounced an impact as containers have had in such a short time (faster coding without the lengthy reboots associated with VMs, leading to performance on par with bare metal), containers still face challenges. Smith talked about the increased complexity associated with container implementations, changing the enterprise culture around monolithic applications, and the inherent security issues still apparent in Docker and the like.
For developers, his guidance is to act now. Invest in changing development and test configurations, and work to deploy containers in production—a piece of advice leading directly to a keynote from Joyent CTO Bryan Cantrill.
In deploying Docker, the biggest riddle Cantrill illustrated for both Dev and Ops is in choosing the layer on which to virtualize. While hardware virtualization can be applied more broadly than ever before, and platform-level virtualization is also an option, he explained why Joyent’s container philosophy through its SmartOS and newly released Triton platform skews toward OS-level virtualization and how it ties into microservices.
“Microservices are an embodiment of the Unix philosophy applied to distributed systems,” said Cantrill. “They do one thing, and do it well.”
(Related: Digging into microservices)
Docker is designed to be cross-platform, but as Cantrill explained, it’s really more Linux-centric. Thus Joyent has worked to leverage Docker’s Remote API to execute binaries natively with Triton. With Triton, the data center simply acts as a very large Docker host.
“With a VM model, Docker is purely a complexity additive,” he said. “What we’re doing is moving VMs aside to run Docker hosts directly on the metal. The Docker host becomes purely virtualization, and you don’t manage VMs.”
Thinking about Docker deployment in this way renders the relationship between containers and microservices even more important. John Willis, a Docker evangelist formerly of acquired software-defined networking startup SocketPlane, went further about how the two are inextricably linked.
His keynote, entitled “Guns, Germs & Microservices,” painted microservices as small autonomous services that work together, loosely coupled with containers in service-oriented architectures. Working together, he said the true power in containers and microservices is enabling Continuous Integration and Continuous Deployment in cloud-based application development.