diff --git a/README.md b/README.md index ec29882..36802ea 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,6 @@ +[![CI (feat. Java CI with Gradle)](https://github.com/TravelLaboratory/travel-laboratory-was/actions/workflows/ci.yml/badge.svg)](https://github.com/TravelLaboratory/travel-laboratory-was/actions/workflows/ci.yml) +[![Deploy to Production](https://github.com/TravelLaboratory/travel-laboratory-was/actions/workflows/main-deploy.yml/badge.svg)](https://github.com/TravelLaboratory/travel-laboratory-was/actions/workflows/main-deploy.yml) + ![20240905_170038](https://github.com/user-attachments/assets/0b35cbf0-4099-4662-8508-fad514e19d0f) ## ๐Ÿ“‘ Introduction Trablock์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌํ–‰ ๊ณ„ํš์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฆฌ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ ์ด๋ฅผ ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๊ณผ ๊ณต์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์—ฌํ–‰ ๊ณ„ํš ๋ฐ ์ผ์ • ๊ณต์œ  ํ”Œ๋žซํผ์ž…๋‹ˆ๋‹ค. ์ด ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์—ฌํ–‰์ž๋“ค์€ ์ž์‹ ์˜ ์—ฌํ–‰ ๊ฒฝํ—˜์„ ๊ธฐ๋กํ•˜๊ณ , ๋‹ค๋ฅธ ์‚ฌ์šฉ์ž๋“ค๊ณผ ์†Œํ†ตํ•˜๋ฉฐ ์—ฌํ–‰ ์ •๋ณด๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. @@ -5,7 +8,7 @@ Trablock์€ ์‚ฌ์šฉ์ž๊ฐ€ ์—ฌํ–‰ ๊ณ„ํš์„ ์ž‘์„ฑํ•˜๊ณ  ๋ฆฌ๋ทฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ฉฐ Trablock์ด๋ผ๋Š” ์ด๋ฆ„์€ Travel๊ณผ Block์˜ ํ•ฉ์„ฑ์–ด๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ณ„ ์ผ์ •๋“ค์„ ๋งˆ์น˜ ๋ธ”๋ก์ฒ˜๋Ÿผ ์กฐ๋ฆฝํ•˜์—ฌ ํ•˜๋‚˜์˜ ์™„์„ฑ๋œ ์—ฌํ–‰ ๊ณ„ํš์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ## โญ Architecture -![ํŠธ๋ž˜๋ธ”๋ก ์•„ํ‚คํ…์ฒ˜](https://github.com/user-attachments/assets/dd77f494-9593-4c16-9bfe-3a913df92016) +![๋ชจ๋‹ˆํ„ฐ๋ง์„œ๋ฒ„ ๊ตฌ์ถ•](https://github.com/user-attachments/assets/661f70f6-d2b3-4048-8b9d-09a1ea732d51) ## ๐Ÿ›  Backend Tech Stack @@ -19,6 +22,7 @@ Trablock์ด๋ผ๋Š” ์ด๋ฆ„์€ Travel๊ณผ Block์˜ ํ•ฉ์„ฑ์–ด๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ณ„ - **๋ฐฐํฌ:** AWS EC2 - **CI/CD:** GitHub Actions, AWS CodeDeploy - **์„ฑ๋Šฅ ํ…Œ์ŠคํŠธ:** nGrinder +- **๋ชจ๋‹ˆํ„ฐ๋ง:** Prometheus, Grafana ## ๐Ÿงถ What I learn @@ -41,7 +45,7 @@ Trablock์ด๋ผ๋Š” ์ด๋ฆ„์€ Travel๊ณผ Block์˜ ํ•ฉ์„ฑ์–ด๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ณ„ **AWS CodeDeploy**๋ฅผ ์‚ฌ์šฉํ•ด CD(Continuous Deployment)๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ , ๋ฐฐํฌ ์ž๋™ํ™”๋ฅผ ๊ฒฝํ—˜ํ–ˆ์Šต๋‹ˆ๋‹ค. CI(Continuous Integration)๋Š” ํ”„๋กœ์ ํŠธ ์ดˆ๊ธฐ์— ๋„์ž…๋˜์—ˆ์ง€๋งŒ, ๊ฐœ๋ฐœ ์ผ์ •์— ๋งž์ถ”๊ธฐ ์œ„ํ•ด ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์„ ์ƒ๋žตํ•˜๋Š” ๊ฒฐ์ •์„ ๋‚ด๋ ธ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Š” ์žฅ๊ธฐ์ ์œผ๋กœ ์ข‹์ง€ ์•Š์€ ํŒ๋‹จ์ž„์„ ๊นจ๋‹ฌ์•˜๊ณ , ์ดํ›„ CI๋ฅผ ํ†ตํ•ด ํ…Œ์ŠคํŠธ ์ž๋™ํ™”๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ์ฝ”๋“œ ํ’ˆ์งˆ์„ ๋†’์ด๊ณ , ๋ฐฐํฌ ์ „ ๊ฒ€์ฆ์˜ ์ค‘์š”์„ฑ์„ ์ ˆ์‹คํžˆ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค. -### [๊ฐœ๋ฐœ ํ›„ ํ…Œ์ŠคํŠธ ๊ณผ์ •์—์„œ] +### [๊ฐœ๋ฐœ ํ›„ ํ…Œ์ŠคํŠธ ๋ฐ ๋ฐฐํฌ ๊ณผ์ •์—์„œ] #### 1. **์ธ๋ฑ์‹ฑ์˜ ์ค‘์š”์„ฑ** @@ -60,6 +64,14 @@ Trablock์ด๋ผ๋Š” ์ด๋ฆ„์€ Travel๊ณผ Block์˜ ํ•ฉ์„ฑ์–ด๋กœ, ์‚ฌ์šฉ์ž๊ฐ€ ๊ฐœ๋ณ„ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง•์„ ํ†ตํ•ด ์ด๋ฏธ์ง€ ํ’ˆ์งˆ์— ํฐ ์˜ํ–ฅ์„ ์ฃผ์ง€ ์•Š์œผ๋ฉด์„œ๋„ S3 ์ €์žฅ ๊ณต๊ฐ„์„ ์ ˆ๊ฐํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๊ฒฐ๊ณผ์ ์œผ๋กœ ๋น„์šฉ ์ ˆ๊ฐ์—๋„ ํฐ ํšจ๊ณผ๋ฅผ ๋ณด์•˜์Šต๋‹ˆ๋‹ค. ์ด ๊ณผ์ •์„ ํ†ตํ•ด ๋ฆฌ์†Œ์Šค ์ตœ์ ํ™”์˜ ์ค‘์š”์„ฑ์„ ์‹ค๊ฐํ•˜๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, ์ด๋ฏธ์ง€ ์ฒ˜๋ฆฌ ๋ฐ ์ €์žฅ ๊ณต๊ฐ„ ๊ด€๋ฆฌ์—์„œ ์ตœ์ ํ™”๋ฅผ ์ ์šฉํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ๊นŠ์ด ์ดํ•ดํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. +ํ˜„์žฌ๋Š” API ์„œ๋ฒ„ ๋‚ด์—์„œ ์ด๋ฏธ์ง€ ๋ฆฌ์‚ฌ์ด์ง•์„ ์ฒ˜๋ฆฌ ์ค‘์ด์ง€๋งŒ, ์ถ”ํ›„ ์„ฑ๋Šฅ ๋ฐ ํ™•์žฅ์„ฑ์„ ๊ณ ๋ คํ•ด ๋ณ„๋„์˜ ์ด๋ฏธ์ง€ ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•  ๊ณ„ํš๋„ ์„ธ์šฐ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. + +#### 5. ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„ ๊ตฌ์ถ•๊ณผ ์„œ๋ฒ„ ์•ˆ์ •์„ฑ + +์„œ๋ฒ„์˜ ์„ฑ๋Šฅ๊ณผ ์•ˆ์ •์„ฑ์„ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ธฐ ์œ„ํ•ด Prometheus์™€ Grafana๋ฅผ ์‚ฌ์šฉํ•ด ๋ณ„๋„์˜ ๋ชจ๋‹ˆํ„ฐ๋ง ์„œ๋ฒ„๋ฅผ ๊ตฌ์ถ•ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„œ๋ฒ„ ์ƒํƒœ๋ฅผ ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ชจ๋‹ˆํ„ฐ๋งํ•˜๊ณ , ์ฃผ์š” ๊ฒฝ๊ณ ๋‚˜ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ ๋””์Šค์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์•Œ๋ฆผ์„ ๋ฐ›์•„ ๋น ๋ฅธ ๋Œ€์‘์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. + +์ด๋ฅผ ํ†ตํ•ด ์‹œ์Šคํ…œ ์žฅ์•  ๋ฐœ์ƒ ์‹œ ์ฆ‰๊ฐ์ ์ธ ์กฐ์น˜๊ฐ€ ๊ฐ€๋Šฅํ•ด์ ธ ์‹œ์Šคํ…œ ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ํ–ฅ์ƒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋”๋ถˆ์–ด ์‹œ์Šคํ…œ ์œ ์ง€๋ณด์ˆ˜์™€ ์šด์˜ ํšจ์œจ์„ฑ์— ํฐ ๊ธฐ์—ฌ๋ฅผ ํ–ˆ์Šต๋‹ˆ๋‹ค. + ## โ›“ Link