Bloomberg L.P. may be best known for its news service and ubiquitous stock trader terminals, but more than a quarter of its 19,000 employees are software engineers and technologists who turn out thousands of custom applications each year to help Bloomberg customers understand and forecast the machinations of financial markets.
Bloomberg runs more than 600 unique applications every day to support all those applications in development. Managing such a vast fabric of applications is so complicated, said Steven Bower, data analytics and infrastructure lead at Bloomberg, that it was forced to write its own software to automate the process of repeatedly stamping out the same machine instances, or computers emulated in software — a painstaking, monotonous undertaking.
Then three years ago, it began experimenting with Kubernetes, a so-called orchestration tool developed by Google LLC that had recently been released as open-source software. The company had experimented with other orchestrators in the past and found them immature, but Kubernetes was different: It worked well, and a growing community of developers was rapidly filling in the pieces to make it work even better.
Today, Bloomberg’s developers are in the process of moving large parts of its development infrastructure to Kubernetes. “They can spin up an environment that’s fully fledged and works the same on their desktop as it does in production,” Bower said.
That’s a huge deal. And it points to Kubernetes’ essential promise: It’s a whole new way to develop and deploy software, one that is now set to trigger a seismic shift in enterprise computing. Not only is it speeding up the pace at which ideas can be turned into software, often by orders of magnitude, it’s also catapulting them into the cloud.
At the same time, by making it easier for companies to use multiple public cloud computing providers, Kubernetes could shake up that rapidly consolidating world, now dominated by Amazon Web Services Inc. and Microsoft Corp. along with hard-charging, well-heeled rivals such as Google. Indeed, some people are calling Kubernetes the operating system for cloud computing – and that will have far-reaching impacts on businesses and consumers alike.
Kubernetes (pronounced koo-ber-NET-eez, from the Greek word for “helmsman” or “pilot”) is the most rapidly adopted open-source project in history since its release in mid-2014. According to 451 Research, it has already moved into more than 70 percent of organizations using the wildly popular software called containers, which Kubernetes manages. Containers make it simple to encapsulate applications in a form that’s easy to run on any computing environment in companies’ data centers or in public clouds. By some estimates, enterprise adoption rate of Kubernetes will reach 90 percent by next year.
The appeal goes beyond just faster software development, though. Kubernetes has been embraced by every major cloud and on-premises infrastructure provider, meaning that software written for it can run practically anywhere. That will put cloud on the fast track to become the default platform for nearly all new software development. It also lowers the barriers to moving software workloads across multiple public and private cloud platforms, giving organizations unprecedented operational flexibility.
An application created by a developer running in a container performs the same on a laptop as in a [quality assurance] environment and in a production system,” said Aaron Mitti, chief software architect for GE Transportation Digital Solutions, which is in the process of moving most of its software for managing large railroad and shipping fleets to containers. “That really helps from a software development lifecycle perspective.”
Kubernetes will also fundamentally change the way most software is built, experts say. Software will be delivered more quickly and will work more predictably and reliably. Kubernetes removes many of the barriers to experimentation because the consequences of failure are so low. Consequently, organizations can become nimbler in bringing new innovations to market and building upon them. In short, Kubernetes could finally make the long-promised idea of digital transformation real.
“The notion of being able to run the same operating systems on everything from a [$35] Raspberry Pi to a 25,000-node cluster is transformative,” said Gregg Siegfried, a Gartner Inc. research director. How so? Any good technology, said Jim Scott, vice president of enterprise architecture at MapR Technologies Inc., “should resemble a magic trick.” For many of its users, Kubernetes does.
Administrators love the simplicity of setting up new clusters with a single command and managing and balancing workloads on thousands of containers at a time. They can also manage data access down to a fine-grained level, eliminating the need to set up duplicate machines for security purposes.
The upshot, said Bloomberg’s Bower: “I think we’ll look back one day and say I don’t know how we worked without this.”
Beyond the geek appeal
On its face, container orchestration is a topic that only a geek could love. Kubernetes basically automates the process of setting up and managing software containers at very large scale. To understand why that’s a big deal, it helps to know a bit about how software development has evolved.
For the first 40 years or so of commercial computing, software was built in a monolithic fashion, with logic, database access, user interface and reporting all integrated into a chunk of code. This approach is slow and error-prone, since a flaw in a single line can cause the entire application to seize up.
Beginning in the late 1990s, most development moved to a services approach in which applications were decomposed into modular units that communicate with each other over networks. The services model enabled much faster development since modules could be built in parallel. It also enabled services to reused and shared.
But there were a lot of problems with that approach as well. For one thing, applications composed of hundreds or thousands of services are nearly impossible to manage, particularly if services are running on different physical and virtual machines. Slowdowns or failures of individual services also can impact others that are dependent upon them, creating performance problems that are difficult to predict. Services tied to particular operating system versions and databases are difficult to share with others.
Containers addressed many of the problems inherent in services, at least from a developer perspective. These self-contained packages include everything an application needs to run, including an operating system kernel, developer tools, libraries and even databases. The Docker platform, which was released to open source in 2013, provided the first consistent platform for running software containers, meaning that code encapsulated in a container could run on any platform that supported Docker — that is to say, all of them.
Developers love containers. Preconfigured containers can be stored in libraries, enabling them to be reused. Much like virtual machines, containers can be spun up in seconds, avoiding long waits for infrastructure to be allocated and software to be installed and tested. Containers’ inherent portability means that developers can build their applications on a laptop and later move them to a server or the cloud without compatibility concerns. “In our quest to get developers focused on application code, anything that simplifies infrastructure is desirable,” said Dave Bartoletti, vice president and principal analyst at Forrester Research Inc.
Containers have rapidly become the preferred vehicle for services, but they didn’t solve the complexity problem. Containerized services are difficult to manage at scale, and performance depends upon the health of the underlying architecture. A containerized service running on an overloaded cluster can drag down the performance of every other dependent service. That means operations people must still attend to the details of managing infrastructure.
Kubernetes solves these problems. It provides a set of services that enable containers to talk to each other while also handling much of the gnarly plumbing details. For example, Kubernetes can automatically allocate resources to a server to improve performance or shut down and restart ailing containers, sidestepping performance problems.
Benefits grow as the environment scales up. Kubernetes can update software transparently and automatically in the same way that smartphones do. It also provides consistent storage and network services on an automated basis, relieving operations staff of that laborious and error-prone task.
“Companies can put a lot of their application portfolio on Kubernetes and have one underlying management layer,” said Brian Gracely, director of product strategy at Red Hat Inc. “The value grows exponentially the more they use it.”
That’s the case at Ygrene Energy Fund Inc., an eight-year-old financing firm that helps homeowners get low-cost loans for projects that improve energy efficiency. Part of the company’s competitive advantage is the many relationships it has established with financial institutions. Building systems that interface with a wide range of banks and mortgage companies would have been almost impossibly complex with a monolithic approach to development.
So Ygrene adopted a microservices-based approach using containers and Kubernetes orchestration. “Everything runs in a container at this point,” Austin Adams, a Ygrene senior software engineer, said in an interview on theCUBE, SiliconANGLE’s livestreaming platform, at KubeCon + CloudNativeCon EU 2018 conference last May.
Whenever Ygrene needs to integrate with another system, it creates a small containerized service to do so and adds it to the mix. “It looks like a mess on the back end, just tons of microservices going everywhere,” Adams said. “That’s why we’re using all these cloud-native tools to be able to manage that.” Ygrene’s underwriting system has won awards for accuracy and quality.
Two characteristics of Kubernetes early life are remarkable. One is that the code base hasn’t been “forked,” or broken off into a separate project. Forking is a common way that open-source developers resolve disagreements. The duplicate of the original project is made and evolves in another direction. Forking can rejuvenate stalled projects, but it also can introduce incompatibility issues.
The fact that the Kubernetes code base has remained consistent over the past four years “opens the promise that you can build and deploy to anybody’s distribution and move services back and forth, be they on-premises, in the cloud or at the edge,” said James Kobielus, lead analyst at SiliconANGLE sister market research company Wikibon. “It’ll all interoperate seamlessly.”
Kobielus counts 34 Kubernetes distributions that have been certified by Cloud Native Computing Foundation, which is the group charged with nurturing open-source cloud projects. An additional 21 hosted platform-as-a-service offerings include embedded Kubernetes. To that point, all are using the same code.
That’s the basis for the project’s other crowning achievement: Kubernetes has been adopted in its native form by every major cloud and platform-as-a-service or cloud application creation tools provider. In the future, Forrester’s Bartoletti said, “it’s not crazy to imagine that a lot of enterprises will have a Pivotal container service using a Google container and AWS container engines.”
GE Transportation evaluated several orchestration managers and found them all wanting. Kubernetes was also immature at the time the company committed to it about a year ago, but the wave of support was compelling. “We saw Microsoft, Red Hat and others who had their own agendas get behind it,” said Wes Mukai, the company’s chief technology officer. “That was the big momentum shift that made it easier for folks like us to make a decision.”
Much of that has to do with Kubernetes’ origins as the orchestrator for Google’s massive infrastructure. The search giant spent more than a decade developing and testing Kubernetes and its precursor called Borg before releasing the code as open source.
That meant the project that was released to the community had been battled-tested on the world’s most demanding cloud. And unlike the many software projects that developers release only half-heartedly into a community, Google took a relatively hands-off approach to Kubernetes, actively encouraging other developers and even competitors to build upon the code base.
“In order for it to be important, it had to be something that wasn’t just Google,” said Tim Hockin, senior software staff engineer at Google and one of Kubernetes’ principal developers. “We went out earlier than we were comfortable with, opened the door to adopters in a big way and got some major patches and impact. That gave people a sense of ownership.”
It also gave other software firms confidence that Google wouldn’t try to leverage Kubernetes to the advantage of its own cloud service. Even Amazon couldn’t resist the tide. “I think Amazon went in on Kubernetes support kicking and screaming,” said MapR’s Scott.
Nevertheless, it went in. After trying to push its own container orchestration platform for two years with little success, AWS acceded last November in a nod to what Chief Executive Andy Jassy said was Kubernetes’ “resonance.”
Google rivals may have been reluctant at first, but there are certain advantages to standardizing on platforms regardless of their origins. Many experts compare Kubernetes to Linux, the ubiquitous operating system whose adoption ended a decade-long battle over Unix standards and enabled the entire industry to move ahead. In the same way that a rising tide lifts all boats, Amazon and every other infrastructure-as-a-service providers stand to benefit as barriers to cloud-native development fall.
“The cloud is going to reach 100 million developers by 2027,” said Alexis Richardson, CEO of Weaveworks Ltd. and chairman of the technical oversight committee at the CNCF. “How do we make it easy to get enterprises and developers building on the cloud? That’s provided by containers and the tooling around them.”
What does this all mean in the long term? The industry’s adoption of Kubernetes has been so rapid that the impact has still to be felt. “I would be surprised if we’ve passed the 5 percent mark” of enterprise workloads running on the platform said Dan Garfield, chief evangelist at Codefresh Inc., developer of a continuous delivery platform for Kubernetes. A few developments appear certain, however.
What’s coming next
Software development and delivery will accelerate. Developers have been huge beneficiaries of the last several years’ worth of innovations, including cloud computing, the agile DevOps development methodology and now containers. Much of the grunt work of defining infrastructure has been automated, freeing them to spend their time on code.
Kubernetes not only removes many of the operational details from building software but makes the process portable. Transient containers can be used to quickly try out new ideas, build upon winners and discard losers.
All of these factors will accelerate the pressure on businesses to transform digitally. Those that can move more swiftly to take advantage of new development technologies will gain an edge over competitors. Kubernetes will finally put DevOps over the top, moving the last remaining barriers to adopting a software development technique that has been credited with orders-of-magnitude improvements in quality and speed. “Having the opportunity for enterprises to develop new software experiences for their customers quickly, deploy them and make changes based on end user feedback grows by factors of 10 to 100,” said Richardson.
Software development will become simpler and more accessible to nontechnical people. As complexity is increasingly abstracted away, software development tools will evolve to a higher level based upon business logic, said Wikibon’s Kobelius. For example, graph modeling tools enable developers to represent complex dependencies and flows among distributed components visually. These high-level models can be complied into containers for execution.
“The developer won’t need to know where or when particular compute or storage or resources are allocated,” Kobelius said. “That will all be handled in a magical way through abstraction in the cloud.”
Matt Klein, a software engineer at ride-hailing service Lyft Inc., agreed. “In 10 years’ time, people are going to be writing business logic” rather than code, he said last year in an interview on theCUBE.
Customers will expect better online experiences. The built-in load-balancing and resource allocation features of Kubernetes will make application performance more predictable and raise customer expectations accordingly. For example, streaming-video service HBO used Kubernetes to balance server loads automatically to accommodate the surge in viewership during last year’s episodes of “Game of Thrones.”
Private clouds will look more like public clouds. Kubernetes will drive wider adoption of cloud-native design, meaning that applications will be billed by default for the cloud. That will have an impact on-premises data centers as well. “Since all applications can now enjoy the benefits of a cloud-native design, we will see on-premises enterprise IT infrastructures and legacy applications adapt to these new design patterns,” said Tom Phelan, chief architect at BlueData Software Inc.
Multicloud will go mainstream. Applications built on Kubernetes can run almost anywhere, which means organizations will have more incentive to shift workloads between multiple clouds and on-premises infrastructure. International Data Corp. predicts 93 percent of organizations will use services for multiple cloud providers within the next 12 months. The cloudwide embrace of Kubernetes is likely to increase the number of cloud providers organizations that arbitrage in search of optimal performance and price.
Microservices and serverless applications will take off. Both are considered more flexible, faster and better-performing alternatives to conventional application development platforms, but complexity has been a problem. Automated orchestration will make monitoring and tuning performance a relative breeze. Applications will become more distributed and the already booming trend of delivering services through application programming interfaces will boom even louder.
In the end, though, the most interesting impacts will be those we can’t foresee today. Many people compare the current state of Kubernetes’ maturity to that of the World Wide Web in 1996. Expectations are high, but the areas of greatest value will be turn out to be in places we aren’t even looking. “As tools and experiences appear, Kubernetes will be used more widely without being seen,” said Richardson.
Eventually, then, Kubernetes will become part of the computing fabric. “Ultimately,” said Google’s Hockin, “I hope it will just be the way you deploy applications.”
Photo: Frederik Magle Music/Flickr
Since you’re here …
The journalism, reporting and commentary on SiliconANGLE — along with live, unscripted video from our Silicon Valley studio and globe-trotting video teams at theCUBE — take a lot of hard work, time and money. Keeping the quality high requires the support of sponsors who are aligned with our vision of ad-free journalism content.
If you like the reporting, video interviews and other ad-free content here, please take a moment to check out a sample of the video content supported by our sponsors, tweet your support, and keep coming back to SiliconANGLE.
Algolia Custom Site Search