Where Kubernetes Ends, Cloud Foundry Begins
We’ve lapped up literature about so many successes in the startup galaxy. We’ve read with a mixture of disdain and sympathy stories or tweets of startup failure. As technologists, we believe that engineering, particularly software, has a pivotal role to play in deciding whether a startup makes it or breaks in the process.
“The root problem with conventional currency is all the trust that’s required to make it work. The central bank must be trusted not to debase the currency, but the history of fiat currencies is full of breaches of that trust.”
— Tyler Winklevoss (@tyler) September 20, 2021
Inaction and Inertia: Innovation’s Biggest Enemies
Adapting and adopting new technology for making a business function is considered critical to its success. Building a tech stack with the technology that solves problems effectively, while introducing the smallest number of trade-offs, is the best path forward for engineering leaders in these organizations. To continuously evolve, meet new challenges, and navigate free market forces successfully — these are the main needs for any organization on the cusp of growth.
Let’s talk about technical debt!
What it is? what are the consequences of it?
Technical debt is not “old code” or an “outdated” part of a system.
Technical debt is Entropy, stressed teams, and unhappy developers.
🧵 👇 pic.twitter.com/o3dTwxccqn
— Simon Gronborg (@SimonGronborg) May 25, 2021
Technical Debt. Just As Bad.
Debt, very generically, is considered bad. Some nuanced financial positions, when maneuvered maturely, can convert debt into an advantageous position. Similar to financial debt, technical debt can create some hurdles in the path of a company’s growth. In particular, the negative effects tend to ripple across software engineering teams.
Certain areas of the operations of engineering teams, such as migrations and updates to the core technology stack that power applications, can cause larger troughs of debt. Delays and prolonged indecisiveness can also result in accumulating technical debt. Imagine putting off a decision to upgrade the base OS image used to build containers. Even long-term support releases tend to withdraw support in a matter of a few years. Those adopting it late in the cycle find themselves left in the lurch by not just performing updates, but also getting into an expensive upgrade cycle. Likewise for security certificates that could expire. The list goes on.
💡 “There’s consistent research proving the correlation of high speed and better business outcomes: more conversions, page views, orders, leads, engagement and lesser bounce rate.” #webperf #sitespeed #perfmattershttps://t.co/2pa4Tgdpat
— Calibre (@calibreapp) April 26, 2021
Technical Problems Translate Into Business Ones
In companies that are largely dependent on software engineering teams to deliver value — and this is a significant and growing number — it is imperative that everyone realizes that business outcomes are directly affected by technical competence. Any failures from technology will easily move into the business domain and drive tactical and strategic initiatives into the ground. Typically the industry as a whole boasts of how technology is an enabler and drives innovation. While that is true, this is the proverbial other side of the coin. There is very little insulation between engineering teams delivering on their goals and business teams achieving theirs. In today’s converged world, the two march in lockstep. Therefore, it is crucial to invest in key technical areas. Some of the oft-cited examples are in areas of web performance and latency reduction. Several e-commerce teams have reported successful growth after investing in the right areas of performance improvements.
Let us examine these ideas further in light of some emerging technologies. Classics include containers, blockchain, artificial intelligence/machine learning and many more. Cargo culting and hype-driven development isn’t new to the industry. However, all of these ideas have only helped fortify the foundational aspects of the software industry as a whole. We could pick any technology surfing the hype wave right now, and we would be able to identify the aforesaid patterns. In particular, let’s shine the spotlight on Kubernetes and find out how deep the rabbit hole goes!
What is Kubernetes?
Kubernetes can be defined in many ways. Here’s a few to get started:
- Kubernetes is a container orchestration system. It takes all the application containers that need to be run and manages them by providing an environment that helps manage deployment, scaling, networking and security for these containers.
- Kubernetes is a massive layer of automation applied to tasks that would otherwise require a lot of engineering time, effort and expertise. It begins with deploying containers and extends all the way to scaling, connecting and securing them without having to engage developer time and effort.
With container standards in place we can shift focus towards building better platforms: that’s everything from Kubernetes to Cloud Foundry.
— Kelsey Hightower (@kelseyhightower) March 10, 2017
What Kubernetes Isn’t…
Kubernetes isn’t a platform-like interface. Granted, it solves a lot of problems, but it requires a lot of additional pieces to function fully, pretty much like every piece of technology out there. Due to the complex nature of the problem it solves, Kubernetes seemingly represents a lot of complexity for those working with it. Also, the number of moving pieces it requires to interface with can make things overwhelming rather quickly.
Some days, when I’m installing CNIs, and LoadBalancers, and Ingress Controllers, and ExternalDNS services, and everything in between, I am reminded that Cloud Foundry does all this OOTB with a single cf push command.
Choice is good. Too much choice can be paralyzing.
— Oded Shopen (@odedia) January 24, 2021
Where Kubernetes Ends, Cloud Foundry Begins!
The advantages of Kubernetes can only extend to one layer above the infrastructure itself. Several components — such as HTTP routing, log management, role-based access control, tenant isolation and container image builds — surround the Kubernetes interface, making for a robust platform to which developers can push their applications. Even more subsystems are needed when the remote instance is a production one. Cloud Foundry For Kubernetes (cf-for-k8s.io) is one such example of a robust PaaS that provides coverage for all that is required to complete an infrastructure stack.
OH: “Everyone wants a Heroku-like experience on Kubernetes”
— Daniel Jones (@DanielJonesEB) May 4, 2021
The Cloud Foundry Experience
Cloud Foundry has a record of providing a simplified developer experience to complex technical infrastructure. Today, Cloud Foundry aims to become a platform of choice for those who want a convenient platform as a service (PaaS) interface over conventional Kubernetes-powered infrastructure. Cloud Foundry can help teams focus on core business problems and reduce the toil that arises from deployment and maintenance of web applications. It can help eliminate several areas of technical debt that typically arise from stale dependencies, outdated build processes, etc. Adopting reliable infrastructure, overlaid with a PaaS that can boost efficiency, gives an opportunity to drastically lower risk, culminating in the ability to deliver on business outcomes without compromising on technical capabilities.
A great place to start is by visiting cloudfoundry.org. Cloud Foundry is fully open source and available on GitHub. You can follow the deployment options linked to the repo, which will work on any Kubernetes distribution you bring. Join the Cloud Foundry community on Slack for support about any aspects relating to the operation of Cloud Foundry.