In a post-container world, it's not enough to move apps from a data center to the cloud. Developers need a new...
approach for software delivery -- ideally, one that is based on the microservices model.
If you're a business that uses a monolithic architecture, the adoption of microservices might cause some anxiety on your team. After all, there isn't one comprehensive place to find answers to all the challenges that arise from managing today's cloud-native apps, and there isn't one single vendor that has all the answers.
Fortunately, the open source community can offer some help. Trends in open source software point toward a future with a completely different approach to application management. If you're willing to delve into and invest in today's leading open source microservices projects, it's possible to find everything you need to manage modern microservices applications in the cloud.
Top vendors double down on open source
Up until a decade ago, open source was the domain of experimental enthusiasts, used mainly by a fringe of developers and students. Enterprises avoided open source in favor of commercial products from the likes of Microsoft, Oracle and IBM.
The advent of cloud computing, containers and microservices has changed all of that. GitHub makes it easy to store code in the cloud and share it with anybody. It houses open source projects from nearly every large organization. Microsoft is the biggest contributor to projects on GitHub, though it still surprised more than a few people when it bought GitHub, given its former adversarial relationship with open source code and the community. Microsoft now embraces open source and sees it as the way of the future for its Azure platform.
Many startups today have their roots in promising open source projects. CoreOS is a success story, in this sense. The company had a history of creating influential open source projects like etcd, rkt and flannel. Red Hat snapped up CoreOS earlier this year for $250 million to bolster its OpenShift cloud platform.
Open source tools arise from companies' real needs
Nearly every modern organization that delivers its services via a web and mobile application now depends heavily on open source. Look at the engineering blogs of Netflix, Spotify, Uber and Airbnb. There are numerous mentions of open source projects that they've created themselves and others that they simply utilize from the community. Open source is now the lifeblood of the modern application stack and here are some proven examples:
- Asgard -- Netflix created Asgard to automate its infrastructure in AWS. The open source Asgard, which led to a similar tool called Spinnaker, works not just for AWS, but other cloud platforms as well.
- Prometheus -- SoundCloud needed to monitor its cloud metrics, and the result was Prometheus, a leading open source monitoring tool today.
- Istio -- Lyft, IBM and Google collaborated to create Istio, a service mesh for Kubernetes. It arose from the need to manage communication between the complex web of services run by these companies.
- gRPC -- Google used a tool internally called Stubby to manage Remote Procedure Calls (RPCs). This helped with load-balancing requests across distributed services. Google released Stubby into the open source community and renamed it gRPC. Today, gRPC is a prominent open source microservices tools for managing load balancing.
Open source tools just need to do one thing really well
Just as Kubernetes doesn't meet all container orchestration needs, open source tools don't need to reinvent the wheel and completely change how applications are delivered. Instead, they serve the purpose of doing one thing really well that hasn't been addressed by other tools yet.
Take, for example, Spinnaker; it is a tool to manage continuous deployments. Spinnaker isn't an end-to-end CI/CD tool, as it relies on Jenkins for build and test automation. However, it excels at deployment automation, and this is enough to make it a great fit for a CI/CD toolchain that also involves Jenkins and Kubernetes.
CNCF strengthens open source tools
The gRPC load balance manager is successful as an open source microservices management tool, but Kubernetes is Google's true blockbuster open source project. Kubernetes, a container orchestration tool, enjoys industrywide adoption. Cloud vendors have jockeyed to provide Kubernetes management services.
But Kubernetes doesn't meet every need that relates to container orchestration. Rather, it's a place to start when building a custom, cloud management platform. Kubernetes' open architecture requires further expansion.
The Cloud Native Computing Foundation (CNCF), which adopts and oversees the development and direction of many open source projects, has extended Kubernetes, as well as other projects, and has surrounded it with an ecosystem. The goal of this governance system is to help prevent vendor lock-in and ensure that standards can be set to meet everyone's needs.
Running code is the future, not containers
The main task of Kubernetes today is to run and manage containers. In the future, however, Kubernetes should reach a level of maturity where it can automate its ability to run code from the Git, or an equivalent repository.
Furthermore, a convergence of serverless -- with its pay-per-execution model -- and container management options are on the horizon. Today, this appears in services such as AWS Lambda, and AWS Fargate, but eventually it should expand to more services. Attitudes could shift from DevOps to GitOps, where developers write code and it will run automatically.
Open source microservices tools help run and oversee microservices in cloud-native environments. Open source trends also point toward a future where code can take center stage, and the infrastructure to run the code is automated and easier than ever.