๋นจ(8๏ธโฃ)๋ฆฌ ์ก์ - FastCatch
๐ฅ ์ด๊ฑฐ ๋ค ๋๋ฉด 8์กฐ?! - ํ์๊ฐ
์ผ๋์ ํ ํฌ์ค์ฟจ ํ๋ก ํธ์๋ : ์ดโ โ (ํ์ฅ), ๊ณ โ โ , ์ค โ โ , ์ด โ โ , ์ โ โ
์ผ๋์ ํ ํฌ์ค์ฟจ ๋ฐฑ์๋ : ๋ฐ์ฃผํ(ํ์ฅ), ๊น โ โ , ์ด โ โ , ์ โ โ
๐กํ๋ก์ ํธ ๊ฐ์
1๏ธโฃํ๋ก์ ํธ๋ด์ฉ
์๋ฐ ์์ฝ ์๋น์ค
2๏ธโฃํ๋ก์ ํธ ์ฃผ์ ๋ฐ ํ์ ๊ตฌํ ๊ธฐ๋ฅ ์ ์
์ผ๋์
3๏ธโฃํ๋ก์ ํธ ๋ชฉ์
ํ ํ์ , RESTful API ๊ฐ๋ฐ
4๏ธโฃํ๋ก์ ํธ ๊ธฐ๊ฐ
2023๋ 11์ 20์ผ (์) ~ 12์ 01์ผ(๊ธ)
5๏ธโฃํ๋ก์ ํธ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ
6๏ธโฃ๊ธฐ์ ์คํ
์ธ์ด
Java17
๊ฐ๋ฐํ๊ฒฝ ๋ฐ Dependency
Spring Boot 3.1.5
Gradle 8.3
MySQL 8
Spring Web
Spring Data JPA
JUint5
lombok
Spring Security
JWT
CI/CD
GitHub Actions, AWS EC2, AWS RDS
7๏ธโฃ์๋ฒ ๋ฐฐํฌ
AWS EC2๋ฅผ ์ฌ์ฉํ์ฌ develop , release ๋ธ๋์น๋ฅผ ํ ์คํธ ์๋ฒ ๋ฐ ๋ฉ์ธ ์๋ฒ๋ก ์๋ ๋ฐฐํฌ
โ๏ธํ๋ก์ ํธ ์ปจ๋ฒค์
1๏ธโฃ์ฝ๋ฉ ์ปจ๋ฒค์
๋ธ๋ก์ ๋ค์ฌ์ฐ๊ธฐ๋ง 4๊ณต๋ฐฑ์ผ๋ก ์ปค์คํ ํ์ฌ ๊ตฌ๊ธ ์๋ฐ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ฌ์ฉ
Git Hub Actions CI๋ฅผ ํตํด ์ฒดํฌ ์คํ์ผ์ด ๋ง์ง ์๋๋ค๋ฉด Merge ๋ชปํ๋๋ก ๋ธ๋์น ๋ณดํธ
2๏ธโฃAPI ์ด๊ธฐ ์ค๊ณ
3๏ธโฃ์ํ์ฝ๋ ์ปจ๋ฒค์
- 200 : ๋ชจ๋ ์ฑ๊ณต
- 400 : ํด๋ผ์ด์ธํธ๊ฐ ์ ๋ ฅ์ ์๋ชปํ ๊ฒฝ์ฐ
- 401 : ์ธ์ฆ ์ ๋ณด๊ฐ ์๋ ๊ฒฝ์ฐ
- 403 : ์ ๊ทผ ๊ถํ์ด ์๋ ๊ฒฝ์ฐ
- 500 : ์๋ฒ ๋ด๋ถ ์๋ฌ
4๏ธโฃํ๋ก์ ํธ ๊น ๋ธ๋์น ์ ๋ต
GitFlow ์ ๋ต
feature/#
- ์ค์ ์์ ์ ํ๋ ๋ธ๋์น
- ์ด์ ๋ฒํธ๊ฐ 1์ด๋ผ๋ฉด feature/1๋ก ๋ง๋ค๋ฉด ๋๋ค.
- 'develop'์ ๋ฒ ์ด์ค ๋ธ๋์น๋ก ํ์ฌ ๋ง๋ค์ด์ผ ํ๋ค.
- ( ๋ธ๋์น ์์ฑ์ ๋ฒ ์ด์ค ๋ธ๋์น[ ์ฒดํฌ์์๋์ด์๋ ๋ธ๋์น ]๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ง๋ค์ด์ง๋ค.)
- ์์ ์ด ์๋ฃ๋๋ฉด develop์ผ๋ก Pull Request๋ฅผ ๋ ๋ฆฐ๋ค.
- ๋ณธ์ธ์ ์ ์ธํ ์กฐ์์ Approve๋ฅผ ๋ชจ๋ ๋ฐ์๋ค๋ฉด Mergeํ๋ค.
develop
- ํ ์คํธ ์๋ฒ์ ์๋ ๋ฐฐํฌ๋๋ ๋ธ๋์น
- ๋ค์ ๋ฒ์ ๊ฐ๋ฐ์ ์ํด release์ผ๋ก ๊ฐ๊ธฐ ์ ๊ธฐ๋ฅ ์ฝ๋๋ค์ ๋ชจ์๋๋ ๋ธ๋์น
- ์์ฑํ ๊ธฐ๋ฅ์ด ์ ์๋๋๋์ง ํ์ธํ๊ณ , release์ผ๋ก PR ๋ฐ Merge๋ฅผ ํ๋ฉด ๋๋ค.
- develop์ผ๋ก Merge ํ๊ณ ๋์ ์๋ ๋ฐฐํฌ๋ ํ ์คํธ ์๋ฒ์์ ์์ ์ API๊ฐ ์ ์ ์๋ํ๋์ง ๊ผญ ํ ์คํธํด์ผ ํ๋ค.
release
- ์ค์ ์๋น์ค๋ฅผ ์ด์ํ ์ ์๋ ๋ฉ์ธ ์๋ฒ ์๋ ๋ฐฐํฌ๋๋ ๋ธ๋์น
- release์ผ๋ก Merge ํ๊ณ ๋์ ์๋ ๋ฐฐํฌ๋ ๋ฉ์ธ ์๋ฒ์์ ์์ ์ API๊ฐ ์ ์ ์๋ํ๋์ง ๊ผญ ํ ์คํธํด์ผ ํ๋ค.
hotfix
- ์๋ฒ์์ ํ ์คํธ ํ ์ค๋ฅ๊ฐ ๋ฐ๊ฒฌ๋์ ๋ ๋ฐ๋ก ์์ ํด์ Merge ํ ์ ์๋ ๋ธ๋์น
- hotfix/์ด์๋ฒํธ๋ก ์์ฑ
main
- ์ต์ข ๋ณธ์ ๊ฐ๋ ๋ธ๋์น
5๏ธโฃ๊ธฐํ ํฉ์์ฌํญ
- ํ์
๊ด๋ จ
- ์ ๊ธฐ ์คํ๋ผ์ธ ํ์
- ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ: ๋งค์ผ ์ค์ 10:00 ๋ ธ์ ์ ์งํ์ํฉ ๊ณต์
- Discord ์์ ํ๋ก ํธ ๋ฐ ๋ฐฑ ํ์์ฌํญ ๊ณต์ , ์๋ก๊ฐ์ ์ง๋ฌธ์ฌํญ & ๊ฑด์์ฌํญ ์ํต
- ์ปค๋ฐ ๋ฉ์์ง ๊ด๋ จ
- ์ปค๋ฐ ์ ๋ชฉ์ prefix: ์ปค๋ฐ ๋ฉ์์ง ํํ๋ก ํฉ๋๋ค.
- prefix์ ๋ชฉ๋ก๊ณผ ๊ฐ๊ฐ์ ์ฉ๋๋ ์ธํ ๋ฆฌ์ ์ด commit message ํ๋ฌ๊ทธ์ธ ์ฐธ๊ณ
- ์ปค๋ฐ ๋ด์ฉ์ ์์ธํ๊ฒ ์ ์ต๋๋ค. (์ปค๋ฐ ์ ๋ชฉ๊ณผ ๋ด์ฉ๋ง ๋ณด๋๋ผ๋ ์ฝ๋ ๋ด์ฉ์ด ํ์ ๊ฐ๋ฅํ ์ ๋๋ก)
โ๏ธํ๋ก์ ํธ ์ค๊ณ
1๏ธโฃํ๋ฉด ๋ฐ ํ๋ก ํธ์๋ ๊ธฐํ
ํ ๋ก๊ณ
์์ด์ด ํ๋ ์ ๋ฐ ๊ณตํต ์ปดํฌ๋ํธ ๋ถ๋ฅ
2๏ธโฃ ์๋ฒ ๋ฐ ๋ฐฑ์๋ ๊ธฐํ
ERD ์ค๊ณ
API ๋ช ์ธ
๐โ๏ธ๋ด๋น ํํธ
1. ํ ์ ์ฒด GitHub Organizations ์์ฑ ๋ฐ ๋ฐฑ์๋ ํ ๋ฆฌ๋ฉ
2. API : ์๋ฐ ๋๋ฉ์ธ API ๊ตฌํ
3. ๋ธ๋์น ๋ณดํธ ์ค์ ๋ฐ CI ํ๊ฒฝ ์ค์ , CD ์๋ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ ๊ตฌ์ถ
4. ํจํค์ง ๊ตฌ์กฐ ์ค๊ณ ๋ฐ ๋ฐฑ์๋ ๋ ํฌ์งํ ๋ฆฌ ๊ธฐ๋ณธ ํ ์ค๊ณ
์๋ฐ ์ ์ฒด ์กฐํ ๋ฐ ํํฐ ์กฐํ
์๋ฐ ๊ฐ๋ณ ์กฐํ
ํ๋ก์ ํธ ์ ์ฒด ์์ฐ ์์
๐คํ๊ณ
๐ซํ ํ๊ณ
- ์๋ฏธ : ํ์ ์ ๊ฒฝํ์น๊ฐ ์๋ฏธ์์๊ณ , ๊ธฐ์ ์ ์ผ๋ก ๋ฅํ๊ฒ ๋ค์ด๊ฐ๊ธฐ์๋ 2์ฃผ๋ผ๋ ์๊ฐ์ด ๋ถ์กฑํ๋ค.
- ๋ณ์ฃผ : ํ ํ๋ก์ ํธ ๋๋ถ์ ๋ฐฐ์ด ๊ฒ์ด ๋ง์๋ค.
- ์ฃผํ : ๋ฐฑ ๋ก์ง ์ง๋ ๊ฒ์ ํ ์ด๋ณด๋ค ์ค์ ๊ฐ์ ๋๋์ ๊ฐ๊น์ ๊ณ , ์ฐ๋ํ๋ฉด์ ์ด์ ๋ฐ์ํ์ ๋ ๋คํธ์ํฌ ๊ณต๋ถ๊ฐ ํ์ํ๋ค ๋๊ผ๋ค. ํ์๋ค์๊ฒ ๋ง์ ๋์์ด ๋ ๊ฑฐ ๊ฐ์์ ๋ฟ๋ฏํ๋ค.
- ๋ฒํ : ๋ฉ์ธํ์ด์ง ๋ถ๋์ด ์๊ฐ๋ณด๋ค ๋ง์์ ์ผ์ ์์ํ ๋ ๋ด๊ฐ ์ํํ ์ ์๋ ๋ถ๋์ธ๊ฐ ํ์ ํ๋๊ฒ ํ์ํ ๊ฒ ๊ฐ๋ค. ์ฝ๋๋ฆฌ๋ทฐ ์ด๋ฒ์ ๊ผผ๊ผผํ๊ฒ ์งํํด์ ๋์์ด ๋ง์ด ๋์๋ค.
- ์์ธ : ๋ฐฑ์๋๋ถ๋ค์ด ํ์กฐ์ ์ผ๋ก ๋ง์ํด์ฃผ์ ์, ํ์ ์์ ํธํด์ ๊ฐ์ฌํ๋ค. ๊ฐ์ด ์ํตํ ๋, ์๋ก ์์ฑ์ฑ๋์ ์์ฃผํ๋ ์๊ฐ์ ์ ํ๋ฉด ์ํต์ด ๋ ๋น ๋ฅผ ๊ฒ ๊ฐ์๋ค. ๋ ธ์ ๊ณต์ฉ๋ฌธ์ ๋ณด๋ค Jira๋ฅผ ์ฌ์ฉํด ๋ณด๊ณ ์ถ๋ค.(๋ ธ์ ๊ฐ๋ ์ฑ๋ณด๋ค ์ง๋ผ๊ฐ ๋ ๋์ ๊ฒ ๊ฐ์)
- ์์ธ : ์งง์ ์๊ฐ ๋์ ๋ง์ ๊ธฐ๋ฅ ๊ตฌํํด์ ์ฑ์ฅ ๋ง์ด ํจ. ํ ์คํธ ์ฝ๋. CI, ์ํ๋ฆฌํฐ ๋ฑ๋ฑ. ๊ทผ๋ฐ ์ํ๋ฆฌํฐ ๋ถ๋ถ์ด ์กฐ๊ธ ์์ฌ์ ๋ค. ๋ ๋ณด์ํด์ผ๊ฒ ๋ค.
- ํ์ : ํ๋ก ํธ๋ ํ์ ํ ์ ์์ด์ ์ข์๋ค. ๋ฐํํ ์์ ๋ณด๋ฉด์ ๋ ๊ณต๋ถํด์ผํ ๊ฒ ๊ฐ๋ค.
- ์คํ : ํ๋ฅญํ ํ์ ๋ง๋์ ์๊ด. ์ฝ๋ ๋ฆฌ๋ทฐ๊ฐ ๋๋ฌด ์ข์๊ณ , ์๋ฌ ํด๊ฒฐ์ ์ํด ๋ชจ๋๊ฐ ๋ ธ๋ ฅํ ์ ์ด ์ข์๋ค. ์ฃผํ๋๊ณผ ์์ ์ํต ์ข์๊ณ , ํ์๋๊ป์ ๋ฐ๋ก ๋ฌธ์ ํด๊ฒฐํด์ค ๊ฒ๋ ์ข์๋ค.
- ํ๊ด : ํ์ ํ๋ก์ธ์ค๋ฅผ ๋ง์ด ์๊ฒ ๋๋ค. ์ฝ๋๋ฅผ ๋จ๋จํ๊ฒ ์ง์ง ๋ชปํด, ๋ฆฌํฉํ ๋ง์ ์์ฃผ๋ก ํ ๊ฒ ๊ฐ๋ค.
๐ฅ๊ฐ์ธํ๊ณ
๐ฅฐ Liked : ์ข์๋ ์
๋จผ์ ํ๋ก ํธ์๋ ๋ถ๋ค๊ณผ ํ์ ํ ์ ์ด ๋งค์ฐ ์ข์๋ค. ๊ธฐ์กด์ ๋ฐฑ์๋ ์ฌ๋๋ค๊ณผ SSR ํ๋ก์ ํธ๋ง ํด๋ณด์๋๋ฐ, ํ๋ก ํธ์๋์ ์ฐ๋ํ์ฌ REST API ๋ง๋๋๊น, ํ๋ก์ ํธ์ ๋์์ธ์ด๋ ํ๋ก์ ํธ ๋ ์ด์์ ๊ฐ์ UI/UX ๋ถ๋ถ์ ์ ๊ฒฝ์ฐ์ง ์๊ณ , ์จ์ ํ ๋ฐฑ์๋ ๋ก์ง๊ณผ ํ์ด์ง ๋ท๋จ์์ ์ผ์ด๋๋ ์ผ๋ค์๋ง ์ ๊ฒฝ์ฐ๋ฉด ๋ผ์ ๋งค์ฐ ์ข์๋ค.
๋ํ ๋งค์ฌ ์ฃผ๋ํ๋ ์คํ์ผ์ด๋ค ๋ณด๋, ์ด๋ฒ์๋ ์์ฐ์ค๋ ํ๋ก ํธ, ๋ฐฑ ์ ์ฒด ํ์ ๋ฆฌ๋ฉ์ ํ๊ฒ ๋๋๋ฐ, ๋ชจ๋๋ค ์ ๋ฐ๋ผ์ ์ฃผ์ ์ ๊ฐ์ฌํ๋ค. ์๋จน์๋จนํ์ง ์๊ฒ ์ด๊ธฐ์ ํจ์คํธ์บ ํผ์ค ๋ฏธ์๋น๋ฉ์์ 9๋ช ์ ์ฒด ์คํ๋ผ์ธ ๋ฏธํ ๋ ํ๊ณ , ๋จํก๋ฐฉ๋ ๋ง๋ค์ด์ ์ด์ํ์๋๋ฐ, ํ์๋ค ๊ฒฉ๋ ค๋ ํ๊ณ ๋ํ ๋ฐฑ์์ ํ๊ธฐ ํ๋ ์๋ฌ๊ฐ ๋ฐ์ํ์์๋ ํด๊ฒฐํด์ค๋ฉด ํ๋ก ํธ์๋ ๋ถ๋ค์ด ์นญ์ฐฌ๋ ํด์ฃผ์๊ณ ํด์ ๋๋ฌด ๊ฐ์ฌํ๋ค.
๋ํ ์ฌ๋์์ ๋ฐฑ์๋ ์ ์ฒด ๋ฐ์ผ๋ฆฌ ์คํฌ๋ผ์ ํ๊ณ ๋์ค์ฝ๋์์ ํ๋ก ํธ, ๋ฐฑ ์ ์ฒด ํ์๋ฅผ ๋ฐ์ผ๋ฆฌ๋ก ํ๋ฉด์ ์๋ก ํ์๊ฒ ๋ชจ๋ฅด๋ ์ฌํญ์ด๋, ๊ถ๊ธํ ์ , ๊ฑด์ํ ์ ์ ์ ํด์ ์๊ฒฌ์ ์ฃผ๊ณ ๋ฐ์๋ ์ ์ด ๋๋ฌด ์ข์๋ค.
ZEP ์ ๋ชจ์ฌ์ ์ ๊ธฐ์ ์ธ ํ์์ ํ๋ฉด๊ณต์ ๋ฅผ ํตํ ์ด์๋ฅผ ํด๊ฒฐํ๋ ์ ๋ ๋งค์ฐ ์ข์๋ค.
์ผ๋์ ๊น์น๋ ํ๋ก ํธ์๋ ๋ฉํ ๋๊ป์ ๋ชจ๋ ํ์ค์ ๊ฐ์ฅ ํ๋ฉด ๊ตฌ์ฑ ๋ฐ ํ๋ก ํธ ๋ถ๋ถ์ด ๋ชจ๋ ํ์ค์์ ๊ฐ์ฅ ๋ฐ์ด๋๊ณ ์ํ๋ค๊ณ ๊ทน์ฐฌํด์ฃผ์ค ๋, ๊ฐ์ ํ์ผ๋ก์ ์ฐ๋ฆฌ ํ๋ก ํธ์๋ ํ์ด ๋ฟ๋ฏํ๊ณ , ์๋ก ๊ณ ์ํด์จ ๊ฑธ ์๊ธฐ๋ก ๋์ฑ ๋ฉ์ ธ ๋ณด์๋ค.
๋ฐฑ์๋ ๋ถ๋ค๊ป๋ ์ด๋ฒ์ ๋ง์ ๋์์ด ๋ ๊ฑฐ ๊ฐ์์ ์ข์๋ค. ๋ํ์ ์ผ๋ก ๋ชจ๋ ๋ถ๋ค์ด ์ฒดํฌ์คํ์ผ์ ์ง์ผ๊ฐ๋ฉฐ ๊นํ๋ธ์ PR ์ฌ๋ฆฌ๋ ๊ฑธ ์ฒ์ ํด๋ณด์ จ๋ค๋๋ฐ, ์ค๋ฌด์ฒ๋ผ ์ฝ๋ฉ ์ปจ๋ฒค์ ์ ์ง์ผ๊ฐ๋ฉฐ ํ ์ ์์ด์ ์ข์๋ค๊ณ ํ์์ผ๋ฉฐ, ํ ์คํธ ์ฝ๋๋ฅผ ์งค ๋๋ ๋ด ํ ์คํธ ์ฝ๋์ ์์์ด ๋ง์ ๋์์ด ๋ผ์ ๊ณ ๋ง๋ค๋ ์นญ์ฐฌ์ ๋ค์์ ๋ ํ์ฅ์ผ๋ก์ ๋ฟ๋ฏํ๊ณ ๋ณด๋ ์ฐผ๋ค.
๊ทธ๋์ ๋ฐฐ์ ๋ ๋ด์ฉ๋ค์ ๋ฏธ๋ํ๋ก์ ํธ ํ์ฅ์ด ๋ผ์ ์ด๋ฒ ํ๋ก์ ํธ์ ์ ๋ น์ฌ๋ผ ์ ์์ด์ ์ค์ค๋ก ์ฑ์ฅํ ๊ฒ ๊ฐ๊ณ ์ข์๋ค.
๐ Learned : ๋ฐฐ์ด ์
์ด๋ฒ ํ๋ก์ ํธ๋ฅผ ํ๋ฉด์ ๋ง์ ๊ฒ์ ๋ฐฐ์ ๋ค.
๋ณธ ์ด๋ฏธ์ง๋ ๋ฏธ๋ํ๋ก์ ํธ ๋ฐํํ๋ ๋ด๊ฐ ๋ฐํํ๋ ์ฅํ์ธ๋ฐ, 2์ฃผ๊ฐ ์์ฒญ ๋ชธ์ผ๋ก ์ฒด๋ํ๋ฉด์ ๋ฐฐ์ด ์ด์์ ๋ํด ๋ฐํ๋ฅผ ํ๋ค.
์ฒซ๋ฒ ์งธ๋ก CORS ์๋ฌ๋ฅผ ๋ง๋๋ฉด์ CORS ์ ๋ํด ๋ฐฐ์ ๋ค. ํ๋ก ํธ์๋์ ํ์ ์ ๊น์ง ๋คํธ์ํฌ๋ OS ๊ฐ์ CS๋ ๋ฉด์ ์ ์ํ ๊ณต๋ถ์๋๋ฐ, ์ค์ ์ฒ๋ผ ํ๋ก์ ํธ๋ฅผ ํด๋ณด๋, ์ด๊ฑด ๋ฉด์ ์ ์ํ ๊ณต๋ถ๊ฐ ์๋ ํ์ ์ ์ํ ๊ณต๋ถ์๋ค.
CORS ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ์คํ๋ง ์ํ๋ฆฌํฐ๋ฅผ ๋์ ํ๊ณ ๋ค์ CORS ์๋ฌ๊ฐ ๋ํ๋ฌ๋ค. ์ด๋ ๋์ค์ ํ๋ช ์ ์ ์์๋ํด์ ๋ฐฑ์๋ ๋ฌธ์ ๊ฐ ์๋ ํ๋ก ํธ์๋๋ ํด๋ผ์ด์ธํธ ๋ธ๋ผ์ฐ์ ๋ฌธ์ ์ธ์ค ์์๋ค. ํ์ง๋ง ์ ์์ ๋ํ ๋ถ๋ ํฌ๋กฌ ๋ธ๋ผ์ฐ์ ๋ฅผ ๋๊ณ ๋ค์ ํ๋ ์ ๋๋ค๋ ๊ฑธ ์์๊ณ , ์์ธ์ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง์ ์๊ฐ์ ํ ์ ํ๋ค.
๋ฌธ์ ๋ ์คํ๋ง ์ํ๋ฆฌํฐ์ ํํฐ ๊ธฐ๋ฅ ๋๋ฌธ์ด์๊ณ , ๊ทธ๋์ ์ค์ ํด๋ CORS๊ฐ ์ด๋ฏธ ์ํ๋ฆฌํฐ์์ ๊ฑธ๋ฌ์ ธ ์ ์ฉ๋์ง ์์๋ ๊ฒ์ด๋ค. ๊ทธ๋์ ์คํ๋ง ์ํ๋ฆฌํฐ Config ์์ฒด์์ CORS ์ค์ ์ ๋ค์ ํด์ค์ผํ๋ค.
์ผ๋์ ์ต์์ค ๋ฐฑ์๋ ๋ฉํ ๋๋ ๋ด๊ฐ ๋ง๋ฅ๋จ๋ฆฐ ๋ฌธ์ ์ ๋ํด์ ๋ง์ ๊ณต๊ฐ์ ํด์ฃผ์ จ๋ค. ์ค๋ฌด์์๋ ๊ฐ๋ ๊น๋จน๊ธฐ๋ ํ๋ค๊ณ ์ํ ์ด์ผ๊ธฐ๋ ํด์ฃผ์ จ๊ณ , ์ด๋ฌํ ์๋ฌ๊ฐ ๋ฐ์๋๋ ์๋ฆฌ์ ๋ํด์๋ ์์ฃผ ๊ฐ๋ตํ ์ค๋ช ํด์ฃผ์ จ๋ค.
๋ง์ง๋ง์ผ๋ก ๋คํธ์ํฌ์ ๋ํด์๋ ๋ง์ ๊ณต๋ถ๊ฐ ๋๋ค.
๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ํผ์์ ์ค์ ํ๊ณ ์ ๊ฒฝ ์ฐ๋ค๋ณด๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ ๋๋ ํผ์์ ํด๊ฒฐํด์ผ๋๋ค. ํ๋ก ํธ ์๋ ๋ฐฐํฌ ์ฌ์ดํธ์ ๋ฐฑ์๋ ์๋ฒ์ ์ฐ๋ํ์์ ๋ Mixed Content ์๋ฌ๊ฐ ๋จ๋ฉฐ ์๋ํ์ง ์์๋ค. ์์ฒญ์์ฒด๊ฐ HTTPS ์์ฒญ์ธ๋ฐ ๊ทธ ์์ API ์์ฒญ์ HTTP ์์ฒญ์ ํ๊ธฐ ๋๋ฌธ์ด๋ค. HTTP์์ HTTPS์ ์์ฒญ์ ๊ฐ๋ฅํด๋ ๊ทธ ๋ฐ๋๋ ๋ณด์ ๋ฌธ์ ๋๋ฌธ์ ๋ถ๊ฐ๋ฅํ๋ค.
์ด๋ฐ ๋คํธ์ํฌ ์ง์์ ํ์ฉํด์ ๋ฌธ์ ๋ฅผ ํ์
ํ๊ณ API ์์ฒญ์ HTTPS ์์ฒญ๋ ๊ฐ๋ฅํ๊ฒ๋ ์์ ํด์ผํ๋ค.
์ด๊ธฐ์ ์ด๋ฐ ๋ฐฐํฌ ํ์ดํ๋ผ์ธ์ ๊ฐ์ก์ง๋ง, ์๋ฌ๋ฅผ ๊ฒช๊ณ ๋์ ๋ค์๊ณผ ๊ฐ์ด ์์ ํ์๋ค.
HTTPS ํ๋กํ ์ฝ ํต์ ์ ํ๊ธฐ ์ํด์ ๋๋ฉ์ธ๊ณผ ๋ณด์์ธ SSL ์ ์ํด ์ธ์ฆ์๋ ์์ด์ผํ๊ณ , HTTPS ์ ์์ฒญ์ HTTP๋ก ๋ฆฌ๋ค์ด๋ ํธ ํด์ค์ผํ๋ ๋ก๋๋ฐธ๋ฐ์๋ ํ์ํ๋ค๋ ๊ฑธ ๋ฐฐ์ ๋ค.
AWS ์ Route53, Certificate Manager, Application Load Balancer ์ ๋ํด ๋ฐฐ์ธ ์ ์์๋ค.
๐ชซ Lacked : ๋ถ์กฑํ๋ ์
์ฒ์ ํ๋ก ํธ์๋์ ํจ๊ปํ๋ ํ๋ก์ ํธ๋ผ ๋ฐฑ๋ก์ง ์ง๋ ๋ฐ ๋ณด๋ค ๋คํธ์ํฌ ์ด์๋ฅผ ๋ ๋ง์ด ๊ฒช์๋ค. ์๋ฐ ๋๋ฉ์ธ์ ์ดํ๋ง์ ๋ชจ๋ API๋ฅผ ๋ง๋ค์ ๋๋ก ์ํ๋ค๊ณ ์๊ฐ์ด ๋ค์์ง๋ง ๋คํธ์ํฌ ์ด์๋ ์ ํ๋ก์ ํธ์์ ๋ชจ๋ ๊ฒช์ด๋ณด์ง ๋ชปํ ์๋ก์ด ์ด์๋ผ ๋ง์ด ๋ถ์กฑํ๊ณ ๋ ๊ณต๋ถ๊ฐ ํ์ํ๋ค๊ณ ๋๊ผ๋ค.
๊ทธ๋ฆฌ๊ณ ์ค๋ ฅ์ด ์ ์ ๋๋ ๊ฒ ์ค์ค๋ก ์ฒด๊ฐ์ด ๋๋, ๋ฐฑ ๋ก์ง์ง๋ ๊ฒ๋ ๋์ฑ ํ์ ์ค๋ฌด์๋ค์ด ์ง๋ ๊ฒ๊ณผ ๋น์ทํ๊ฒ ์ง๊ณ ์ถ์ ์์ฌ์ด ์๊ฒผ๋ค. ํนํ ๋ ๊ฒ์ ๋ด๋น์ด์๋๋ฐ, ์ผ๋์ ๋ฐฑ์ํธ ๋ฉํ ๋ ๊ป์ ๊ฒ์์ DB๋ฅผ ์กฐํํ๋๊ฒ ์๋ ๋ค๋ฅธ ํ๋ ์์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ ๊ฒ์ํ๋ ๋์ฉ๋ ๋ฐ์ดํฐ์ ๋ํ ๊ฑฑ์ ์ ๋ง์ด ํ ํ์๊ฐ ์๋ค๊ณ ํ์ จ๋ค. ๊ฒ์์ ๋๋ฆฌ ์ฐ์ด๋๊ฒ ์๋ผ์คํฑ ์์น๋ก ์๊ณ ์๋๋ฐ, ๋ฉํ ๋๊ป์ ์ด๊ฑธ ๋ง์ํ์ ์ง ๋ชจ๋ฅด๊ฒ ์ง๋ง, ์๋ผ์คํฑ ์์น, ์นดํ์นด, NoSQL ๊ฐ์ ๊ธฐ์ ์คํ์ ๋ฐฐ์ฐ๊ณ ์ถ๋ค๋ ์๊ฐ์ด ๋ค์๋ค.
ํ๋ก ํธ์๋์์ API ๋ช ์ธ์ ๋ํ ์์ ์ด ์์ ๋ ๋ฐ๋ก๋ฐ๋ก ์ ์ฉ๋์ง ๋ชปํ ์ ์ด ์์ฌ์ด ์ ์ผ๋ก ๋ฝ์๋ค. ์งง์์๊ฐ ๋์ ๋ง์ ๊ฑธ ํด๋ด์ผํด์ ์ ๊ด๋ฆฌ ๋์ง ๋ชปํ ๊ฒ ์์ฝ๊ธด ํ๋ค. ํ์๋ค์๊ฒ๋ ์์ ํ ๊ฐ์ ๋ด๋น API ์์ ํ๋ผ๊ณ ๋ง์ ํ์์ง๋ง, ์ ๋ถ ํ์ธํ์ง ๋ชปํ๊ธฐ๋ ํ๋ค. ๋ค์ ํ๋ก์ ํธ๋ Jira๋ฅผ ์ฌ์ฉํ์ฌ API๋ ํ์ ๊ด๋ จํ ๋ถ๋ถ์ ๋์ฑ ๋ง์ด ์ ๊ฒฝ์จ์ผ๊ฒ ๋ค๋ ๊ฑธ ๋๊ผ๋ค.
๐ฏ๏ธ Longed for : ๋ฐ๋ผ๋ ์
์ด๊ธฐ RFP ์์ ํ๊ฐ ํญ๋ชฉ ์ค ์ ๋งคํ ํญ๋ชฉ์ด ์์ด ํ๋ก์ ํธ ์ง๋๋ฅผ ๋๊ฐ๋ ๋ฐ ์ ๋ฅผ ๋จน์๋ค. ๋๋ ๋ก์ง์ ์ง๋๋ฐ ํ๋ก์ ํธ ์์ ํ 5์ผ์ด ์ง๋์์ผ ์์ํ ์ ์์๋ค. ์๊ตฌ์ฌํญ ์ ์์๊ฐ ๋ช ํํ๋ค๋ฉด ๋น ๋ฅด๊ณ ์ ํํ ์ค๊ณ๋ฅผ ํตํด ์ง๋๊ฐ ์ฐฉ์ฐฉ์ฐฉ ๋๊ฐ์ํ ๋ฐ, ์๊ตฌ์ํญ์ด ๋ถ๋ถ๋ช ํ์ฌ ์ค๊ณ๊ฐ ๋ฐ๋ ์๋ ์๊ธฐ์ ์ง๋๋ฅผ ๋ชป๋๊ฐ๊ณ ์ฃผ๋ง ์ดํ์ด ์์ด์ง ์ฌ์ค์ด ๋๋ฌด ์ฌํ๋ค.
๋ํ ํจ์คํธ ์บ ํผ์ค X ์ผ๋์ ํ
ํฌ์ค์ฟจ์ ํ๋ฉด์, ๋ชจ๋ ์กฐ์ง์์ ๋ฆฌ๋๋ฅผ ๋งก์๋ค. ์ด๋ฒ ๋ฏธ๋ํ๋ก์ ํธ๋ ํนํ 2์ฃผ๋ผ๋ ์งง์ ์๊ฐ( 5์ผ์ด ์ฌ๋ผ์ ธ ์ฌ์ค์ ์ผ์ฃผ์ผ) ๋์ ํ๋ก์ ํธ๋ฅผ ๋๋ด์ผ ํ๊ธฐ์ ์ผ๋์ ํ
ํฌ์ค์ฟจ์ ํ๋ฉฐ ์ฒ์์ผ๋ก ๋ฐค์ ์๋ค. ๋ง๋ฐ์ง์ ๋ฆฌ๋๋ฏธ๋ ์์ฑํ๊ณ , API ๋ช
์ธ์๋ ์ฌ์ฐจ ํ์ธํ๊ณ , ๋ฐํ ์๋ฃ๋ ๋ง๋ค๊ณ , ๋ฐํ ์ค๋น๋ ํด์ผํ๋๋ฐ ํ์ฅ์ผ๋ก์ ๋ค๋ฅธ ๋ถ๋ค ์๋ฌ๋ฅผ ๊ฐ์ด ํด๊ฒฐํด ์ฃผ๋๋ผ ๋ด๊ฒ์ ์จ์ ํ ์ง์คํ์ง ๋ชปํด ์กฐ๊ธ ์์ฌ์ ๋ค.
๊ทธ๋ ๋ค๊ณ ํํ๊ฐ ๋จ๋ ๊ฑด ์๋๋ค. ๋ฉํ ๋์ด ๋ฐํ๋ ์ํ๋ค๊ณ ์นญ์ฐฌํด์ฃผ์๊ณ , ํ๋ก ํธ์๋ ๋ถ๋ค๋ํ ์ํ๋ค๊ณ ์นญ์ฐฌํด ์ฃผ์
จ์ง๋ง, ์ฌ๋์ ์์ฌ์ ๋๋ฌผ์ด๋ผ ๋ ์ํ๊ณ ์ถ์๋ค. ใ
ใ
ํ์ด๋ ํ๋ก์ ํธ๋ ๋ฐฑ์๋ ๋ก์ง ๋ถ๋ถ์์ ๋์ฑ ์ค๋ฌด ์ฃผ๋์ด ๊ฐ๋ฐ์ ๋ต๊ฒ ์ฝ๋๋ฅผ ์ง๋ ๊ฒ ๋ชฉํ๊ฐ ๋๋ค.
๋๊ธ