Why build your own multi-cloud developer platform?
Multi-cloud, combined with Kubernetes (K8s) container technology offers an interesting approach for financials to accelerate innovation. Best practices for solutions of this kind can be found in other industries. A cross-platform approach when building a self-service environment for product teams ensures long-term flexibility. Another pointer is that it may be important that standardization is encouraged rather than imposed.
A well-oiled, proper functioning IT environment is crucial for realizing a business strategy. When stating this obvious fact, you might think of your customers first who use your digital services. But just as important is it that your own engineers reap the benefits of such an environment. Even more so in companies who are promoting a tech culture, built around product teams that work with the right IT and cloud tooling. These companies are plentiful and can be found across industries. A recent development is that many of these companies have commenced building their own self-service platforms geared towards internal use. A self-service PaaS, supporting Infrastructure-as-code, Continuous-Delivery-as-a-Service and end-to-end traceability and compliance, will allow product teams to focus more on writing, testing and deploying code. The end goal is making innovation faster, safer and more stable, making IT a clear accelerator instead of a limiting factor.
Also, just as important: it just makes developers’ lives a lot more fun as they can focus on what matters to them most; bringing new business features to production in shorter cycles!
Example: Nederlandse Spoorwegen (dutch railways)
An example of a company doing this is NS, the principal passenger railway operator in the Netherlands. The company has set up their own developers platform that is currently in an advanced beta state. Recently, the choices made during the development of the platform were discussed in a webinar, organized by NS in collaboration with technology website Tweakers.net. Topics that were also covered during the event were lifecycle management of the platform and the onboarding of new users.
The platform provides both the tools and the infrastructure with which a developer can easily develop, deploy, and manage products. The first MVP uses container technology (K8s) on AWS and Azure. The platform also uses private cloud technology and is built as a cross-platform solution, what makes the solution more flexible in the long term. Built on both Azure and AWS, it functions as a multi-cloud container solution. Cluster access within the environment is multi-tenant (with Pinniped for Single Sign-on) and container deployments are done with Terraform.
Independent and open source tooling
If you take a cross-platform approach, it is important not to use native tooling. Instead, there is an array of independent and open-source tools such as Prometheus, Loki and Grafana. For K8s, this is still a pretty standard approach. Looking at the NS example, we also see some interesting choices such as Capsule (multi-tenant cluster management), Kyverno (policy engine) and cert-manager (certificate management). But that’s enough talk about tooling. Everyone has their own favorite tools and especially when it comes to Kubernetes and serverless, there are hundreds of different flavors, with new projects popping up all the time.
Aside from all the technical details, it’s important not to completely force standardization as it would hamper adoption. A developers platform should offer a ‘golden path’ to product teams, by making it attractive and flexible enough to use it. Don’t expect everybody to use it right away. IT landscapes in large organizations are complex, with obstacles such as legacy applications and vendors who also play a role. But while considering this, you should encourage developers to use the platform for both new and existing projects.
The question that arises: can we do it?
I think a multi-cloud developer platform with container technology would be a good solution for our industry as well. Looking at companies that already made the move, there are similarities when it comes to the complexity of the IT environment, the use of product teams and the importance of quick and stable innovation. Things we should consider are infrastructure-as-code and continuous delivery as-a-service (including security, as in SecDevOps). And of course, everything should be self-service, so we can offer it our teams as their go-to platform, comparable to the approach AWS takes but in our case in would be an internal platform utilizing cloud technologies which could be hosted internally and externally. In the end the automation should enable a shared responsibility model that is facilitating fast change while guaranteeing 24×7 continuity.
This is certainly the direction we are headed, with some challenges in front of us, such as scale and capacity to effectively deploy a developers platform. But I’m convinced we can overcome these. What do you think? I would like to hear your ideas:
Would such an approach work for our banking company, do you think? What are best practices we should adopt? Which choices should be avoided and when looking at the example in my blog, what would you do differently? Let’s discuss these, please share your opinions!