๐๏ธ ์ํคํ ์ฒ ๋ฐ ์์คํ ์ค๊ณ (Architecture) โ
ํ์ฅ ๊ฐ๋ฅํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ฌ์ด ์์คํ ์ ๋ง๋ค๊ธฐ ์ํ ์ํคํ ์ฒ ํจํด, ์์คํ ์ค๊ณ ๊ฐ์ด๋, ํต์ฌ ๊ฐ๋ ์๋ฃ๋ฅผ ์์งํฉ๋๋ค.
NOTE
๋๊ท๋ชจ ์์คํ ์ค๊ณ(System Design), ๋ง์ดํฌ๋ก์๋น์ค(MSA), ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ํคํ ์ฒ, ๋์์ธ ํจํด ๋ฑ ์ธํ๋ผ์ ์ฝ๋๋ฅผ ์์ฐ๋ฅด๋ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
๐ ํ์ ํ์ต ์๋ฃ (๋ ํผ๋ฐ์ค) โ
| ์ด๋ฆ (Name) | ๋งํฌ (URL) | ํ์ค ์๊ฐ ๋ฐ ์ถ์ฒ ์ด์ |
|---|---|---|
| System Design Primer | https://github.com/donnemartin/system-design-primer | ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๋ฉด์ ์ค๋น ๋ฐ ์ค๋ฌด ์ ์ฉ์ ์ํ GitHub ์ต๋ค ์คํ ์ ์ฅ์ |
| ByteByteGo | https://bytebytego.com | ์์คํ ์ค๊ณ ๊ฐ๋ ์ ์๊ฐ์ ๋ค์ด์ด๊ทธ๋จ์ผ๋ก ์ฝ๊ฒ ์ค๋ช ํ๋ ์ ๋ฃ/๋ฌด๋ฃ ํผํฉ ํ๋ซํผ |
| Refactoring Guru - ๋์์ธ ํจํด | https://refactoring.guru/ko/design-patterns | GoF ๋์์ธ ํจํด 23๊ฐ์ง๋ฅผ ํ๊ตญ์ด๋ก ์๊ฐ์ ์ผ๋ก ์ค๋ช ํ๋ ์ต๊ณ ์ ์๋ฃ |
| Microsoft Azure Architecture Center | https://learn.microsoft.com/ko-kr/azure/architecture | ๋ง์ดํฌ๋ก์ํํธ์ ํด๋ผ์ฐ๋ ์ํคํ ์ฒ ๋ฒ ์คํธ ํ๋ํฐ์ค ๋ฐ ๋ ํผ๋ฐ์ค ์ํคํ ์ฒ |
| AWS Architecture Center | https://aws.amazon.com/ko/architecture | AWS์ ๊ณต์ ์ํคํ ์ฒ ๋ ํผ๋ฐ์ค์ Well-Architected Framework ๊ฐ์ด๋ |
๐ฏ ํต์ฌ ์ํคํ ์ฒ ํจํด โ
MSA (Microservices Architecture) โ
mermaid
graph TD
Client --> APIGateway[API Gateway]
APIGateway --> AuthService[์ธ์ฆ ์๋น์ค]
APIGateway --> UserService[์ฌ์ฉ์ ์๋น์ค]
APIGateway --> OrderService[์ฃผ๋ฌธ ์๋น์ค]
UserService --> UserDB[(User DB)]
OrderService --> OrderDB[(Order DB)]
OrderService --> MessageQueue[Message Queue]
MessageQueue --> NotificationService[์๋ฆผ ์๋น์ค]| ํจํด ์ด๋ฆ | ์ค๋ช | ๊ด๋ จ ๊ธฐ์ |
|---|---|---|
| API Gateway | ๋ชจ๋ ํด๋ผ์ด์ธํธ ์์ฒญ์ ๋จ์ผ ์ง์ ์ . ์ธ์ฆ, ๋ผ์ฐํ , ๋ก๋๋ฐธ๋ฐ์ฑ ๋ด๋น | Kong, AWS API Gateway, Nginx |
| Circuit Breaker | ์๋น์ค ์ฅ์ ๋ฐ์ ์ ์ฐ์ ์ฅ์ ๋ฅผ ๋ฐฉ์งํ๋ ํจํด | Resilience4j, Hystrix |
| Saga Pattern | MSA์์ ๋ถ์ฐ ํธ๋์ญ์ ์ ๊ด๋ฆฌํ๋ ํจํด | Choreography, Orchestration |
| Event Sourcing | ์ํ๋ฅผ ์ด๋ฒคํธ์ ์ํ์ค๋ก ์ ์ฅํ์ฌ ์ฌํ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ํจํด | Kafka, EventStore |
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค๊ณ ์์น โ
| ์์น | ์ค๋ช |
|---|---|
| CQRS | ์ฝ๊ธฐ(Query)์ ์ฐ๊ธฐ(Command) ๋ชจ๋ธ์ ๋ถ๋ฆฌํ์ฌ ์ฑ๋ฅ๊ณผ ํ์ฅ์ฑ ๊ฐ์ |
| Database per Service | MSA์์ ๊ฐ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ธ DB๋ฅผ ์์ ํ๋ ์์น |
| Sharding | ๋ฐ์ดํฐ๋ฅผ ์ฌ๋ฌ ๋ ธ๋์ ์ํ ๋ถํ ํ์ฌ ๋ถ์ฐ ์ฒ๋ฆฌํ๋ ๊ธฐ๋ฒ |
| Read Replica | ์ฝ๊ธฐ ์ ์ฉ ๋ณต์ ๋ณธ์ ๋์ด ์ฝ๊ธฐ ํธ๋ํฝ์ ๋ถ์ฐํ๋ ํจํด |
โ๏ธ ํด๋ผ์ฐ๋ ์ํคํ ์ฒ ์ฃผ์ ๊ฐ๋ โ
| ๊ฐ๋ | ์ค๋ช | ํ์ต ๋งํฌ |
|---|---|---|
| ์๋ฒ๋ฆฌ์ค (Serverless) | ์ธํ๋ผ ๊ด๋ฆฌ ์์ด ์ฝ๋๋ง ๋ฐฐํฌํ๋ ๋ฐฉ์. ์ด๋ฒคํธ ๊ธฐ๋ฐ ์คํ | AWS Lambda ๋ฌธ์ |
| ์ปจํ ์ด๋ํ (Docker) | ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์์กด์ฑ์ ์ปจํ ์ด๋๋ก ํจํค์งํ์ฌ ํ๊ฒฝ ์ผ๊ด์ฑ ํ๋ณด | Docker ๊ณต์ ๋ฌธ์ |
| ์ฟ ๋ฒ๋คํฐ์ค (K8s) | ์ปจํ ์ด๋ ์ค์ผ์คํธ๋ ์ด์ ํ์ค. ์๋ ๋ฐฐํฌ, ์ค์ผ์ผ๋ง, ์๊ธฐ ์น์ | Kubernetes ๊ณต์ ๋ฌธ์ |
| Service Mesh | ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ ํต์ ์ ๊ด๋ฆฌํ๋ ์ธํ๋ผ ๋ ์ด์ด | Istio, Linkerd |
| CDN | ์ ์ ์์ฐ์ ์ ์ธ๊ณ ์ฃ์ง ์๋ฒ์ ๋ฐฐํฌํ์ฌ ์ง์ฐ ์๊ฐ ์ต์ํ | Cloudflare, AWS CloudFront |
๐ ์ํคํ ์ฒ ์ค๊ณ ์์น (SOLID + ๋ ๋์๊ฐ๊ธฐ) โ
| ์์น | ์ฝ์ด | ํต์ฌ ๋ด์ฉ |
|---|---|---|
| ๋จ์ผ ์ฑ ์ ์์น | SRP | ํด๋์ค/๋ชจ๋์ ํ๋์ ์ฑ ์๋ง ๊ฐ์ ธ์ผ ํ๋ค |
| ๊ฐ๋ฐฉ-ํ์ ์์น | OCP | ํ์ฅ์๋ ์ด๋ ค ์๊ณ , ์์ ์๋ ๋ซํ ์์ด์ผ ํ๋ค |
| ๋ฆฌ์ค์ฝํ ์นํ ์์น | LSP | ์์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค๋ฅผ ๋์ฒดํ ์ ์์ด์ผ ํ๋ค |
| ์ธํฐํ์ด์ค ๋ถ๋ฆฌ ์์น | ISP | ์ฌ์ฉํ์ง ์๋ ์ธํฐํ์ด์ค์ ์์กดํ์ง ์์์ผ ํ๋ค |
| ์์กด ์ญ์ ์์น | DIP | ๊ณ ์์ค ๋ชจ๋์ด ์ ์์ค ๋ชจ๋์ ์์กดํ์ง ์์์ผ ํ๋ค |
| ๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ | SoC | ๊ฐ ์ปดํฌ๋ํธ๋ ํ๋์ ๊ด์ฌ์ฌ๋ง ๋ค๋ฃจ์ด์ผ ํ๋ค |
| DRY | DRY | Don't Repeat Yourself. ์ค๋ณต์ ์ ๊ฑฐํ๋ผ |
| YAGNI | YAGNI | You Aren't Gonna Need It. ํ์ํ ๋ ๋ง๋ค์ด๋ผ |
๐ ์ถ์ฒ ์ํคํ ์ฒ ๋๊ตฌ โ
| ์ด๋ฆ (Name) | ๋งํฌ (URL) | ์ถ์ฒ ์ด์ |
|---|---|---|
| Excalidraw | https://excalidraw.com | ์๊ทธ๋ฆผ ๋๋์ ์ง๊ด์ ์ธ ํ์ดํธ๋ณด๋. ๋น ๋ฅธ ์์ด๋์ด ์ค์ผ์น์ ์ต์ |
| Mermaid Live | https://mermaid.live | ๋งํฌ๋ค์ด ์ฝ๋๋ก ์ค์๊ฐ ๋ค์ด์ด๊ทธ๋จ ์์ฑ. GitHub์์ ๋ฐ๋ก ๋ ๋๋ง |
| Lucidchart | https://www.lucidchart.com | ํ ํ์ ์ด ๊ฐ๋ฅํ ์ ๋ฌธ์ ์ธ ๋ค์ด์ด๊ทธ๋จ ์์ฑ ๋๊ตฌ |
| C4 Model | https://c4model.com | ์ํํธ์จ์ด ์ํคํ ์ฒ๋ฅผ 4๊ฐ์ง ๋ ๋ฒจ(ContextโContainerโComponentโCode)๋ก ํํ |
๐ ์ํคํ ์ฒ ๊ด๋ จ ํ๋ ์์ โ
- ๐ ํด๋ฆฐ ์ํคํ ์ฒ (๋ก๋ฒํธ C. ๋งํด) - ์ํํธ์จ์ด ์ํคํ ์ฒ์ ์์น๊ณผ ์ฒ ํ
- ๐ ๊ฐ์ ๋ฉด์ ์ฌ๋ก๋ก ๋ฐฐ์ฐ๋ ๋๊ท๋ชจ ์์คํ ์ค๊ณ ๊ธฐ์ด (์๋ ์ค ์ฌ) - ์ค์ ์์คํ ์ค๊ณ
- ๐ ๋์์ธ ํจํด (GoF) - ์ํํธ์จ์ด ์ค๊ณ ํจํด์ ๋ฐ์ด๋ธ
- ๐ ๋ง์ดํฌ๋ก์๋น์ค ํจํด (ํฌ๋ฆฌ์ค ๋ฆฌ์ฒ๋์จ) - MSA ์ค๋ฌด ์ ์ฉ ๊ฐ์ด๋