Chapter 2 highlighted some of the features that make Docker so valuable and how Docker relates to older-generation infrastructure technology like virtual machines.
In this chapter, we’ll examine which types of companies have adopted Docker, the challenges they have faced in migrating to containers, and the strategies they have used for implementing Docker successfully.
Surveys provide illuminating insight into the trends that have shaped Docker adoption so far. Following are the takeaways from recent studies of real-world Docker adoption, which suggest that Docker is ready for an enterprise.
An April 2016 survey by Docker revealed these trends:
Also notable is a June 2016 survey by ClusterHQ, a container storage vendor. Its most interesting finding was that the use of Docker for production increased 96 percent since a similar survey the previous year, and that 76 percent of respondents reported using Docker in production.
Although the survey questions did not define “production” with precision, the takeaway is presumably that a majority of organizations that have adopted Docker are now using it to host applications for end users in production environments, rather than merely using Docker to help write and test code in development. That finding suggests that the answer to whether Docker is enterprise-ready is yes.
Surveys suggest, then, that even though Docker is already being used to host production deployments, the companies that have adopted Docker tend to be small, tech-focused organizations. There are few examples of large enterprises outside of the technology sector using Docker for production application deployment.
This is probably because enterprise adoption of Docker remains subject to the following challenges:
Despite the challenges that enterprises face in adopting Docker, there is plenty of evidence that organizations outside of the technology sector have successfully implemented Docker to support large-scale workloads.
Docker lists a number of non-tech enterprises, such as the BBC, Oxford University Press, and ING, among its customers. And perhaps its most famous customer to date is Goldman Sachs, the investment bank, which has vowed to migrate 90 percent of its IT operations to Docker.
Goldman also happens to have invested $95 million in Docker the company, which helps to explain its interest in the technology; still, Goldman executives presumably see more than financial promise in Docker containers if they are willing to bet so much of their own infrastructure on the technology.
Following are some additional examples of large companies that have adopted Docker.
Another telling example of Docker adoption within the enterprise is the case of ADP, the human resources services provider. ADP handles more than 600,000 clients in a highly regulated industry, making security and scalability essential. These considerations drove ADP’s decision to adopt Docker. By migrating to containers, ADP gained the following:
As demand for applications fluctuates across ADP’s large customer base, the company can increase or decrease the number of its application instances quickly by hosting those applications with Docker.
Protecting sensitive data like social security numbers and payroll information within ADP’s applications is essential. Docker containers help the company secure that data through several security mechanisms. One is binary signing, which prevents Docker from executing applications that are not deemed secure. Another is image scanning, which helps detect security vulnerabilities within the applications run by Docker.
Docker also helps ADP separate application development from production deployment. By using separate registries to store application container images, ADP can maintain a set of applications that are under development for testing purposes, and a separate, secured set of production-ready application images. This flexibility makes it easy to add new features to applications without worrying about introducing security or stability problems to applications running in production.
ADP’s migration to Docker was complicated by the fact that the 60-year-old company has a large set of legacy applications, some of them more than a decade old. Since these applications were designed and written long before anyone was thinking of running them as microservices inside containers, migrating the applications to Docker is not a simple proposition.
ADP’s approach to this challenge was two-fold. In the short term, the company moved entire applications into Docker containers, without breaking the applications down into microservices. This change makes it possible to leverage the scalability and security features of Docker, even though it does not provide all of the benefits of a microservices architecture.
Meanwhile, over the long term, ADP developers are refactoring existing applications so that they can run as microservices. This process will take some time to complete. But by migrating to containers now, rather than waiting for all applications to be rewritten in a container-friendly way, ADP has been able to leverage many of the benefits of Docker without having to scramble to rewrite a large amount of application code quickly.
In sum, the ADP example shows that Docker containers can deliver real and immediate benefits even to large enterprises with many legacy technologies.
Spotify, which delivers streaming music over the Web, was also an early adopter of Docker for production use. While Spotify is a newer and more tech-focused company than ADP, Spotify’s Docker story nonetheless reveals some important insights about successful container adoption for any enterprise.
For Spotify, the main benefit of containers is that they provide an easy way to host the diverse set of services that are required to run the Spotify app. The app performs a large set of distinct tasks, from streaming music to displaying album images to analyzing data about users’ music preferences. Each of these tasks is powered by a separate service running in Spotify’s data center.
By running each service inside containers, Spotify gains two advantages. The first is that the services are easier to manage and update. A problem with one service does not crash the entire application. Instead, a service can be restarted simply by respawning the containers that host it, without disrupting other services in the app.
Second, containers allow Spotify to make the most of its hardware resources. Instead of devoting an entire server to hosting an individual service, as the company used to do, Spotify uses Docker to build clusters of containers hosting multiple services. Each physical server can then host a container cluster in order to power many services at once. This approach assures that hardware resources can be distributed to different services according to their fluctuating needs. The strategy is much more efficient than permanently allocating an entire physical server to each service, especially if that service will rarely require all of the computing capacity of the server.
Key to Spotify’s successful Docker implementation was the company’s creation of its own orchestration tool, Helios. Helios, which is now open source, allows Spotify to automate the tasks of starting and stopping containers. Spotify wrote Helios from the ground up because it adopted containers at a time when other orchestration tools were not yet as robust as they are now.
Today, a variety of free, open source orchestration solutions exist that are prepared to meet the production needs of any enterprise. In addition to Helios, Swarm, Kubernetes, and Mesos are popular solutions for automating the management of container clusters.
This chapter has demonstrated the following:
In the next chapter, we’ll examine some of the strategies and resources enterprises can adopt to help migrate successfully to Docker and microservices.
18.226.133.35