27 lines
1.5 KiB
Markdown
27 lines
1.5 KiB
Markdown
---
|
|
title: "Design a Scalable System"
|
|
date: 2023-03-06T21:18:23+01:00
|
|
draft: true
|
|
ShowToc: true
|
|
cover:
|
|
image: "cover.png"
|
|
caption: "Design a Scalable System"
|
|
relative: false
|
|
responsiveImages: 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](/posts/design-a-scalable-system/chain-1.png)
|
|
|
|
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
|
|
|