Cloud wiki - 100-hours-a-week/5-yeosa-wiki GitHub Wiki
๐ ํ๋ก์ ํธ ๋ฆด๋ฆฌ์ฆ ๊ธฐ๋ก ๋ฐ ์ํค ๋ฉ์ธ ํ์ด์ง
์ด ๋ฌธ์๋ ํ๋ก์ ํธ์ ๊ฐ ์คํ๋ฆฐํธ ๋ฆด๋ฆฌ์ฆ ๊ธฐ๋ก์ ์ ๋ฆฌํ ๋ฉ์ธ ํ์ด์ง์
๋๋ค.
์๋ ๋ฆด๋ฆฌ์ฆ ๋งํฌ๋ฅผ ํตํด ๊ฐ ๋จ๊ณ์์ ์ด๋ค ์์
์ด ์งํ๋์๊ณ , ์ด๋ค ์ธํ๋ผ/๋ณด์/์ด์ ์์๊ฐ ๋์
๋์๋์ง๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ชฉ์ฐจ (Table of Contents)
- 1์ฐจ ๋ฆด๋ฆฌ์ฆ - ๋จ์ผ ์ธ์คํด์ค ๊ธฐ๋ฐ MVP
- 2์ฐจ ๋ฆด๋ฆฌ์ฆ - Docker ๊ธฐ๋ฐ 3-Tier
- 3์ฐจ ๋ฆด๋ฆฌ์ฆ - EKS ์ ํ ๋ฐ Helm ๊ธฐ๋ฐ ๋ฐฐํฌ
- 4์ฐจ ๋ฆด๋ฆฌ์ฆ - ์ด์ ์ต์ ํ ๋ฐ ๋ฆฌ์์ค ๋ณดํธ
๋จ๊ณ๋ณ ์์
- 1๋จ๊ณ - Big Bang ๋ฐฉ์ ์์์ ๋ฐฐํฌ(https://github.com/100-hours-a-week/5-yeosa-wiki/wiki/Cloud-%EA%B3%BC%EC%A0%9C-1%EB%8B%A8%EA%B3%84:-Big-Bang-%EB%B0%A9%EC%8B%9D-%EC%88%98%EC%9E%91%EC%97%85-%EB%B0%B0%ED%8F%AC)
- 2๋จ๊ณ - CI(์ง์์ ํตํฉ) ํ์ดํ๋ผ์ธ ๊ตฌ์ถ(https://github.com/100-hours-a-week/5-yeosa-wiki/wiki/Cloud-%EA%B3%BC%EC%A0%9C-2%EB%8B%A8%EA%B3%84:-CI(%EC%A7%80%EC%86%8D%EC%A0%81-%ED%86%B5%ED%95%A9)-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%EC%B6%95)
- 3๋จ๊ณ - CD(์ง์์ ๋ฐฐํฌ) ํ์ดํ๋ผ์ธ ๊ตฌ์ถ(https://github.com/100-hours-a-week/5-yeosa-wiki/wiki/Cloud-%EA%B3%BC%EC%A0%9C-3%EB%8B%A8%EA%B3%84:-CD(%EC%A7%80%EC%86%8D%EC%A0%81-%EB%B0%B0%ED%8F%AC)-%ED%8C%8C%EC%9D%B4%ED%94%84%EB%9D%BC%EC%9D%B8-%EA%B5%AC%EC%B6%95)
- 4๋จ๊ณ - Docker ์ปจํ ์ด๋ํ ๋ฐฐํฌ(https://github.com/100-hours-a-week/5-yeosa-wiki/wiki/Cloud-%EA%B3%BC%EC%A0%9C-4%EB%8B%A8%EA%B3%84:-Docker-%EC%BB%A8%ED%85%8C%EC%9D%B4%EB%84%88%ED%99%94-%EB%B0%B0%ED%8F%AC)
- 5๋จ๊ณ - Kubeadm ์ค์ผ์คํธ๋ ์ด์ (https://github.com/100-hours-a-week/5-yeosa-wiki/wiki/%5Bcloud%5D-5%EB%8B%A8%EA%B3%84-:-Kubeadm-%EC%98%A4%EC%BC%80%EC%8A%A4%ED%8A%B8%EB%A0%88%EC%9D%B4%EC%85%98)
- 6๋จ๊ณ - Kubernetes(AWS ECS or EKS)๊ธฐ๋ฐ ๋ฐฐํฌ ์๋ํ(https://github.com/100-hours-a-week/5-yeosa-wiki/wiki/%5Bcloud%5D-6%EB%8B%A8%EA%B3%84-:-Kubernetes(AWS-ECS-or-EKS)%EA%B8%B0%EB%B0%98-%EB%B0%B0%ED%8F%AC-%EC%9E%90%EB%8F%99%ED%99%94)
๊ด๋ จ ๋ฌธ์
Ongi ํ๋ก์ ํธ์ ์ธํ๋ผ ์ ๋ต๊ณผ ๊ธฐ์ ์ ํ์ ์ ๊ฐ ๊ณผ์ ์ ๋ด์ ๋ฌธ์์ ๋๋ค. ๊ฐ ๋ฆด๋ฆฌ์ฆ ๋จ๊ณ๋ง๋ค ์๋น์ค ๊ท๋ชจ, ์ด์ ํจ์จ์ฑ, ์์ ์ฑ ์๊ตฌ์ ๋ฐ๋ผ ์ ํฉํ ๊ธฐ์ ๊ณผ ์ํคํ ์ฒ๋ฅผ ๋์ ํ๊ณ ๊ฒ์ฆํ ๊ทผ๊ฑฐ๋ฅผ ๊ธฐ๋กํฉ๋๋ค.
TroubleShooting && Test
Ongi ํ๋ก์ ํธ์ ์ด์ ์์ ์ฑ ๋ฐ ํ์ง ๋ณด์ฆ์ ์ํ ์ด์ยท๊ฒ์ฆ ๋งค๋ด์ผ์ ๋๋ค. โข ํธ๋ฌ๋ธ์ํ ๊ฐ์ด๋ ์ฅ์ ์ฆ์๋ณ ์ง๋จ ์ ์ฐจ, ๋ก๊ทธ ๋ถ์ยท๋ชจ๋ํฐ๋ง ๊ธฐ๋ฒ, ์ฌํ ํ ์คํธ์ ์์ธ ๊ท๋ช ๊ณผ์ ์ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ๊ณ , ๊ณผ๊ฑฐ ์ฌ๋ก๋ณ ํด๊ฒฐ ๋ฐฉ์์ ์คํฌ๋ฆฝํธ์ ํจ๊ป ๊ธฐ๋กํ์ฌ ์ ์ํ ๋ณต๊ตฌ ์ญ๋์ ํ๋ณดํฉ๋๋ค. โข ํ ์คํธ ํ์ด์ง ์๋ด ์ ๋ยทํตํฉยท๋ถํ ํ ์คํธ ํ๊ฒฝ ๊ตฌ์ฑ, ์๋ํ ์คํฌ๋ฆฝํธ, ์ฑ๋ฅ ์ธก์ ์งํ, ํ ์คํธ ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐฉ์์ ๋ฆด๋ฆฌ์ฆ ๋จ๊ณ๋ณ๋ก ์ ๋ฆฌํ๊ณ , ์ฃผ์ ํ ์คํธ ์ผ์ด์ค์ ์ค์ ์ํ ๊ฒฐ๊ณผ(๋ก๊ทธยท๊ทธ๋ํ ํฌํจ)๋ฅผ ๊ธฐ๋กํ์ฌ ์๋น์ค ์ถ์ ์ ํ ํ์ง ๋ณด์ฆ์ ๊ทผ๊ฑฐ๋ก ํ์ฉํฉ๋๋ค.
๋ฆด๋ฆฌ์ฆ ์์ฝ
๋ฆด๋ฆฌ์ฆ | ์ฃผ์ ๋ชฉํ | ํต์ฌ ์์ | ์๋ฃ์ผ |
---|---|---|---|
1์ฐจ ๋ฆด๋ฆฌ์ฆ | MVP ๊ธฐ์ด ๊ธฐ๋ฅ ๋ฐฐํฌ | ๋จ์ผ ์ธ์คํด์ค, ๊ธฐ๋ณธ ๋ชจ๋ํฐ๋ง, ๋ก๊ทธ ์์ง | Sprint 3 ์๋ฃ ์์ |
2์ฐจ ๋ฆด๋ฆฌ์ฆ | Kubernetes ์ ํ | EKS ํด๋ฌ์คํฐ ๋์ , ์๋น์ค ์ด์ , Helm ๋ฐฐํฌ | Sprint 6 ์๋ฃ ์์ |
3์ฐจ ๋ฆด๋ฆฌ์ฆ | ์ฅ์ ๋์ ๋ฐ ์ด์ ์๋ํ | ์ฅ์ ํ ์คํธ, ๋ณต๊ตฌ ์๋๋ฆฌ์ค, ์ด์ ๋ฌธ์ํ | Sprint 8 ์๋ฃ ์์ |
4์ฐจ ๋ฆด๋ฆฌ์ฆ | ์ด์ ์ต์ ํ ๋ฐ ๋ณดํธ | ๋น์ฉ/์ฑ๋ฅ ์ต์ ํ, ํ๊น , ๊ธฐ์ ๋ถ์ฑ ํด์ | Sprint 9 ์๋ฃ ์์ |
๐๐ป ๋ฆด๋ฆฌ์ฆ ์์ธ
1์ฐจ ๋ฆด๋ฆฌ์ฆ - ๋จ์ผ ์ธ์คํด์ค ๊ธฐ๋ฐ MVP
- ์์ ์คํ๋ฆฐํธ ๋ฒ์: Sprint 1 ~ Sprint 3
- ๋ฆด๋ฆฌ์ฆ ์์ : Sprint 4
- ์ฃผ์ ์์
:
- Big Bang ๋ฐฐํฌ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๊ตฌํ
- VM instance (nginx + springboot + mysql)
- VM instance (GPU, ai model)
- VM instance (CPU, ai model)
- Google Cloud Storage
- ๋จ์ผ ์ธ์คํด์ค CI/CD ์ค๊ณ
- Cloud Monitoring(GCP)์ ํตํ ํธ๋ํฝ ๋ชจ๋ํฐ๋ง
- k6๋ฅผ ํ์ฉํ ๋ณ๋ชฉ ์ง์ ๋ถ์ ๋ฐ ์ต์ ํ
- Big Bang ๋ฐฐํฌ ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๊ตฌํ
- ์ํคํ ์ฒ: GCE + GCS
โก๏ธ [1์ฐจ ๋ฆด๋ฆฌ์ฆ ์์ธ ํ์ด์ง]
2์ฐจ ๋ฆด๋ฆฌ์ฆ - Docker ๊ธฐ๋ฐ 3-Tier
- ์์ ์คํ๋ฆฐํธ ๋ฒ์: Sprint 4 ~ Sprint 6
- ๋ฆด๋ฆฌ์ฆ ์์ : Sprint 7
- ์ฃผ์ ์์
:
- Docker ๊ธฐ๋ฐ 3-Tier ์ํคํ ์ฒ ์ค๊ณ ๋ฐ ๊ตฌ์ฑ
- GitHub Actions ๋๋ CodePipeline์ ํตํ CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
- HTTPS ์ธ์ฆ์(ACM), ๋๋ฉ์ธ ์ฐ๊ฒฐ(Route53)
- S3 ์ ์ ํ์ผ ์ ์ฅ ๋ฐ Life Cycle ๊ตฌ์ฑ
- VPC / Subnet ๋คํธ์ํฌ ๊ตฌ์ฑ
- SQL Injection ํ ์คํธ, ๋ณด์ ๊ทธ๋ฃน ๋ฐ IAM ๊ถํ ์ต์ ํ
- ๋ก๊ทธ ์์ง, ์ฅ์ ๊ฐ์ง ์๋ ์ค์ (Discord Webhook)
- ๋์ ๊ธฐ์ : Docker, GitHub Actions, ACM, Route53, S3, IAM
โก๏ธ [2์ฐจ ๋ฆด๋ฆฌ์ฆ ์์ธ ํ์ด์ง]
3์ฐจ ๋ฆด๋ฆฌ์ฆ - EKS ์ ํ ๋ฐ Helm ๊ธฐ๋ฐ ๋ฐฐํฌ
- ์์ ์คํ๋ฆฐํธ ๋ฒ์: Sprint 7 ~ Sprint 8
- ๋ฆด๋ฆฌ์ฆ ์์ : Sprint 9
- ์ฃผ์ ์์
:
- ๋จ์ผ VPC ๊ธฐ๋ฐ Amazon EKS ํด๋ฌ์คํฐ ๊ตฌ์ถ
- ๊ธฐ์กด ์๋น์ค Kubernetes๋ก ์ด์
- Helm Chart ๊ธฐ๋ฐ ๋ฐฐํฌ ์๋ํ
- Transit Gateway ๊ตฌ์ฑ, EKS ๋ค์ค VPC ํ์ฅ
- ๋์ ๊ธฐ์ : EKS, Helm, Ingress-Nginx, ECR, ServiceAccount, TGW
โก๏ธ [3์ฐจ ๋ฆด๋ฆฌ์ฆ ์์ธ ํ์ด์ง]
4์ฐจ ๋ฆด๋ฆฌ์ฆ - ์ด์ ์ต์ ํ ๋ฐ ๋ฆฌ์์ค ๋ณดํธ
- ์์ ์คํ๋ฆฐํธ ๋ฒ์: Sprint 9
- ๋ฆด๋ฆฌ์ฆ ์์ : Sprint 10
- ์ฃผ์ ์์
:
- ๋น์ฉ ์ต์ ํ๋ฅผ ์ํ S3 Lifecycle, EC2 ์์ฝ ์ธ์คํด์ค ์ ์ฉ
- ํ๊ทธ ๊ธฐ๋ฐ ๋น์ฉ ๋ถ์ ์ฒด๊ณํ
- ๋ฆฌ์์ค ์ ๊ธ(Locking), ๊ธฐ์ ๋ถ์ฑ ์ ๋ฆฌ
โก๏ธ [4์ฐจ ๋ฆด๋ฆฌ์ฆ ์์ธ ํ์ด์ง]