-
-
MSA
-
์ฟ ๋ฒ๋คํฐ์ค
-
ํ ์คํธ ๋ฐ ๋ชจ๋ํฐ๋ง
-
์ ์ฐ ์์คํ
-
๋๊ธฐ์ด ์์คํ
-
ํ๋ก ํธ
-
๊ธฐํ
-
ํ๋ช
: All Back
์ ํฌ ํ์ ์ฒ์๋ถํฐ ๋ฐฑ์๋ ๋ฐ ์ธํ๋ผ ๊ธฐ์ ์ ์ง์ค์ ์ผ๋ก ๊ณต๋ถํ๊ณ ๊ตฌํํ๋ ๊ฒ์ ๋ชฉํ๋ก ๊ตฌ์ฑ๋ ํ์ผ๋ก, 5๋ช
์ ์์ด ๋ชจ๋ ๋ฐฑ์๋ ๊ฐ๋ฐ์ ์ฐธ์ฌํ์์ต๋๋ค. ์ด๋ฌํ ์ทจ์ง๋ฅผ ๋ด์ ํ๋ช
์ All Back
์ผ๋ก ์ ํ์์ต๋๋ค.
์ด๋ฆ | ์ญํ | github |
---|---|---|
์ฑ์์ค(ํ์ฅ) | Payment ์๋ฒ ๊ฐ๋ฐ, Gateway ๋ฐ Eureka ์๋ฒ ๊ฐ๋ฐ, CI/CD, ์ฟ ๋ฒ๋คํฐ์ค ์ ์ฉ | https://github.com/wlwlsus |
๊น๋์ฐ | User ์๋ฒ ๊ฐ๋ฐ ๋ฐ ๋ฐฐํฌ, ํ ์คํธ ๋ด ๊ฐ๋ฐ, locust ์ฑ๋ฅ ํ ์คํธ | https://github.com/EastFlovv |
๊น์ ์ | ํ๋ก ํธ react ๊ฐ๋ฐ, Concert ์๋ฒ ๊ฐ๋ฐ | https://github.com/kjskjs356 |
์คํธ์ฐ | Concert ์๋ฒ ๊ฐ๋ฐ, Spring Batch ์ ์ฐ ์์คํ ๊ฐ๋ฐ | https://github.com/hosanyoon |
์ต์ค์ | ELK Stack ๋ก๊ทธ ์์ง ์์คํ ๊ตฌ์ถ, ๋๊ธฐ์ด ์์คํ ๊ฐ๋ฐ, ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง | https://github.com/wnsdk |
- ํ๋ก์ ํธ ์งํ ๊ธฐ๊ฐ : 2023.04.10(์) ~ 2023.05.19(๊ธ) (6์ฃผ๊ฐ ์งํ)
- ์ฌ์ดํธ ๋งํฌ : http://allback.site
- ์๊ฐ ์์ : ์ ํ๋ธ ๋งํฌ
- ์์ฐ ์์ : ์ ํ๋ธ ๋งํฌ
ํฐ์ผํ
์ฌ์ดํธ Can You Get It
์ ์ฃผ์ต์๊ฐ ๋ฑ๋กํ ๊ณต์ฐ๋ค ์ค์์ ์ํ๋ ๊ณต์ฐ์ ์ข์์ ์ ํํด ๊ฒฐ์ ํ ์ ์๋ ์๋น์ค๋ฅผ ์ ๊ณตํฉ๋๋ค.
ํฐ์ผํ
์ ํน์ง์ด๋ผ๊ณ ํ๋ค๋ฉด, ํน์ ํ ์๊ฐ์ ์ฌ๋๋ค์ด ํ๊บผ๋ฒ์ ๋ชฐ๋ ค ํธ๋ํฝ์ด ์ง์ค๋๋ค๋ ๊ฒ์
๋๋ค. ์ ํฌ ํ์ ์ด๋ฌํ ์ํฉ์์๋ ์๋ฒ๊ฐ ํฐ์ง์ง ์๊ฒ ํ๊ธฐ ์ํ ์์ ์ ์ธ ์ํคํ
์ฒ๋ฅผ ๊ณ ๋ฏผํด๋ณด๊ณ ํ๋ก์ ํธ์ ์ ์ฉํด๋ณด์์ต๋๋ค.
-
๋๊ธฐ์ด ์์คํ
MSA๋ MicroService Architecture
์ ์ฝ์๋ก, ๊ธฐ์กด์ Monolithic Architecture์ ํ๊ณ๋ฅผ ๋ฒ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ๋์จํ๊ฒ ๊ฒฐํฉ๋ ์๋น์ค์ ๋ชจ์์ผ๋ก ๊ตฌ์กฐํํ๋ ์๋น์ค ์งํฅ ์ํคํ
์ฒ(SOA) ์คํ์ผ์ ์ผ์ข
์ธ ์ํํธ์จ์ด ๊ฐ๋ฐ ๊ธฐ๋ฒ์
๋๋ค.
๊ธฐ๋ฅ์ ํฌ๊ฒ 4๊ฐ์ง๋ก ๋ถ๋ฅํ๊ณ , ์๋ฒ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ฅผ ๊ฐ ๊ธฐ๋ฅ์ ๋ง๊ฒ ๋ถ๋ฅํ์ฌ ๊ตฌํํ์์ต๋๋ค.
๊ธฐ๋ฅ | Server | DB |
---|---|---|
์ฌ์ฉ์ | User Server | User DB |
๊ณต์ฐ | Concert Server | Concert DB |
๊ฒฐ์ | Payment Server | Payment DB |
๊ด๋ฆฌ์ | Admin Server |
์ ํฌ๋ MSA
๋ฅผ ํตํด ๋ค์๊ณผ ๊ฐ์ ์ฅ์ ์ ๊ฐ์ง ์ ์์์ต๋๋ค.
- ๋ฐฐํฌ
- ์๋น์ค๋ณ ๊ฐ๋ณ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํฉ๋๋ค.
- ํน์ ์๋น์ค์ ์๊ตฌ์ฌํญ๋ง์ ๋ฐ์ํ์ฌ, ๋น ๋ฅด๊ฒ ๋ฐฐํฌ ๊ฐ๋ฅํฉ๋๋ค.
- ํ์ฅ
- ํน์ ์๋น์ค์ ๋ํ ํ์ฅ์ฑ(scale-out)์ด ์ ๋ฆฌํฉ๋๋ค.
- ํด๋ผ์ฐ๋ ๊ธฐ๋ฐ ์๋น์ค ์ฌ์ฉ์ ์ ํฉํฉ๋๋ค.
- ์ฅ์
- ์ผ๋ถ ์ฅ์ ๊ฐ ์ ์ฒด ์๋น์ค๋ก ํ์ฅ๋ ๊ฐ๋ฅ์ฑ์ด ์ ์ต๋๋ค.
- ๋ถ๋ถ์ ์ผ๋ก ๋ฐ์ํ๋ ์ฅ์ ์ ๋ํ ๊ฒฉ๋ฆฌ๊ฐ ์์ํฉ๋๋ค.
- ๊ทธ ์ธ
- ์๋ก์ด ๊ธฐ์ ์ ์ ์ฉํ๊ธฐ ์ ์ฐํฉ๋๋ค.
- ๊ฐ๊ฐ์ ์๋น์ค์ ๋ํ ๊ตฌ์กฐ ํ์ ๋ฐ ๋ถ์์ด ๋ชจ๋๋ฆฌ์ ๊ตฌ์กฐ์ ๋นํด ์ฝ์ต๋๋ค.
๋ํ, MSA
๋ฅผ ๊ตฌํํ๊ธฐ ์ํด ๊ฐ ๊ธฐ๋ฅ๊ณผ ์ญํ ๋ณ๋ก ๊ตฌ๋ถํ์ฌ ๋ธ๋์น๋ฅผ ๊ตฌ์ฑํ์์ต๋๋ค.
Branch Name Convention :
(deploy/dev)
-(back/front)
-(service)
๊ธฐ๋ฅ๋ณ๋ก ์๋ฒ๋ฅผ ์ฌ๋ฌ ๊ฐ๋ก ๋ถ๋ฆฌํ์๊ธฐ ๋๋ฌธ์, client์์ server๋ก ์์ฒญ์ ๋ณด๋ผ ๋ ์ด๋ค ์๋ฒ๋ก ์์ฒญ์ ์ ๋ฌํด์ผ ํ ์ง ํผ๋์ค๋ฌ์ธ ์ ์์ต๋๋ค. ์ ํฌ๋ ๋ฐ๋ผ์ gateway ์๋ฒ๋ฅผ ๊ตฌ์ถํ์ฌ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ๋ค์ด์จ ์์ฒญ์ ๋ผ์ฐํ ํ์์ต๋๋ค.
Spring Cloud Gateway
:
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์์ API ๊ฒ์ดํธ์จ์ด๋ฅผ ๊ตฌ์ถํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์
๋๋ค. API ๊ฒ์ดํธ์จ์ด๋ ํด๋ผ์ด์ธํธ์ ๋ง์ดํฌ๋ก์๋น์ค ๊ฐ์ ํต์ ์ ์ค๊ฐํ๊ณ ๋ผ์ฐํ
ํ๋ ์ญํ ์ ์ํํฉ๋๋ค.
Eureka์ ๊ฐ์ ์๋น์ค ๋์ค์ปค๋ฒ๋ฆฌ ํด๋ผ์ด์ธํธ์ ํตํฉํ์ฌ ๋์ ์ผ๋ก ์๋น์ค๋ฅผ ๋ฐ๊ฒฌ(discovery)ํ ์ ์์ต๋๋ค.
Spring Cloud Eureka
:
๋ง์ดํฌ๋ก์๋น์ค ์ํคํ
์ฒ์์๋ ๋ง์ ์์ ์๋น์ค ์ธ์คํด์ค๊ฐ ๋์ ์ผ๋ก ์์ฑ๋๊ณ ์ ๊ฑฐ๋๊ธฐ ๋๋ฌธ์, ์ด๋ฌํ ์๋น์ค๋ค์ ํจ๊ณผ์ ์ผ๋ก ๊ด๋ฆฌํ๊ณ ์ฐพ์ ์ ์๋ ๋ฉ์ปค๋์ฆ์ด ํ์ํฉ๋๋ค. Eureka๋ ์ด๋ฌํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋ฉ๋๋ค.
์๋น์ค ์ธ์คํด์ค๋ค์ Eureka ์๋ฒ์ ์์ ์ ์ ๋ณด๋ฅผ ๋ฑ๋กํฉ๋๋ค. ํด๋ผ์ด์ธํธ๋ Eureka ์๋ฒ์ ๋ฑ๋ก๋ ์๋น์ค๋ฅผ ๊ฒ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ๋์ ์ผ๋ก ์๋น์ค ์ธ์คํด์ค๋ฅผ ์ฐพ์ ์์ฒญ์ ์ ๋ฌํ ์ ์์ต๋๋ค.
eureka ์๋ฒ๊ฐ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฟ ๋ฒ๋คํฐ์ค์์๋ ์ ๊ณตํ๊ณ ์์ต๋๋ค. ์ ํฌ ํ๋ก์ ํธ์์๋ ์ฟ ๋ฒ๋คํฐ์ค๋ฅผ ์ ์ฉํ๊ธฐ ์ ๋จ๊ณ๊น์ง๋ง eureka ์๋ฒ๋ฅผ ์ฌ์ฉํ์๊ณ , ์ฟ ๋ฒ๋คํฐ์ค ์ ์ฉ ์ดํ์๋ eureka ์๋ฒ๋ฅผ ์ค์งํ์์ต๋๋ค.
MSA๋ฅผ ์ ์ฉํจ์ผ๋ก์จ ์๋ฒ๋ค์ด ๊ธฐ๋ฅ๋ณ๋ก ๋ถ๋ฆฌ๋จ์ ๋ฐ๋ผ ๊ฐ ์๋ฒ๋ ์์ ์ด ๊ดํ ํ๋ DB์๋ง ์ง์ ์ ๊ทผํ ์ ์๊ฒ ๋์์ต๋๋ค. ๊ทธ๋ก ์ธํด ์์ ์ด ๊ดํ ํ์ง ์๋ DB์ ๋ฐ์ดํฐ๊ฐ ํ์ํ ๊ฒฝ์ฐ, ํด๋น DB๋ฅผ ๋ด๋นํ๊ณ ์๋ ์๋ฒ์๊ฒ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํด์ผํฉ๋๋ค.
์ ํฌ๋ ์๋ฒ ๊ฐ ํต์ ์ ํ๊ธฐ ์ํด Feign Client
๋ฅผ ์ฌ์ฉํ์ฌ ๊ธฐ์กด์ RestTemplate ๋ณด๋ค Rest API๋ฅผ ์ฌ์ฉํ๋๋ฐ ํ์ํ ์ค์ ์ ๊ฐ์ํํ์๊ณ , ์ด๋ก ์ธํด ๋น์ง๋์ค ๋ก์ง์ ๋ ์ง์คํ ์ ์์์ต๋๋ค.
- Feign - Netflix ์์ ๊ฐ๋ฐ๋ Http client binder
- ์น ์๋น์ค ํด๋ผ์ด์ธํธ๋ฅผ ๋ณด๋ค ์ฝ๊ฒ ์์ฑํ์ฌ ์ฌ์ฉ
- interface ๋ฅผ ์์ฑํ๊ณ annotation ์ ์ ์ธํ์ฌ ์ฌ์ฉ
@EnableFeignClients
์ ํตํด@FeignClient
์ ๊ตฌํ์ฒด๋ฅผ ๊ตฌํ
์ ์ ๋ด์ฉ
์ ์ ๋ด์ฉ
ํฐ์ผํ ์๋น์ค์ ํน์ฑ์, ํน์ ํ ์๊ฐ์ ๋๋์ ํธ๋ํฝ์ ๋ฐ์์ํค๊ณ ์ฑ๋ฅ์ ํ ์คํธํ๋ ๊ฒ์ด ํ์ํ์ต๋๋ค. ๋ฐ๋ผ์ ์ ํฌ ํ์์๋ locust๋ฅผ ์ฑํํ์ฌ ์ฑ๋ฅ ํ ์คํธ๋ฅผ ์งํํ์์ต๋๋ค. locust๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ, ์ด๋ค ๋์(Task)์ผ๋ก ์๋ฒ์ ๋ถํ๋ฅผ ๊ฐํ ๊ฒ์ธ์ง python ์ฝ๋๋ก ์ปค์คํ ํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๊ณ ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค๋ ์ฅ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ฑํํ๊ฒ ๋์์ต๋๋ค.
locust๋ฅผ ํตํด ๊ธฐ๋ฅ ํ
์คํธ์ ๋ถํ ํ
์คํธ๋ฅผ ๋์์ ์งํํ์์ผ๋ฉฐ, ๊ฐ ์์ฒญ๋ค์ ํ๊ท ์๋ต์๊ฐ๊ณผ ์ด๋น ์์ฒญ ํ์(RPS)
๋ฅผ ์ฝ๊ฒ ์ดํด๋ณผ ์ ์์์ต๋๋ค. ๋ํ, master / slave ๊ตฌ์กฐ๋ฅผ ํตํด ๋์์ ์ฌ๋ฌ request๋ฅผ server๋ก ์ ๋ฌํ์์ต๋๋ค. ๊ณต์ฐ ์ ํ๋ถํฐ ์ข์ ๊ฒฐ์ ๊น์ง์ ์ผ๋ จ์ ๊ณผ์ ์ ์์ฐจ์ ์ผ๋ก ์ํํ๋ ํฐ์ผํ
๋ด python ์ฝ๋์ task๋ ์๋์ ๊ฐ์ต๋๋ค.
get_concert_info
: ๊ณต์ฐ ์ ๋ณด ์กฐํcheck_seat
: ๋จ์ ์ข์ ์ ์กฐํ, ๋จ์ ์ข์์ด ์์ผ๋ฉด ํ ์คํธ ์ค์งchange_seat_state
: ์ ์ ๋ ์ข์ ๋ชฉ๋ก์ ๋ถ๋ฌ์ค๊ณ ์ ์ ๋์ง ์์ ์ข์์ ์ ํํ๊ณ ์ ์ ํจcommit_reservation
: ์ด์ task์์ ์ ์ ํ ์ข์์ ์๋งค, ์๋ฌ๊ฐ ๋ฐ์ํ๋ฉด ํ ์คํธ ์ค์ง
์ ํฐ์ผํ
๋ด์ ์ด์ฉํ์ฌ ์ฑ๋ฅ ํ
์คํธ๋ฅผ ์งํํ ๊ฒฐ๊ณผ๋ ์๋์ ๊ฐ์ต๋๋ค.
์์ ํ์ผ๋ก๋ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์์ต๋๋ค.
์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง
๋ ํ
์คํธ ์ผ์ด์ค๊ฐ ์์ค ์ฝ๋์ ์ด๋ ์ ๋๋ฅผ ์คํํ๋์ง๋ฅผ ์ธก์ ํ๋ ์งํ์
๋๋ค. ์ฝ๋ ์ปค๋ฒ๋ฆฌ์ง๋ฅผ ์ธก์ ํ๋ฉด ๊ฐ๋ฐ์๋ ํ
์คํธ๋ ์ฝ๋์ ๋น์จ์ ์ ์ ์์ผ๋ฉฐ, ํ
์คํธ๋์ง ์์ ์ฝ๋ ๋ถ๋ถ์ ์๋ณํ์ฌ ์ถ๊ฐ ํ
์คํธ๊ฐ ํ์ํ ์์ญ์ ํ์
ํ ์ ์์ต๋๋ค.
Jacoco
๋ Java Code Coverage์ ์ฝ์๋ก, ๋ค์ํ ์ปค๋ฒ๋ฆฌ์ง ๋ฉํธ๋ฆญ์ ๊ณ์ฐํ๊ธฐ ์ํ ์คํ ์์ค ํ๋ ์์ํฌ์
๋๋ค. Jacoco๋ ๋ฐํ์์ ์ ํ๋ฆฌ์ผ์ด์
์ ์คํ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํ์ฌ ํ
์คํธ๋ ์ฝ๋์ ํ
์คํธ๋์ง ์์ ์ฝ๋์ ํต๊ณ๋ฅผ ์์ฑํฉ๋๋ค.
์ ํฌ ํ์์๋ TDD์ ์ค์์ฑ์ ์ธ์งํ๊ณ , ํ ์คํธ ์ฝ๋๋ฅผ ๋์ฑ ์ ๊ตฌํํ๊ธฐ ์ํด jacoco๋ฅผ ํ๋ก์ ํธ์ ์ ์ฉํ๊ธฐ๋ก ๊ฒฐ์ ํ์์ต๋๋ค.
์ ๊ทธ๋ฆผ์ Concert ์๋ฒ์ Test Summary์
๋๋ค. Gradle์ ํตํด jacoco๋ฅผ ์คํ์ํค๊ณ ๋ ํ, build > reports > tests > test > index.html
๊ฒฝ๋ก์์ ํ์ธํ ์ ์์ต๋๋ค. ์์ฑํ ํ
์คํธ ์ผ์ด์ค์ ๋ํ ์์ฝ์ ๋ณผ ์ ์์ต๋๋ค.
๋ง์ฐฌ๊ฐ์ง๋ก Concert ์๋ฒ์์ Gradle์ ํตํด jacoco๋ฅผ ์คํ์ํค๊ณ ๋ ํ, `build > reports > jacoco > test > html > index.html` ๊ฒฝ๋ก์์ ํ์ธํ ์ ์์ต๋๋ค. ๊ตฌ์ฒด์ ์ผ๋ก ์ด๋ค ์์ค ์ฝ๋๊ฐ ํ ์คํธ ์ผ์ด์ค๋ฅผ ํตํด ์คํ๋๋์ง, ์ ๋๋์ง ํ์ ํ ์ ์์ต๋๋ค.
์๊ฐ ์์ ๋ฌธ์ ๋ก ์ธํด ์์ง ํ ์คํธ ์ฝ๋๋ฅผ ๋ง์ด ์์ฑํ์ง ๋ชปํ์ฌ ํ ์คํธ ์ปค๋ฒ๋ฆฌ์ง ์งํ๊ฐ ๋ฎ๊ฒ ๋์์ง๋ง, ํฅํ์ ํ ์คํธ ์ฝ๋๋ฅผ ์ถ๊ฐํ์ฌ ํ๋ก์ ํธ๋ฅผ ๋ฐ์ ์์ผ ๋๊ฐ ๊ณํ์ ๋๋ค.
ELK๋ Elastic Search, Logstash, Kibana์ ์ฝ์๋ก, ๋ฐ์ดํฐ๋ฅผ ์์งํ๊ณ ๋ถ์ํ๋ ๋๊ตฌ ๋ชจ์์ ์๋ฏธํฉ๋๋ค. Logstash๋ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ ๋๊ตฌ, Elastic Search๋ ๊ฒ์ ์์ง, Kibana๋ ๋ฐ์ดํฐ ์๊ฐํ ๋์๋ณด๋์
๋๋ค.
Beats๋ ๊ฒฝ๋ ๋ฐ์ดํฐ ์์ง๊ธฐ๋ก์, ๋ก๊ทธ ํ์ผ์ ์ ์ฅํ๊ณ ๋ฐ์ดํฐ ship ์ญํ ๋ก์ Logstash๋ก ์ ์กํฉ๋๋ค.
Beats์ Logstash์ ์ญํ ์ด ๊ฑฐ์ ํก์ฌํ๋ค๊ณ ๋ ๋ณผ ์ ์์ต๋๋ค. ๊ทธ๋ ์ง๋ง, log๊ฐ ๋ฐ์ํ๋ ๋ชจ๋ ๊ฐ spring ์๋ฒ๋ง๋ค Logstash๋ฅผ ์ค์นํ๊ธฐ์๋ ์ฉ๋์ด ๋ฌด๊ฒ๊ธฐ ๋๋ฌธ์, Beats๋ฅผ ๋์
ํ์์ต๋๋ค.
ELK + Beats๋ฅผ ํฉ์น ์ฉ์ด๋ก Elastic Stack์ด๋ผ๊ณ ๋ถ๋ฆ
๋๋ค.
ELK๋ ๋ค์ํ ์ฉ๋๋ก ์ฌ์ฉ๋ ์ ์์ง๋ง, ์ ํฌ ํ๋ก์ ํธ์์๋ ๊ฐ ์๋ฒ์์ ๋ฐ์ํ๋ ๋ก๊ทธ๋ฅผ ์์งํ๋ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉํ์์ต๋๋ค.
1. ๋งค์ผ ์ข
๋ฃ๋๋ ๊ณต์ฐ์ ์ ์ฐ๊ธ์ก์ ๊ณ์ฐ
2. ๊ฐ ๊ณต์ฐ ๋ด๋น์์๊ฒ ์ ์ฐ๊ธ์ก ์ง๊ธ
Spring Batch
๋ ์ํฐํ๋ผ์ด์ฆ ์์คํ
์ ์ผ์์ ์ธ ์ด์์ ํ์ํ ๋ฐฐ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ฝ๊ฒ ๊ฐ๋ฐํ ์ ์๋๋ก ์ค๊ณ๋ ๊ฐ๋ ฅํ ํ๋ ์์ํฌ์
๋๋ค. ์ด๋ ๋ก๊น
/์ถ์ , ํธ๋์ญ์
๊ด๋ฆฌ, ์์
์ฒ๋ฆฌ ํต๊ณ, ์์
ํ๋ก์ฐ ์ง์ (์์
์ ์ฌ์์ํ๊ฑฐ๋ ์คํต), ๋ฆฌ์์ค ๊ด๋ฆฌ ๋ฑ ๋๋์ ๋ ์ฝ๋๋ฅผ ์ฒ๋ฆฌํ๋ ๋ฐ ํ์์ ์ธ ๊ธฐ๋ฅ์ ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ํํ๋ก ์ ๊ณตํฉ๋๋ค.
Spiring Batch
๋ฅผ ์ด์ฉํ ์ ์ฐ์์คํ
๊ตฌํ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Spring Batch ๊ด๋ฆฌ ๋๊ตฌ๋ก์ Jenkins๋ฅผ ์ฌ์ฉํ์ฌ ์ค์ผ์ฅด๋ง ๋ฐ ๋ฐฐ์น์๋ฒ ๊ด๋ฆฌ
- ์กฐ๊ฑด๋ณ ํ๋ฆ์ ์ด๊ฐ ๊ฐ๋ฅํ FlowJob๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ Step์ ์์๋ฅผ ์ ์ด
- Chuck ์งํฅ ์ฒ๋ฆฌ : ItemReader, ItemProcessor, ItemWriter๋ฅผ ํตํด Chuck ๋จ์ ๋งํผ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ํธ๋์ญ์ ์ด ๋ฐ์ํ๋๋ก ๊ตฌํ
- ItemReader : ์ ์ฐ์ด ํ์ํ ๋ฐ์ดํฐ๋ฅผ Chuck ๋จ์๋ก ์กฐํ
- ItemProcessor : ์ ์ฐ์ฒ๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๋ณํ
- ItemWriter : ์๋ฃ๋ ์ ์ฐ๋ฐ์ดํฐ ๋ฐ์ดํฐ ๋ฑ๋ก
๋๊ธฐ์ด ์์คํ
์ client๊ฐ ์๋น์ค๋ฅผ ์์ฒญํ์ ๋ ์ด ์์ฒญ๋ค์ ์ฐจ๋ก๋๋ก ์ฒ๋ฆฌํ๋ ์์คํ
์
๋๋ค. ํฐ์ผํ
์๊ฐ์ ๋ง์ถ์ด ์๋ง์ client๋ค์ด ํ๊บผ๋ฒ์ ์์ฒญ์ ๋ณด๋ผ ๊ฒฝ์ฐ, ์๋ฒ๊ฐ ๋ถํ๋ฅผ ์ด๊ธฐ์ง ๋ชปํ๊ณ ์ฅ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋ฐ๋ผ์ ์๋ฒ ์ฅ์ ๋ฅผ ๋ฐฉ์งํ๊ณ ์์ ์ ์ธ ์ด์์ ์ํด, ๋์์ ๋ชฐ๋ฆฐ client๋ค์ ์์ฒญ๋ค์ ์ฐจ๋ก๋๋ก ์ค์ ์ธ์ฐ๊ณ ์ฐจ๊ทผ์ฐจ๊ทผ ์ฒ๋ฆฌํ ์ ์๋๋ก ๋๊ธฐ์ด ์์คํ
์ ๋์
ํ์์ต๋๋ค.
๋๊ธฐ์ด ์์คํ
์ ํตํด ์์ ๊ฐ์ด ๋ด ์์ ๋ช ๋ช
์ ์์ฒญ์ด ๋จ์์๋์ง, ๋ด ๋ค์ ๋ช ๋ช
์ ์์ฒญ์ด ์์ฌ์๋์ง๋ฅผ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์์ต๋๋ค.
- ์ต์ด ์์ฒญ
์ผ๋ฐ ๋ค๋ฅธ ์์ฒญ๋ค๊ณผ ๋ค๋ฅผ ๋ฐ ์์ต๋๋ค. ๋ง์ผ ๋ด ์์ ๋๊ธฐ์ด์ด ์กด์ฌํ์ง ์๋๋ค๋ฉด, ๊ทธ ์ฆ์ ์ํ๋ ์๋ต์ ๋ฐ์ ์ ์์ง๋ง, ๊ทธ๋ ์ง ์๊ณ ๋ด ์์ ๋๊ธฐ์ด์ด ์กด์ฌํ ๊ฒฝ์ฐ 307 http status code์ ํจ๊ป ๋๊ธฐํ ์ ๋ณด๋ฅผ ์๋ต์ผ๋ก ๋ฐ์ต๋๋ค. ๋๊ธฐํ์๋ ์๋ ์ ๋ณด๊ฐ ๋ด๊ฒจ์ ธ์ ์ต๋๋ค.
uuid
: ๋๊ธฐํ ๊ณ ์ ๋ฒํธoffset
: kafka์ ๋ด๊ธด ๋๊ธฐํ ๋ ์ฝ๋์ offset ๊ฐ (๋์ ๋๊ธฐ ์๋ฒ)partition
: ๋์ ๋๊ธฐํ ๋ ์ฝ๋๊ฐ ๋ด๊ธด kafka์ partition ๋ฒํธcommittedOffset
: ์ ์ผ ์ต๊ทผ์ ์ฒ๋ฆฌ ์๋ฃ๋ ๋ ์ฝ๋์ offset ๊ฐendOffset
: ์ ์ผ ์ต๊ทผ์ ์์ฒญ์ด ๋ค์ด์จ ๋ ์ฝ๋์ offset ๊ฐ
- ์ฌ์์ฒญ (polling)
์ต์ด ์์ฒญ์์ 307 ์ฝ๋๋ฅผ ์๋ต์ผ๋ก ๋ฐ์๋ค๋ฉด, client๋ ์๋ ์ํ๋ ์๋ต์ ๋ฐ์ ๋ ๊น์ง ์๋ฒ์๊ฒ ์ฌ์์ฒญ์ ๋ณด๋ ๋๋ค. ์ฌ์์ฒญ์ ๋ณด๋ผ ๋๋ ์ต์ด ์์ฒญ์์ ์๋ต๋ฐ์๋ ๋๊ธฐํ๋ฅผ ์์ฒญ ์ ๋ณด์ ํจ๊ป ๋ด์์ ์ ์กํด์ผํฉ๋๋ค. ๋ง์ผ ๋๊ธฐํ๋ฅผ ์์ฒญ ์ ๋ณด์ ๋ด์ง ์๊ณ ๋ณด๋ธ๋ค๋ฉด, server์์๋ ํด๋น ์์ฒญ์ ์ต์ด ์์ฒญ์ผ๋ก ๊ฐ์ฃผํ๊ณ ๋๊ธฐ์์๋ฅผ ๋งจ ๋ค๋ก ๋ณด๋ด๋ฒ๋ฆฝ๋๋ค. ๊ณ์ํด์ ์ฌ์์ฒญ์ ๋ณด๋ด๋ฉด์ ๋ด ์ฐจ๋ก๊ฐ ์๋์ง ํ์ธํ๊ณ , ๋ด ์ฐจ๋ก๊ฐ ์๋ค๋ฉด 2xx ์๋ต ์ฝ๋์ ํจ๊ป ์ ์ ์๋ต์ ๋ฐ์ต๋๋ค. ์์ง ๋ด ์ฐจ๋ก๊ฐ ์ค์ง ์์๋ค๋ฉด ์ต์ด ์์ฒญ ๋์ ๋ง์ฐฌ๊ฐ์ง๋ก 307 ์๋ต ์ฝ๋์ ํจ๊ป ๋๊ธฐํ ์ ๋ณด๋ฅผ ๊ฐฑ์ ํด์ ๋ฐ์ต๋๋ค.
๋ด ์์ ์์ธ ์์ฒญ ์
=offset
-committedOffset
-1
๋ด ๋ค์ ์์ธ ์์ฒญ ์
=endOffset
-offset
- ์ทจ์ ์์ฒญ
client๊ฐ ๋๊ธฐํ๋ฅผ ๋์ด๋์ ํ, ์ ์ ์๋ต์ ๋ฐ๊ธฐ๋ ์ ์ ๋๊ธฐ์ค์์ ์ดํํ ๋ ๋ณด๋ด๋ ์์ฒญ์ ๋๋ค. ๋๊ธฐํ ์ทจ์ ์์ฒญ์ ์ ์กํ๋ฉด server์์๋ ํด๋น ๋๊ธฐํ ์์๊ฐ ์์ ๋ ๊ฑด๋๋ฐ๊ฒ ๋ฉ๋๋ค. kafka์์๋ ํ ๋ฒ ์์ธ ๋ ์ฝ๋๋ ์ญ์ ๋ฐ ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ๋ณ๋์ ๋ก์ง์ด ํ์ํ์ต๋๋ค.
observer ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ํ์ด์ง ์์น๊ฐ ํ๋จ div๋ฅผ ๊ฐ์งํฉ๋๋ค. ํ๋จ div๋ฅผ ๊ฐ์งํ๋ฉด API ํต์ refetch๋ฅผ ํตํด ๋ค์ ํ์ด์ง์ ๋ฐ์ดํฐ๋ฅผ ์๋์ผ๋ก ํธ์ถํจ์ผ๋ก์จ ๋ฌดํ ์คํฌ๋กค ๊ธฐ๋ฅ์ ๊ตฌํํ์์ต๋๋ค.
๋ก๊ทธ์ธ ํ ํ์ด์ง๋ฅผ ์ด๋ํด๋ ๋ก๊ทธ์ธ ์ ๋ณด๋ฅผ ์ ์งํ๊ธฐ ์ํด Recoil ๋ณ์์ ํ์์ ๋ณด๋ฅผ ๋ด์์ ์ํ๋ฅผ ๊ด๋ฆฌํ์์ต๋๋ค.
Oauth๋ฅผ ์ฌ์ฉํด kakao Id๋ก ์ฌ์ฉ์ ์ธ์ฆ์ ์งํ
ํ๋ํ ์ ์ ์ ๋ณด๊ฐ DB์ ์กด์ฌํ์ง ์์ผ๋ฉด ํ์๊ฐ์
ํ๋ํ ์ ์ ์ ๋ณด๊ฐ DB์ ์กด์ฌํ๋ฉด JWT๋ฅผ ๋ฐ๊ธํ๊ณ ๋ก๊ทธ์ธ ์ฒ๋ฆฌ
์ ์ ์ ๋ณด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๊ธํ JWT๋ฅผ OauthSuccessHandler์์ Redis์ ์ ์ฅ
๋ก๊ทธ์์์ Redis์์ AccessToken๊ณผ RefrashToken์ ๋ชจ๋ ์ญ์
ํ๋ก ํธ์๋ ์ฒ๋ฆฌ
์นด์นด์คํ์ด ์ถฉ์ ๋ฒํผ์ ๋๋ฅด๋ฉด cid, partner_order_id, partner_user_id, item_name, quantity, total_amount ๋ฑ์ ์ ๋ณด๋ฅผ ๋ด์
๋ฐ์ดํฐ ๊ฐ์ฒด๋ฅผ parameter๋ก ํ์ฌ post๋ฐฉ์์ผ๋ก API ํต์
์๋ต ์ฑ๊ณต์ ์์ฑ๋๋ tid ๊ฐ์ localstorage์ ๋ด์ next_redirect_pc_url๋ก ํ์ด์ง ์ด๋
์นด์นด์คํ์ด ํ์ด์ง ์ด๋ ์ ๊ฒฐ์ ์น์ธ ์์ฐฝ : API POST ํต์ => cid, tid, partner_order_id, partner_user_id, pg_token ๊ฐ์ด ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ ์ ๋ฌํ์ฌ ๋น๊ต
์๋ต ์ฑ๊ณต ์ ๊ฒฐ์ ์น์ธ ์ฑ๊ณต, ํฌ์ธํธ ์ถฉ์
Backend
- intelliJ IDE
- springboot 3.0.6
- spring cloud netflix eureka
- spring cloud gateway
- spring cloud zipkin
- spring cloud sleuth
- spring cloud openfeign 4.0.2
- spring Data JPA
- spring batch
- java 17
- jacoco
- mockito
- jwt
- junit
- mapstruct
- gradle
- swagger
Data
- mySQL
- redis
- AWS S3
- kafka
Frontend
- visual Studio Code IDE
- reactJS 18.2.0
- javaScript
- recoil 0.7.7
- nodeJS
- axios 1.3.5
- react-query
Infra
- mobaxterm
- AWS EC2
- GKE
- kubernetes
- nginx
- jenkins
- docker
- docker-compose
test
- locust
- python
monitoring
- grafana
logging
- elasticsearch
- logstash
- kibana
- filebeat
etc
- gitlab
- notion
- jira
- mattermost
[commit type]: [commit message] ([jira ticket number])
ex:
add: ํ๋ก์ ํธ ์ถ๊ฐ
feat: ๋ก๊ทธ์ธ ๊ตฌํ
๊ตฌ๋ถ์ | ์์ ์ ํ | ์ |
---|---|---|
add | ํ์ผ ์ถ๊ฐ | ํ๋ก์ ํธ๋, ์ค์ ํ์ผ ์ถ๊ฐ |
feat | ์ ๊ธฐ๋ฅ ๊ตฌํ | feat: ๋ฝ์ปค ํ์ ๋ชฉ๋ก ๊ฒ์ ๊ธฐ๋ฅ ์ถ๊ฐ (S2-2345) |
fix | ๋ฒ๊ทธ ์์ | fix: ์์ ๋ชฉ๋ก์ ์๋ฌ์ฒ๋ฆฌ ์์ธ์ผ์ด์ค ๋์ (S2-2356) |
docs | ๋ฌธ์(๋๋ ์ฃผ์) ๊ด๋ จ ์์ | docs: ๋ฐ์ฝ๋ ์ดํฐ ์ต์ ์ ๋ํ ๋ฌธ์ ์ถ๊ฐ (S2-2345) |
refactor | ๋ฆฌํฉํฐ๋ง | refactor: createStore์ ํจ์๋ฅผ ์์ ํจ์๋ก ๋ถ๋ฆฌ (S2-2345) |
test | ํ ์คํธ ๊ด๋ จ ์์ | test: ์์ ์์ฑ ํ ์คํธ ์ถ๊ฐ (S2-2345) |
chore | ๊ธฐํ ์์ | chore: ํ๋ก๋์ ๋น๋์ ์์ค๋งต ์์ฑํ๋๋ก ๋ณ๊ฒฝ (S2-2334) |
์ด๋ฒ ์ปค๋ฐ์์ ์์ ํ ๋ด์ฉ์ ๊ฐ๊ฒฐํ๊ฒ ์ค๋ช ํฉ๋๋ค.
Jira์ ๋ฑ๋กํ ์ด์์ ๋ฒํธ๋ฅผ ์ ์ต๋๋ค. ์ฐ๊ด ํฐ์ผ์ด ์๋ค๋ฉด ์์ฑํ์ง ์์ต๋๋ค.
- ์ ๋ชฉ์ 50์๋ฅผ ๋์ง ์์์ผ ํฉ๋๋ค.
- ๋ณธ๋ฌธ์ ํ ์ค์ 80์๋ฅผ ๋๊ธฐ์ง ์์ต๋๋ค.
- ๋ฌธ์ฅ์ ๋์ ๊ตฌ๋์ (.)์ ๋์ ์ฐ์ง ์์ต๋๋ค.
- ๋ฌธ์ฅ์ ๋ช ์ฌ๋ก ๋๋์ผ ํฉ๋๋ค.
- ์ ๋ชฉ๊ณผ ๋ณธ๋ฌธ ์ฌ์ด๋ ํ ์ค์ ๊ฐํํ์ฌ ๋ถ๋ฆฌํฉ๋๋ค.
feat: ํ๋ ์ฆ ์ง์ํ๊ธฐ ๋ฒํผ์ GA ์ด๋ฒคํธ ํ๊ทธ ์ถ๊ฐ (PP-2345)
[๋ณธ๋ฌธ] ๊ตฌ๊ธ ๊ด๊ณ ๋ฅผ ์ง์ํ๊ธฐ ์ํด์ GA์ด๋ฒคํธ ํ๊ทธ๊ฐ ์๋ ๊ตฌ๊ธ ์ ๋์ผ์ค ์ถ์ ์ฝ๋๋ฅผ ์ฝ์
ํฉ๋๋ค.
๋ํ, ํ๋ ์ฆ ์ง์ํ๊ธฐ ๋ฒํผ์ ์ ์๋ ์ด๋ฒคํธ ํ๊ทธ๋ฅผ ๋ณด๋ด๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํฉ๋๋ค.
[branch name]/[๋ด๋น์ ์ด๋์
]/[type]
ex) โ๊น๋์ฐ(DY)โ์ด oauth2 ๊ด๋ จ ๋ก์ง์ ๊ฐ๋ฐํ ๊ฒฝ์ฐ ๋ธ๋์น
- feat/dy/oauth2
๊ตฌ๋ถ์ | ์์ ์ ํ |
---|---|
master | ๋ฐฐํฌ ๊ฐ๋ฅํ ์์ฑ ์ํ |
release | ๋ฐฐํฌ ์ค์ธ ์ํ |
develop | ์ค๋ฅ ์๋ ๊ตฌํ ์ํ |
feature | ๊ฐ๋ฐ ์ค์ธ ์ํ |
๊ตฌ๋ถ์ | ์์ ์ ํ |
---|---|
AD | ์๋๋ก์ด๋ |
FE | WEB Front |
BE | Backend |
BC | ๋ธ๋ก์ฒด์ธ |
- git branch ์ ๋ต
๋งค์ฃผ ์ธ๋น 40 story point ํ ๋น
๋งค์ฃผ ์์์ผ ์คํ๋ฆฐํธ๋ฅผ ์์ํด์ ๊ธ์์ผ์ ์ข
๋ฃ
story -> ์ฐ์ถ๋ฌผ ์์
task -> ์ฐ์ถ๋ฌผ ์์