
๐ก Spring Cloud
ํ์ฅ์ฑ(Scable)์ ๊ฐ์ง๊ณ , ํด๋ผ์ฐ๋ ํ๋ซํผ์ ์ฝ๊ฒ ๋ฐฐํฌํ ์ ์์ผ๋ฉฐ, ์ง์์ ์ธ ๋ฐฐํฌ๊ฐ ๊ฐ๋ฅํ๋๋ก ๋ง๋ ๊ฒ : Software as a service(SaaS)
๐ก Netflix Open Source Software
Netflix๋ ๋ง์ดํฌ๋ก์๋น์ค์ ์ ๋ ์ฃผ์, ๊ทธ๋ค์ ์ฑ๊ณตํ ์ํคํ
์ฒ์ ๋ค์ด๊ฐ ๊ฐ๋
๋ค์ ์คํ ์์ค ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ก ์ ๊ณต
๊ทธ๊ฒ์ด Spring Cloud์ ์ ์ฉ ๋์๊ณ Eureka, Ribbon, Zuul๊ณผ ๊ฐ์ library
๐ก Eureka
๋ง์ดํฌ๋ก์๋น์ค๋ค์ ์ ๋ณด๋ฅผ ๋ ์ง์คํธ๋ฆฌ์ ๋ฑ๋กํ ์ ์๋๋ก ํ๊ณ ๋ง์ดํฌ๋ก์๋น์ค์ ๋์ ์ธ ํ์๊ณผ ๋ก๋๋ฐธ๋ฐ์ฑ์ ์ ๊ณต
Eureka๋ Eureka Server์ Eureka Client๋ก ๊ตฌ์ฑ
๐ก Eureka Server
Server๋ ๋ชจ๋ micro service๊ฐ ์์ ์ ๊ฐ์ฉ์ฑ์ ๋ฑ๋กํ๋ ๋ ์ง์คํธ๋ฆฌ
๋ฑ๋ก ์ ๋ณด๋ service id์ url์ ํฌํจ
micro service๊ฐ ์์๋๋ฉด Eureka ์๋ฒ์ ์ ๊ทผํด์ ์๋น์ค ID์ URL ๋ฑ์ ์ ๋ณด๋ฅผ ๋ฑ๋กํ๊ณ ์์ ์ ์๋ฆผ(30์ด heart-beat ping)
๐ก Eureka Client
Server๋ก๋ถํฐ ๋ ์ง์คํธ๋ฆฌ ์ ๋ณด๋ฅผ ์ฝ์ด์ ๋ก์ปฌ์ ์บ์
30์ด๋ง๋ค ๊ฐฑ์
๋ ์ง์คํธ๋ฆฌ ์ ๋ณด์ ์ฐจ์ด๋ฅผ ๊ฐ์ ธ์ค๋ ๋ฐฉ์์ผ๋ก ๊ฐฑ์ (delta updates)
๐ก Ribbon
ํด๋ผ์ด์ธํธ ์ธก ๋ก๋ ๋ฐธ๋ฐ์
์ฌ๋ฌ ์๋ฒ๋ฅผ ๋ผ์ด๋๋ก๋น ๋ฐฉ์์ ๋ถํ ๋ถ์ฐ ๊ธฐ๋ฅ์ ์ ๊ณต(์ฌ๋ฌ ์๊ณ ๋ฆฌ์ฆ ์ฌ์ฉ ๊ฐ๋ฅ)
Spring Cloud Config์ ๊ฒฐํฉํ์ฌ, ์๋ฒ ๋ชฉ๋ก์ ์ ๊ณต๋ฐ์ ์ฌ์ฉํ ์ ์์
๐ก Zuul
JVM ๊ธฐ๋ฐ ๋ผ์ฐํฐ ๋ฐ ์๋ฒ ์ธก๋ก๋ ๋ฐธ๋ฐ์
๐ก Hystrix
๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ
์ฒ์์ ๋ถ์ฐ๋ ์๋น์ค๊ฐ ํต์ ์ด ์ํํ์ง ์์ ๊ฒฝ์ฐ์ ๊ฐ ์๋น์ค๊ฐ ์ฅ์ ๋ด์ฑ๊ณผ ์ง์ฐ ๋ด์ฑ์ ๊ฐ๊ฒํ๋๋ก ๋์์ฃผ๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
๊ธฐ์กด์ ๋ชจ๋๋ฆฌํฑ ์ํคํ
์ฒ์์๋ A๋ชจ๋์ A๋ฉ์๋์์ B๋ชจ๋์ B๋ฉ์๋๋ฅผ ํธ์ถํ ๋, ์ด ๋ฉ์๋ ํธ์ถ์ ์คํจํ๋ ๊ฒ์ ์์ ๊ณ ๋ คํ์ง ์์๋ค. ๊ทธ๋ด ์ผ์ด ์์๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฐ๋ฐ ๋ง์ดํฌ๋ก ์๋น์ค ์ํคํ
์ฒ์์๋ ๋ค๋ฅด๋ค. ์ฃผ๋ฌธ ์๋น์ค๊ฐ ๋ฐฐ์ก ์๋น์ค์ API๋ฅผ ํธ์ถํ์ ๋ ์คํจํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์์ ๊ฐ์ ์ํฉ์์ ๋ณ๋ค๋ฅธ ์ฒ๋ฆฌ๋ฅผ ์ํ๋ค๋ฉด ๋ฐฐ์ก ์๋น์ค์ ๋ฌธ์ ๊ฐ ์๋ค๋ ์ด์ ๋ก ์ฃผ๋ฌธ ์๋น์ค๋ ์ด๋์ ๊ฐ ๋ฌธ์ ๊ฐ ์๊ธฐ๊ฒ ๋ ๊ฒ์ด๊ณ , ์ฃผ๋ฌธ ์๋น์ค๋ฅผ ํธ์ถํ๋ ์ด๋ค ์๋น์ค๊ฐ ์๋ค๋ฉด ๊ทธ ์๋น์ค๋ง์ ๋ ๋ฌธ์ ๊ฐ ์๊ธธ ๊ฒ์ด๋ค.
์ด๋ ๊ฒ ๋ง์ดํฌ๋ก ์๋น์ค์์๋ ๊ฐ๊ฐ์ ์๋น์ค๋ค์ด ๋
๋ฆฝ์ ์ด์ง๋ง, ์ฅ์ ๊ฐ ์ ํ๋๋ ์ฑ์ง์ด ์๋ค.
๊ทธ๋์ ์ด๋ฅผ ๋ง๊ธฐ์ํด์๋ ์ฃผ๋ฌธ ์๋น์ค๊ฐ ๋ฐฐ์ก ์๋น์ค APIํธ์ถ์ ์คํจํ ๊ฒฝ์ฐ, ์์
ํ์ผ๋ก๋ผ๋ ๋จ๊ฒจ๋จ๋ค๊ฐ ๋ฐฐ์กํ ์ ์๊ฒ ์ ๋ฌํด์ค๋ค๋ ์ง, ์ผํ๋ชฐ ๋ทฐ์ด ์๋น์ค๊ฐ ์ํ ์ถ์ฒ ์๋น์ค APIํธ์ถ์ ์คํจํ ๊ฒฝ์ฐ, ๋ํดํธ๋ก ์ํ ์ถ์ฒ์ ํด์ค๋ค๋ ์ง ํ๋ ์ผ์ ํด์ค์ผ ํ๋ค.
์์ ๊ฐ์ ์ผ์ ์์ฃผ ๊ฐ๋จํ ์ฝ๋๋ง์ผ๋ก ์ฒ๋ฆฌํ ์ ์๊ฒ ๋์์ฃผ๋๊ฒ hystrix ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ณ ๊ทธ๊ฒ์ ์คํ๋ง๋ถํธ์ ์ฐ๋ํด์ ์ฌ์ฉํด๋ณผ ๊ฒ์ด๋ค.
๐ก Sleuth
MSA๊ตฌ์กฐ์์ ํด๋ผ์ด์ธํธ์ ํธ์ถ์ด ๋ด๋ถ์ ์ผ๋ก ์ฌ๋ฌ ๋ง์ดํฌ๋ก์๋น์ค๋ฅผ ๊ฑฐ์ณ์ ์ผ์ด๋จ
์ด์ ๊ฐ์ ๊ตฌ์กฐ๋๋ฌธ์ ์ ์ฒด ํธ๋์ญ์
์ ๋ํ ๋ก๊ทธ ์ถ์ ์ด ์ด๋ ค์
์ด๋ฅผ ์ถ์ ํ๊ธฐ ์ํด์๋ ์ฐ๊ด๋ ID๊ฐ ํ์ํ๋ค. ์ด๋ฌํ ID(trace, span)๋ฅผ ์๋์ผ๋ก ์์ฑ
๐ก Zipkin
Zipkin ์ ํธ์ํฐ์์ ์ฌ์ฉํ๋ ๋ถ์ฐ ํ๊ฒฝ ์ถ์ ์์คํ
์คํ์์ค์ด๋ค.
๊ธฐ๋ณธ์ ์ธ ์ํคํ
์ฒ๋ Google Drapper ์์ ๋ฐ์ ํ์๊ณ , ๋ถ์ฐํ๊ฒฝ์์์ ์์คํ
๋ณ๋ชฉ ํ์์ ํ์
ํ ์ ์๋ค.
Zipkin์ ์๋ ๊ตฌ์ฑ๋์ ๊ฐ์ด Collector, Query Service, DataBase, WebUI ๋ก ๊ตฌ์ฑ๋๋ค.