๋ํ์ IT๊ฒฝ์ํํ ํ์์ฆ 31๊ธฐ ๋ฐ์
ํ๋ก์ ํธ 1์กฐ Zaply ๋ฐฑ์๋ ๋ ํฌ์งํ ๋ฆฌ
์ ์ฑํธ | ์ผ์ง์ |
---|---|
@SeongHo5356 | @yumzen |
Category | Technology |
---|---|
Language | Java 21 |
Framework | Spring Boot 3.3.10 |
Databases | Postgresql, Redis |
Authentication | JWT, Spring Security, OAuth2.0 |
Development Tools | Lombok |
API Documentation | Swagger UI (SpringDoc) |
Storage | AWS S3, Naver Object Storage |
Infrastructure | Terraform, NCP Server, HashiCorp Vault |
Build Tools | Gradle |
Monitoring | Prometheus, Grafana, Loki, Promtail |

https://api.zapply.site/swagger-ui/index.html
- Java 21์ ์ต์ ์ธ์ด ๊ธฐ๋ฅ(์: ํจํด ๋งค์นญ, ๋ ์ฝ๋, ๊ฐ์ ์ค๋ ๋ ๋ฑ)์ ์ ๊ณตํ์ฌ ์ฝ๋์ ๊ฐ๋ ์ฑ๊ณผ ์ ์ง๋ณด์์ฑ์ ๋์ด๋ฉฐ, ๊ฐ๋ฐ ์์ฐ์ฑ์ ํฅ์์ํต๋๋ค.
- ์ต์ ๋ฒ์ ์ ์๋ฐ๋ ์ฑ๋ฅ ์ต์ ํ์ ํจ์จ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ ๊ธฐ๋ฅ์ด ๊ฐ์ ๋์ด, ๋๊ท๋ชจ ์ ํ๋ฆฌ์ผ์ด์ ์์๋ ์์ ์ ์ด๊ณ ๋น ๋ฅธ ์คํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์ฅ๊ธฐ ์ง์ ๋ฒ์ ์ด๋ฏ๋ก, ์์ผ๋ก์ ์ ์ง๋ณด์์ ์์ ์ฑ ์ธก๋ฉด์์ ์ ๋ขฐํ ์ ์๋ ๊ธฐ๋ฐ์ ์ ๊ณตํฉ๋๋ค.
- ์ต์ ๋ฒ์ ์ Spring Boot๋ ์คํ๋ง ํ๋ ์์ํฌ ๋ฐ ๊ด๋ จ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์์ ํธํ์ฑ์ด ๋ฐ์ด๋๋ฉฐ, ๋ณด์ ํจ์น์ ์ต์ ๊ธฐ๋ฅ๋ค์ด ๋ฐ์๋์ด ์์ต๋๋ค.
- ์๋ ์ค์ ๊ธฐ๋ฅ๊ณผ ๋ค์ํ ๋ด์ฅ ๊ธฐ๋ฅ ๋๋ถ์ ๋ณต์กํ ์ค์ ์์ด๋ ๋น ๋ฅด๊ฒ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ ์ ์์ผ๋ฉฐ, ๋ง์ดํฌ๋ก์๋น์ค ์ํคํ ์ฒ ๊ตฌ์ถ์ ์ ๋ฆฌํฉ๋๋ค.
- RESTful API, ๋ฐ์ดํฐ ์ก์ธ์ค, ๋ณด์ ๋ฑ์ ๊ธฐ๋ฅ์ด ํตํฉ๋์ด ์์ด ๊ฐ๋ฐ์๊ฐ ๋น์ฆ๋์ค ๋ก์ง์ ์ง์คํ ์ ์๋ ํ๊ฒฝ์ ์ ๊ณตํฉ๋๋ค.
- Spring Data JPA๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ธํฐ๋์ ์ ๋จ์ํํ๊ณ , ๋ถํ์ํ ๋ณด์ผ๋ฌํ๋ ์ดํธ ์ฝ๋๋ฅผ ์ค์ฌ ๊ฐ๋ฐ ํจ์จ์ฑ์ ๋์ฌ์ค๋๋ค.
- PostgreSQL๋ ๋ณต์กํ ์ฟผ๋ฆฌ ์ฒ๋ฆฌ์ ๋๊ท๋ชจ ๋ฐ์ดํฐ์ ๊ด๋ฆฌ์ ๊ฐ์ ์ ๊ฐ์ง๋๋ค.
- Docker Compose๋ ์ฌ๋ฌ ์ปจํ ์ด๋๋ฅผ ์์ฝ๊ฒ ๊ตฌ์ฑํ๊ณ ๊ด๋ฆฌํ ์ ์๋๋ก ๋์์ฃผ์ด, ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ ๊ณผ์ ์์ ํ๊ฒฝ ์ค์ ์ ๊ฐ์ํํฉ๋๋ค.
- NCP(๋ค์ด๋ฒ ํด๋ผ์ฐ๋ ํ๋ซํผ)๋ CLOVA Studio ๋ฐ ์๋ฒ ์ธํ๋ผ ํธ์คํ ์ ํ์ฉ๋์ด, ์์ ์ ์ด๊ณ ์์ ํ ํด๋ผ์ฐ๋ ํ๊ฒฝ์ ์ ๊ณตํจ์ผ๋ก์จ ํ๋ก์ ํธ์ ์ด์ ํจ์จ์ฑ์ ๋์ ๋๋ค.
- ๋ฏผ๊ฐํ ๋ฐ์ดํฐ(ํ๋ซํผ ๋ณ ์ฌ์ฉ์ accessToken ๋ฑ)๋ฅผ ์์ ํ๊ฒ ๊ด๋ฆฌํ๊ณ , ๋ณด์์ฑ์ ๊ฐํํ ์ ์์ต๋๋ค.
- ์ธํ๋ผ๋ฅผ ์ฝ๋๋ก ๊ด๋ฆฌํ ์ ์๊ฒ ํด ์ฃผ์ด, ๋ฐ๋ณต ๊ฐ๋ฅํ๊ณ ์ผ๊ด๋ ์ธํ๋ผ ๊ตฌ์ถ ๋ฐ ์ ์ง๋ณด์๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- Promtail โ Loki: ์ ํ๋ฆฌ์ผ์ด์ ยท์์คํ ๋ก๊ทธ๋ฅผ ์์งยท๋ผ๋ฒจ๋งํด Loki์ ์ ์ก โ ๋๋ ๋ก๊ทธ๋ฅผ ํจ์จ์ ์ผ๋ก ์ธ๋ฑ์ฑยท๊ฒ์ํฉ๋๋ค.
- Prometheus: Pull ๋ฐฉ์์ผ๋ก API ์๋ต ์๊ฐยทCPUยท๋ฉ๋ชจ๋ฆฌ ๊ฐ์ ์๊ณ์ด ๋ฉํธ๋ฆญ์ ์คํฌ๋ฉยท์ ์ฅํฉ๋๋ค.
- Grafana: LokiยทPrometheus ๋ฐ์ดํฐ๋ฅผ ๋์๋ณด๋๋ก ์๊ฐํํฉ๋๋ค.
- JavaScript๋ก ์ค์ ์ฌ์ฉ์ ํ๋ฆ(๋ก๊ทธ์ธโAPI ํธ์ถโ์ค์ผ์ค๋ง)์ ์คํฌ๋ฆฝํธํํด REST ์ฑ๋ฅ์ ์ธก์ ํฉ๋๋ค.
vus
,stages
,thresholds
๋ฑ ์ต์ ์ผ๋ก ๋์ ์ฌ์ฉ์ ์ยท์คํ์ดํฌยท์ง์ ํ ์คํธ๋ฅผ ์ปค์คํฐ๋ง์ด์งํ๋ฉด์ ํ ์คํธํฉ๋๋ค.- ์ฝ์ยทJSON ์ถ๋ ฅ์ผ๋ก ์๋ต ์๊ฐยท์ฒ๋ฆฌ๋ยท์๋ฌ์จ ๋ฉํธ๋ฆญ์ ์์งํ๊ณ Grafana์ ์ฐ๋ํด ๊ฒฐ๊ณผ ์๊ฐํํฉ๋๋ค.
commit convention
#์ด์๋ฒํธ conventionType: ๊ตฌํํ ๋ด์ฉ
convention Type
convention type | description |
---|---|
feat |
์๋ก์ด ๊ธฐ๋ฅ ๊ตฌํ |
chore |
๋ถ์์ ์ธ ์ฝ๋ ์์ ๋ฐ ๊ธฐํ ๋ณ๊ฒฝ์ฌํญ |
docs |
๋ฌธ์ ์ถ๊ฐ ๋ฐ ์์ , ์ญ์ |
fix |
๋ฒ๊ทธ ์์ |
test |
ํ ์คํธ ์ฝ๋ ์ถ๊ฐ ๋ฐ ์์ , ์ญ์ |
refactor |
์ฝ๋ ๋ฆฌํฉํ ๋ง |
์ปจ๋ฒค์ ๋ช /#์ด์๋ฒํธ-์์ ๋ด์ฉ
- pull request๋ฅผ ํตํด develop branch์ merge ํ, branch delete
- ๋ถ๋์ดํ๊ฒ develop branch์ ์ง์ commit ํด์ผ ํ ๊ฒฝ์ฐ,
!hotfix:
์ฌ์ฉ
src/
โโโ main/
โ โโโ domain/
โ โ โโโ entity/
โ โ โโโ controller/
โ โ โโโ service/
โ โ โโโ repository/
โ โ โโโ dto/
โโโ request/
โโโ response/
โ โโโ global/
โ โ โโโ apiPayload/
โ โ โโโ config/
โ โ โโโ security/
๊ฐ ํ๋ซํผ(Instagram, Facebook, Threads) API์๋ ๊ณ์ /์๊ฐ ๋น ๋ฐํ ๊ฐ๋ฅํ ๊ฒ์๋ฌผ ์์ ์ ํ์ด ์์ด, ๋ถํ ํ ์คํธ์๋ ์ ์ฝ์ด ์กด์ฌํฉ๋๋ค. ์ด์ ๋ฐ๋ผ ์ ํฌ๋ ์ฆ์ ๋ฐํ์ด ์๋ "์์ฝ ๋ฐํ" API๋ฅผ ํ์ฉํ ๋ถํ ์๋ฎฌ๋ ์ด์ ๋ฐฉ์์ ๊ตฌ์ฑํ์์ต๋๋ค.
- ํ์ฌ ์์คํ
์ ๋์ ์ฝ
1,000๊ฑด
์์ค๊น์ง๋ ์์ ์ ์ผ๋ก ์์ฒญ์ ์ฒ๋ฆฌํ ์ ์๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์๋๋ฆฌ์ค โข์ฒ๋ผ ์ฌ์ฉ์ ์๊ฐ ์ ์ฐจ ์ฆ๊ฐํ๋ ์ํฉ์์๋ ํ๊ท ์๋ต ์๊ฐ์1.94์ด
, ์ต๋ ์๋ต ์๊ฐ์7.88์ด
๋ก, ๋๋ถ๋ถ์ ์์ฒญ์ด ์ ์์ ์ผ๋ก ์ฒ๋ฆฌ๋์์ต๋๋ค. - ํ์ง๋ง ์๋๋ฆฌ์ค โก์ฒ๋ผ
2,000๋ช
์ ๋์ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ํ๊ท ์๋ต ์๊ฐ์ด7.74์ด
, ์ต๋18.28์ด
๊น์ง ์ฆ๊ฐํ๋ฉด์ ์๋ต ์ง์ฐ์ด ๋ฐ์ํ์์ต๋๋ค. ์ด ๊ฒฐ๊ณผ๋ ๋๊ท๋ชจ ํธ๋ํฝ์ ๋ํ ์ฑ๋ฅ ํ๊ณ๊ฐ ์์์ ๋ณด์ฌ์ฃผ๋ฉฐ, ์ถํ ์ด๋ฅผ ๊ฐ์ ํ ํ์๊ฐ ์์ต๋๋ค. - ์๋๋ฆฌ์ค โฃ์์๋
1000๋ช
์ ์ฌ์ฉ์๊ฐ ๋์์ ์์ฒญ์ ๋ณด๋ธ ๊ฒฝ์ฐ, ์ด2,002๊ฑด
์ ์์ฒญ์ด5์ด
์ด๋ด์ ์ฒ๋ฆฌ๋์์ต๋๋ค. ์ด๋ ํ์ฌ ์์คํ ์ด ์ค์๊ฐ ๋์๋ณด๋ค๋ ์์ฝ ์ฒ๋ฆฌ์ ๋ ์ ํฉํ ๊ตฌ์กฐ์์ ๋ณด์ฌ์ค๋๋ค. - ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ์ ์ดํ์ด ๋๊ธฐ ์์ํ๋ 5์ด ์ด๋ด ์๋ต์ ๊ธฐ์ค์ผ๋ก ์์ ์ ์์ ์ ์ฝ
1,000๋ช
์ ๋์ ๋ํด์๋ ์ถฉ๋ถํ ์์ ์ ์ธ ์ฑ๋ฅ์ ์ ๊ณตํ ์ ์๋ค๊ณ ํ๋จ๋ฉ๋๋ค.