'RecipeTips'๋ ์๋ฆฌ์ ๋ํ ์ง์์ด ๋ถ์กฑํ๊ฑฐ๋ ๋ฐฐ์ฐ๊ณ ์ถ์ 1์ธ ๊ฐ์กฑ ๋ฐ ์์ทจ์๋ค์ด ์์ ๋กญ๊ฒ ์ํตํ๊ณ , ์ ๋ณด๋ฅผ ๊ณต์ ํ ์ ์๋ ์ฌ์ดํธ์ ๋๋ค.
Pendemic ์ดํ ์ธ์์ด ์ด๋ ค์์ง๊ณ ์ง์์ ์๋ฆฌํ๋ ํ์์ด ์ฆ๊ฐํ์ต๋๋ค. ์ด์ ๋ฐ๋ผ ๋ง์ ์ฌ๋๋ค์ด ์ง์ ์๋ฆฌ๋ฅผ ํ์ฌ ๋ฌผ๊ฐ ๋ถ๋ด์ ๋ฎ์ถ๋ ๊ฒฝํฅ์ด ๋ํ๋ฌ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ฌ๋๋ค์ ์ด๋ ํ ์๋ฆฌ๋ฅผ ๋ง๋ค์ง, ์ด๋ป๊ฒ ์กฐ๋ฆฌ๋ฅผ ํ๋์ง์ ๋ํ ๊ณ ๋ฏผ์ด ๋ง์์ก์ต๋๋ค. ๋ฐ๋ผ์, ์ด๋ฌํ ์์๋ฅผ ์ถฉ์กฑ์ํค๊ณ ์ง์์ ์๋ฆฌํ๋ ์ฌ๋๋ค์๊ฒ ๋์์ ์ฃผ๊ธฐ ์ํด "RecipeTips"๋ฅผ ๊ฐ๋ฐํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. RecipeTips๋ ๋ค์ํ ์๋ฆฌ ๊ด๋ จ ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์ถ์ฒ ์๋ฆฌ, ์กฐ๋ฆฌ ๋ฐฉ๋ฒ ๋ฑ์ ์๊ฐํฉ๋๋ค.
์ค๋๋ ์๋ ์์คํ ์ด ์ง์์ ์ผ๋ก ์๋ํ๊ณ ์ฌ์ฉ ๊ฐ๋ฅํ ๊ณ ๊ฐ์ฉ์ฑ์ด ๊ฐ์กฐ๋๊ณ ์์ต๋๋ค. ์ด๋ฅผ ์ํด MSA ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด Kubernetes๋ฅผ ์ด์ฉํ์ฌ ์ธํ๋ผ๋ฅผ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ์๋ค์ ์์ฐ์ฑ์ ๋์ด๊ณ ๊ฐ๋ฐ Process์ ํจ์จ์ฑ์ ๊ทน๋ํํ๊ธฐ ์ํด CI/CD ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ ์ฅ์ ์ ๋ํด ๋๋น๊ฐ ๊ฐ๋ฅํ๊ณ ๊ณ ๊ฐ์ฉ์ฑ๊ณผ ์๋ก์ด ๋ฒ์ ์ ๋ฐ์ดํธ ์ ์ง์์ ์ผ๋ก ์๋น์ค๊ฐ ๊ฐ๋ฅํ ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ๋ชฉํ๋ก ํ ๊ฒ์ ๋๋ค. ๋ํ ์ง์์ ์ด๊ณ ์์ ์ ์ธ ์๋น์ค ์ด์/๊ด๋ฆฌ๋ฅผ ์ํด Resource์ Application ๋ชจ๋ํฐ๋ง ์์คํ ์ ๊ตฌ์ถํ ๊ฒ์ ๋๋ค.
์๋ช ์ง (PL) : K8S, Terraform ๊ตฌ์ฑ, Argo, Monitoring ๊ตฌ์ถ
์ต์ฌ๋ฏผ : AWS Infra ๊ตฌ์ถ, ํ๋ก์ ํธ ๋ฌธ์ํ ์์ฑ
์กฐ๊ดํฌ : Front-end ๊ฐ๋ฐ, FlowChart ์์ฑ
์ ์ฐ์ฉ : Back-end ๊ฐ๋ฐ, Jenkins ๊ตฌ์ถ, CI/CD ํ์ดํ๋ผ์ธ ๊ตฌ์ถ, PPT ์ ์
EC2 Image : Amazon-Linux 2023
K8S : 2.7
Terraform : 5.1.0
Jenkins : 2.426.1
Argo : 2.8.5
React : 18.2.0
JavaScript : ES6
Java : 17
MariaDB : 10.6
Redis : 7.0
MariaDB : 10.0.6
Spring Boot : 3.1.4
Terraform Code๋ฅผ ํ์ฉํ์ฌ AWS Infra๋ฅผ ๊ตฌ์ถํ์ต๋๋ค. Bastion Server๋ฅผ DB์ Mgmt๋ก ๊ตฌ๋ถํ์ฌ ๋ณด์์ ๊ฐํํ์์ต๋๋ค. DB/Redis๋ฅผ ์ด์คํํ์ฌ ๊ฐ์ฉ์ฑ์ ๋์์ต๋๋ค. EKS ํ๊ฒฝ์์ ํ์ฅ์ฑ์๋ ์๋น์ค๋ฅผ ๊ตฌ์ถํ์์ต๋๋ค.
www.recipetips.net
User์ฉ Domain์ ๋ถ๋ฆฌํ์ฌ ์๋น์ค์ ์ ๊ทผํ ์ ์๋๋ก ํ์ต๋๋ค.
kibana.recipetips.net
,grafana.recipetips.net
,argocd.recipetips.net
admin์ฉ Domain์ ๋ถ๋ฆฌํ์ฌ ์๋น์ค๋ฅผ ์ ๊ทผํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค. Bastion Server๋ฅผ ํ์ฉํด ๋ด๋ถ์ ์ ๊ทผํ๊ณ ๊ด๋ฆฌํ ์ ์์ต๋๋ค.
์๋น์ค๋ณ๋ก Namespace๋ฅผ ์ง์ ํ๊ณ ๊ด๋ฆฌํฉ๋๋ค.
Github์ ๋ณ๊ฒฝ๋ ์ฌํญ์ด push๊ฐ ๋๋ฉด Jenkins๋ ๋ณ๊ฒฝ๋ ์ฌํญ์ ์์ค ์ฝ๋ clone์ ์ํํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ Gradle์ ์ฌ์ฉํ์ฌ ๋น๋๋ฅผ ์งํํ ํ, ECR ๋ ์ง์คํธ๋ฆฌ์ ๋ฐฐํฌํ๊ธฐ ์ํ Docker ์ด๋ฏธ์ง ๋น๋๋ฅผ ์ํํฉ๋๋ค. ์ ์์ ์ผ๋ก ๋น๋๋ Docker ์ด๋ฏธ์ง๋ฅผ ECR์ pushํฉ๋๋ค. ์ดํ์๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ฐฐํฌ manifest File์ ์ด๋ฏธ์ง ํ๊ทธ๋ฅผ ์ ๋ฐ์ดํธํ๋ ๋จ๊ณ๋ฅผ ์ํํฉ๋๋ค.
๊ทธ๋ฆฌ๊ณ ArgoCD๋ Git ์ ์ฅ์์ ๋ณ๊ฒฝ์ํ๋ฅผ ๊ฐ์งํ๋ฉฐ ๋ณ๊ฒฝ๋ ๋ด์ฉ์ EKS์ ๋ฐฐํฌํ์ฌ ๋ฐ์ํฉ๋๋ค.
- ์ฌ์ฉ์
- Security ํ์ ๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ
- JWT Token ์ธ์ฆ
- ํ์ ์ ๋ณด ์์
- ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ ์ ํจ์ฑ ๊ฒ์ฌ
- ๊ฒ์ํ
- ๊ฒ์๊ธ CRUD
- ๋ต๋ณ CRUD
- ํ์ด์ง๋ค์ด์
- ์ด๋ฏธ์ง ์ถ๊ฐ
- ๋ ์ํผ
- ๋ ์ํผ ์ถ์ฒ ๊ธฐ๋ฅ
- ๋ ์ํผ ๊ฒ์ ๊ธฐ๋ฅ
- ๋ ์ํผ ์์ธ๋ณด๊ธฐ ๊ธฐ๋ฅ
- Grafnana / Prometheus๋ฅผ ํ์ฉํ์ฌ Resource ๋ชจ๋ํฐ๋ง ๋์๋ณด๋ ๊ตฌ์ฑ
- EFK Stack์ ํ์ฉํ์ฌ Application ๋ชจ๋ํฐ๋ง ๊ตฌ์ถ
- API ์๋ฒ ํธ์ถ
- Node ์ํ ๋ฐ Node ๊ฐ์
- Node CPU, Memory
- Deployment update ํํฉ
- Namespace ๋ณ replicas ํํฉ
- Namespace ๋ณ Pod
- Pod CPU, Memory
- HPA ํ์ธ์ ์ํ Pod ๊ฐ์