๋ฐฐํฌ ์ฌ์ดํธ ๋งํฌ (์๋ฒ์ค๋จ) :
https://devnity.xyz
๊ฐ๋ฐ์๋ฒ API ๋ฌธ์ (RestDocs)๋ฐฐํฌ์๋ฒ API ๋ฌธ์ (RestDocs)- ํ๋ก์ ํธ Wiki
- ํ๋ก์ ํธ ๋ ธ์
- ํ๋ก ํธ์๋ Repo
Jerry | Hanjo | Mark | Dave |
์๊ณ ๋ฆฌ์ฆ๋งจ | ๋ฐ๋ธ์ต์ค๋งจ | ๊ฐ์ฒด์งํฅ๋งจ | ๋ฆฌ๋ทฐ์ด |
๋ฐฑ์๋๋ ์ด๋ ๊ฒ ํ์ ํด์!
- Git Flow ์ ๋ต์ ์ฌ์ฉํฉ๋๋ค.
- ๊ธฐ์กด Git Flow ์ ๋ต์ ๊ฐ์ํํด 4๊ฐ์ง ๋ธ๋์น๋ฅผ ์ฌ์ฉํฉ๋๋ค.
main
: ์ต์ข ๋ฐฐํฌ ์๋ฒ ๋ธ๋์นdevelop
: ๊ฐ๋ฐ ์๋ฒ ๋ธ๋์นfeature
: ๊ธฐ๋ฅ ๊ตฌํ ๋ธ๋์นhotfix
: ํซํฝ์ค ๋ธ๋์น- 1Task == 1Issue == 1PR ๊ท์น์ ๋ฐ๋์ต๋๋ค.
- ์ ํฌ๋ ์ฝ๋ ํ์ง๊ณผ ์ปจ๋ฒค์ ํต์ผ์ ์ํด ์ง์์ ์ธ ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์งํฅํ์์ต๋๋ค.
- PR์ด ์์ฑ๋๋ฉด ๋๊ตฐ๊ฐ ํ๋ช ์ด ์ฝ๋๋ฆฌ๋ทฐ๋ฅผ ์์ฑํด์ผ๋ง merge๊ฐ ์น์ธ๋ฉ๋๋ค.
- 2์ฃผ๊ฐ ์ด 4๋ฒ์ ์ด๋จ๊ธฐ ์คํ๋ฆฐํธ๋ฅผ ์งํํ์ต๋๋ค. (3~4์ผ ๊ฐ๊ฒฉ)
-
์คํ๋ฆฐํธ ์์ ์ ์์
ํ ํ์คํฌ๋ฅผ ๋ชจ๋
Issue
๋ก ๋ฑ๋กํ ํ,Milestone
์ ์ค์ ํ์ฌ ์งํ ๋ชฉํ๋ฅผ ์ ํ์ต๋๋ค. (์ฐธ๊ณ ) -
์คํ๋ฆฐํธ ๊ธฐ๊ฐ์ Github์
Project
์นธ๋ฐ๋ณด๋๋ฅผ ํ์ฉํ์ฌ ๊ฐ์ธ ํ์คํฌ ์งํํํฉ์ ๊ณต์ ํ์์ต๋๋ค. (์ฐธ๊ณ ) - ์คํ๋ฆฐํธ๊ฐ ์ข ๋ฃ๋๋ฉด ๊ฐ๋จ ํ๊ณ ๋ก์ ์์ฑํ์์ต๋๋ค. (์ฐธ๊ณ )
๋ฐ๋ธ์ฝ์ค 1๊ธฐ ๋ฐฑ์๋์ ํ๋ก ํธ์๋ ์๊ฐ์๋ค๊ฐ ์ํต์ ๋ถํธํจ์ ํด์ํ๊ณ ์ ๋ง๋ค์ด์ก์ต๋๋ค.
๋ฐ๋ธ์ฝ์ค ๊ณผ์ ์ด๋ฐ์ ํ์ฉ๋ ์๊ธฐ์๊ฐ๋ฅผ ์ ๋ ๊ธฐ๋ฅ๊ณผ, ๊ฐ ์๊ฐ์์ ์์น๋ฅผ ํ์ ํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
๋ํ ๋งต API๋ฅผ ํ์ฉํ ๋ชจ๊ฐ์ฝ ๋ชจ์ง, ์คํฐ๋๋ ๋์๋ฆฌ, ํ ์ดํ๋ก์ ํธ๋ฅผ ๋ชจ์งํ ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค.
ํญ๋ชฉ์ ํด๋ฆญํ์ฌ ์์ธํ ๋ณผ ์ ์์ต๋๋ค.
๊ด๋ฆฌ์
์ด๋ ๋งํฌ ์์ฑ |
- ๋ฐ๋ธ์ฝ์ค ์๊ฐ์๋ง์ด ํ์๊ฐ์ ์ด ๊ฐ๋ฅํด์ผ ํ๋ฏ๋ก, ๊ด๋ฆฌ์๋ ์ด๋๋งํฌ๋ฅผ ์์ฑํฉ๋๋ค.
- ๊ฐ ์ด๋๋งํฌ๋ ์ ์ผํ๋ฉฐ ๋ง๋ฃ ๊ธฐ๊ฐ์ ์ค์ ํ ์ ์์ต๋๋ค.
- ๋ง๋ฃ๋ ์ด๋๋งํฌ๋ ์ค์ผ์ค๋ฌ๋ฅผ ํตํด DB์์ ์๋ ์ญ์ ๋ฉ๋๋ค.
ํ์๊ฐ์ & ๋ก๊ทธ์ธ
ํ์๊ฐ์ |
- ์ ๋ฌ๋ฐ์ ์ด๋๋งํฌ๋ฅผ ํตํด ์ ํจ์ฑ ๊ฒ์ฆ ํ ํ์๊ฐ์ ์ ์งํํฉ๋๋ค.
- ์ด๋๋งํฌ์ ๋ฐ๋ผ ์ฝ์ค, ๊ธฐ์, ์ญํ ์ ๋ฏธ๋ฆฌ ์ ํด์ ธ ์์ต๋๋ค.
๋ก๊ทธ์ธ |
- ์ด๋ฉ์ผ๊ณผ ๋น๋ฐ๋ฒํธ๋ฅผ ์ ๋ ฅํด ๋ก๊ทธ์ธํฉ๋๋ค.
- ์ธ์ฆ๋ฐฉ์์ JWT ๋ฐฉ์์ ์ฌ์ฉํฉ๋๋ค.
๋ฉ์ธํ์ด์ง & ๋ง์ดํ์ด์ง
๋ฉ์ธํ์ด์ง |
- ๋ฉ์ธํ์ด์ง์์๋ ๊ฐ ์๋น์ค์ ์์ฝ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
๋ง์ดํ์ด์ง - ํ๋กํ ์ค์ |
- ์์ ์ ๋ํ ์ ๋ณด์ ์๊ธฐ์๊ฐ๋ฅผ ์์ฑํฉ๋๋ค.
- ๋งํฌ๋ค์ด์ ์ง์ํ๋ฉฐ, ์ด๋ฏธ์ง ํ์ผ์ ์ ๋ก๋ํ ์ ์์ต๋๋ค.
- ์์ ์ ์์น ์ ๋ณด๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
๋ง์ดํ์ด์ง - ๋ด ๋ชจ์ ๊ด๋ฆฌ |
- ๋ด๊ฐ ์ ์ฒญํ ๋ชจ์๊ณผ ๋ฑ๋กํ ๋ชจ์์ ๋ชจ์๋ณผ ์ ์์ต๋๋ค.
๋ฐ๋ฅ์ด ์๊ฐ
๊ฒ์ ๋ฐ ํํฐ๋ง |
- ์ฌ์ฉ์์ ์ด๋ฆ์ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ์ฝ์ค, ๊ธฐ์, ์ญํ ๋ณ ํํฐ๋ง์ด ๊ฐ๋ฅํฉ๋๋ค.
- ๋ฌดํ์คํฌ๋กค์ ์ง์ํ๋ฉฐ, ์ปค์ ํ์ด์ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
์กฐํ |
- ํน์ ์ฌ์ฉ์์๊ฒ ์ข์์๋ฅผ ๋๋ฅผ ์ ์์ต๋๋ค.
- ๋๊ธ ๋ฐ ๋๋๊ธ์ ์์ฑ, ์์ , ์ญ์ ํ ์ ์์ต๋๋ค.
๋ฐ๋ฅ์ฌ์ง๋
์กฐํ ๋ฐ ํํฐ๋ง |
- ๋ค๋ฅธ ์ฌ์ฉ์๊ฐ ๋ฑ๋กํ ์์น๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ์ฝ์ค, ๊ธฐ์๋ณ ํํฐ๋ง์ด ๊ฐ๋ฅํฉ๋๋ค.
๋ชจ์ง ๊ฒ์ํ
๊ฒ์ ๋ฐ ํํฐ๋ง |
- ๊ฒ์๊ธ ์ ๋ชฉ์ผ๋ก ๊ฒ์์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ด ์ธ๊ฐ์ง(์คํฐ๋, ๋์๋ฆฌ, ํ๋ก์ ํธ) ์นดํ ๊ณ ๋ฆฌ๊ฐ ์กด์ฌํ๋ฉฐ, ๊ฐ ์นดํ ๊ณ ๋ฆฌ๋ณ๋ก ๊ฒ์๊ธ์ ์กฐํํ ์ ์์ต๋๋ค.
- ๋ชจ์ง์ค์ธ ๊ฒ์๊ธ์ด ์ต์๋จ์ ์์นํฉ๋๋ค.
- ๋ฌดํ์คํฌ๋กค์ ์ง์ํ๋ฉฐ, ์ปค์ ํ์ด์ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
๋ชจ์ง ๋ฑ๋ก |
- ์นดํ ๊ณ ๋ฆฌ๋ฅผ ์ ํํ์ฌ ๋ชจ์ง ๊ฒ์๊ธ์ ๋ฑ๋กํ ์ ์์ต๋๋ค.
- ๋ฑ๋ก์ Slack์ผ๋ก ๋ชจ์ง ํ๋ณด ์๋์ด ์ ์ก๋ฉ๋๋ค.
- ๋ง๊ฐ๋ ์ง๊ฐ ์ง๋ ๋ชจ์ง์ ์๋์ผ๋ก ๋ง๊ฐ์ฒ๋ฆฌ๋ฉ๋๋ค.
์์ธ์กฐํ ๋ฐ ์ ์ฒญ |
- ๋ชจ์ง์ค์ธ ์ํ์ ๊ฒ์๊ธ์ ์ ์ฒญ,์ทจ์ํ ์ ์์ต๋๋ค.
- ์ธ์์ด ๊ฐ๋ ์ฐจ๊ฑฐ๋, ๋ฑ๋ก์๊ฐ ๋ง๊ฐํ๋ ๊ฒฝ์ฐ ์ ์ฒญํ ์ ์์ต๋๋ค.
- ๋๊ธ ๋ฐ ๋๋๊ธ์ ์์ฑ, ์์ , ์ญ์ ํ ์ ์์ต๋๋ค.
๋งต๊ฐ์ฝ
๊ฒ์ ๋ฐ ํํฐ๋ง |
- ํน์ ์ฃผ์๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค.
- ์ฐ์ธก ์๋จ ๋ฒํผ์ ๋๋ฌ ๋์ ์์น๋ก ํ๋ฉด์ ์ ํํ ์ ์์ต๋๋ค.
- ๋ค๋ฅธ ์ฌ์ฉ์์ ์์น ๋ ธ์ถ์ ์ ํํ ์ ์์ต๋๋ค.
- ์งํ์ค์ธ ๋งต๊ฐ์ฝ ๋ ธ์ถ์ ์ ํํ ์ ์์ต๋๋ค.
- ์ง์ ๊ตฌํํ ์ขํ ์๊ณ ๋ฆฌ์ฆ์ ํตํด ์ฌ์ฉ์์ ํ๋ฉด ๋ฒ์์ ํฌํจ๋ ๋ฐ์ดํฐ๋ง ์์ฒญ๋ฉ๋๋ค.
๋ฑ๋ก |
- ์์น๋ฅผ ์ ์ ํ๊ณ ๋งต๊ฐ์ฝ๋ฅผ ๋ฑ๋กํฉ๋๋ค.
- ๋ง๊ฐ๋ ์ง๊ฐ ์ง๋ ๋งต๊ฐ์ฝ์ ์๋์ผ๋ก ๋ง๊ฐ์ฒ๋ฆฌ๋ฉ๋๋ค.
์์ธ์กฐํ ๋ฐ ์ ์ฒญ |
- ํด๋น ๋งต๊ฐ์ฝ ์ ๋ณด๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
- ํด๋น ๋งต๊ฐ์ฝ์ ์ ์ฒญ,์ทจ์๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ์ธ์์ด ๊ฐ๋์ฐจ๊ฑฐ๋, ๋ฑ๋ก์๊ฐ ๋ง๊ฐํ ๊ฒฝ์ฐ ์ ์ฒญํ ์ ์์ต๋๋ค.
- Java 11
- Gradle 7.2
- Spring Boot 2.6.0
- Spring Data JPA, QueryDSL
- Spring Security, jwt
- JUnti5, RestDocs, JACOCO
- H2
- MySQL 5.7
- AWS - EC2 / RDS / S3 / CloudFront
- Github Actions
- Nginx
- Docker, docker-compose
- Slack, Codecov
- JACOCO + Codecov๋ฅผ ์ฌ์ฉํด PR์ ์์ฑํ ๋๋ง๋ค ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ธก์ ํฉ๋๋ค.
- ๊ฐ๋ฐ์๋ฒ์ ๋ฐฐํฌ์๋ฒ๋ฅผ ๋ถ๋ฆฌํ์ฌ ์ต์ข ๋ฐฐํฌ ์ ๊ธฐ๋ฅ ๊ฒ์ฆ๊ณผ locust๋ฅผ ํตํด ๋ถํํ ์คํธ๋ฅผ ์งํํฉ๋๋ค.
- ํ์ ์ ๊ฐ๋ฐ์๋ฒ์์๋ ๋ฐ๋์ RestDocs๋ฅผ ์์ฑํ์ฌ ํ๋ก ํธ์๋์๊ฒ ๊ฒ์ฆ๋ API ๋ช ์ธ๋ฅผ ์ ๊ณตํฉ๋๋ค.
- nginx์ docker-compose๋ฅผ ์ฌ์ฉํ blue-green ๋ฐฉ์์ผ๋ก ๋ฌด์ค๋จ ๋ฐฐํฌ๋ฅผ ์ง์ํฉ๋๋ค.
- CloudFront๋ฅผ ์ฌ์ฉํด ์ ์ ๋ฆฌ์์ค ์ ๊ณต์ ์บ์ฑ๊ณผ HTTP/2๋ฅผ ์ง์ํฉ๋๋ค.