-
Notifications
You must be signed in to change notification settings - Fork 3
New infrastructure Design doc
wy.choi edited this page Aug 18, 2024
·
2 revisions
- Design docs๋ Google์ ์ํํธ์จ์ด ์์ง๋์ด๋ง ๋ฌธํ์ ํต์ฌ ์์ ์ค ํ๋๋ก, ์ํํธ์จ์ด ์์คํ
์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ฃผ์ ์ ์๊ฐ ์ฝ๋ฉ ํ๋ก์ ํธ๋ฅผ ์์ํ๊ธฐ ์ ์ ์์ฑํ๋ ๋น๊ต์ ๋น๊ณต์์ ์ธ ๋ฌธ์์
๋๋ค.
- ๊ณ ์์ค์ ๊ตฌํ ์ ๋ต๊ณผ ์ฃผ์ ์ค๊ณ ๊ฒฐ์ ์ ๋ฌธ์ํํ๋ฉฐ, ํนํ ๊ทธ๋ฌํ ๊ฒฐ์ ์ ๊ณ ๋ ค๋์๋ ํธ๋ ์ด๋์คํ์ ์ค์ ์ ๋ก๋๋ค.
- ์ํํธ์จ์ด ์์ง๋์ด์ ์ง๋ฌด๋ ์ฝ๋๋ฅผ ์์ฑํ๋ ๊ฒ์ด ์๋๋ผ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๊ฒ์ด๋ฉฐ, Design doc๊ณผ ๊ฐ์ ๋น์ ํ ํ ์คํธ๊ฐ ํ๋ก์ ํธ ์ด๊ธฐ ๋จ๊ณ์์๋ ์ฝ๋๋ณด๋ค ๋ ๊ฐ๊ฒฐํ๊ณ ์ดํดํ๊ธฐ ์ฌ์ด ๋ฌธ์ ํด๊ฒฐ ๋๊ตฌ๊ฐ ๋ ์ ์์ต๋๋ค.
- ์๋์ ์ํํธ์จ์ด ์ค๊ณ ๋ฌธ์ํ ์ธ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ๋ฅ์ ์ํํฉ๋๋ค.
- ๋ณ๊ฒฝ์ด ์์ง ์ ๋ ดํ ๋ ์ค๊ณ ์ด์๋ฅผ ์กฐ๊ธฐ์ ์๋ณ
- ์กฐ์ง ๋ด์์ ์ค๊ณ์ ๋ํ ํฉ์ ๋์ถ
- ํก๋จ ๊ด์ฌ์ฌ(cross-cutting concern) ๊ณ ๋ ค ๋ณด์ฅ
- ์๋์ด ์์ง๋์ด์ ์ง์์ ์กฐ์ง์ผ๋ก ์ ํ
- ์ค๊ณ ๊ฒฐ์ ์ ๋ํ ์กฐ์ง์ ๊ธฐ์ต์ ๊ธฐ๋ฐ ํ์ฑ
- ์ํํธ์จ์ด ์ค๊ณ์์ ๊ธฐ์ ํฌํธํด๋ฆฌ์ค์์ ์์ฝ ์ํฐํฉํธ ์ญํ
- Creation and rapid iteration: ๋ฌธ์ ์์ฑ ๋ฐ ๋๋ฃ์์ ์ ์ํ ๋ฐ๋ณต์ ํตํด ์์ ์ ์ธ ๋ฒ์ ๋์ถ (์งํ ์ค)
- Review: ๋ ๋์ ์ฒญ์ค๊ณผ ๊ณต์ ๋์ด ๋ฆฌ๋ทฐ๋จ
- Implementation and iteration: ๊ตฌํ ์ค ์ค๊ณ ๋ณ๊ฒฝ ์ฌํญ ๋ฐ์ ์ ๋ฌธ์ ์ ๋ฐ์ดํธ
- Maintenance and learning: ์์คํ ์ ์ดํดํ๊ธฐ ์ํ ๊ฐ์ฅ ์ ๊ทผ์ฑ ์ข์ ์ง์ ์ ์ญํ
์๋ก์ด ์์คํ ์ด ๊ตฌ์ถ๋๋ ๋ฐฐ๊ฒฝ๊ณผ ์ค์ ๋ก ๊ตฌ์ถ๋๋ ๋ด์ฉ์ ๋ํ ๊ฐ์
-
๋ฆฌ์์ค ๊ฒฝ์
- ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, CI/CD ํ์ดํ๋ผ์ธ์ด ๋์ผํ ์๋ฒ์์ ์คํ๋๋ฉด ํ๋์ ๋จธ์ ์ ๋ฆฌ์์ค๋ฅผ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O ๋ฑ์ ๋ฆฌ์์ค๋ฅผ ๋๊ณ ๊ฒฝ์ํ๊ฒ ๋๋๋ฐ, ์ด๋ก ์ธํด ์ฑ๋ฅ ์ ํ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
-
์ค์ผ์ผ๋ง ํ๊ณ
- ๋จ์ผ ์ธ์คํด์ค์์ ๋ชจ๋ ์์ ์ ์ฒ๋ฆฌํ๋ ค๋ฉด ํน์ ์์ ์์ ๋ฆฌ์์ค๊ฐ ํ๊ณ์ ๋๋ฌํ ์ ์์ผ๋ฉฐ, ํ์์ ๋ฐ๋ผ ์ค์ผ์ผ๋ง(scale-in, out, up, down)์ด ์ด๋ ต์ต๋๋ค.
-
[solution]
- ๋ฆฌ์์ค ๊ฒฝ์ & ์ค์ผ์ผ๋ง ํ๊ณ
- ์ ํ๋ฆฌ์ผ์ด์
, DB, CI/CD ํ์ดํ๋ผ์ธ ์ปจํ
์ด๋ํ
- ๊ฐ๊ฐ์ ์๋น์ค๊ฐ ๋ ๋ฆฝ์ ์ธ ์ปจํ ์ด๋์์ ์คํ๋๋ฏ๋ก, ๋ฆฌ์์ค ๊ฒฝ์์ ์ค์ผ ์ ์์ต๋๋ค.
- EKS (Elastic Kubernetes Service) ๋์
- ๋ณต๊ตฌ ์๋ํ: ์ฅ์ ๋ฐ์ ์ ์๋์ผ๋ก ๋ณต๊ตฌํ๊ณ , ์๋ชป๋ ์ํ์ ์ปจํ ์ด๋๋ฅผ ์๋์ผ๋ก ์ฌ์์ํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ CI/CD ํ์ดํ๋ผ์ธ์ EKS์ ๋ถ์ฐ ๋ฐฐํฌํ์ฌ ๋ฆฌ์์ค ์ฌ์ฉ์ ๋ถ๋ฆฌํฉ๋๋ค.
- ์ค์ผ์ผ๋ง์ ๊ฒฝ์ฐ, pod์ ์ธ์คํด์ค ์, ๋ฉ๋ชจ๋ฆฌ, cpu ์ ๋ฑ์ helm chart๋ฅผ ํตํด ๊ด๋ฆฌํฉ๋๋ค.
- ์ฌ์ฉ์๋ helm chart์ ๊ฐ์ ๋ฐ์ํ๊ณ gocd๋ฑ์ CI/CD ํ์ดํ๋ผ์ธ์ ์คํํ์ฌ ์ค์ผ์ผ๋ง์ ์ ์ฉํฉ๋๋ค.
- ์ ํ๋ฆฌ์ผ์ด์
, DB, CI/CD ํ์ดํ๋ผ์ธ ์ปจํ
์ด๋ํ
- ๋ฆฌ์์ค ๊ฒฝ์ & ์ค์ผ์ผ๋ง ํ๊ณ
-
๋จ์ผ ์ฅ์ ์
- ๋ชจ๋ ์๋น์ค๊ฐ ํ๋์ EC2 ์ธ์คํด์ค์ ์ง์ค๋์ด ์์ผ๋ฏ๋ก, ์ธ์คํด์ค์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋ฉด ๋ชจ๋ ์๋น์ค๊ฐ ๋์์ ์ค๋จ๋ ์ ์์ต๋๋ค.
-
๋ฐฑ์
๋ฐ ๋ณต๊ตฌ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋์ผํ ์ธ์คํด์ค์์ ํธ์คํ ํ ๊ฒฝ์ฐ, ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต์ด ๋ณต์กํด์ง๊ณ ๋ณต๊ตฌ ์ ์ ํ๋ฆฌ์ผ์ด์ ๋ค์ดํ์์ด ๊ธธ์ด์ง ์ ์์ต๋๋ค.
-
[solution]
- ๋จ์ผ ์ฅ์ ์ง์
- Multi Availability Zone์ผ๋ก ๋ฐฐํฌํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ฉ ์์ญ์ ๋ฐฐํฌํ์ฌ ํ๋์ ๊ฐ์ฉ ์์ญ์์ ์ฅ์ ๊ฐ ๋ฐ์ํ๋๋ผ๋ ์๋น์ค๊ฐ ์ค๋จ๋์ง ์์ต๋๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์ (ALB/NLB/HAProxy): ๋ก๋ ๋ฐธ๋ฐ์๋ฅผ ํ์ฉํ์ฌ ์ฌ๋ฌ ๊ฐ์ฉ ์์ญ์ ๋ถ์ฐ๋ ์ธ์คํด์ค๋ก ํธ๋ํฝ์ ๋ถ๋ฐฐํฉ๋๋ค.
- ๋ฐฑ์
๋ฐ ๋ณต๊ตฌ
- RDS๋ฅผ ์ฌ์ฉํ์ฌ ์๋ ๋ฐฑ์ , ์ค๋ ์ท ๋ฐ ๋ฉํฐ AZ ๋ฐฐํฌ ๊ธฐ๋ฅ์ ์ฌ์ฉํฉ๋๋ค.
- Datalake, Olap ๋ฑ์ ์ฌ์ฉํ์ฌ ์ฅ๊ธฐ์ ์ธ ๋ฐ์ดํฐ ๋ณด๊ด๊ณผ ๋ณต๊ตฌ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.(too much ๋๋)
- ๋จ์ผ ์ฅ์ ์ง์
-
์ด์ ์ฒด์ ๋ฐ ์ํํธ์จ์ด ์
๋ฐ์ดํธ
- ์ธ์คํด์ค์์ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, CI/CD ๋๊ตฌ ๋ชจ๋์ ๋ํด ํจ์น์ ์ ๋ฐ์ดํธ๋ฅผ ํด์ผ ํฉ๋๋ค. ์ด๋ ํ์ฌ ๊ตฌ์กฐ์์ ๋ค์ดํ์์ด ํ์ฐ์ ์ด๋ฉฐ, ์ ๋ฐ์ดํธ๊ฐ ์๋ก ์ถฉ๋ํ ์ํ์ด ์์ต๋๋ค.
-
๋ก๊ทธ ๊ด๋ฆฌ
- ๋ชจ๋ ์๋น์ค์ ๋ก๊ทธ๊ฐ ๊ฐ์ ์ธ์คํด์ค์ ์ ์ฅ๋๋ฏ๋ก ๋ก๊ทธ ๊ด๋ฆฌ๊ฐ ๋ณต์กํด์ง๊ณ , ๋์คํฌ ๊ณต๊ฐ์ ๋น ๋ฅด๊ฒ ์๋ชจํ ์ ์์ต๋๋ค.
-
[solution]
-
์ด์ ์ฒด์ ๋ฐ ์ํํธ์จ์ด ์
๋ฐ์ดํธ
- ์์ ๊ฐ์ด ์ฌ๋ฌ AZ๋ฅผ ํ์ฉํ๋ฉฐ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ์ด์ฉํ์ฌ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- ๋ก๊ทธ ๊ด๋ฆฌ
- Filebeat(or Kafka) + Logstash(or Vector) + ElasticSearch + Kibana๋ก ๋ชจ๋ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ์ค์ ์ง์ค์์ผ๋ก ๊ด๋ฆฌํ๊ณ ๋ถ์ํฉ๋๋ค.(๋ชจ๋ ๋ก๊ทธ๋ es์์ ๊ฒ์/๊ด๋ฆฌ)
-
์ด์ ์ฒด์ ๋ฐ ์ํํธ์จ์ด ์
๋ฐ์ดํธ
-
๋คํธ์ํฌ ํผ์ก
- ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, CI/CD ๋๊ตฌ ๊ฐ์ ๋คํธ์ํฌ ํธ๋ํฝ์ด ์ฆ๊ฐํ๋ฉด ๋คํธ์ํฌ ํผ์ก์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
-
์ธ๋ถ ์ ๊ทผ ์ํ
- ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ์ธ๋ถ์ ๋ ธ์ถ๋ ๊ฒฝ์ฐ ๋ณด์ ์ํ์ด ์ฆ๊ฐํ๋ฉฐ, ํ์ ์๋ ์๋น์ค๊ฐ ์ธ๋ถ์ ๋ ธ์ถ๋ ์ํ์ด ์์ต๋๋ค.
-
[solution]
- ๋คํธ์ํฌ ํผ์ก
- VPC ๋ด์์ ํธ๋ํฝ์ ๊ด๋ฆฌํ๋๋ก ํฉ๋๋ค. VPC ๋ด์์ ์๋น์ค ๊ฐ์ ํต์ ์ ์ต์ํํ๊ณ , ํ์ํ ๊ฒฝ์ฐ ์ ์ฉ ๋คํธ์ํฌ ๋งํฌ๋ก ์ค์ ํ์ฌ ๋คํธ์ํฌ ๋ณต์ก์ฑ์ ์ค์ ๋๋ค.
- ์ธ๋ถ ์ ๊ทผ ์ํ
- ๋ณด์ ๊ทธ๋ฃน๊ณผ ๋คํธ์ํฌ ACL์ ์ ์ ํ ์ค์ ํ์ฌ ์ธ๋ถ ์ ๊ทผ์ ์ ์ดํ๊ณ ํ์ํ ํฌํธ๋ง ์ด์ด๋ก๋๋ค.
- ๋คํธ์ํฌ ํผ์ก
-
๋น๋/๋ฐฐํฌ ์๊ฐ ์ฆ๊ฐ
- CI/CD ํ์ดํ๋ผ์ธ์ด ๋์ผํ ๋ฆฌ์์ค๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ, ๋น๋์ ๋ฐฐํฌ ์๊ฐ์ด ์ฆ๊ฐํ ์ ์์ผ๋ฉฐ ์ด๋ ๊ฐ๋ฐ ํจ์จ์ฑ์ ์ ํ์ํฌ ์ ์์ต๋๋ค.
-
์ ํจ์ค ์ ์ง ๋ณด์์ ์ด๋ ค์
- ํ์ฌ ์ ํจ์ค๋ก CI/CD๋ฅผ ๋ชจ๋ ๊ด๋ฆฌํ๊ณ ์๋๋ฐ ์ด ๊ฒฝ์ฐ, ์ ํจ์ค ์๋ฒ๊ฐ ๋ค์ด๋๋ฉด ์์ฒด์ ์ธ ๋น๋/๋ฐฐํฌ๊ฐ ์ด๋ ค์์ง ์ ์์ต๋๋ค.
- ๋ํ ๊ฐ๋ฐ์๊ฐ ์ง์ ๋น๋/๋ฐฐํฌ ์คํฌ๋ฆฝํธ๋ฅผ ์์ฑํ์ฌ ํ์ดํ๋ผ์ธ์ ๊ตฌ์ฑํ๋ ๊ฒฝ์ฐ ์ ์ง๋ณด์์ ํด๋จผ ์๋ฌ์ ๊ฐ๋ฅ์ฑ์ด ๋์์ง๋๋ค.
-
[solution]
- ๋น๋/๋ฐฐํฌ ์๊ฐ ์ฆ๊ฐ
- ์์ ๊ฐ์ด eks๋ฅผ ํ์ฉํ์ฌ ํ๋ ๊ฐ ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- ์ ํจ์ค ์ ์ง ๋ณด์์ ์ด๋ ค์
- GOCD(UI๊ธฐ๋ฐ ๋ฐฐํฌ ํด)๋ฅผ ๋์ ํ์ฌ helm chart๋ก ๋น๋/๋ฐฐํฌ/๋กค๋ฐฑ์ ๊ด๋ฆฌํฉ๋๋ค.
- ๋น๋/๋ฐฐํฌ ์๊ฐ ์ฆ๊ฐ
-
๋ชจ๋ํฐ๋ง ๋ณต์ก์ฑ
- ์ฌ๋ฌ ์๋น์ค๊ฐ ๊ฐ์ ์ธ์คํด์ค์์ ์คํ๋ ๊ฒฝ์ฐ ๊ฐ ์๋น์ค์ ์ํ๋ฅผ ๋ ๋ฆฝ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ ๊ฒ์ด ์ด๋ ค์ธ ์ ์์ต๋๋ค.
-
์ฅ์ ๊ฐ์ง ๋ฐ ๋์ ์ง์ฐ
- ํ ์๋น์ค์ ์ฅ์ ๊ฐ ๋ค๋ฅธ ์๋น์ค์ ์ํฅ์ ๋ฏธ์น ๋, ๋ฌธ์ ๋ฅผ ์ ํํ ํ์ ํ๊ณ ๋์ํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
-
[solution]
- ๋ชจ๋ํฐ๋ง ๋ณต์ก์ฑ
- Prometheus์ Grafana๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๋ชจ๋ํฐ๋งํ๊ณ ์๊ฐํํฉ๋๋ค. ๋ํ ์ฅ์ , ์ด์ ๋ฉํธ๋ฆญ ๋ฐ๊ฒฌ ์ ์ฌ๋์ผ๋ก ๋ฉํธ๋ฆญ์ ์ ์กํฉ๋๋ค.
- EKS์ ํฌ์ค ์ฒดํฌ ๊ธฐ๋ฅ์ ํ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ํ๋ฅผ ์ง์์ ์ผ๋ก ํ์ธํ๊ณ , ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด auto hilling์ ์งํํฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง ๋ณต์ก์ฑ
-
๋ฆฌ์์ค ๊ฒฝ์ ๋ฐ ์ค์ผ์ผ๋ง ๋ฌธ์ ํด๊ฒฐ
- EKS ๋์ : ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ CI/CD ํ์ดํ๋ผ์ธ์ EKS์ ๋ถ์ฐ ๋ฐฐํฌํ์ฌ ๋ฆฌ์์ค ๊ฒฝ์์ ์ค์ด๊ณ ์ค์ผ์ผ๋ง ๋ฌธ์ ๋ฅผ ํด๊ฒฐ.
-
๊ฐ์ฉ์ฑ ๋ฌธ์ ํด๊ฒฐ
- Multi-AZ ๋ฐฐํฌ: ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ์ฌ๋ฌ ๊ฐ์ฉ ์์ญ์ ๋ฐฐํฌํด ๋จ์ผ ์ฅ์ ์ง์ ์ ์ ๊ฑฐ.
- ์๋ ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ: RDS๋ฅผ ํ์ฉํด ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์๋ ๋ฐฑ์ ๋ฐ ๋ณต๊ตฌ ์ ๋ต์ ๊ตฌํ.
-
์ ์ง๋ณด์ ๋ฌธ์ ๊ฐ์
- ์ค์ ์ง์ค์ ๋ก๊ทธ ๊ด๋ฆฌ: Vector, ElasticSearch, Kibana๋ฅผ ํตํด ๋ชจ๋ ์๋น์ค์ ๋ก๊ทธ๋ฅผ ํจ์จ์ ์ผ๋ก ๊ด๋ฆฌ.
- ์ด์ ์ฒด์ ๋ฐ ์ํํธ์จ์ด ์ ๋ฐ์ดํธ ๊ด๋ฆฌ: ์ฌ๋ฌ AZ์ ๋ก๋๋ฐธ๋ฐ์๋ฅผ ํ์ฉํด ๋ค์ดํ์ ์์ด ์ ๋ฐ์ดํธ ๊ด๋ฆฌ.
-
๋คํธ์ํฌ ๋ฐ ์ ๊ทผ์ฑ ๋ฌธ์ ํด๊ฒฐ
- ๋คํธ์ํฌ ํผ์ก ์ํ: VPC ๋ด ํธ๋ํฝ ๊ด๋ฆฌ ๋ฐ ์๋น์ค ๊ฐ ํต์ ์ต์ ํ.
- ๋ณด์ ๊ฐํ: ๋ณด์ ๊ทธ๋ฃน๊ณผ ๋คํธ์ํฌ ACL์ ์ค์ ํ์ฌ ์ธ๋ถ ์ ๊ทผ์ ์ ์ด.
-
CI/CD ๋ฌธ์ ํด๊ฒฐ
- ๋น๋/๋ฐฐํฌ ์ต์ ํ: EKS๋ฅผ ํ์ฉํด ํ๋ ๊ฐ ๋ฆฌ์์ค๋ฅผ ๊ฒฉ๋ฆฌํ์ฌ ๋น๋/๋ฐฐํฌ ์๊ฐ์ ๋จ์ถ.
- GOCD ๋์ : Helm chart๋ฅผ ํ์ฉํ UI ๊ธฐ๋ฐ์ ๋น๋/๋ฐฐํฌ ๊ด๋ฆฌ๋ก ์ ํจ์ค ์ ์ง๋ณด์ ์ด๋ ค์์ ํด๊ฒฐ.
-
๋ชจ๋ํฐ๋ง ๋ฐ ์ฅ์ ๊ฐ์ง ๋ฌธ์ ํด๊ฒฐ
- ๋ชจ๋ํฐ๋ง ๋จ์ํ: Prometheus์ Grafana๋ก ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ์๊ฐํ.
- ์๋ ๋ณต๊ตฌ ๊ธฐ๋ฅ: EKS์ ํฌ์ค ์ฒดํฌ ๋ฐ auto healing ๊ธฐ๋ฅ์ผ๋ก ์ฅ์ ๋ฐ์ ์ ์๋ ๋ณต๊ตฌ.
-
๋ณต์กํ ๋ฐ์ดํฐ ๋ณด๊ด ๋ฐ ๋ณต๊ตฌ ์ ๋ต (e.g., Datalake, OLAP ๋์
)
- Datalake๋ OLAP์ ๊ฐ์ ์ฅ๊ธฐ์ ์ธ ๋ฐ์ดํฐ ๋ณด๊ด ๋ฐ ๋ณต๊ตฌ ๊ธฐ๋ฅ์ ๋์ ํ๋ ๊ฒ์ ์ด๋ฒ ์ค๊ณ์ ๋ชฉํ๊ฐ ์๋๋๋ค.
- ๋ฐ์ดํฐ ๋ณด๊ด ๋ฐ ๋ณต๊ตฌ๋ RDS์ ๊ธฐ๋ณธ ๋ฐฑ์ ๋ฐ ์ค๋ ์ท ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ์์ค์์ ์ฒ๋ฆฌํฉ๋๋ค.
-
๋ชจ๋ ์ ํ๋ฆฌ์ผ์ด์
๋ฐ ์๋น์ค์ ์์ ํ ์๋ฒ๋ฆฌ์ค ์ ํ
- ์๋ฒ๋ฆฌ์ค ์ํคํ ์ฒ(์: AWS Lambda)๋ก์ ์์ ํ ์ ํ์ ๊ณ ๋ ค ๋์์ด ์๋๋๋ค. ๋์ EKS ๋ฐ ์ปจํ ์ด๋ ๊ธฐ๋ฐ ์ํคํ ์ฒ๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
-
๋ชจ๋ ๋ก๊ทธ์ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ํด๋ผ์ฐ๋ ์๋น์ค์ ์์กด
- ๋ก๊ทธ ๊ด๋ฆฌ ๋ฐ ๋ชจ๋ํฐ๋ง์ ์ํด ElasticSearch์ Kibana๋ฅผ ํ์ฉํ์ง๋ง, ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ธ๋ถ ํด๋ผ์ฐ๋ ์๋น์ค์ ์์กดํ์ง๋ ์์ต๋๋ค. ๋ฐ์ดํฐ์ ๋ก๊ทธ๋ ํ์ํ ๋ฒ์์์๋ง ํด๋ผ์ฐ๋์ ์ ์ฅํฉ๋๋ค.
์ด ์์คํ ์ ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ์ ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ๋ฅผ ์ฌ์ฉํ์ฌ ์ ํ๋ฆฌ์ผ์ด์ , ๋ฐ์ดํฐ๋ฒ ์ด์ค, CI/CD ํ์ดํ๋ผ์ธ์ ๊ด๋ฆฌํฉ๋๋ค. ์ ์ฒด ์์คํ ์ AWS ์ธํ๋ผ์์ ๋์ํ๋ฉฐ, ์ฃผ์ ๊ตฌ์ฑ ์์๋ก๋ EKS(Elastic Kubernetes Service), RDS(Relational Database Service), CI/CD ํ์ดํ๋ผ์ธ, ๋ก๋ ๋ฐธ๋ฐ์, VPC ๋ฑ์ด ์์ต๋๋ค.
- ํด๋ผ์ด์ธํธ: ์ฌ์ฉ์๋ ์ธํฐ๋ท์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํฉ๋๋ค.
- ๋ก๋ ๋ฐธ๋ฐ์(ALB/NLB): ํด๋ผ์ด์ธํธ ์์ฒญ์ EKS ํด๋ฌ์คํฐ์ ๋ค์ํ ์๋น์ค๋ก ๋ถ๋ฐฐํฉ๋๋ค.
- EKS ํด๋ฌ์คํฐ: ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ CI/CD ํ์ดํ๋ผ์ธ์ด ์ปจํ ์ด๋ ํํ๋ก ๋ถ๋ฆฌ๋์ด ์คํ๋ฉ๋๋ค.
- RDS: ๋ฐ์ดํฐ๋ฒ ์ด์ค๊ฐ ๊ด๋ฆฌ๋๋ฉฐ, Multi-AZ ๋ฐฐํฌ๋ก ๋์ ๊ฐ์ฉ์ฑ์ ๋ณด์ฅํฉ๋๋ค.
- VPC: ๋ณด์ ๋ฐ ๋คํธ์ํฌ ํธ๋ํฝ ๊ด๋ฆฌ๋ฅผ ์ํด ๋ชจ๋ ์ปดํฌ๋ํธ๊ฐ VPC ๋ด์์ ์ด์๋ฉ๋๋ค.
- ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊ทธ ๊ด๋ฆฌ: Prometheus, Grafana, ElasticSearch, Kibana๋ฅผ ํตํด ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง ๋ฐ ๋ก๊ทธ ๊ด๋ฆฌ๊ฐ ์ด๋ฃจ์ด์ง๋๋ค.
- EKS ํด๋ฌ์คํฐ: 2๊ฐ
- ๊ฐ ํด๋ฌ์คํฐ๋น ๋ ธ๋ ์: 3๋
-
๋
ธ๋ ํ์
: ๊ฐ์ฅ ์ ๋ ดํ EC2 ์ธ์คํด์ค ์ ํ (
t3.micro
๋ฅผ ์ฌ์ฉ) -
์ง์ญ: ์์ธ ๋ฆฌ์ ,
ap-northeast-2
- ๊ฐ ๋ ธ๋๋น EBS ์คํ ๋ฆฌ์ง: 20GB gp2
- ํด๋ฌ์คํฐ ๊ด๋ฆฌ ๋น์ฉ: ํด๋ฌ์คํฐ๋น $0.10/์๊ฐ
- ๋ ํด๋ฌ์คํฐ๋ฅผ ์ด์ํ๋ฏ๋ก:
- $0.10 x 24์๊ฐ x 30์ผ x 2 ํด๋ฌ์คํฐ = $144/์
-
t3.micro
์ธ์คํด์ค๋ $0.0104/์๊ฐ - ๊ฐ ํด๋ฌ์คํฐ์ 3๋์ ๋ ธ๋๋ฅผ ์ฌ์ฉํ๋ฉฐ, ์ด 2๊ฐ์ ํด๋ฌ์คํฐ ์ด์
- EC2 ์ธ์คํด์ค ๋น์ฉ:
- $0.0104 x 3๋ x 24์๊ฐ x 30์ผ x 2 ํด๋ฌ์คํฐ = $44.928/์
-
gp2
์คํ ๋ฆฌ์ง๋ $0.114/GB(์) - ๊ฐ ๋ ธ๋์ 20GB์ EBS ์คํ ๋ฆฌ์ง๋ฅผ ํ ๋น
- EBS ์คํ ๋ฆฌ์ง ๋น์ฉ:
- $0.114 x 20GB x 3๋ x 2 ํด๋ฌ์คํฐ = $13.68(์)
์์ ๊ณ์ฐ์ ์ข ํฉํ๋ฉด ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- EKS ํด๋ฌ์คํฐ ๊ด๋ฆฌ ๋น์ฉ: $144/์
- EC2 ์ธ์คํด์ค ๋น์ฉ: $44.928/์
- EBS ์คํ ๋ฆฌ์ง ๋น์ฉ: $13.68/์
์ด ์์ ๋น์ฉ: $202.608/์
5. EKS๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ์ง์ Kubernetes ํด๋ฌ์คํฐ ๊ตฌ์ถ ์ ๋น์ฉ (2๊ฐ์ ํด๋ฌ์คํฐ)
EKS๋ฅผ ์ฌ์ฉํ์ง ์๊ณ EC2 ์ธ์คํด์ค์ ์ง์ Kubernetes ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ถํ๋ ๊ฒฝ์ฐ:
-
EC2 ์ธ์คํด์ค ๋น์ฉ: $0.0104/์๊ฐ
- 3๋์
t3.micro
์ธ์คํด์ค๋ฅผ ์ฌ์ฉ, 2๊ฐ์ ํด๋ฌ์คํฐ ์ด์ - $0.0104 x 3๋ x 24์๊ฐ x 30์ผ x 2 ํด๋ฌ์คํฐ = $44.928/์
- 3๋์
-
EBS ์คํ ๋ฆฌ์ง ๋น์ฉ: $0.114/GB/์ (20GB EBS ๋ณผ๋ฅจ ์ฌ์ฉ)
- $0.114 x 20GB x 3๋ x 2 ํด๋ฌ์คํฐ = $13.68/์
์ด ๋น์ฉ: $58.608/์
- EKS ์ฌ์ฉ ์ (2๊ฐ์ ํด๋ฌ์คํฐ) ์ด ๋น์ฉ: $202.608/์ (์ฝ 27๋ง์)
- EKS ์ฌ์ฉ ์ (1๊ฐ์ ํด๋ฌ์คํฐ) ์ด ๋น์ฉ: $101.304/์ (์ฝ 13.5๋ง์)
- EKS ์ฌ์ฉํ์ง ์๊ณ ์ง์ ๊ตฌ์ถ ์ (2๊ฐ์ ํด๋ฌ์คํฐ) ์ด ๋น์ฉ: $58.608/์ (์ฝ 8๋ง์)
- EKS ์ฌ์ฉํ์ง ์๊ณ ์ง์ ๊ตฌ์ถ ์ (1๊ฐ์ ํด๋ฌ์คํฐ) ์ด ๋น์ฉ: $29.304/์ (์ฝ 4๋ง์)
- ๋ฐ์ดํฐ ์ ์ก ๋น์ฉ: ๊ฐ์ ๋ฆฌ์ ๋ด์์์ ๋ฐ์ดํฐ ์ ์ก์ ๋ฌด๋ฃ์ด์ง๋ง, ์ธํฐ๋ท์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ฒฝ์ฐ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ELB ๋น์ฉ: ELB๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ถ๊ฐ ๋น์ฉ์ด ๋ฐ์ํ ์ ์์ต๋๋ค.
- ์ง์ฌ์ ๊ณ ๋ฏผ ์๋น์ค ์๊ฐ
- ์ฌ์ฉ์ ์คํ ๋ฆฌ ๋ฐ ๊ธฐ๋ฅ๋ช ์ธ
- ํ ๊ทธ๋ผ์ด๋ ๋ฃฐ
- Git Branch ์ ๋ต ๋ฐ Git Commit ์ปจ๋ฒค์
- ์ง์ฌ์ ๊ณ ๋ฏผ ๋ฐฐํฌ ์๋ํ ํ์ดํ๋ผ์ธ
- ์๋น์ค ํ๊ฒ ํ๊ฒฝ ๋ฐ ๋ธ๋ผ์ฐ์ ์ง์ ๋ฒ์
- ์ฝ๋ ์ปจ๋ฒค์
- TypeScript ์ปจ๋ฒค์
- ๋น๋ ๋ฐ ๋ฐฐํฌ ๊ฐ๋ฐ/์ด์ ํ๊ฒฝ ๊ตฌ๋ถ
- ์คํ์ผ๋ง ๋ฐ ์ํ๊ด๋ฆฌ ๋ฐฉ๋ฒ ์ ํ ๋ฐ ์ด์
- ์น ์ ๊ทผ์ฑ ๊ด๋ฆฌ ๋์ ์ ์ ๋ฐ ๊ฐ์
- ํ ์คํธ ์ ๋ต ์๋ฆฝ ๋ฐ ํ ์คํธ ์๋ํ
- ํ๋ก ํธ์๋ ์ธํ๋ผ ๊ตฌ์ฑ๋
- ๋ฐฑ์๋ ๊ธฐ์ ์คํ
- ๋ฐฑ์๋ ์ธํ๋ผ ๊ตฌ์ฑ๋
- ERD
- API ๋ฌธ์ํ ํด
- QueryDSL ๋์ ์ด์
- ์ฝ๋ ์ปจ๋ฒค์
- ์ง๊ณ ๋ฐฑ์๋๊ฐ ์ฌ์ฉํ๋ CI/CD ํด
- ์กฐํ ์ฟผ๋ฆฌ ๋ถ์
- ํฐ์บฃ ํ๋
- ๋ฌด์ค๋จ ๋ฐฐํฌ
- HikariCP ์ค์ ์ต์ ํ
- ์ง๊ณ ์ฌ์ฉ์๊ฐ 1000๋ง ๊ทธ ์ด์์ด๋ผ๋ฉด
- New infrastructure Design doc