
Mastering Dockerfile USER
Mastering Dockerfile USER: The Key to seamless Kubernetes Deployment
This blog is about the need for a developer platform on top of Clouds or Kubernetes to enable developers to focus on coding and product delivery.
TL;DR Developers want to do what they do best, code and get products in the hands of users. They need to be able to self-serve to code, ship and run, secure, manage their apps. As much as possible should be automated. Hence you would need to build many of these automations yourself or you look to adopt a platform with integrations and automation built in.
Now, full disclosure; I’m not unbiased, nobody is, nevertheless I believe that some of the questions I raise in this blog are valid no matter which way you look at it.
Ow and to all readers; Azure, AWS and Google Cloud users; 88% of all cloud implementations also include Kubernetes as supporting technology for your modern applications. So highly likely that the below also applies to your organization.
As companies increasingly containerize their apps in their modernization efforts they turn to Kubernetes to manage these applications. Much research has been done and the outcome is always the same, Kubernetes is great yet very complex. Plus, one would need at least a dozen additional technologies to automate the application lifecycle and to monitor, manage and secure the workloads. The choice between building a developer platform for Kubernetes or clouds from scratch, or opting for a ready-to-run solution becomes a pivotal decision. In this post, I touch on the critical considerations and statistics behind this choice, shedding light on why businesses often are slowed down to innovate and modernize their application estate.
Kubernetes offers a plethora of advantages for deploying and managing containerized applications. It provides scalability, high availability, self-healing capabilities, easy application packaging, resource optimization, service discovery, and more. With a vibrant ecosystem and community support, Kubernetes simplifies container orchestration and is widely adopted for modern app deployments. Here also lies the challenge of integration.
So, while Kubernetes itself is a powerful foundation for container orchestration, it lacks critical components required for running business applications, such as CI/CD, observability, metrics, security, compliance, service mesh, cost management, storage, databases, backup, identity and access management and more. To achieve true developer self service and abstract all that complexity away, delivering a self-serve abstraction for developers will definitely be on the agenda for many organisations. This ensures fast, controlled, and secure deployment and management of business applications. This is why companies are investing heavily in the engineering of an integration layer with many components, whether those components come from the Hyperscale Clouds or the Open Source ecosystem, after deploying Kubernetes or consuming a Kubernetes service the actual work begins to bridge this gap to offer self service to developers and provide the ability to run and manage apps securely.
The interesting part is that most organizations are doing the same thing (building a platform on top of Kubernetes) but in an ever so slightly different way or context. This begs the question: Should every company invest in engineering their own platform which will be just slightly different from the next company? Does this add any business value? If most of those platforms achieve relatively the same, then surely this does not add competitive advantage. IMHO The real business value is in the ability to build unique experiences through software, the applications your users interact with. Users will never see or experience the fantastically engineered infrastructure below a running application.
If this is the case then why are many companies still choosing to go down the path of this heavy engineering, knowing this can take many months of engineering resources away from building the next differentiating feature in your software.
Theoretically, a bespoke Developer Platform for Kubernetes sounds appealing. It can be tailored to your organization's specific needs, aligning with your processes and requirements. However, the decision to build a custom platform should not be taken lightly. Here are some statistics and drawbacks to consider:
There are of course also arguments to the contrary which I need to address;
So it’s no wonder that your smart engineers will advocate to engineer an in-house built platform. If you do decide to be taken on that journey be sure to plan for the time when the learning curve is not as steep and the problems of engineering the platform have been solved.
I’m sure there are arguments I did not address here yet that would advocate for inhouse engineering and building of cloud platforms. I’d really be interested to hear your feedback as to why it would be a good idea. The question I would ask when companies really acknowledge the undertaking of building a complex platform, and after day 0 they would need to maintain and keep secure is; are you in the business of building platforms or does the value you provide to your users lie elsewhere?
The decision of whether to build a custom developer platform or to use an off-the-shelf platform depends on your specific needs and requirements. If you have a large budget and a team of experienced engineers, then building a custom platform may be a good option. I'd still encourage you to also think about Day2 of the platform. However, if you're on a tight budget or if you don't have the necessary expertise, then implementing standards through a platform product is probably a better option.
Here are some things to consider when making your decision:
In making the decision between a custom developer platform and an off-the-shelf solution, weigh these factors carefully. The right choice depends on your organization's specific needs, resources, and priorities. Making the wrong decision, or none at all could end up being a very costly one where you could fail the ultimate goal of becoming more competitive through software development.
If you are in doubt, we are more than happy to have a conversation.
Interested in Kubernetes, cloud-native and platforms to scale up your business? Get exclusive tech insights delivered straight to your inbox.
Mastering Dockerfile USER: The Key to seamless Kubernetes Deployment