Skip to content

sparta-cat/cat-pang

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ› ๏ธ MSA ๊ธฐ๋ฐ˜ ๋ฌผ๋ฅ˜ ๊ด€๋ฆฌ ๋ฐ ๋ฐฐ์†ก ์‹œ์Šคํ…œ

๐Ÿ“‹ ๋ชฉ์ฐจ

  1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š”
  2. ์—ญํ•  ๋ถ„๋‹ด ๋ฐ MSA ์„œ๋น„์Šค ์„ค๋ช…
  3. ํ”„๋กœ์ ํŠธ ํ•ต์‹ฌ ์‚ฌ์šฉ์ž ์œ ์Šค์ผ€์ด์Šค
  4. ์ ์šฉ ๊ธฐ์ˆ 
  5. ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ
  6. ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…
  7. API๋ช…์„ธ์„œ ๋ฐ ๊ธฐ์ˆ ์Šคํƒ

1๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๊ฐœ์š”

๋ณธ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” MSA(Microservices Architecture) ๊ธฐ๋ฐ˜ ๋ฌผ๋ฅ˜ ๊ด€๋ฆฌ ๋ฐ ๋ฐฐ์†ก ์‹œ์Šคํ…œ์„ ์„ค๊ณ„ํ•˜๊ณ  ๊ตฌํ˜„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
์œ ๋ ˆ์นด ์„œ๋ฒ„๋ฅผ ํ†ตํ•ด ๊ฐ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ด€๋ฆฌํ•˜๊ณ , ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“  ์ธ์ž…์„ ์ œ์–ดํ•˜๋ฉฐ, ๋ชจ๋“  ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ Docker ์ปจํ…Œ์ด๋„ˆ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.


2๏ธโƒฃ ์—ญํ•  ๋ถ„๋‹ด ๋ฐ MSA ์„œ๋น„์Šค ์„ค๋ช…

์—ญํ•  ๋ถ„๋‹ด

์ด๋ฆ„ ๋‹ด๋‹น ์—ญํ• 
๋ฐ•ํƒœ์–ธ ๋ฉ€ํ‹ฐ ๊ทธ๋ž˜๋“ค ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ์™€ ์ธํ”„๋ผ ์„ค๊ณ„ ๋ฐ ๊ตฌ์ถ•, ์ฃผ๋ฌธ ๋ฐ ๋ฐฐ์†ก ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
์ด์žฌ๊ตฌ ๋ฌผ๋ฅ˜ ํ—ˆ๋ธŒ ๋ฐ ์—…์ฒด ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ฐœ๋ฐœ, ์ƒํ’ˆ ๊ด€๋ฆฌ ์„œ๋น„์Šค ๊ฐœ๋ฐœ
๊น€๋‚จํ˜ ์ธ์ฆ ๋ฐ ๊ถŒํ•œ ๊ด€๋ฆฌ, API Gateway ์„ค์ •, ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ

๊ฐ ์„œ๋น„์Šค ์„ค๋ช…

  1. ์œ ๋ ˆ์นด ์„œ๋ฒ„: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋“ฑ๋ก ๋ฐ ํƒ์ƒ‰.
  2. API Gateway: ์™ธ๋ถ€ ์š”์ฒญ์„ ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋ผ์šฐํŒ….
  3. ํ—ˆ๋ธŒ ๊ด€๋ฆฌ ์„œ๋น„์Šค: ํ—ˆ๋ธŒ ๊ด€๋ จ ์„œ๋น„์Šค ๊ด€๋ฆฌ.
  4. ์ฃผ๋ฌธ ๊ด€๋ฆฌ ์„œ๋น„์Šค: ์ฃผ๋ฌธ ์ฒ˜๋ฆฌ ๊ด€๋ จ ์„œ๋น„์Šค ๊ด€๋ฆฌ.
  5. ๋ฐฐ์†ก ๊ด€๋ฆฌ ์„œ๋น„์Šค: ์ฃผ๋ฌธ ๋ฐ ๋ฐฐ์†ก ์ •๋ณด ์ฒ˜๋ฆฌ ๋ฐ ์ตœ์ ์˜ ๊ฒฝ๋กœ ๊ด€๋ฆฌ.
  6. ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ ์„œ๋น„์Šค: ๋ฐฐ์†ก ๋‹ด๋‹น์ž ๋ฐ ์—…์ฒด ์‚ฌ์šฉ์ž ๊ด€๋ฆฌ. JWT ํ† ํฐ ๊ด€๋ฆฌ.

๏ธ3๏ธโƒฃ ํ”„๋กœ์ ํŠธ ํ•ต์‹ฌ ์‚ฌ์šฉ์ž ์œ ์Šค์ผ€์ด์Šค

๐Ÿ›ป์ฃผ๋ฌธ ๊ธฐ๋Šฅ

  • ์ฃผ๋ฌธ ๋ฐœ์ƒ

    • ์ฃผ๋ฌธ ์—…์ฒด: A์—…์ฒด๋Š” B์—…์ฒด์— ์ƒํ’ˆ์„ ์ฃผ๋ฌธํ•ฉ๋‹ˆ๋‹ค.
    • ์ƒ์‚ฐ ์—…์ฒด: ์ด์— ๋”ฐ๋ผ B์—…์ฒด๋Š” ๋ณธ ์„œ๋น„์Šค์— ๋ฐฐ์†ก์„ ์š”์ฒญํ•ฉ๋‹ˆ๋‹ค.
  • ๋ฌผ๋ฅ˜ ์ฒ˜๋ฆฌ ๋ฐ ์žฌ๊ณ  ์ด๋™

    • B์—…์ฒด ์ง€์—ญ์„ ๋‹ด๋‹นํ•˜๊ณ  ์žˆ๋Š” ํ—ˆ๋ธŒ์—์„œ A์—…์ฒด ๋‹ด๋‹น ํ—ˆ๋ธŒ๋กœ ๋ฌผํ’ˆ ์ด๋™: ์ฃผ๋ฌธ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด A์—…์ฒด ๋‹ด๋‹น ํ—ˆ๋ธŒ์—์„œ B์—…์ฒด ๋‹ด๋‹น ํ—ˆ๋ธŒ๋กœ ์ƒํ’ˆ์ด ์ด๋™๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ฃผ์–ด์ง„ ๊ฒฝ๋กœ์— ๋”ฐ๋ผ ์ƒํ’ˆ์ด ์ด๋™๋ฉ๋‹ˆ๋‹ค.
  • ์ตœ์ข… ์ˆ˜๋ น

    • A์—…์ฒด ๋‹ด๋‹น ํ—ˆ๋ธŒ์—์„œ A์—…์ฒด๋กœ ๋ฌผํ’ˆ ๋ฐฐ์†ก: A์—…์ฒด ๋‹ด๋‹น ํ—ˆ๋ธŒ์— ๋ฌผํ’ˆ์ด ๋„์ฐฉํ•˜๋ฉด, A์—…์ฒด ๋‹ด๋‹น ํ—ˆ๋ธŒ ์†Œ์† ๋ฐฐ์†ก ๋‹ด๋‹น์ž๊ฐ€ ๋ฌผํ’ˆ์„ A์—…์ฒด๋กœ ๋ฐฐ์†กํ•ฉ๋‹ˆ๋‹ค.


4๏ธโƒฃ ์ ์šฉ ๊ธฐ์ˆ 

๐ŸŽŽMultie Modules

๋ณธ ํ”„๋กœ์ ํŠธ๋Š” MSA์™€ ๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ๊ตฌ์กฐ๋ฅผ ์ฑ„ํƒํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋ชจ๋†€๋ฆฌ์‹ ๊ตฌ์กฐ์˜ ์žฅ์ ์„ ์˜์กด์„ฑ ๊ด€๋ฆฌ๋“ฑ ๊ฐœ๋ฐœ์‹œ ๋‚œ์ด๋„๋ฅผ ์กฐ์ ˆํ•˜๊ณ , ๊ฐ ๋ชจ๋“ˆ์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ฐœ๋ฐœํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” MSA์˜ ์œ ์—ฐ์„ฑ์„ ๋„์ž…ํ•˜์—ฌ ์šด์˜์˜ ๋ณต์žก์„ฑ์„ ์ค„์˜€์Šต๋‹ˆ๋‹ค.
์ด๋ฅผ ํ†ตํ•ด ๋ชจ๋“ˆ๋ณ„๋กœ ๋ช…ํ™•ํ•œ ์ฑ…์ž„์„ ๋ถ€์—ฌํ•˜๊ณ , ๊ธฐ๋Šฅ ํ™•์žฅ ๋ฐ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์ด ๋ฐœ์ƒํ•˜๋”๋ผ๋„ ์•ˆ์ •์ ์ธ ์šด์˜์ด ๊ฐ€๋Šฅํ•˜๋„๋ก ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”QueryDSL

  • ํŽ˜์ด์ง•, ์ •๋ ฌ, ๊ฒ€์ƒ‰์–ด ๋“ฑ์— ๋”ฐ๋ฅธ ๋™์  ์ฟผ๋ฆฌ ์ž‘์„ฑ์„ ์œ„ํ•˜์—ฌ QueryDSL์„ ๋„์ž…ํ•˜์—ฌ ํ™œ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ์ปดํŒŒ์ผ ์‹œ์ ์— ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์žˆ์–ด, ๋Ÿฐํƒ€์ž„ ์—๋Ÿฌ๋ฅผ ์ค„์ผ ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Query DSL์„ ํ†ตํ•ด ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋žจ์˜ ์žฅ์ ์„ ํ™œ์šฉํ•ด ํƒ€์ž… ์•ˆ์ „์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“œSwagger

  • ๋ฌธ์„œํ™”: SwaggerUI๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ๊ฐ์˜ API ๋ฌธ์„œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์‹œ๊ฐํ™”: API์—”๋“œํฌ์ธํŠธ, ๋งค๊ฐœ๋ณ€์ˆ˜, ์š”์ฒญ ๋ฐ ์‘๋‹ต ๋ณธ๋ฌธ ๋“ฑ์„ ์‹œ๊ฐ์ ์œผ๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ…Œ์ŠคํŠธ: ๊ฐ๊ฐ์˜ API๋ฅผ ํ…Œ์ŠคํŠธํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํŒ€ ๊ฐ„์˜ ํ˜‘์—… ์šฉ์ด: API๋ฌธ์„œ๋ฅผ ์ค‘์•™ ์ง‘์ค‘์‹์œผ๋กœ ๊ด€๋ฆฌํ•˜์—ฌ ํŒ€์› ๊ฐ„์˜ ํ˜‘์—…์„ ์šฉ์ดํ•˜๊ฒŒ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ”JWT (JSON Web Token)

  • ๋ฌด์ƒํƒœ ์ธ์ฆ: JWT๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„ธ์…˜ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜์ง€ ์•Š๊ณ ๋„ ์‚ฌ์šฉ์ž ์ธ์ฆ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • Self-contained ํ† ํฐ: ํ† ํฐ ์ž์ฒด์— ์‚ฌ์šฉ์ž ์ •๋ณด ๋ฐ ๊ถŒํ•œ ์ •๋ณด๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์–ด, ์„œ๋ฒ„๊ฐ€ ๋ณ„๋„๋กœ ์ƒํƒœ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ณ ๋„ ์ธ์ฆ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ๋ณด์•ˆ์„ฑ: JWT๋Š” ์„œ๋ช…์„ ํ†ตํ•ด ํ† ํฐ์˜ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋งŒ๋ฃŒ ์‹œ๊ฐ„์„ ์„ค์ •ํ•˜์—ฌ ํ† ํฐ์˜ ์œ ํšจ์„ฑ์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ํ™•์žฅ์„ฑ: ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ JWT๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ, ์„œ๋ฒ„ ๊ฐ„ ์„ธ์…˜ ๊ณต์œ  ์—†์ด ํ™•์žฅ ๊ฐ€๋Šฅํ•œ ์ธ์ฆ ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๐ŸŸฅRedis

  • ํ† ํฐ ๊ด€๋ฆฌ: Refresh Token์„ Redis์— ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•จ์œผ๋กœ์จ, JWT๊ฐ€ ๋งŒ๋ฃŒ๋˜์—ˆ์„ ๋•Œ ํšจ์œจ์ ์œผ๋กœ ํ† ํฐ์„ ๊ฐฑ์‹ ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
  • ์บ์‹ฑ์„ ํ†ตํ•œ ๋น ๋ฅธ ๋ฐ์ดํ„ฐ ์กฐํšŒ: ์ž์ฃผ ์กฐํšŒ๋˜๋Š” ๋ฐ์ดํ„ฐ(์˜ˆ: ์‚ฌ์šฉ์ž ์ •๋ณด ๋“ฑ)๋ฅผ Redis์— ์บ์‹ฑํ•˜์—ฌ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ ‘๊ทผ์„ ์ค„์ด๊ณ  ๋น ๋ฅธ ์‘๋‹ต ์‹œ๊ฐ„์„ ์ œ๊ณตํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ์„ฑ๋Šฅ์„ ํฌ๊ฒŒ ํ–ฅ์ƒ์‹œ์ผฐ์Šต๋‹ˆ๋‹ค.
  • TTL ์„ค์ •: Redis์—์„œ ์บ์‹ฑ๋œ ๋ฐ์ดํ„ฐ์™€ ํ† ํฐ์— TTL์„ ์„ค์ •ํ•˜์—ฌ, ๋งŒ๋ฃŒ๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™์œผ๋กœ ์‚ญ์ œ๋˜๋„๋ก ํ•จ์œผ๋กœ์จ ๋ฐ์ดํ„ฐ์˜ ์œ ํšจ์„ฑ์„ ์œ ์ง€ํ–ˆ์Šต๋‹ˆ๋‹ค.

5๏ธโƒฃ ํ”„๋กœ์ ํŠธ ๊ตฌ์„ฑ

3.1 ์ธํ”„๋ผ ์•„ํ‚คํ…์ฒ˜

โžก๏ธ์‚ฌ์šฉ์ž API ์š”์ฒญ ํ๋ฆ„
๋กœ๊ทธ์ธ ํ›„ ์‚ฌ์šฉ์ž๊ฐ€ API์š”์ฒญ์„ ๋ณด๋‚ด๋ฉด,
Gateway์—์„œ Auth์„œ๋น„์Šค(User์„œ๋น„์Šค)๋กœ ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๋ฅผ ์š”์ฒญ.
Auth์„œ๋น„์Šค์—์„œ ์œ ํšจํ•œ ํ† ํฐ์ž„์ด ํ™•์ธ๋˜๋ฉด, id์™€ role ๊ฐ’์„ ๋ฐ˜ํ™˜.
Gateway์—์„œ ๋ฐ˜ํ™˜๋ฐ›์€ ๊ฐ’์„ Header์— ๋„ฃ๊ณ , ์š”์ฒญ ์—”๋“œํฌ์ธํŠธ๋กœ ๋ผ์šฐํŒ….

3.2 ๋ฉ€ํ‹ฐ ๋ชจ๋“ˆ ๊ตฌ์กฐ

ํ”„๋กœ์ ํŠธ/
โ”‚
โ”œโ”€โ”€ eureka/
โ”œโ”€โ”€ gateway/
โ”œโ”€โ”€ config/
โ”œโ”€โ”€ core/
โ”œโ”€โ”€ securitydb/
โ”œโ”€โ”€ user/
โ”œโ”€โ”€ auth/
โ”œโ”€โ”€ order/
โ”œ โ”œโ”€โ”€ delivery/
โ”œโ”€โ”€ hub/
  โ”œโ”€โ”€โ”€ company/
  โ”œโ”€โ”€โ”€ product/

3.3 ERD


6๏ธโƒฃ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…

1. ๋‚ด๋ถ€ ํฌํŠธ ๋ฌธ์ œ

๋‚ด๋ถ€ ํฌํŠธ ๋ฌธ์ œ๋Š” ๋‘ ๊ฐ€์ง€๋กœ ๋‚˜๋ˆ„์–ด์ง‘๋‹ˆ๋‹ค:

1.1 Docker ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ๋„คํŠธ์›Œํฌ ํ†ต์‹  ๋ฌธ์ œ

  • ๋ฌธ์ œ ์ƒํ™ฉ: Docker ๋„คํŠธ์›Œํฌ์— ์†ํ•œ ์ปจํ…Œ์ด๋„ˆ๋“ค๋ผ๋ฆฌ ํ†ต์‹ ํ•  ๋•Œ, service_name:๋‚ด๋ถ€ํฌํŠธ ํ˜•์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ด ๋ถ€๋ถ„์ด ์ž˜๋ชป ์„ค์ •๋˜์–ด ํ†ต์‹ ์ด ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: ์ปจํ…Œ์ด๋„ˆ ๊ฐ„ ์˜ฌ๋ฐ”๋ฅธ ๋„คํŠธ์›Œํฌ ํ†ต์‹ ์„ ์œ„ํ•ด, service_name:๋‚ด๋ถ€ํฌํŠธ๋กœ ์ ‘๊ทผํ•˜๋„๋ก ์„ค์ •์„ ์ˆ˜์ •ํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

1.2 Postgres ๋‚ด๋ถ€ ํฌํŠธ ๋ณ€๊ฒฝ ๋ฌธ์ œ

  • ๋ฌธ์ œ ์ƒํ™ฉ: Postgres์˜ ๊ธฐ๋ณธ ๋‚ด๋ถ€ ํฌํŠธ(5432)๋ฅผ ๋‹ค๋ฅธ ํฌํŠธ๋กœ ๋ณ€๊ฒฝํ•˜๋ฉด์„œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: Postgres์˜ ๋‚ด๋ถ€ ํฌํŠธ๋ฅผ ๋‹ค์‹œ 5432๋กœ ๋ณต๊ตฌํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋„๋ก ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
2. Docker ์บ์‹œ ๋ฌธ์ œ
  • ๋ฌธ์ œ ์ƒํ™ฉ: Docker ์ด๋ฏธ์ง€๋ฅผ ๋นŒ๋“œํ•  ๋•Œ, ์ด์ „์— ๋นŒ๋“œ๋œ ์ด๋ฏธ์ง€๊ฐ€ ์บ์‹œ๋กœ ์ธํ•ด ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:
    • no-cache ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ Docker ์ด๋ฏธ์ง€๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๋นŒ๋“œํ•จ์œผ๋กœ์จ ์บ์‹œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
    • docker compose system prune -a ๋ช…๋ น์–ด์™€ docker compose down -v ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์บ์‹œ๋ฅผ ์ •๋ฆฌํ•˜๊ณ  ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
3. ํ—ฌ์Šค ์ฒดํฌ ๋ฌธ์ œ
  • ๋ฌธ์ œ ์ƒํ™ฉ: ํ—ฌ์Šค ์ฒดํฌ(Health Check) ๊ธฐ๋Šฅ์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ์„œ๋น„์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.
  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•: Docker Compose ์„ค์ •์—์„œ ๋ˆ„๋ฝ๋œ ํ•„๋“œ๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ํ—ฌ์Šค ์ฒดํฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.
4. Security Context๊ฐ€ ์œ ์ง€ ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ
  • ๋ฌธ์ œ ์ƒํ™ฉ
    • ์› ์ธ์ฆ, ์ธ๊ฐ€ ํ๋ฆ„:
      1. ๋กœ๊ทธ์ธ ํ›„ API ์š”์ฒญ
      2. Gateway์—์„œ Auth์„œ๋น„์Šค๋กœ ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ๋ฐ ์ธ๊ฐ€ ์š”์ฒญ
      3. Auth ์„œ๋น„์Šค์—์„œ ํ† ํฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ Authentication๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์—ฌ SecurityContext์ƒ์„ฑ
      4. Gateway์—์„œ API์š”์ฒญ๋Œ€๋กœ ๋ผ์šฐํŒ…

  • ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
    • ์„ค๊ณ„ ๋ณ€๊ฒฝ
      1. ๋กœ๊ทธ์ธ ํ›„ API ์š”์ฒญ
      2. Gateway์—์„œ Auth์„œ๋น„์Šค(User์„œ๋น„์Šค)๋กœ ํ† ํฐ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์š”์ฒญ
      3. ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ ์™„๋ฃŒ ํ›„ ํ† ํฐ์—์„œ ID์™€ Role์„ ์ถ”์ถœํ•ด Gateway์— ๋ฐ˜ํ™˜
      4. Gateway์—์„œ ๋ฐ›์€ ๊ฐ’๋“ค์„ ํ—ค๋”์— ๋„ฃ๊ณ  ๋ผ์šฐํŒ…
      5. SecurityDB๋ชจ๋“ˆ(Core๋ชจ๋“ˆ)์—์„œ SecurityFilterChain์— ์ถ”๊ฐ€ํ•œ OncePerRequestFilter๋ฅผ ์ƒ์†ํ•œ AuthorizationFilter๋ฅผ ํ†ตํ•ด SecurityContext๋ฅผ ์ƒ์„ฑ
      6. ์ดํ›„ MSA์„œ๋น„์Šค์˜ ์—”๋“œํฌ์ธํŠธ์— ๋„๋‹ฌํ•˜์—ฌ ๋กœ์ง์ด ์‹คํ–‰

7๏ธโƒฃ API๋ช…์„ธ์„œ ๋ฐ ๊ธฐ์ˆ ์Šคํƒ

API ๋ช…์„ธ์„œ

---




About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published