And even if the technology doesn't necessarily sort of do what you expect it to do, if the business rules are very clear, it's a bit easier to figure stuff out. Anyway, what's most important is to understand that you talk to each other. That's how you figure stuff out. Even if you don't have those end-to-end tests, or even if you do, go on Chat, whatever, go talk to people.
OK, so let's make this a little bit more complicated, right? Because management comes around and says, we need to scale, and we think past services are expensive, platform-as-a-service services. We're going to use Kubernetes. We hear it's awesome, all the cool kids are doing it, and it's super, super cheap. And so you, as a calculator team, suddenly have a cluster, and you're like, ah, this doesn't look so bad, we have to worry about ingress, we have to do routing on our own and configure it. But actually, it's a little bit more complicated than you think, because suddenly you have multiple, let's say, data stores, right? So you have your container registry for your Docker images, and you also have pipelines as code, as well as infrastructure as code. So before, when we were worried about front-end triggering back-ends, right, in which environments, now you have to worry about your infrastructure code triggering deployments as well, which is also kind of like crazy. Too many triggers. So if we look at this sort of case with the mono-repo, right, you're just getting started. You can sort of do a lot of learning by doing, but as you can see, it's getting already quite complicated and you need more skills. Kubernetes is not application development. It is so much infrastructure with networking and security that you have to configure yourself, and in some ways, okay, I can, in my sandbox, blow things up, but there is so many things that are so easily blown up. So let's make it more complicated and say your management came around and let's put all those services, right, your little monolithic calculator, let's put all the microservice ones in a Kubernetes cluster. And you see here, we have different namespaces and different repositories, and boom, way more sort of triggers and events that can happen and that can sort of cross fire. Obviously, it might not be a problem for you, right? You've practiced CICD, your domains are stable, but still, it can happen, and it's just something that you have to worry about, and you probably will stumble on it for a very long time before you've mastered it.
So let's look at infrastructure now because your management is, like, now, like, I don't know, they're on some ego trip. We're going to do a Kubernetes, all the things. It doesn't matter if it makes sense. It doesn't matter if you're ready yet. We're going to do all the things in Kubernetes, and suddenly, you're promoted to a central infrastructure team. So in this diagram, I have three different layers, right? So a sort of foundational infrastructure layer, a middle layer that's building, like, kind of a weird platform as a service for other teams that has a Kubernetes cluster, and let's say the goal of the company is that the application development teams, at layer two, all they do is, like, kind of like in our previous, our very first story scenario, I make a change, push, done. Everything else will be managed by other people. It's still not that simple because you have here, for example, I have routing, and then you're going to have TLS certificates because we want secure connections. Then you have the question, wait, who has those certificates, right? How can I get access to them? If they belong to the team, as you see in layer two at the top, then I have to be able to, from my cluster, which is in a different layer, actually grab those certificates, right? I'm like, oh, I don't want to manage all that. Let me just put all the certificates with me in layer zero, and that's easier for me to configure. It's kind of one credential maybe. But then you have all these developers knocking on your door whenever they need a change, whenever something's about to expire or something expired, and you didn't update it, and suddenly it's your fault.
Comments