Skip to content

Latest commit

ย 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 

Repository files navigation

study-msa

๋ฆฌ์•กํ‹ฐ๋ธŒ ์Šคํ”„๋ง๋ถ€ํŠธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค

  • ์Šคํ”„๋ง5์˜ WebFlux ์‚ฌ์šฉ
  • RabbitMQ์™€ ๊ฐ™์€ ๋ฉ”์‹œ์ง• ์„œ๋ฒ„ ์‚ฌ์šฉ (๋น„๋™๊ธฐ ์ƒํ˜ธ์ž‘์šฉ์— ์‚ฌ์šฉ)

์Šคํ”„๋ง WebFlux๋ฅผ ํ™œ์šฉํ•œ ๋ฆฌ์•กํ‹ฐ๋ธŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค (p149)

  • Mono๋ฅผ reponse body๋กœ ๋ฐ˜ํ™˜ -> ๋น„๋™๊ธฐ ๋…ผ๋ธ”๋กํ‚น ๋ชจ๋“œ์—์„œ mono๊ฐ€ ์ผ์„ ๋งˆ์นœํ›„์— Greet๊ฐ์ฒด๊ฐ€ ์ง๋ ฌํ™”๋˜๋Š” ๊ฒƒ
  • ๋ฆฌ์•กํ‹ฐ๋ธŒ ์ŠคํŠธ๋ฆผ์˜ ์ดํ–‰
  • ๋ฐœํ–‰์ž, ๊ตฌ๋…์ž, ๊ตฌ๋…, ํ”„๋กœ์„ธ์„œ
  • ๋ฆฌ์•กํ„ฐ์—๋Š” ๋ฐœํ–‰์ž ํ”„๋กœ์„ธ์„œ๋กœ ์‚ฌ์šฉ๋˜๋Š” ๋‘ ๊ฐœ์˜ ๊ตฌํ˜„์ฒด๊ฐ€ ์žˆ์Œ -> Flux์™€ Mono

Flux, Mono

Mono๋Š” 0-1๊ฐœ์˜ ๊ฒฐ๊ณผ๋งŒ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ Reactor์˜ ๊ฐ์ฒด์ด๊ณ , Flux๋Š” 0-N๊ฐœ์ธ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์ž…๋‹ˆ๋‹ค. Reactor๋ฅผ ์‚ฌ์šฉํ•ด ์ผ๋ จ์˜ ์ŠคํŠธ๋ฆผ์„ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋‹ค ๋ณด๋ฉด ๋ณดํ†ต ์—ฌ๋Ÿฌ ์ŠคํŠธ๋ฆผ์„ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋ฅผ ๋ชจ์•„์ค„ ๋•Œ Mono๋ฅผ ์“ฐ๊ณ , ๊ฐ๊ฐ์˜ Mono๋ฅผ ํ•ฉ์ณ์„œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋Š” Flux๋กœ ํ‘œํ˜„ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ์„ค๋ช…์€ Reactor์˜ Mono reference์™€ Flux reference๋ฅผ ์ฝ์–ด ๋ณด์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. Mono์™€ Flux๋ชจ๋‘ Reactive Stream์˜ Publisher ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ณ  ์žˆ์œผ๋ฉฐ, Reactor์—์„œ ์ œ๊ณตํ•˜๋Š” ํ’๋ถ€ํ•œ ์—ฐ์‚ฐ์ž๋“ค(operators)์˜ ์กฐํ•ฉ์„ ํ†ตํ•ด ์ŠคํŠธ๋ฆผ์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด Flux์—์„œ ํ•˜๋‚˜์˜ ๊ฒฐ๊ณผ๋กœ ๊ฐ’์„ ๋ชจ์•„์ฃผ๋Š” reduce์—ฐ์‚ฐ์ž๋Š” Mono๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ , Mono์—์„œ flatMapMany๋ผ๋Š” ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ๋ถ€ํ„ฐ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ’์„ ์ทจ๊ธ‰ํ•˜๋Š” Flux๋ฅผ ๋ฆฌํ„ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  Publisher์ธํ„ฐํŽ˜์ด์Šค์— ์ •์˜๋œ subscribe๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ Mono๋‚˜ Flux๊ฐ€ ๋™์ž‘ํ•˜๋„๋ก ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ๋‹ค๋ฃจ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์Šคํ”„๋ง๋ถ€ํŠธ์™€ RabbitMQ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฆฌ์•กํ‹ฐ๋ธŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค (p155)

OAuth2

ํด๋ผ์ด์–ธํŠธ: ๊ถŒํ•œ๋ถ€์—ฌ์„œ๋ฒ„์— ์š”์ฒญ์„ ๋ณด๋ƒ„ (authorization) ๊ถŒํ•œ๋ถ€์—ฌ์„œ๋ฒ„: ์š”์ฒญ๊ฒ€์ฆ˜, ํด๋ผ์ด์–ธํŠธ์—๊ฒŒ access ํ† ํฐ์„ ์คŒ access ํ† ํฐ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์š”์ฒญ์‹œ ๊ฒ€์ฆ˜ @EnableResourceServer : OAuth2 ํ† ํฐ์„ ๊ฒ€์ฆํ•˜๋Š” ๋ณด์•ˆ ํ•„ํ„ฐ๋ฅผ ํ™œ์„ฑํ™”ํ•˜์—ฌ access ํ† ํฐ์„ ๊ฒ€์ฆํ• ์ˆ˜ ์žˆ๊ฒŒ ํ•จ @EnableAuthorizationServer : ํ† ํฐ์„ ์ €์žฅํ•˜๋Š” ์ธ๋ฉ”๋ชจ๋ฆฌ ์ €์žฅ์†Œ๋ฅผ ๊ฐ€์ง„ ๊ถŒํ•œ ์„œ๋ฒ„ ์ƒ์„ฑ OAuth2RestTemplate ๊ฐ์ฒด ์‚ฌ์šฉ ResourceServerConfigurer, AuthorizationServerConfigurer ์ˆ˜์ • ํ•„์š”

CORS (p614)

@CrossOrigiin method๋ฟ๋งŒ ์•„๋‹ˆ๋ผ class์—๋„ ๋ถ™์ผ ์ˆ˜ ์žˆ์Œ WebMvcConfigurer ๋นˆ์„ ์‚ฌ์šฉํ•˜๊ณ  addCorsMappings method๋ฅผ ์žฌ์ •์˜ํ•˜๋ฉด ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ „์ฒด์— ๊ฑธ์ณ ํšจ๋ ฅ์„ ๋ฏธ์น˜๋Š” CORS๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Œ

์Šคํ”„๋ง๋ถ€ํŠธ Actuator (p168)

dump mapping health autoconfig metris

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋ฌธ์„œํ™” (p174)

Swagger Springfox : REST API ๋ฌธ์„œ ์ž๋™ ์ƒ์„ฑ ์˜ˆ์ œ (p176)

4. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฐœ๋… ์ ์šฉ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ฒฝ๊ณ„ ์„ค์ • (p192)

  • ์ž์œจ์  ๊ธฐ๋Šฅ
  • ๋ฐฐํฌ๋‹จ์œ„ ํฌ๊ธฐ
  • ๋ถ„๋ฆฌํ•˜๊ธฐ์— ์ ํ•ฉํ•œ ๊ธฐ๋Šฅ or ์„œ๋ธŒ๋„๋ฉ”์ธ
  • ํด๋ฆฌ๊ธ€๋ž ์•„ํ‚คํ…์ฒ˜
  • ์„ ํƒ์  ํ™•์žฅ
  • ์• ์ž์ผ ํŒ€๊ณผ ํ˜‘๋ ฅ ๊ฐœ๋ฐœ
  • ๋‹จ์ผ ์ฑ…์ž„
  • ๋ณต์ œ๊ฐ€๋Šฅ์„ฑ๊ณผ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ์„ฑ
  • ๊ฒฐํ•ฉ๊ณผ ์‘์ง‘

๋™๊ธฐ, ๋น„๋™๊ธฐ ์„ ํƒ ๊ธฐ์ค€ (p201)

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ (p205)

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

๊ณต์œ  ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (p226)

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

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ API ๊ฒŒ์ดํŠธ์›จ์ด (p230)

๋งŽ์€๊ฒฝ์šฐ ๋ฐฑ์—”๋“œ์˜ ํ”„๋ก์‹œ ์—ญํ•  API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋งˆ๋‹ค ์žˆ๊ฑฐ๋‚˜ / ๊ณตํ†ต API ๊ฒŒ์ดํŠธ์›จ์ด ์‚ฌ์šฉ

์„œ๋น„์Šค ๋ฒ„์ €๋‹ (p234)

๊ธฐ์กด ์„œ๋น„์Šค ์‚ฌ์šฉ์ž์—๊ฒŒ ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์œผ๋ฉด์„œ ์ƒˆ๋กœ์šด ์„œ๋น„์Šค ์ถœ์‹œ ๊ฐ€๋Šฅ URI ๋ฒ„์ €๋‹ ๋ฏธ๋””์–ด ํƒ€์ž… ๋ฒ„์ €๋‹ ์ปค์Šคํ…€ ํ—ค๋”

๊ณต์œ  ์ฐธ์กฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ (p237)

์ •์ , ๋ณ€๊ฒฝ๋  ๊ฐ€๋Šฅ์„ฑ ์—†์Œ -> ํ•˜๋“œ์ฝ”๋”ฉ ๊ณตํ†ต ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๊ตฌํ˜„ -> ๋ชจ๋“  ์„œ๋น„์Šค๊ฐ€ ๋งˆ์Šคํ„ฐ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ํ˜ธ์ถœํ•˜๋Š” ๋‹จ์  ๋ชจ๋“  ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ๋ณต์ œ -> ์œ ์ง€๋ณต์žก. ์„ฑ๋Šฅ์นœํ™”. ์ฝ”๋“œ์™€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋‹จ์ˆœํ•˜๊ณ  ์ •์ ์ธ๊ฒฝ์šฐ ์ ํ•ฉ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ปฌ ์บ์‹œ -> ๋ฐ์ดํ„ฐ ๊ทœ๋ชจ์— ๋”ฐ๋ผ Ehcache, Hazelcast, Infinispan ๋“ฑ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ๋Œ€๊ทœ๋ชจ ๋ฐ์ดํ„ฐ ์ž‘์—…

ex) ๊ณผ๊ธˆ, ์†ก์žฅ, ์ฃผ๋ฌธ... -> ์†ก์žฅ์ •๋ณด์™€ ์ฃผ๋ฌธ์ •๋ณด๊ฐ€ ๊ณผ๊ธˆ ์„œ๋น„์Šค์— ๋ณต์ œ๋˜๋Š” ๋ฐฉ์‹

  • ์‚ฌ์ „์ง‘๊ณ„: ๋ฐ์ดํ„ฐ๊ฐ€ ์ƒ์„ฑ๋ ๋•Œ ์‚ฌ์ „์ง‘๊ณ„(์ฃผ๋ฌธ์ƒ์„ฑ-> ๊ณผ๊ธˆ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์— ์ด๋ฒคํŠธ ๋ฐœ์†ก -> ์›”๋ณ„ ์ •์‚ฐ์„ ์œ„ํ•ด ๋‚ด๋ถ€์ ์œผ๋กœ ๊ณ„์† ๋ฐ์ดํ„ฐ ์ง‘๊ณ„ ์ด๋ ‡๊ฒŒํ•˜๋ฉด ๊ณผ๊ธˆ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๊ณผ๊ธˆ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์™ธ๋ถ€๋กœ ์š”์ฒญ์„ ๋ณด๋‚ผ ํ•„์š”๊ฐ€ ์—†์–ด์ง€์ง€๋งŒ, ๋ฐ์ดํ„ฐ ์ค‘๋ณต์ด ๋ฐœ์ƒํ•จ
  • ๋ฐฐ์น˜: ์‚ฌ์ „์ง‘๊ณ„๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ• ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

6. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ง„ํ™”: ์‚ฌ๋ก€ ์—ฐ๊ตฌ

7. ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ์ปดํฌ๋„ŒํŠธ๋ฅผ ํ™œ์šฉํ•œ MSA ํ™•์žฅ

Spring Cloud Config ์„œ๋ฒ„ - ํ™˜๊ฒฝ์„ค์ • ์ •๋ณด๋ฅผ ๋‚ด๋ถ€์— ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์™ธ๋ถ€ํ™”๋œ ํ™˜๊ฒฝ์„ค์ • ์„œ๋ฒ„

Eureka

๋„ทํ”Œ๋ฆญ์Šค OSS์—์„œ ์œ ๋ž˜ self-registration, ๋™์ ํƒ์ƒ‰ ๋ฐ ๋ถ€ํ•˜๋ถ„์‚ฐ(๋ฆฌ๋ณธ์‚ฌ์šฉ)

Service discovery ํŒจํ„ด

MSA์™€ ๊ฐ™์€ ๋ถ„์‚ฐ ํ™˜๊ฒฝ์€ ์„œ๋น„์Šค ๊ฐ„์˜ ์›๊ฒฉ ํ˜ธ์ถœ๋กœ ๊ตฌ์„ฑ์ด ๋œ๋‹ค. ์›๊ฒฉ ์„œ๋น„์Šค ํ˜ธ์ถœ์€ IP ์ฃผ์†Œ์™€ ํฌํŠธ๋ฅผ ์ด์šฉํ•˜๋Š” ๋ฐฉ์‹์ด ๋˜๋Š”๋‹ค. ํด๋ผ์šฐ๋“œ ํ™˜๊ฒฝ์ด ๋˜๋ฉด์„œ ์„œ๋น„์Šค๊ฐ€ ์˜คํ†  ์Šค์ผ€์ผ๋ง๋“ฑ์— ์˜ํ•ด์„œ ๋™์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ์ปจํ…Œ์ด๋„ˆ ๊ธฐ๋ฐ˜์˜ ๋ฐฐํฌ๋กœ ์ธํ•ด์„œ, ์„œ๋น„์Šค์˜ IP๊ฐ€ ๋™์ ์œผ๋กœ ๋ณ€๊ฒฝ๋˜๋Š” ์ผ์ด ์žฆ์•„์กŒ๋‹ค. ๊ทธ๋ž˜์„œ ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ• ๋•Œ ์„œ๋น„์Šค์˜ ์œ„์น˜ (์ฆ‰ IP์ฃผ์†Œ์™€ ํฌํŠธ)๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์ด ํ•„์š”ํ•œ๋ฐ, ์ด๊ฒƒ์„ ๋ฐ”๋กœ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ (Service discovery)๋ผ๊ณ  ํ•œ๋‹ค. Service A์˜ ์ธ์Šคํ„ด์Šค๋“ค์ด ์ƒ์„ฑ์ด ๋ ๋•Œ, Service A์— ๋Œ€ํ•œ ์ฃผ์†Œ๋ฅผ Service registry (์„œ๋น„์Šค ๋“ฑ๋ก ์„œ๋ฒ„) ์— ๋“ฑ๋กํ•ด๋†“๋Š”๋‹ค. Service A๋ฅผ ํ˜ธ์ถœํ•˜๊ณ ์ž ํ•˜๋Š” ํด๋ผ์ด์–ธํŠธ๋Š” Service registry์— Service A์˜ ์ฃผ์†Œ๋ฅผ ๋ฌผ์–ด๋ณด๊ณ  ๋“ฑ๋ก๋œ ์ฃผ์†Œ๋ฅผ ๋ฐ›์•„์„œ ๊ทธ ์ฃผ์†Œ๋กœ ์„œ๋น„์Šค๋ฅผ ํ˜ธ์ถœํ•œ๋‹ค.

Service registry

๊ฐ€์žฅ ์‰ฌ์šด ๋ฐฉ๋ฒ•์œผ๋กœ๋Š” DNS ๋ ˆ์ฝ”๋“œ์— ํ•˜๋‚˜์˜ ํ˜ธ์ŠคํŠธ๋ช…์— ์—ฌ๋Ÿฌ๊ฐœ์˜ IP๋ฅผ ๋“ฑ๋กํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ DNS๋Š” ๋ ˆ์ฝ”๋“œ ์‚ญ์ œ์‹œ ์—…๋ฐ์ดํŠธ ๋˜๋Š” ์‹œ๊ฐ„๋“ฑ์ด ์†Œ์š”๋˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ทธ๋‹ค์ง€ ์ ์ ˆํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์—, ZooKeeper๋‚˜ etcd ์™€ ๊ฐ™์€ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ณ  ๋˜๋Š” Service discovery์— ์ „๋ฌธํ™”๋œ ์†”๋ฃจ์…˜์œผ๋กœ๋Š” Netflix์˜ Eureka๋‚˜ Hashcorp์˜ Consul๊ณผ ๊ฐ™์€ ์„œ๋น„์Šค๊ฐ€ ์žˆ๋‹ค.

Eureka ์„œ๋ฒ„ ๊ตฌ์„ฑ (p356)

Eureka ์„œ๋น„์Šค์— ๊ณ ๊ฐ€์šฉ์„ฑ์„ ์ ์šฉํ•˜๋Š” ์ข‹์€ ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ ๋Œ€์˜ eureka ์„œ๋ฒ„๋ฅผ ํด๋Ÿฌ์Šคํ„ฐ๋งํ•ด์„œ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๋’ค์— ๋‘๋Š” ๊ฒƒ์ด๋‹ค. Eureka ์„œ๋ฒ„๋Š” P2P ๋ฐฉ์‹์˜ ๋ฐ์ดํ„ฐ ๋™๊ธฐํ™” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ๊ฐ€์กŒ๋‹ค. ๋Ÿฐํƒ€์ž„์˜ ์ƒํƒœ ์ •๋ณด๋Š” DB์— ์ €์žฅ๋””์ง€ ์•Š๊ณ  ์ธ๋ฉ”๋ชจ๋ฆฌ ์บ์‹œ์—์„œ ๊ด€๋ฆฌ๋œ๋‹ค.

Zuul (p368)

๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค ๋‚ด๋ถ€์ ์œผ๋กœ ์„œ๋น„์Šค ํƒ์ƒ‰์„ ์œ„ํ•ด eureka ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค ์‚ฌ์ด์˜ ๋ถ€ํ•˜๋ถ„์‚ฐ์„ ์œ„ํ•ด ribbon์„ ์‚ฌ์šฉํ•จ ํด๋ผ์ด์–ธํŠธ๊ฐ€ eureka ํด๋ผ์ด์–ธํŠธ์ด๊ธฐ๋„ ํ•˜๋ฉด Zuul์€ ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์™€ ๊ฐ™์ด ์ž์‹ ์˜ ์„œ๋น„์ŠคID๋กœ eureka์— ์ž๊ธฐ์ž์‹ ์„ ๋“ฑ๋กํ•˜๊ณ , ํด๋ผ์ด์–ธํŠธ๋Š” eureka์— ๋“ฑ๋ก๋œ ์„œ๋น„์ŠคID๋ฅผ ํ†ตํ•ด Zuul ์ธ์Šคํ„ด์Šค์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ํด๋ผ์ด์–ธํŠธ๊ฐ€ eureka ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์•„๋‹ˆ๋ผ๋ฉด, eureka ์„œ๋ฒ„์— ์˜ํ•œ ๋ถ€ํ•˜๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— HAProxy์™€ ๊ฐ™์€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ๋’ค์— ์œ„์น˜ํ•ด ์‹คํ–‰ํ•œ๋‹ค. ์–‘์ชฝ ๊ฒฝ์šฐ ๋ชจ๋‘ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” eureka ์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๋Š” Zuul์— ์˜ํ•ด ๋ถ€ํ•˜๋ฌธ์‚ฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ด๋ค„์ง„๋‹ค.

ํด๋ผ์šฐ๋“œ ์ŠคํŠธ๋ฆผ(๋ฆฌ์•กํ‹ฐ๋ธŒ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•จ) (p380) ๋ฉ”์‹œ์ง€๋ธŒ๋กœ์ปค ์‚ฌ์šฉ. ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ์ŠคํŠธ๋ฆผ์€ ๋ฉ”์‹œ์ง• ์ถ”์ƒํ™” ๊ธฐ๋Šฅ์„ ์ œ๊ณต. ์‹ค์ œ ๋ฉ”์‹œ์ง• ๊ตฌํ˜„์ฒด๋Š” RabbitMQ, Kafka์ผ์ˆ˜ ์žˆ์Œ ํด๋ผ์šฐ๋“œ ์ŠคํŠธ๋ฆผ์€ ์ž…๊ตฌ(source)์™€ ์ถœ๊ตฌ(sink)์—์„œ ๋™์ž‘ํ•จ

8. ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๋กœ๊น… ๋ฐ ๋ชจ๋‹ˆํ„ฐ๋ง

๋กœ๊ทธ๊ด€๋ฆฌ์™€ ๋‚œ์ œ

๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ๋…๋ฆฝ์ ์ธ ๋ฌผ๋ฆฌ์  ์žฅ๋น„๋‚˜ ๊ฐ€์ƒ๋จธ์‹ ์—์„œ ์šด์˜๋˜๋ฏ€๋กœ ๋กœ๊ทธํŒŒ์ผ์€ ๊ฒฐ๊ตญ ๊ฐ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ณ„๋กœ ํŒŒํŽธํ™”๋œ๋‹ค. ๋”ฐ๋ผ์„œ ๋กœ๊ทธํŒŒ์ผ์„ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด๋ถ€์— ์ €์žฅํ•˜์ง€ ๋ง๊ณ  ์™ธ๋ถ€ํ™”ํ•ด์•ผ ํ•œ๋‹ค.

์ค‘์•™์ง‘์ค‘ํ˜• ๋กœ๊น…

๋กœ๊ทธ ์ŠคํŠธ๋ฆผ(log stream) : ๋กœ๊ทธ ์ƒ์‚ฐ์ž๊ฐ€ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ stream ๋กœ๊ทธ ์ ์žฌ๊ธฐ(log shipper) : ใ„น๊ทธ ์ ์žฌ๊ธฐ๋Š” ๋กœ๊ทธ ๋ฉ”์‹œ์ง€์˜ ์ˆ˜์ง‘์„ ๋‹ด๋‹นํ•˜์—ฌ ๋กœ๊ทธ ์ €์žฅ์†Œ(log store) : ๋กœ๊ทธ ์ €์žฅ์†Œ๋Š” ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅ. ex) hdfs ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ๊ธฐ ๋กœ๊ทธ ๋Œ€์‹œ๋ณด๋“œ

๋กœ๊ธ€๋ฆฌ(Loggly)

logback appenders ์‚ฌ์šฉํ•˜์—ฌ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๋กœ๊ธ€๋ฆฌ ์„œ๋น„์Šค๋กœ ์ง์ ‘ ์ŠคํŠธ๋ฆฌ๋ฐ

ํด๋ผ์šฐ๋“œ ์„œ๋น„์Šค

papertrial, logsene, sumo logic, google cloud logging, logentries

๋‚ด์žฅ ๊ฐ€๋Šฅํ•œ ๋กœ๊น… ์†”๋ฃจ์…˜

Graylog : ๋กœ๊ทธ ์ €์žฅ์„ ์œ„ํ•ด ElasticSearch๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์ €์žฅ์†Œ๋กœ MongoDB๋ฅผ ์‚ฌ์šฉ๋˜๋Š” Splunk : ๋กœ๊ทธ ํŒŒ์ผ ์ ์žฌ ๋ฐฉ์‹์„ ์‚ฌ์šฉ

์ตœ์ƒ์˜ ์กฐํ•ฉ (p398)

๋กœ๊ทธ์ ์žฌ๊ธฐ ๋กœ๊ทธ ์ŠคํŠธ๋ฆผ ์ฒ˜๋ฆฌ๊ธฐ -> ์ „ํ†ต์ ์ธ ๋ฐ˜์‘ ๋ถ„์„์—์„œ๋Š” ํ•  ์ˆ˜ ์—†์—ˆ๋˜ ์–ด๋–ค ํŠน์ •ํ•œ ์ด๋ฒคํŠธ ์ŠคํŠธ๋ฆผ์— ๋ฐ˜์‘ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 404 ์˜ค๋ฅ˜์ฒ˜๋ฆฌ์ฒ˜๋Ÿผ ์‹œ๊ธ‰ํžˆ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์œ ์šฉ Flume๊ณผ Kafka๋ฅผ Storm์ด๋‚˜ Spark Streaming๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ˆ˜์ง‘ํ•˜๋Š”๋ฐ ์œ ์šฉํ•œ ํ”Œ๋ฃธ ์–ดํŽœ๋”๋ฅผ ํ†ตํ•ด, ๋ถ„์‚ฐ๋œ ์นดํ”„์นด ๋ฉ”์‹œ์ง€ ํ์— ํ‘ธ์‹œํ•œ๋‹ค. ์ŠคํŠธ๋ฆผ ํ”„๋กœ์„ธ์„œ๋Š” ์ˆ˜์ง‘๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ๋ž˜์Šคํ‹ฑ์„œ์น˜ ๋ฐ ๊ธฐํƒ€ ๋กœ๊ทธ ์ €์žฅ์†Œ๋กœ ๋ณด๋‚ด๊ธฐ์ „์— ์ฆ‰์‹œ ์ฒ˜๋ฆฌ ๋กœ๊ทธ ์ €์žฅ์†Œ ์‹ค์‹œ๊ฐ„ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋Š” ์ผ๋ž˜์Šคํ‹ฑ์„œ์น˜์— ์ €์žฅ -> ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ…์ŠคํŠธ ๊ธฐ๋ฐ˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ฟผ๋ฆฌํ•  ์ˆ˜ ์žˆ์Œ HDFS๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ์•„์นด์ด๋ธŒ๋œ ๋กœ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ MongoDB๋‚˜ ์นด์‚ฐ๋“œ๋ผ๋Š” ๋งค์›” ์ง‘๊ณ„๋˜๋Š” ํŠธ๋žœ์žญ์…˜ ์ˆ˜์™€ ๊ฐ™์€ ์š”์•ฝ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š”๋ฐ ์‚ฌ์šฉ

๋Œ€์‹œ๋ณด๋“œ

์‚ฌ์šฉ์ž ์ •์˜ ๋กœ๊น… ๊ตฌํ˜„ (p400) ๋กœ๊ทธ์Šคํƒœ์‹œ, ์ผ๋ž˜์Šคํ‹ฑ์„œ์น˜, ํ‚ค๋ฐ”๋‚˜ ์กฐํ•ฉ ( ELK ์Šคํƒ)

์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ์Šฌ๋ฃจ์Šค -> ๋ถ„์‚ฐ ๋กœ๊ทธ ์ถ”์ 

๋ชจ๋‹ˆํ„ฐ๋ง ๋„๊ตฌ

์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ํžˆ์ŠคํŠธ๋ฆญ์Šค - ์žฅ์• ๋ฅผ ๊ฒฌ๋”œ ์ˆ˜ ์žˆ๋Š” ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ์œ„ํ•œ (p415)

ํžˆ์ŠคํŠธ๋ฆฌ์Šค๋Š” ๋นจ๋ฆฌ ์‹คํŒจํ•˜๊ณ  ๋นจ๋ฆฌ ๋ณต๊ตฌํ•˜๋Š” ๊ฒƒ์„ ์›์น™์œผ๋กœ ํ•จ ์„œ๋น„์Šค์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ํžˆ์ŠคํŠธ๋ฆญ์Šค๊ฐ€ ์„œ๋น„์Šค ๊ฒฉ๋ฆฌ์— ๋„์›€์„ ์คŒ ๋„ทํ”Œ๋ฆญ์Šค์—์„œ ํ…Œ์ŠคํŠธ ๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์ด๋ฉฐ ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ํŒจํ„ด์„ ๋ฐ”ํƒ•์œผ๋กœ ํ•จ API ๊ฒŒ์ดํŠธ์›จ์ด ์„œ๋น„์Šค๋ฅผ ๋ณ€๊ฒฝํ•ด ํžˆ์ŠคํŠธ๋ฆญ์Šค์— ํ†ตํ•ฉ (p416)

๋ฐ์ดํ„ฐ๋ ˆ์ดํฌ๋ฅผ ์‚ฌ์šฉํ•œ ๋ฐ์ดํ„ฐ ๋ถ„์„ (p426)

ํŒŒํŽธํ™”๋œ ๋ฐ์ดํ„ฐ๋Š” ๋ฐ์ดํ„ฐ๋ถ„์„์„ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š”๋ฐ ์ด๋ฒคํŠธ์†Œ์‹ฑ ํŒจํ„ด์„ ์ด์šฉํ•˜๋ฉด ์ž˜ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค ex) ์ƒํƒœ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋Š” ์ƒํƒœ๋ณ€ํ™”๋ฅผ ์ด๋ฒคํŠธ๋กœ ๋ฐœํ–‰, ๊ด€๋ จ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋“ค์€ ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์š”๊ตฌ์‚ฌํ•ญ์— ๋งž๊ฒŒ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. ์ค‘์•™ ์ด๋ฒคํŠธ ์ €์žฅ์†Œ๋Š” ์ด๋Ÿฌํ•œ ์ด๋ฒคํŠธ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ๋‚˜์ค‘์— ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋น…๋ฐ์ดํ„ฐ ์ €์žฅ์†Œ์— ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. -> ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค -> ์ด๋ฒคํŠธ -> kafka -> flume -> ํ•˜๋‘กํด๋Ÿฌ์Šคํ„ฐ

๊ธฐํƒ€..

๋น„๋™๊ธฐ์  ์•Œ๋žŒ ( ์ด๋ฒคํŠธ publish ๋ฐ subscribeํ•˜์—ฌ workflow ์œ ์—ฐํ•˜๊ฒŒ ์ฒ˜๋ฆฌ, ๊ฐ ์—…๋ฌด ๋ชจ๋“ˆ๊ฐ„ ๋…๋ฆฝ์ . (์ด๋ฒคํŠธ ๋ฐœํ–‰ ๋ฐ ๊ตฌ๋…)

ex) ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ์ž”์—ฌ์„์ด 1์„์ธ๋ฐ, ์—ฌ๋Ÿฌ๋ช…์˜ ๊ณ ๊ฐ์ด ๋™์‹œ์— ์˜ˆ์•ฝํ•˜๋Š” ์‹œ๋‚˜๋ฆฌ์˜ค๋ฅผ ์ฒ˜๋ฆฌํ• ๋•Œ ์˜ˆ์•ฝ๊ณผ ๋ชฉ๋ก์˜ ์—…๋ฐ์ดํŠธ๋ฅผ ๊ฐ™์€ ํŠธ๋ž™์žญ์…˜์—์„œ ์ฒ˜๋ฆฌํ•˜์ง€ ์•Š๊ณ  ์ด๋ฒคํŠธ ์ฃผ๋„ ํŒจํ„ด (event driven pattern)์„ ์ ์šฉํ•œ๋‹ค๋ฉด ์‹œ์Šคํ…œ ์ƒํƒœ๊ฐ€ ๋ถˆ์ผ์น˜ํ•˜๋Š” ๊ฒฐ๊ณผ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors