HOME
home
Team
home

PIOMS

ย ๋‚ด๊ฐ€ ๊ธฐ์—ฌํ•œ ๋ถ€๋ถ„

โ€ข
๋ณธ์‚ฌ ๊ด€๋ฆฌ์ž, ๊ฐ€๋งน์ ์ฃผ, ๋ฐฐ์†ก๊ธฐ์‚ฌ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ƒ์„ฑ ๋ฐ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„
โ€ข
๋กœ๊ทธ์ธ๋ณ„ RULE ์„ค์ •์„ ํ†ตํ•ด ํŽ˜์ด์ง€ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์„ธ๋ถ„ํ™”ํ•˜๊ณ , ๊ฐ ์‚ฌ์šฉ์ž๋ณ„๋กœ ์ ์ ˆํ•œ ๊ถŒํ•œ์„ ๋ถ€์—ฌ
โ€ข
JWT๋ฅผ ํ™œ์šฉํ•œ ์ธ์ฆ ์ ˆ์ฐจ๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ , Redis์— ํ† ํฐ์„ ์ €์žฅํ•˜์—ฌ ๋ณด์•ˆ์„ฑ์„ ๊ฐ•ํ™”
โ€ข
ํ”„๋กœ์ ํŠธ์—์„œ ์†๋„ ์ตœ์ ํ™” ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์ „, ์‚ฌ์šฉ์ž ๋ถˆํŽธ์„ ์ค„์ด๊ธฐ ์œ„ํ•ด ํ”„๋ก ํŠธ๋ถ€๋ถ„์—์„œ Swal(SweetAlert)์„ ๋„์ž…ํ•˜์—ฌ ๋กœ๋”ฉ ์‹œ ํ™”๋ฉด์„ ๋Œ€์ฒด, ๊ฒฐ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ์‹œ๊ฐ์ ์ธ ํ”ผ๋“œ๋ฐฑ์„ ์ œ๊ณตํ•˜์—ฌ UX๋ฅผ ๊ฐœ์„ ํ•˜๋Š” ๋ฐ ๊ธฐ์—ฌ
โ€ข
๋Œ€์‹œ๋ณด๋“œ์˜ ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ ์„ฑ๋Šฅ์„ ๊ฐœ์„ ํ•˜๊ธฐ ์œ„ํ•ด JPA์˜ default_batch_fetch_size๋ฅผ ์„ค์ •ํ•˜์—ฌ N+1 ์ฟผ๋ฆฌ ๋ฌธ์ œ๋ฅผ ์ตœ์ ํ™”ํ•˜์—ฌ ์กฐํšŒ์†๋„๋ฅผ 88.9% ๊ฐœ์„ 
โ€ข
GitHub์„ ํ†ตํ•œ ํ˜•์ƒ ๊ด€๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, Git Flow ์ „๋žต, ์ปค๋ฐ‹ ๋ฐ PR ์ปจ๋ฒค์…˜ ์ ์šฉ, ์ปจ๋ฒค์…˜์„ ์–ด๋ ค์›Œํ•˜๋Š” ํŒ€์›๋“ค์„ ์œ„ํ•ด ๊ฐ€์ด๋“œ ์ œ๊ณต
โ€ข
ํ…Œ์ŠคํŠธ์ฝ”๋“œ ๋„์ž…์œผ๋กœ์ธํ•˜์—ฌ ์ฝ”๋“œํ’ˆ์งˆ์„ ๋†’์ด๋„๋ก ๊ธฐ์—ฌ
โ€ข
์นด์นด์˜ค ๋ฉ”์‹œ์ง€ API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ์žฌ๊ณ  ๋ถ€์กฑ ์ƒํ™ฉ ๋ฐœ์ƒ ์‹œ ์ž๋™์œผ๋กœ ์•Œ๋ฆผํ†ก์„ ๋ฐœ์†กํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœ
โ€ข
GitHub Actions์™€ AWS๋ฅผ ํ™œ์šฉํ•˜์—ฌ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์„ ๊ตฌ์ถ•ํ•˜๊ณ , ๋ฐฐํฌ๋ฅผ ์„ค์ •
โ€ข
์ด์ „ PM ๊ฒฝํ—˜์„ ๋ฐ”ํƒ•์œผ๋กœ ์ด์ปค๋จธ์Šค์™€ ๋ฌผ๋ฅ˜ ์„œ๋น„์Šค์˜ ์„ค๊ณ„ ๋ฐ Flow Chart ์ž‘์„ฑ์— ์ฃผ๋„์ ์œผ๋กœ ๊ธฐ์—ฌํ•˜๋ฉฐ, ํ”„๋กœ์ ํŠธ ์ „๋ฐ˜์˜ ๋ฐฉํ–ฅ์„ฑ์„ ์„ค์ •
โ€ข
ํ”„๋กœ์ ํŠธ ๊ธฐ๊ฐ„ ๋‚ด ์ฐจ์งˆ์ด ์—†๋„๋ก ์„œ๋น„์Šค ๊ธฐํš๊ณผ ๋ฐฉํ–ฅ์„ฑ์„ ์„ค์ •ํ•˜๊ณ , Daily Scrum๋„์ž… ๋ฐ ์•”๋ฌต์ง€๋ฅผ ์ œ๊ฑฐํ•˜๋ฉฐ ๋ช…ํ™•ํ•œ ๊ทœ์น™๊ณผ ๋ช…๋ช…์„ ํ†ตํ•ด ํ”„๋กœ์ ํŠธ์˜ ์ผ๊ด€์„ฑ์„ ์œ ์ง€
โ€ข
๋ชจ๋“  ํ™”๋ฉด์— ๊ทœ์น™์ ์ธ ์ •๋ฆฌ๋ฅผ ํ†ตํ•ด ํ”„๋ก ํŠธ์—”๋“œ ์ž‘์—…์—๋„ ๊ธฐ์—ฌ

ย ์‚ฌ์šฉ ๊ธฐ์ˆ 

โ€ข
DataBase
โ—ฆ
MariaDB / Redis / H2
โ€ข
BackEnd
โ—ฆ
Java / Spring Boot / Spring Data JPA / Spring Security / JWT / Junit5 / Mokito
โ€ข
API
โ—ฆ
Swagger / Kakao Message
โ€ข
Software Architecture Pattern
โ—ฆ
Microservices Architecture
โ€ข
FrontEnd
โ—ฆ
HTML / CSS / JavaScript / Vue.js / VueX
โ€ข
DevOps
โ—ฆ
GitHub Actions / AWS(Elastic Beanstalk, EC2, RDS, S3, Route53)
โ€ข
Collaboration
โ—ฆ
GitHub / Slack / Notion / Figma / Miro

System Architecture

PIOMS System Architecture

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… 1

๋ฌธ์ œ ๋ฐฐ๊ฒฝ

PIOMS ํ”„๋กœ์ ํŠธ์—์„œ JPA ์‚ฌ์šฉ ์ค‘ N+1 ๋ฌธ์ œ๋กœ ์ธํ•ด API ์‘๋‹ต ์‹œ๊ฐ„์ด ๋น„์ •์ƒ์ ์œผ๋กœ ๊ธธ์–ด์กŒ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ Admin ์—”ํ‹ฐํ‹ฐ์™€ ์—ฐ๊ด€๋œ Franchise ๋ฐ์ดํ„ฐ๋ฅผ ์กฐํšŒํ•  ๋•Œ, ๊ฐ๊ฐ์˜ ์—”ํ‹ฐํ‹ฐ๊ฐ€ ๊ฐœ๋ณ„ ์ฟผ๋ฆฌ๋กœ ํ˜ธ์ถœ๋˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ๋ถˆํ•„์š”ํ•œ ์ˆ˜๋งŽ์€ ์ฟผ๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ฒฐ๊ณผ, ๋Œ€์‹œ๋ณด๋“œ ๊ฐ™์€๊ฒฝ์šฐ๋Š” ์‘๋‹ต ์‹œ๊ฐ„์ด 9์ดˆ ์ด์ƒ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์„ฑ๋Šฅ ์ €ํ•˜ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1.
Batch Fetching ์„ค์ •: application.yml์—์„œ hibernate.default_batch_fetch_size ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ์—ฐ๊ด€๋œ ์—”ํ‹ฐํ‹ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๊ด„์ ์œผ๋กœ ๊ฐ€์ ธ์˜ค๋„๋ก ํ•˜์—ฌ ์ฟผ๋ฆฌ ํšŸ์ˆ˜๋ฅผ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
2.
Lazy Loading ์ ์šฉ: @OneToMany ๊ด€๊ณ„์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ Lazy Loading์„ ์‚ฌ์šฉํ•˜์—ฌ, ์‹ค์ œ๋กœ Franchise ๋ฐ์ดํ„ฐ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งŒ ์กฐํšŒํ•˜๋„๋ก ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด์„œ Admin ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ๋“œํ•  ๋•Œ ๋ถˆํ•„์š”ํ•œ Franchise ๋ฐ์ดํ„ฐ ๋กœ๋”ฉ์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ๊ฒฐ๊ณผ

โ€ข
N+1 ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ํ†ตํ•ด ์‘๋‹ต ์‹œ๊ฐ„์ด 9์ดˆ์—์„œ 1์ดˆ๋กœ ๋Œ€ํญ ๊ฐœ์„ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
โ€ข
Batch Fetching๊ณผ Lazy Loading ์„ค์ •๋งŒ์œผ๋กœ๋„ ๋ณต์žกํ•œ ๊ด€๊ณ„์—์„œ ๋ฐœ์ƒํ•˜๋Š” ์„ฑ๋Šฅ ๋ฌธ์ œ๋ฅผ ์ƒ๋‹น ๋ถ€๋ถ„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

Lazy Loading๊ณผ Batch Fetching๋งŒ์œผ๋กœ๋„ JPA ์„ฑ๋Šฅ์„ ํšจ๊ณผ์ ์œผ๋กœ ์ตœ์ ํ™”ํ•  ์ˆ˜ ์žˆ์Œ์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
์ด๋ฒˆ ๊ฒฝํ—˜์„ ํ†ตํ•ด, ๋ณต์žกํ•œ ์—”ํ‹ฐํ‹ฐ ๊ฐ„์˜ ์—ฐ๊ด€ ๊ด€๊ณ„๋ฅผ ๋‹ค๋ฃฐ ๋•Œ N+1 ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ณธ์ ์ธ ์„ค์ •์„ ํ•ญ์ƒ ์ ๊ฒ€ํ•˜๊ณ , ํ•„์š”์— ๋”ฐ๋ผ ์ ์ ˆํ•œ Fetch ์ „๋žต์„ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ํ•„์ˆ˜์ ์ด๋ผ๋Š” ๊ฒƒ์„ ๋‹ค์‹œ ํ•œ ๋ฒˆ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
Lazy Loading ์ ์šฉ
application.yml์— default_batch_fetch_size๊ฐ’ ์„ค์ •

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… 2

๋ฌธ์ œ ๋ฐฐ๊ฒฝ

PIOMS ํ”„๋กœ์ ํŠธ์˜ CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ GitHub Actions๋ฅผ ์‚ฌ์šฉํ•ด ์ž๋™ ๋ฐฐํฌ๋ฅผ ์„ค์ •ํ•˜๋˜ ์ค‘, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ๋ˆ„๋ฝ์œผ๋กœ ์ธํ•ด AWS์™€์˜ ํ†ต์‹  ๋ฌธ์ œ์™€ ํŒŒ์ผ ์—…๋กœ๋“œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, application.yml ํŒŒ์ผ์—์„œ ๋ฏผ๊ฐํ•œ ์ •๋ณด๊ฐ€ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ œ๋Œ€๋กœ ์ฃผ์ž…๋˜์ง€ ์•Š์œผ๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด, ๋ฐฐํฌ ์‹คํŒจ ๋ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ฏธ์ฒ˜๋ฆฌ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

1.
๋ฐฐํฌ ๊ณผ์ •์—์„œ ๋ˆ„๋ฝ๋œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ GitHub Secrets๋ฅผ ํ†ตํ•ด ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. envsubst๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ YAML ํ…œํ”Œ๋ฆฟ์— ์ฃผ์ž…ํ•˜๋Š” ๋ฐฉ์‹์„ ์‚ฌ์šฉํ–ˆ์œผ๋ฉฐ, ๋ฐฐํฌ ์‹œ AWS_ACCESS_KEY_ID์™€ ๊ฐ™์€ ๋ฏผ๊ฐ ์ •๋ณด๊ฐ€ GitHub Secrets์—์„œ ์ œ๋Œ€๋กœ ๊ฐ€์ ธ์™€์งˆ ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.
2.
ํŒŒ์ผ์ด ์ œ๋Œ€๋กœ ์ƒ์„ฑ๋˜๊ณ  ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์ฃผ์ž…๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด cat ๋ช…๋ น์–ด๋กœ application.yml๊ณผ application-test.yml ๋‚ด์šฉ์„ ๋กœ๊ทธ์— ์ถœ๋ ฅํ•˜์—ฌ ํŒŒ์•…ํ–ˆ์Šต๋‹ˆ๋‹ค.
3.
JAR ํŒŒ์ผ ๋ฐ Elastic Beanstalk์—์„œ ํ•„์š”ํ•œ ํŒŒ์ผ๋“ค์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋กœ์ง์„ ์ถ”๊ฐ€ํ•˜๊ณ , ๋งŒ์•ฝ ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œ์ผœ ์กฐ๊ธฐ์— ๋ฌธ์ œ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ๊ฒฐ๊ณผ

โ€ข
๋ฐฐํฌ ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋˜ ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ๋ˆ„๋ฝ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ด ์•ˆ์ •์ ์ธ ๋ฐฐํฌ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.
โ€ข
์ž๋™ํ™”๋œ ํ…Œ์ŠคํŠธ๊ฐ€ ์ œ๋Œ€๋กœ ๋™์ž‘ํ•˜๋ฉฐ, AWS S3 ๋ฐ Elastic Beanstalk์— ๋ฐฐํฌ ํŒจํ‚ค์ง€๋ฅผ ์˜ฌ๋ฆฌ๋Š” ๊ณผ์ •์ด ์›ํ™œํ•˜๊ฒŒ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์•ˆ์ •์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์–ผ๋งˆ๋‚˜ ์ค‘์š”ํ•œ์ง€๋ฅผ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ๋ฏผ๊ฐํ•œ ์ •๋ณด๋Š” GitHub Secrets, .env ํ˜น์€ Spring Boot์˜ Configurations์™€๊ฐ™์€ ์•ˆ์ „ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ณ  ์„ค์ •ํ•ด์•ผ ํ•˜๋ฉฐ, ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์ฃผ์ž… ๋ฐ ์„ค์ • ํŒŒ์ผ ์ƒ์„ฑ ๊ณผ์ •์—์„œ ์„ธ์‹ฌํ•œ ํ™•์ธ๊ณผ ํ…Œ์ŠคํŠธ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ์ ์„ ๋‹ค์‹œ ํ•œ๋ฒˆ ๋Š๊ผˆ์Šต๋‹ˆ๋‹ค.
GitHub Secrets์— ์„ค์ •ํ•œ ๋ณ€์ˆ˜
envsubst ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ…œํ”Œ๋ฆฟ์— ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ์ฃผ์ž…ํ•˜๊ณ  ํ™•์ธํ•˜๋Š” ๋ถ€๋ถ„
ํŒŒ์ผ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋กœ์ง

ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ… 3

๋ฌธ์ œ ๋ฐฐ๊ฒฝ

ํ…Œ์ŠคํŠธ ์ฝ”๋“œ ์ž‘์„ฑ ์‹œ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ Redis ์„œ๋ฒ„์— ๋Œ€ํ•œ ์˜์กด์„ฑ์ด ๋†’์•„ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ์„ค์ •ํ•˜๋Š” ๋ฐ ์–ด๋ ค์›€์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ, ํ…Œ์ŠคํŠธ ์ค‘์— ์‹ค์ œ Redis ์„œ๋ฒ„์— ์—ฐ๊ฒฐ๋˜์ง€ ์•Š์œผ๋ฉด ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค.

ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

MockRedisConfig๋ฅผ ๋„์ž…ํ•ด Redis ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ–ˆ์Šต๋‹ˆ๋‹ค. ์‹ค์ œ Redis ์„œ๋ฒ„ ๋Œ€์‹  ๊ฐ€์ƒ ํ™˜๊ฒฝ์—์„œ Redis์˜ ์—ญํ• ์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

๊ฐœ์„  ๊ฒฐ๊ณผ

Redis ์˜์กด์„ฑ ์—†์ด ๋…๋ฆฝ์ ์ธ ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ๋น ๋ฅด๊ณ  ์•ˆ์ •์ ์ธ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•ด์กŒ์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ 

ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ ์™ธ๋ถ€ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์˜์กด์„ฑ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ํ…Œ์ŠคํŠธ์˜ ์•ˆ์ •์„ฑ๊ณผ ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Œ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค. Mocking์„ ํ†ตํ•œ ์˜์กด์„ฑ ์ œ๊ฑฐ๋Š” ๊ฐœ๋ฐœ ๋‹จ๊ณ„์—์„œ ํฐ ๋„์›€์ด ๋˜๋ฉฐ, CI/CD ํŒŒ์ดํ”„๋ผ์ธ์—์„œ ์•ˆ์ •์ ์ธ ํ…Œ์ŠคํŠธ ์‹คํ–‰์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Œ์„ ์•Œ๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ Redis ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•˜๊ธฐ ์œ„ํ•œ Mock Redis ์„ค์ •
ํ…Œ์ŠคํŠธ ํ™˜๊ฒฝ์—์„œ Redis ์˜์กด์„ฑ์„ Mockingํ•˜์—ฌ AdminInfoService์˜ ๊ธฐ๋Šฅ์„ ๊ฒ€์ฆํ•˜๋Š” ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค ์„ค์ •
ํ…Œ์ŠคํŠธํ™˜๊ฒฝ์—์„œ์˜ application-test.yml ์„ค์ •

๐Ÿซกย ํšŒ๊ณ 

โ€œํ—ค์–ด ๋‚˜์˜ฌ ์ˆ˜ ์—†๋Š” ๋ฏธ๋กœ ์†์—์„œ ๊ธธ์„ ์ฐพ๋Š” ์—ฌ์ •"
PIOMS ํ”„๋กœ์ ํŠธ๋Š” ์ œ ์ธ์ƒ ์Šฌ๋กœ๊ฑด์ธ โ€œํ™˜๊ณจํƒˆํƒœโ€๋ฅผ ์‹ค์ฒœํ•˜๋ฉฐ ๊ธฐ์ˆ ์  ์—ญ๋Ÿ‰๊ณผ ํ˜‘์—… ๋Šฅ๋ ฅ์„ ํฌ๊ฒŒ ์„ฑ์žฅ์‹œํ‚จ ๊ฒฝํ—˜์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์–‘ํ•œ ๊ธฐ์ˆ ์  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉด์„œ ๋ฐฐ์šด ๊ฒƒ๋“ค์„ ๋ฐ”ํƒ•์œผ๋กœ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋Šฅ๋ ฅ์„ ๋”์šฑ ํ‚ค์›Œ๋‚˜๊ฐ”์Šต๋‹ˆ๋‹ค. ํŒ€์›๋“ค๊ณผ ํ˜‘๋ ฅํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ์‹œ๊ฐ๊ณผ ์ ‘๊ทผ ๋ฐฉ์‹์„ ํ†ตํ•ฉํ•˜๋ฉฐ ํ”„๋กœ์ ํŠธ๋ฅผ ์„ฑ๊ณต์ ์œผ๋กœ ์™„์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ๊ณ , ํŒ€์›Œํฌ์˜ ์ค‘์š”์„ฑ๋„ ๋‹ค์‹œ๊ธˆ ๊นจ๋‹ฌ์•˜์Šต๋‹ˆ๋‹ค. ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋Š” ์ƒˆ๋กœ์šด ๊ธฐ์ˆ ์„ ์Šต๋“ํ•˜๊ณ , ๋ฐœ์ „ํ•ด ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ค‘์š”ํ•œ ์ „ํ™˜์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.