This repository has been archived on 2024-10-01. You can view files and clone it, but cannot push or open issues or pull requests.
badhouseplants-net-old/content/posts/design-a-scalable-system/index.md

1.5 KiB

title date draft ShowToc cover
Design a Scalable System 2023-03-06T21:18:23+01:00 true true
image caption relative responsiveImages
cover.png Design a Scalable System false false

Well, after I've posted my argo serie, I've found out that I couldn't really make myself understood. So now I want to talk more not about the way of implementation, but rather about the consequences of different implementations. And maybe I will e able to finally make a point about why I don't like Terraform and why I think that ArgoCD is mostly misused by almost any SRE team I know.

But first I'll try to describe how I see myself as a part of a team, the team as a part of a bigger team, and all the teams across different companies as links in the bigger chain.

This is how I used to see development teams before:

Chain

The whole team is using something as a service, for example AWS, the whole team is working together and producing something that is passed to a customer. But apparently this approach is only applicable to small teams, and I think it's working just fine. But there is a problem. Teams tend to grow without an understanding that they are growing, hence they keep acting like they're small but in the same time they don't change the workflow, and brick-by-brick they are building something that eventually is something unscalable at first and later unmaintainable.

Example of an evolution like this:

Let's take a regular Java(backend) + JS(frontend) web application