MapleStory Finger Point

โšช ์šฉ์–ด ์ •๋ฆฌ

MSA(Microservices Architecture) ๊ฐœ๋…

HYEJU01 2025. 2. 12. 07:17
 

๋ชฉ์ฐจ

 

     

     

     

    ์ด๋ฒˆ์— ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ MSA ๋ฐฉ์‹์„ ๋„์ž…ํ•ด๋ณด๊ธฐ๋กœ ํ–ˆ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ MSA ์— ๋Œ€ํ•œ ๊ณต๋ถ€๋„ ํ•˜๊ณ  ์–ด๋ ต๊ฒŒ ํ”„๋กœ์ ํŠธ ์„ธํŒ…๊นŒ์ง€ ํ–ˆ์ง€๋งŒ.. ์ง„ํ–‰ํ•˜๋ ค๋˜ ํ”„๋กœ์ ํŠธ๊ฐ€ MSA ๋ฅผ ์‚ฌ์šฉํ•  ๋งŒํ•œ ํ”„๋กœ์ ํŠธ๋„ ์•„๋‹ ๋ฟ๋”๋Ÿฌ, ๋น„ํšจ์œจ์ ์ธ ๋ถ€๋ถ„์ด ๋งŽ์•„์„œ (์„œ๋ฒ„๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์ผœ์•ผํ•จ) ๊ฒฐ๊ตญ MSA ๋ฐฉ์‹์€ ํฌ๊ธฐํ•˜๊ฒŒ๋˜์—ˆ๋‹ค. ใ…œใ…œ ๊ทธ๋ž˜์„œ ์ด๋ก ์ด๋ผ๋„ ๋„์ ๋„์  ํ•ด ๋ณผ ์˜ˆ์ •..

     

     

    ๋Œ€ํ‘œ ๊ฐœ๋…

     

    API Gateway : Spring Cloud Gateway ์™€ Webflux ๋กœ ๊ตฌํ˜„

    Service Discovery : Netflix Eureka ์‚ฌ์šฉ์œผ๋กœ ๊ตฌํ˜„

    Config Server : Spring Cloud Config ์‚ฌ์šฉ์œผ๋กœ ๊ตฌํ˜„

     

     


    MSA๋ž€?

    MSA(Microservices Architecture, ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜)๋Š”

    ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ž‘์€ ์„œ๋น„์Šค ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„์–ด ๊ฐœ๋ฐœํ•˜๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์•„ํ‚คํ…์ณ์ด๋‹ค.

    ์ฆ‰ ์—ฌ๋Ÿฌ๊ฐœ์˜ ๋…๋ฆฝ์ ์ธ ์„œ๋น„์Šค๋กœ ๋‚˜๋‰˜๊ฒŒ ๋˜๊ณ , ์„œ๋น„์Šค ๊ฐ„์— ํ†ต์‹ ์€ API ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.

     

     

     

     

    Spring Cloud Service Discovery  (2๊ฐ€์ง€ ํŒจํ„ด)

    msa ๋ฐฉ์‹์—์„œ๋Š” ๊ธฐ๋Šฅ๋ณ„ (์„œ๋น„์Šค๋ณ„) ๋กœ ํ”„๋กœ์ ํŠธ๊ฐ€ ๋‚˜๋‰˜์–ด์ง„๋‹ค.

    ์ด๋•Œ ์„œ๋น„์Šค๋ณ„ IP ์™€ Port ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•  ํ•„์š”๊ฐ€ ์žˆ๋Š”๋ฐ ์ด ๋•Œ ํ•„์š”ํ•œ๊ฒŒ Spring Cloud Service Discovery ์ด๋‹ค.

     

     

    ์•„๋ž˜ ๋‘๊ฐ€์ง€ ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

     

    Client-Side Discovery ํŒจํ„ด

    • ์„œ๋น„์Šค๊ฐ€ ์ง์ ‘ Service Register(์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ)์—์„œ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์กฐํšŒํ•˜์—ฌ ํ˜ธ์ถœํ•จ.
    • ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๋“œ ๋ฐธ๋Ÿฐ์‹ฑ ๋ฐฉ๋ฒ•์„ ์ง์ ‘ ์„ ํƒํ•˜์—ฌ ์„œ๋น„์Šค ํ˜ธ์ถœ ๊ฐ€๋Šฅ.

     

    Server-Side Discovery ํŒจํ„ด

    • ํด๋ผ์ด์–ธํŠธ๋Š” ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์ง์ ‘ ์ฐพ์ง€ ์•Š๊ณ , Load Balancer(๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ)๋ฅผ ํ˜ธ์ถœ. 


    Load Balancer (LB)

    ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ(Load Balancer)๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์„œ๋ฒ„์— ํŠธ๋ž˜ํ”ฝ์„ ๊ณ ๋ฅด๊ฒŒ ๋ถ„์‚ฐ์‹œํ‚ค๋Š” ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•จ.
    ์ด๋ฅผ ํ†ตํ•ด ํŠน์ • ์„œ๋ฒ„์— ๊ณผ๋ถ€ํ•˜๊ฐ€ ๊ฑธ๋ฆฌ๋Š” ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ณ , ์„œ๋น„์Šค ๊ฐ€์šฉ์„ฑ์„ ๋†’์ž„.

    CI/CD ํ”„๋กœ์„ธ์Šค์—์„œ ์—ฐ๊ฒฐ์ •๋ณด๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋ณ€๊ฒฝ๋จ, ์ด ๊ฒฝ์šฐ LB ์— ์ƒˆ๋กญ๊ฒŒ ๋“ฑ๋กํ•ด์•ผํ•˜๋Š”๋ฐ...

    ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด Eureka ๊ฐ€ ๋“ฑ์žฅํ•จ

     

     

     

    API Gateway (  Spring Cloud Gateway ์™€ Webflux)

    ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์š”์ฒญํ•˜๋Š” ์—ฌ๋Ÿฌ ์„œ๋น„์Šค์— ๋Œ€ํ•œ ์š”์ฒญ์„ ํ•˜๋‚˜์˜ ์—”๋“œํฌ์ธํŠธ๋กœ ๋ชจ์•„ ๋ผ์šฐํŒ…ํ•œ๋‹ค.

    ์ฆ‰ mvc ์—์„œ์˜ controller ์™€ ๋น„์Šทํ•œ ๋Š๋‚Œ์ด๋ผ๊ณ  ๋ณด๋ฉด ๋˜๊ฒ ๋‹ค. (๊ทธ ๋ฒ”์œ„๊ฐ€ ์ปค์ง„)

    ๋“ค์–ด์˜จ ์š”์ฒญ์„ ์ ์ ˆํ•œ ์„œ๋น„์Šค์—๊ฒŒ ์ „๋‹ฌํ•ด์ฃผ๊ณ  ๋‹ค์–‘ํ•œ ๋ถ€๊ฐ€ ๊ธฐ๋Šฅ๋„ ์ฒ˜๋ฆฌํ•จ

     

    Spring Cloud Gateway + WebFlux( ๋น„๋™๊ธฐ์ ์ด๊ณ  ๋…ผ๋ธ”๋กœํ‚น ๋ฐฉ์‹) ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ๋‹ค.

     

     

    โœ… ๋‘˜์˜ ์ฐจ์ด์ 

    • API ๊ฒŒ์ดํŠธ์›จ์ด๋Š” API ๊ด€๋ฆฌ์™€ ๋ผ์šฐํŒ…์— ์ดˆ์ 
    • ๋กœ๋“œ ๋ฐธ๋Ÿฐ์„œ๋Š” ํŠธ๋ž˜ํ”ฝ ๋ถ„์‚ฐ๊ณผ ์„œ๋ฒ„ ๋ถ€ํ•˜ ๊ด€๋ฆฌ์— ์ค‘์ 

     

    Service Registry

    ์„œ๋น„์Šค ์ธ์Šคํ„ด์Šค์˜ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ(์„œ๋น„์Šค ์ด๋ฆ„, IP ์ฃผ์†Œ, ํฌํŠธ, ์ƒํƒœ ๋“ฑ)๋ฅผ ์ค‘์•™์—์„œ ๊ด€๋ฆฌํ•˜๋Š” ์‹œ์Šคํ…œ

    ์„œ๋น„์Šค ์œ„์น˜๋ฅผ ๋™์ ์œผ๋กœ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.

     

     

    Service Registry (→ Netflix Eureka)

    Neflix์—์„œ ์ œ๊ณตํ•œ MSA๋ฅผ ์œ„ํ•œ ํด๋ผ์šฐ๋“œ ์˜คํ”ˆ ์†Œ์Šค์ž„. ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๋ฅผ ์ œ๊ณต

    ์„œ๋น„์Šค๋“ค์€ ์œ ๋ ˆ์นด ํด๋ผ์ด์–ธํŠธ๋กœ ๋“ฑ๋ก๋˜๊ณ , ์œ ๋ ˆ์นด ์„œ๋ฒ„์—์„œ๋Š” IP ์™€ ๊ฐ™์€ ์—ฐ๊ฒฐ ์ •๋ณด๋“ค์„ ์ €์žฅํ•จ

     

    Eureka Server

    • ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์—ญํ• ์„ ์ˆ˜ํ–‰.
    • ๋ชจ๋“  ์„œ๋น„์Šค๋Š” ์ž์‹ ์„ ๋“ฑ๋กํ•˜๊ณ , ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ์œ„์น˜๋ฅผ ์ฐพ์„ ๋•Œ ์ด๊ณณ์„ ์กฐํšŒํ•จ.

     

    Eureka Client

    • Eureka Server์— ์ž์‹ ์˜ ์ •๋ณด๋ฅผ ๋“ฑ๋กํ•˜๊ณ , ํ•„์š”ํ•  ๋•Œ ๋‹ค๋ฅธ ์„œ๋น„์Šค์˜ ์ •๋ณด๋ฅผ ์กฐํšŒํ•จ.
    • ์„œ๋น„์Šค ๊ฐ„ ํ†ต์‹  ์‹œ Service Register๋ฅผ ์กฐํšŒํ•˜์—ฌ ๋™์ ์œผ๋กœ ์„œ๋น„์Šค ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์žˆ์Œ.

     


    Config Server ( Spring Cloud Config ์‚ฌ์šฉ)

     

    ๋ถ„์‚ฐ ์‹œ์Šคํ…œ ํ™˜๊ฒฝ์—์„œ ์„ค์ • ์ •๋ณด๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค. ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค๊ฐ€ ์ด ์„ค์ •์„ ๊ณต์œ ํ•˜๋„๋ก ๋„์›€

    ์ฆ‰ ๋‚˜๋‰˜์–ด์ง„ ์„œ๋น„์Šค๋“ค์˜ ์„ค์ • ํŒŒ์ผ์€ ํ•œ๋ฒˆ์— ๊ด€๋ฆฌํ•˜๊ณ  ์ œ๊ณตํ•ด์คŒ

     

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

     


    https://f-lab.kr/insight/api-gateway-and-load-balancer

    https://mangkyu.tistory.com/253

    https://velog.io/@jkijki12/Eureka%EB%9E%80

    https://ksh-coding.tistory.com/135

    https://mangchhe.github.io/springcloud/2021/04/06/SpringCloudNetflixEureka/