๋ฐ˜์‘ํ˜•
์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ (Spring Cloud)

โ€ฃ ๋ถ„์‚ฐ/๋ฒ„์ „๊ด€๋ฆฌ, ์„œ๋น„์Šค ๋“ฑ๋ก ๋ฐ ๊ฒ€์ƒ‰ ๊ฐ€๋Šฅ, ๋ผ์šฐํŒ…, ์„œ๋น„์Šค๊ฐ„ ํ˜ธ์ถœ, ๋ถ€ํ•˜๋ถ„์‚ฐ, ํšŒ๋กœ์ฐจ๋‹จ๊ธฐ, ๋ถ„์‚ฐ๋ฉ”์„ธ์ง€ ๋“ฑ์˜ ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ์ด๋‹ค.
โ€ฃ 
https://spring.io/projects/spring-cloud

 

Spring Cloud

Spring Cloud is an umbrella project consisting of independent projects with, in principle, different release cadences. To manage the portfolio a BOM (Bill of Materials) is published with a curated set of dependencies on the individual project. Go here to r

spring.io

โ€ฃ ์Šคํ”„๋ง๋ถ€ํŠธ ๋ฒ„์ „, ์Šคํ”„๋งํด๋ผ์šฐ๋“œ ๋ฒ„์ „ ์œ ์˜ํ•ด์„œ ์‚ฌ์šฉ ํ•„์š”!


12-ํŒฉํ„ฐ ์•ฑ(The Twelve-Factor App)

โ€ฃ ํ™•์žฅ ๊ฐ€๋Šฅํ•˜๊ณ  ์‰ฝ๊ฒŒ ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ์— ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Œ.
โ€ฃ ์ง€์† ๋ฐฐํฌ ํ”„๋กœ์„ธ์Šค์— ๋”ฐ๋ผ ๋ฐฐํฌ๋˜๋Š” Software as a Service(SaaS)๋ฅผ ๊ฐœ๋ฐœํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก .
โ€ฃ ์Šคํ”„๋ง ๋ถ€ํŠธ & ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ๋Š” 12-ํŒฉํ„ฐ๋ฃฐ์— ๋ถ€ํ•ฉํ•˜๋Š” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ & ์š”์†Œ ์ œ๊ณต
โ€ฃ https://12factor.net/ko/

 

The Twelve-Factor App (ํ•œ๊ตญ์–ด)

๋ฐฐ๊ฒฝ ์ด ๋ฌธ์„œ์— ๊ธฐ์—ฌํ•œ ์‚ฌ๋žŒ๋“ค์€ ์ˆ˜๋ฐฑ๊ฐœ ์•ฑ์˜ ๊ฐœ๋ฐœ๊ณผ ๋ฐฐํฌ์— ์ง์ ‘ ์ฐธ์—ฌํ–ˆ์œผ๋ฉฐ, Heroku ํ”Œ๋žซํผ์„ ํ†ตํ•ด์„œ ๋ฐฉ๋Œ€ํ•œ ์•ฑ์˜ ๊ฐœ๋ฐœ, ์šด์˜, ํ™•์žฅ์„ ๊ฐ„์ ‘์ ์œผ๋กœ ๊ด€์ฐฐํ–ˆ๋‹ค. ์ด ๋ฌธ์„œ๋Š” ์‹ค์ œ๋กœ ์“ฐ์ด๋Š” ๋‹ค์–‘ํ•œ SaaS

12factor.net

โ€ป Software as a Service(SaaS)
์„œ๋น„์Šค ์‚ฌ์—…์ž๊ฐ€ ์ธํ„ฐ๋„ท์„ ํ†ตํ•ด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ ์ธํ„ฐ๋„ท์ƒ์—์„œ ์ด์— ์›๊ฒฉ ์ ‘์†ํ•ด ํ•ด๋‹น ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ํ™œ์šฉํ•˜๋Š” ์„œ๋น„์Šค ๋ชจ๋ธ.
ERP..CRM..SLACK..

โ€ฃ https://medium.com/dtevangelist/12-factors-%EB%9E%80-b39c7ef1ed30

 

๋„ทํ”Œ๋ฆญ์Šค(Netflix) OSS

โ€ฃ ๋ชจ๋†€๋ฆฌ์‹ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋ฐ˜ ์ „ํ†ต์  ๊ฐœ๋ฐœ ๋ชจ๋ธ → ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ๊ธฐ๋ฐ˜ ๊ฐœ๋ฐœ ๋ฐฉ์‹์œผ๋กœ ์ „ํ™˜ํ•œ ์„ ๊ตฌ์ž
โ€ฃ ๋งŽ์€ ์˜คํ”ˆ์†Œ์Šค๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์œ ๋ ˆ์นด(Eureka), ํžˆ์ŠคํŠธ๋ฆญ์Šค(Hystrix), ๋ฆฌ๋ณธ(Ribbon), ์ค„(Zuul) ๋“ฑ๊ณผ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ์™€ ํ†ตํ•ฉ๋จ.

 

์œ ๋ ˆ์นด(Eureka)

โ€ฃ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ (์ „ํ™”๋ฒˆํ˜ธ๋ถ€ ์ฑ…)
    → ์™ธ๋ถ€์˜ ์„œ๋น„์Šค๋“ค์ด ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋ฅผ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋˜๋Š” ๊ฐœ๋…
    → ํด๋ผ์ด์–ธํŠธ๊ฐ€ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ or API Gateway์„ ์ „๋‹ฌํ•˜๊ฒŒ๋˜๋ฉด serviceDiscovery ์— ์ „๋‹ฌ๋˜์–ด ํ•„์š” ์ •๋ณด๋ฅผ ์ฐพ์Œ

โ€ฃ ์„œ๋น„์Šค ์ •๋ณด ๋ฐ ์œ„์น˜์ •๋ณด ํ™•์ธ ๋“ฑ (Naming server)
โ€ฃ ์„œ๋ฒ„๊ฐ€ ์ƒˆ๋กญ๊ฒŒ ์‹œ์ž‘๋˜๋ฉด ๊ทธ๊ฒƒ์„ ๊ฐ์ง€ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋˜๊ณ , ์„œ๋ฒ„๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์ž๋™์œผ๋กœ ๋ชฉ๋ก์—์„œ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•.

โ€ฃ ํด๋ผ์ด์–ธํŠธ & ์„œ๋ฒ„๋กœ ๊ตฌ๋ถ„
    • ํด๋ผ์ด์–ธํŠธ (discovery client)
          → ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์ผ๋ถ€๋กœ ์›๊ฒฉ ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„œ๋ฒ„์— ์—ฐ๊ฒฐํ•˜๋Š” ์ผ์„ ๋‹ด๋‹น
          → ์—ฐ๊ฒฐ๋˜๋ฉด ์„œ๋น„์Šค ์ด๋ฆ„ & ๋„คํŠธ์›Œํฌ ์œ„์น˜๋ฅผ ๋‹ด์€ ๋“ฑ๋ก ๋ฉ”์„ธ์ง€๋ฅผ ๋ณด๋ƒ„
          → ํ˜„์žฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๊ฐ€ ๋‹ค๋ฅธ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค์˜ ์ข…๋‹จ์ ์„ ํ˜ธ์ถœํ•ด์•ผ ํ•  ๊ฒฝ์šฐ, ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋“ฑ๋ก๋œ ์„œ๋น„์Šค ๋ชฉ๋ก์„ ๋‹ด์€ ์ตœ์‹ ์˜ ์ปจํ”ผ๊ทœ๋ ˆ์ด์…˜(์„ค์ •์ •๋ณด)๋ฅผ ๊ฐ€์ ธ์˜ด.
          → ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ์บ์‹ฑํ•˜๊ณ  ์ฃผ๊ธฐ์ ์œผ๋กœ ๋ณ€๊ฒฝ์‚ฌํ•ญ ์ฒดํฌํ•œ๋‹ค.
           ์œ ๋ ˆ์นด ์„œ๋ฒ„๊ฐ€ ๋ฉˆ์ถ”๋”๋ผ๋„ ์„œ๋น„์Šค๋“ค๋ผ๋ฆฌ ํ†ต์‹ ์ด ๊ฐ€๋Šฅํ•˜๋‹ค! ์„œ๋น„์Šค ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ๋กœ์ปฌ์— ์บ์‹ฑํ–ˆ๊ธฐ ๋•Œ๋ฌธ
          → spring-cloud-starter-netflix-eureka-client ์‚ฌ์šฉ

    • ์„œ๋ฒ„ (Service registry)
          → ๊ฐ ์„œ๋น„์Šค๋“ค๋กœ๋ถ€ํ„ฐ ์ƒ์กด์‹ ํ˜ธ? ๋ฉ”์„ธ์ง€๋ฅผ ๋ฐ›๊ณ , ๋ฉ”์„ธ์ง€๋ฅผ ๋ชป๋ฐ›์œผ๋ฉด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์—์„œ ์„œ๋น„์Šค ์‚ญ์ œ๋œ๋‹ค.
           ๋…๋ฆฝ์ ์ธ ์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์„ค์ •๋˜๊ณ  ์‹คํ–‰๋จ. ๊ฐ ์„œ๋ฒ„์˜ ์ƒํƒœ๋ฅผ ๋‹ค๋ฅธ ์„œ๋ฒ„์— ๋ณต์ œํ•ด ๊ฐ€์šฉ์„ฑ(=์„œ๋น„์Šค ์ •์ƒ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์ •๋„)์ด ๋†’์Œ.
           pring-cloud-starter-netflix-eureka-server ์‚ฌ์šฉ

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/lecture/68382?tab=curriculum&volume=1.00&speed=1

 

ํžˆ์ŠคํŠธ๋ฆญ์Šค(Hystrix)

โ€ฃ ์„œํ‚ท๋ธŒ๋ ˆ์ด์ปคํŒจํ„ด ๊ตฌํ˜„ ๋„์™€์ฃผ๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 
โ€ฃ ํด๋ฐฑ(fallback) ๋กœ์ง ์‰ฝ๊ฒŒ ๊ตฌํ˜„ ๊ฐ€๋Šฅ
โ€ฃ spring-cloud-starter-hystricx ์Šคํƒ€ํ„ฐ ์‚ฌ์šฉ

โ€ป ์„œํ‚ท ๋ธŒ๋ ˆ์ด์ปค ํŒจํ„ด (circuit breaker pattern)
์„ฑ๊ณต ๋ฐ ์‹คํŒจ ์š”์ฒญ ํšŸ์ˆ˜๋ฅผ ์„ผ ๋‹ค์Œ, ์—๋Ÿฌ ๋น„์œจ์ด ๊ฐ€์ •๋œ ์ž„๊ณ„์น˜๋ฅผ ๋„˜์œผ๋ฉด ์ฐจ๋‹จ ๋ฐœ์ƒ ๋ฐ ์ดํ›„ ์‹คํŒจ์ฒ˜๋ฆฌํ•œ๋‹ค.
→ ๋ฌธ์ œ๋˜๋Š” ๋ถ€๋ถ„(๋Š๋ฆฐ๋ถ€๋ถ„)์„ ํŠน์ • ํ˜ธ์ถœ์„ ๊ฐ์ง€ํ•˜์—ฌ ์Šค๋ ˆ๋“œ๋ฅผ ์†Œ์ง„ํ•˜์ง€ ์•Š๊ณ  ๋น ๋ฅด๊ฒŒ ์‹คํŒจ์‹œ์ผœ ๋ฒ„๋ฆผ(์›๊ฒฉ ์ž์› ์‚ฌ์šฉ ๋ถ€๋ถ„ ์ œ๊ฑฐ)
→ ๋‹ค๋ฅธ์„œ๋น„์Šค์— ์˜ํ–ฅ ์•ˆ๊ฐ€๋„๋ก!
์ง€์ •๋œ ์‹œ๊ฐ„์ด ์ง€๋‚˜๊ณ  ๋‚˜๋ฉด, ์žฌ์š”์ฒญ ํ›„ ์„œํ‚ท์€ ๋‹ซํ˜€ ์ •์ƒ์ฒ˜๋ฆฌ๊ฐ€ ๋˜๋„๋ก ํ•œ๋‹ค. 

 

๋ฆฌ๋ณธ(Ribbon)

โ€ฃ ํด๋ผ์ด์–ธํŠธ ๋กœ๋“œ๋ฐธ๋Ÿฐ์„œ ์—ญํ• ,, ๊ทผ๋ฐ ๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ๊ฐ€ ์ž˜ ๋˜์ง€ ์•Š์Œ,, ์ž˜ ์‚ฌ์šฉ ์•ˆํ•˜๊ฒŒ๋จ
โ€ฃ IP..port..ํ˜ธ์ถœ์ด ์•„๋‹Œ ์ด๋ฆ„๋งŒ ๊ฐ€์ง€๊ณ  ํ˜ธ์ถœ์ด ๊ฐ€๋Šฅ... 
โ€ฃ ํด๋ผ์ด์–ธํŠธ ์ธก ๋ถ€ํ•˜ ๋ถ„์‚ฐ๊ธฐ
โ€ฃ HTTP, UDP, TCP ๋“ฑ ๊ฐ€์žฅ ์œ ๋ช…ํ•œ ํ”„๋กœํ† ์ฝœ ์ง€์›
โ€ฃ ๋™๊ธฐ๋ฐฉ์‹์˜ RESTํ˜ธ์ถœ, ๋น„๋™๊ธฐ, ๋ฆฌ์•กํ‹ฐ๋ธŒ ๋ชจ๋ธ๋„ ์ง€์›
โ€ฃ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ, ์บ์‹ฑ, ์ผ๊ด„์ฒ˜๋ฆฌ, ์žฅ์•  ๋‚ด์„ฑ๊ณผ ํ†ตํ•ฉ ๊ฐ€๋Šฅ.
โ€ฃ spring-cloud-starter-ribbon ์Šคํƒ€ํ„ฐ ์‚ฌ์šฉ
โ€ฃ springboot 2.4 ์ดํ›„ Maintenance ์ƒํƒœ 

 

์ค„(Zuul)

โ€ฃ API ๊ฒŒ์ดํŠธ์›จ์ด or API Service, Edge Service
โ€ฃ JVM ๊ธฐ๋ฐ˜ ๋ผ์šฐํ„ฐ, ์„œ๋ฒ„ ์ธก ๋ถ€ํ•˜ ๋ถ„์‚ฐ or ์ผ๋ถ€ ํ•„ํ„ฐ๋ง ์ˆ˜ํ–‰
โ€ฃ ์ธ์ฆ, ๋ถ€ํ•˜ ํ‰๊ท  ๋ถ„๋ฐฐ, ์ •์  ์‘๋‹ต ์ฒ˜๋ฆฌ, ๋ถ€ํ•˜ ํ…Œ์ŠคํŠธ ๋“ฑ์— ์‚ฌ์šฉ.
โ€ฃ ์„ค์ • ๊ฐ€๋Šฅ ๋ฐ ๋…๋ฆฝ์  ์Šคํ”„๋ง ๋ถ€ํŠธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์œผ๋กœ ์‹คํ–‰๋จ.
โ€ฃ spring-cloud-starter-zuul ์Šคํƒ€ํ„ฐ ์‚ฌ์šฉ
โ€ฃ springboot 2.4 ์ดํ›„ Maintenance ์ƒํƒœ 

 

โœป ์ตœ๊ทผ์—๋Š” Ribbon,, Zuul ๋ณด๋‹จ, Spring Cloud Gateway ์„ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ์„ ๊ถŒ์žฅํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•จ.
https://spring.io/blog/2018/12/12/spring-cloud-greenwich-rc1-available-now#spring-cloud-netflix-projects-entering-maintenance-mode

https://happycloud-lee.tistory.com/218โ€‹

 

[SC12] Spring Cloud Gateway ๋ž€ ?

1. Spring Cloud Gateway(SCG) ์ดํ•ด 1) WHY ? SCG๋Š” API Gateway์˜ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ API Gateway๊ฐ€ ์™œ ํ•„์š”ํ•œ์ง€ ๋จผ์ € ์ดํ•ดํ•˜๋Š”๊ฒƒ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Zuul serverํŽธ์—์„œ ์„ค๋ช…ํ•œ๋ฐ”์™€ ๊ฐ™์ด API Gateway๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ..

happycloud-lee.tistory.com

 

 

ํŽ˜์ธ(Feign)

โ€ฃ REST Client
โ€ฃ Interface ์„ ์–ธ์„ ํ†ตํ•ด ์ž๋™์œผ๋กœ HttpClient ์„ ์ƒ์„ฑ 
โ€ฃ ์›น ์„œ๋น„์Šค ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•˜๋„๋ก ๋„์™€์คŒ.
โ€ฃ ๊ด€์‹ฌ์‚ฌ ๋ถ„๋ฆฌ (๋ฆฌํ„ด๊ฐ’๋งŒ ๊ด€์‹ฌ,, ์–ด๋–ค URL ์ธ์ง€ ์–ด๋–ป๊ฒŒ ์‘๋‹ต๊ฐ’์„ ํŒŒ์‹ฑํ• ์ง€๋Š” ๊ด€์‹ฌ์—†์Œ)

โ€ฃ spring-cloud-starter-feign ์Šคํƒ€ํ„ฐ ์‚ฌ์šฉ
โ€ฃ ๋ฆฌ๋ณธ ํด๋ผ์ด์–ธํŠธ์™€ ํ†ตํ•ฉ๋ผ ๋””์Šค์ปค๋ฒ„๋ฆฌ ์„œ๋น„์Šค์™€ ํ†ต์‹ , ๋ถ€ํ•˜๋ถ„์‚ฐ ๊ฐ™์€ ๊ธฐ๋Šฅ ์ œ๊ณต.

 

https://erea.tistory.com/14

 

 

๋ถ„์‚ฐ ์ปจํ”ผ๊ทœ๋ ˆ์ด์…˜ ๊ด€๋ฆฌ

โ€ฃ ์„ค์ •์ •๋ณด ํŒŒ์ผ์„ ํ”„๋กœ์ ํŠธ ๋‚ด๋ถ€๊ฐ€ ์•„๋‹Œ, ์™ธ๋ถ€์—์„œ ๊ด€๋ฆฌํ•˜๋Š”๊ฒƒ (์ค‘์•™ํ™” ๋œ ์ €์žฅ์†Œ์—์„œ ๊ตฌ์„ฑ ์š”์†Œ ๊ด€๋ฆฌ)
โ€ฃ ๊ฐ ์„œ๋น„์Šค๋ฅผ ๋‹ค์‹œ ๋นŒ๋“œํ•˜์ง€์•Š๊ณ  ๋ฐ”๋กœ ์ ์šฉ! (์ค‘์•™์— ์žˆ์œผ๋ฏ€๋กœ)
โ€ฃ ์„œ๋ฒ„๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์ค‘์•™ ์žฅ์†Œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์œ„ํ•œ ๋ชจ๋“  ์™ธ๋ถ€ ์†์„ฑ์ด ๋ชจ๋“  ํ™˜๊ฒฝ์— ๋Œ€ํ•ด ์„œ๋ฒ„์—์„œ ๊ด€๋ฆฌ๋จ. (key, value.. yml file..)
โ€ฃ ์„ค์ • ํŒŒ์ผ์€ ํŒŒ์ผ ์‹œ์Šคํ…œ ๋˜๋Š” ์„œ๋ฒ„ ํด๋ž˜์Šค ๊ฒฝ๋กœ์— ์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. (vault..)

โ€ป Vault 
ํ† ํฐ ๋ฐ ํŒจ์Šค์›Œ๋“œ ์ž๊ฒฉ์ฆ๋ช…์„ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ์˜คํ”ˆ ์†Œ์Šค ๋„๊ตฌ
ํ•ด์‹œ์ฝ”ํ”„(HashCorp)์—์„œ ๋งŒ๋“ฌ
์ž๊ฒฉ ์ •๋ณด ๋“ฑ์„ ์•ˆ์ „ํ•œ ์žฅ์†Œ์— ์ €์žฅ์ด ๊ฐ€๋Šฅํ•˜์—ฌ ๋ณด์•ˆ์ด์Šˆ์— ๋„์›€์ด ๋  ์ˆ˜ ์žˆ๋‹ค.
API ์„ ํ†ตํ•ด ์‰ฝ๊ฒŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ (API๋Š” ๊ธฐ๋ณธ ์ธ์ฆ์œผ๋กœ ๋ณดํ˜ธ๋จ)
ํ‚ค/๊ณต๊ฐœ ํ‚ค ์ธ์ฆ์„ ์‚ฌ์šฉํ•œ SSL ์—ฐ๊ฒฐ ์„ค์ •๋„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

โ€ฃ spring-cloud-config-server ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™œ์„ฑํ™”

 

์ปจ์„ค(Consul)

โ€ฃ ๋„ทํ”Œ๋ฆญ์Šค ๋ฆฌ๋ณธ๊ณผ ๋™์  ๋ผ์šฐํ„ฐ, ๋„ทํ”Œ๋ฆญ์Šค Zuul์˜ filter๋ฅผ ์ง€์›
โ€ฃ spring-cloud-starter-consul-discovery ์˜์กด์„ฑ ์‚ฌ์šฉ

 

์•„ํŒŒ์น˜ ์ฃผํ‚คํผ(Apache Zookeeper)

โ€ฃ ์ปจํ”ผ๊ทœ๋ ˆ์ด์…˜๊ณผ ์ด๋ฆ„์„ ์œ ์ง€ํ•˜๋Š” ์ค‘์•™ ์„œ๋น„์Šค๋กœ ๋ถ„์‚ฐ ๋™๊ธฐํ™”, ๊ทธ๋ฃน ์„œ๋น„์Šค๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•จ. 
โ€ฃ ๋ถ„์‚ฐ ์ฒ˜๋ฆฌ๋œ ๋ฉ”์„ธ์ง€ ํ ์ •๋ณด๋“ค ๊ด€๋ฆฌ, kafka ์„œ๋ฒ„ ๊ฐ€๋™ํ•˜๋ ค๋ฉด zookeeper๊ฐ€ ๊ตฌ๋™๋˜์–ด ์žˆ์–ด์•ผ ํ•จ.
โ€ฃ ํด๋ผ์ด์–ธํŠธ ์ธก์— ์ฃผํ‚คํผ๋ฅผ ์‚ฌ์šฉํ•œ ์„œ๋น„์Šค ๋””์Šค์ปค๋ฒ„๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋ฉด spring-cloud-startet-zookeeper-discovery, ์•„ํŒŒ์น˜ ํ๋ ˆ์ดํ„ฐ๋ฅผ ์˜์กด์„ฑ์— ํฌํ•จ.
โ€ฃ ๋ถ„์‚ฐ ์ปจํ”ผ๊ทœ๋ ˆ์ด์…˜ ํด๋ผ์ด์–ธํŠธ๋ฅผ ํ™œ์„ฑํ™” ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” spring-cloud-starter-zookeeper-config ์˜์กด์„ฑ์„ ์ถ”๊ฐ€ํ•„์š”.

 

 

๋ถ„์‚ฐ์ถ”์ 

์Šฌ๋ฃจ์Šค(Sleuth)

โ€ฃ ํ•˜๋‚˜์˜ ์š”์ฒญ์„ ์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ์ฒ˜๋ฆฌํ• ๋•Œ ์ด์–ด์ง€๋Š” ์š”์ฒญ์„ ์—ฐ๊ด€์ง€์Œ
โ€ฃ Slf4j, MDC๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๋‹ค.
โ€ฃ spring-cloud-starter-sleuth ์˜์กด์„ฑ ์ถ”๊ฐ€ํ•˜์—ฌ ํ™œ์„ฑํ™”

โ€ป Slf4j
๋กœ๊ทธ๋ฐฑ log4j, logging ๋“ฑ๊ณผ ๊ฐ™์€ ํŠน์ • ๋กœ๊น… ํ”„๋ ˆ์ž„์›Œํฌ์˜ ์ถ”์ƒํ™” ํผ์‚ฌ๋“œ(Facade=์ปค๋‹ค๋ž€ ์ฝ”๋“œ๋ถ€๋ถ„์— ๋Œ€ํ•ด ๊ฐ„๋žตํ™”๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณต)๋ฅผํ•จ

โ€ป MDC (mapped diagnostic context)
๋‹ค์–‘ํ•œ ์†Œ์Šค์˜ ๋กœ๊ทธ ์ถœ๋ ฅ์„ ๊ตฌ๋ถ„ํ•˜๊ณ  ์‹ค์ œ ๋ฒ”์œ„์— ์—†๋˜ ๋ถ€๊ฐ€ ์ •๋ณด๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ์†”๋ฃจ์…˜ 

 

 

๋ฉ”์„ธ์ง•

 

๋ฒ„์Šค(bus)

โ€ฃ ๋ถ„์‚ฐ์‹œ์Šคํ…œ์˜ ๋…ธ๋“œ(๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค)๋ฅผ ๊ฒฝ๋Ÿ‰ ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค(RabbitMQ)์™€ ์—ฐ๊ฒฐ
โ€ฃ ์ƒํƒœ ๋ฐ ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์—๊ฒŒ ์ „๋‹ฌ (๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค์—๊ฒŒ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์•Œ๋ ค์คŒ)
โ€ฃ ์ปจํ”ผ๊ทœ๋ ˆ์ด์…˜ ๋ณ€๊ฒฝ ์ด๋ฒคํŠธ์˜ ์ „๋‹ฌ ๋“ฑ ๊ณตํ†ต ์˜คํผ๋ ˆ์ด์…˜์„ ์œ„ํ•œ ๋ถ„์‚ฐ ๋ฉ”์„ธ์ง• ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

์ŠคํŠธ๋ฆผ(Stream)

โ€ฃ ๋ฉ”์„ธ์ง€ ์ค‘์‹ฌ ๋งˆ์ดํฌ๋กœ ์„œ๋น„์Šค๋กœ ๊ตฌ์„ฑ๋œ ์‹œ์„ธํ‹ˆ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์œ„ํ•œ ์˜ฌ๋ฐ”๋ฅธ ํ”„๋ ˆ์ž„์›Œํฌ
โ€ฃ ๋‘๊ฐœ์˜ ๋ฐ”์ธ๋”๊ฐ€ ์กด์žฌ (AMQP, Apache Kafka)
โ€ฃ ์Šคํ”„๋ง ์ธํ…Œ๊ทธ๋ ˆ์ด์…˜์— ๊ธฐ๋ฐ˜. ์ข…๋‹จ์ , ์ฑ„๋„, ์• ๊ทธ๋ฆฌ๊ฒŒ์ดํ„ฐ, ํŠธ๋žœ์Šคํฌ๋จธ์™€ ๊ฐ™์€ ๋Œ€๋ถ€๋ถ„์˜ ์—”ํ„ฐํ”„๋ผ์ด์ฆˆ ํ†ตํ•ฉ ํŒจํ„ด์„ ์ง€์›ํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋ชจ๋ธ์„ ์ œ๊ณต
โ€ฃ ๋งˆ์ดํฌ๋กœ์‹œ์Šคํ…œ ๋‚ด์˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ์ŠคํŠธ๋ฆผ ์ž…๋ ฅ & ์ถœ๋ ฅ ์ฑ„๋„์„ ํ†ตํ•ด ํ†ต์‹ ํ•จ. 
โ€ฃ ๊ตฌ๋…/๊ฒŒ์‹œ ๋“ฑ ๋ฉ”์„ธ์ง€ ๊ณต์œ  ํ† ํ”ฝ์„ ํ†ตํ•ด ์ „ํŒŒ. (์›น์†Œ์ผ“ ํ†ต์‹ ๋ฐฉ์‹ ๊ฐ™์€๊ฑด๊ฐ€,,)

โ€ป AMQP (Advanced Message Queue Protocol)
๋ฉ”์„ธ์ง• ํ”„๋กœํ† ์ฝœ (MQ(๋ฉ”์„ธ์ง€ํ) ๊ธฐ๋ฐ˜)
HTTP ํ”„๋กœํ† ์ฝœ๊ณผ ๋‹ฌ๋ฆฌ ๋„คํŠธ์›Œํฌ ํ”„๋กœํ† ์ฝœ์˜ ์ •์˜ ๋ฟ ์•„๋‹ˆ๋ผ ์„œ๋ฒ„ ์ธก ์„œ๋น„์Šค์™€ ๋™์ž‘ ๋ฐฉ์‹๋„ ์ •์˜ํ•œ๋‹ค.
๊ด€๋ จ ๋ฏธ๋“ค์›จ์–ด : RabbitMQ, Erlang
๋ฉ”์„ธ์ง€๋ธŒ๋กœ์ปค
์˜คํ”ˆ์†Œ์Šค ๋ฉ”์„ธ์ง€ ์†Œํ”„ํŠธ์›จ์–ด
https://www.youtube.com/watch?v=80y2C54KPxg
๋ฐ›๋Š” ์†Œ๋น„์ž ์ค‘์‹ฌ
โ€ป Apache Kafka
Scala์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋œ ์˜คํ”ˆ์†Œ์Šค ๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค ํ”„๋กœ์ ํŠธ
์ด๋ฒคํŠธ๋ธŒ๋กœ์ปค (๋ฉ”์„ธ์ง€ ๋ธŒ๋กœ์ปค ๊ธฐ๋Šฅ ํฌํ•จ)
๋ถ„์‚ฐ ์ŠคํŠธ๋ฆฌ๋ฐ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ชฉ์ ์œผ๋กœ ์„ค๊ณ„๋œ ์˜คํ”ˆ์†Œ์Šค ๋ฉ”์„ธ์ง• ํ”Œ๋žซํผ
๋ฉ”์„ธ์ง€ ๋ฐœํ–‰/๊ตฌ๋… ์‹œ์Šคํ…œ (Pub/Sub)
๋ณด๋‚ด๋Š” ์ƒ์‚ฐ์ž ์ค‘์‹ฌ

 

 

ํด๋ผ์šฐ๋“œ ํ”Œ๋žซํผ ์ง€์›

โ€ฃ ํ”ผ๋ณดํƒˆ..SQS,,SNS,,ElasticCache,,RDS,,๋“ฑ์ด ์žˆ๋‹ค.
โ€ฃ ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ ํŽ‘์…˜ ํ”„๋กœ์ ํŠธ๊ฐ€ ์žˆ๋‹ค. FaaS(Function-as-a-Service),,AWS Lambda
โ€ฃ SMTP..rabbitMQ,,Redis,,

 

 

๋ณด์•ˆ๊ด€๋ฆฌ ํ™œ์„ฑํ™”

โ€ฃ spring-cloud-starter-security ์˜์กด์„ฑ ์ถ”๊ฐ€

 

 

๋ฆด๋ฆฌ์ฆˆ ํŠธ๋ ˆ์ธ

โ€ฃ ํ•˜์œ„ ํ”„๋กœ์ ํŠธ์˜ ํ˜ผ๋ž€์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋ฆด๋ฆฌ์ฆˆ๋ฅผ ๋ฒ„์ „์ด ์•„๋‹Œ ์ด๋ฆ„์œผ๋กœ ๊ตฌ๋ถ„
โ€ฃ BOM(Bill of materials)์— ๊ธฐ๋ฐ˜ → ์•„ํ‹ฐํŒฉํŠธ ๋ฒ„์ „์„ ๋…๋ฆฝ์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๋Š” ํ‘œ์ค€ ๋ฉ”์ด๋ธ ๊ฐœ๋….
โ€ฃ https://spring.io/projects/spring-cloud-stream

 

 


์ฐธ๊ณ 

๋งํฌ: https://m.blog.naver.com/quart21c/173614581

 

ํด๋ผ์šฐ๋“œ์ปดํ“จํŒ…์˜ SaaS, PaaS, laaS์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊นŒ์š”.

ํด๋ผ์šฐ๋“œ์ปดํ“จํŒ… ๋•Œ ์ž์ฃผ ๋“ฃ๋Š” SaaS, PaaS, LaaS์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณผ๊นŒ์š”. ํด๋ผ์šฐ๋“œ์ปดํ“จํŒ…, ํด๋ผ...

blog.naver.com

๋งํฌ: https://coe.gitbook.io/guide/gateway/zuul

 

Zuul - guide

๋™์  ๋ผ์šฐํŒ…, ๋ชจ๋‹ˆํ„ฐ๋ง, ํšŒ๋ณต ํƒ„๋ ฅ์„ฑ, ๋ณด์•ˆ ๊ธฐ๋Šฅ์„ ์ง€์› (Filters๋ฅผ ํ†ตํ•œ ๊ตฌํ˜„)

coe.gitbook.io

๋งํฌ: https://sup2is.github.io/2020/04/12/spring-cloud-hystrix-circuit-breaker-with-fallback.html

 

Sup2's blog-Spring Cloud์—์„œ Hystrix๋ฅผ ์‚ฌ์šฉํ•œ Circuit Breaker ๊ตฌํ˜„ํ•˜๊ธฐ Feat.Fallback

 

sup2is.github.io

์ฑ…: http://www.yes24.com/Product/Goods/66581779

 

๋งˆ์Šคํ„ฐ๋ง ์Šคํ”„๋ง ํด๋ผ์šฐ๋“œ - YES24

๋ถ„์‚ฐ ์‹œ์Šคํ…œ์—์„œ ์„œ๋น„์Šค๋ฅผ ๊ฐœ๋ฐœ, ํ…Œ์ŠคํŠธ, ๋ณด์•ˆ ๊ฐ•ํ™”, ๋ฐฐํฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ๊ณ  ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์šฐ์ž!ํด๋ผ์šฐ๋“œ์—์„œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ฐœ๋ฐœํ•˜๊ณ  ๋ฐฐํฌํ•˜๊ณ  ์šด์˜ํ•˜๋Š” ๊ฒƒ์€ ๋กœ์ปฌ ์• ํ”Œ๋ฆฌ

www.yes24.com

๋งํฌ: http://blog.skby.net/amqp-advanced-message-queue-protocol/

 

AMQP (Advanced Message Queue Protocol) > ๋„๋ฆฌ์˜ ๋””์ง€ํ„ธ๋ผ์ดํ”„

I. ์‘์šฉ ๊ณ„์ธต ๋ฉ”์‹œ์ง€ ์ „๋‹ฌ ํ‘œ์ค€, AMQP ๊ฐ€. AMQP(Advanced Message Queue Protocol)์˜ ๊ฐœ๋… ํด๋ผ์ด์–ธํŠธ ๋ฏธ๋“ค์›จ์–ด ๋ธŒ๋กœ์ปค ๊ฐ„ ๋ฐ์ดํ„ฐ ๊ตํ™˜์„ ์œ„ํ•œ MQ๊ธฐ๋ฐ˜ ๋ฉ”์‹œ์ง€ ๊ตํ™˜ ํ”„๋กœํ† ์ฝœ ๋‚˜. AMQP ํŠน์ง• ์ด๊ธฐ์ข… ๊ฐ„ ๋ฉ”์‹œ์ง€ ๊ตํ™˜

blog.skby.net

๊ฐ•์˜: https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%81%B4%EB%9D%BC%EC%9A%B0%EB%93%9C-%EB%A7%88%EC%9D%B4%ED%81%AC%EB%A1%9C%EC%84%9C%EB%B9%84%EC%8A%A4/lecture/68407?tab=curriculum&volume=1.00&speed=1

๋ฐ˜์‘ํ˜•

+ Recent posts