์ด์ ํฌ์คํ
์์ Webclient๋ฅผ ์ด์ฉํ์ฌ ์๋น์ค๋ค๊ฐ์ ํต์ ์ ๊ตฌ์ถํ๋ค. ์ด๋ฒ์๋ Kafka๋ฅผ ํตํด์ ๋ฉ์ธ์ง ํ๋ฅผ ๊ธฐ์ฉํ์ฌ ์๋น์ค๋ค ๊ฐ์ ํต์ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณด๋ ค๊ณ ํ๋ค. kafka์ ๋ํ ์์ ํฌ์คํ
์ ์ฐธ๊ณ ํด์ ๊ตฌ์ถํ๋ค. ํ์ฌ ๋ด ์๋น์ค๋ app-service ์ user-service๊ฐ ์๋๋ฐ, app-service๋ฅผ ํตํด ์ฌ์ฉ์๊ฐ ์์ ์ ์ฑ์ ์๋ฒ์ ๋ฑ๋กํ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํด ๋์๋ค. ํ์๋ ์ง๊ธ ์ฌ์ฉ์๊ฐ ์ฑ์ ๋ฑ๋กํ ๋, User ์ํฐํฐ์ ์๋ appCount๋ฅผ +1ํด์ฃผ๋ ์๋น์ค๋ฅผ ๊ตฌํํ๋ ค๊ณ ํ๋ค. 0. Depdency ๋ค์๊ณผ ๊ฐ์ด ์์กด์ฑ์ ์ถ๊ฐํ๋ฉด kafka๋ฅผ ์ฌ์ฉํ ์ ์๋ค. dependencies { implementation 'org.springframework.kafka:spring-..
Spring Cloud์ ๋ํ ์ค์ ์ ์ด๋์ ๋ ๋ง์ณค๋ค. ์ด์ ๊ฐ ์๋น์ค๋ค ๊ฐ์ ํต์ ํ๊ฒฝ์ ๊ตฌ์ถํด๋ณด๋ ค๊ณ ํ๋ค. 0. WebClient Spring Boot์์๋ ์ฌ๋ฌ HTTP ํต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ์๋ค. ๋ด๊ฐ ์๋ ์ ๋ง์ด ๋ดค๋ ํด๋์ค๋ RestTemplate์ด์๋ค. Spring Doc์์๋ WebClient๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๊ถ๊ณ ํ๊ณ ์๊ณ , RestTemplate๋ณด๋ค ๋ ๋ง์ ๊ธฐ๋ฅ์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ WebClient๋ก ์งํํด๋ณด๋ ค๊ณ ํ๋ค. 1. ๋๊ธฐ vs ๋น๋๊ธฐ / Blocking vs Non-Blocking ๋จผ์ ๋๊ธฐ์ ๋น๋๊ธฐ๋ฅผ ๊ตฌ๋ถํด๋ณด์. - ๋๊ธฐ(Synchronous) : ์์ฒญ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ๊น์ง ๊ธฐ๋ค๋ฆผ - ๋น๋๊ธฐ(Asynchronous) : ์์ฒญ ํ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํํ ๋ ๊น์ง ๊ธฐ๋ค๋ฆฌ์ง ์์ ๊ทธ๋ ๋ค๋ฉด,..
์ ๋ฒ ํฌ์คํ
์์ ์์๋ก Public Repository๋ฅผ ์ฌ์ฉํ์ง๋ง, ์ค์ํ ํ์ผ์ด ๋ค์ด์๋ ๋ ํฌ์งํ ๋ฆฌ๋ ๋น์ฐํ private์ผ๋ก ์ค์ ๋์ด ์์ ๊ฒ์ด๋ค. ๊ทธ๋ผ ์ด๋ฒ ํฌ์คํ
์์ , Config Server์์ private repository๋ก๋ถํฐ ์ค์ ํ์ผ์ ๊ฐ์ ธ์ฌ ์ ์๋๋ก ์ธํ
ํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๋๋ก ํ๊ฒ ๋ค. 1. ๋น๋์นญ ํค ์์ฑ ๋งฅ์์๋ ssh ๋น๋์นญ ํค๋ฅผ ๋ง๋ค ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค. $ ssh-keygen -m PEM -t rsa -b 4096 -C {๊นํ๋ธ ๊ณ์ } ์ ์ฅํ ์์น์ ๋น๋ฐ๋ฒํธ(passphrase)๋ฅผ ์ค์ ํ๊ณ ๋ง๋ค์ด์ฃผ์. 2. Deploy Key ๋ฑ๋ก ๋ง๋ค์ด ์ฃผ๋ฉด, .pub ์ Public key๋ฅผ ๋ณผ ์ ์๋๋ฐ ์ด๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ Private repository์ Deploy Key๋ก ..
0. Spring Cloud Bus ์ง๋ ํฌ์คํ
์์ Actuator๋ฅผ ์ด์ฉํด์ refresh๋ฅผ ํตํด configuration ์ ๋ณด๋ค์ ๊ฐ์ ธ์ค๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด์๋ค. ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๊ฒ ๋๋ค๋ฉด, ์ค์ ์ ๋ณด๊ฐ ๋ฐ๋๋ ๋ง๋ค refresh๋ฅผ ํด์ค์ผ ํ๋ ๋จ์ ์ด ์๋ค. ์์ธํ ๋ด์ฉ์ ๊ณต์ ๋ฌธ์๋ฅผ ์ดํด๋ณด์. https://spring.io/projects/spring-cloud-bus/ Spring Cloud Bus Spring Cloud Bus links nodes of a distributed system with a lightweight message broker. This can then be used to broadcast state changes (e.g. configuration changes) or o..
0. Spring Cloud Config Server MSA์ ๊ฐ์ ๋ถ์ฐ ์์คํ
์์ ๊ฐ ์๋ฒ๋ค์ ๊ตฌ์ฑ์ ํ์ํ ์ค์ ๋ค์ ์ธ๋ถ ์์คํ
์์ ํ๋ฒ์ ๊ด๋ฆฌํ ์ ์๋ค. Spring Boot ๊ฐ์ ๊ฒฝ์ฐ๋, ์ค์ ํ์ผ์ธ application.yml ๋๋ propertiesํ์ผ์ด ๊ทธ ๋์์ด ๋๊ฒ ๋ค. Spring Cloud์ Config Server๋ฅผ ๊ธฐ๋ํ์ฌ ์ค์ ํ์ผ๋ค์ ํ๊บผ๋ฒ์ ๋ฌถ์ด ์ฌ์ฉํ๋ค๋ฉด, ํ ์ ์ฅ์์์ ๊ด๋ฆฌํ ์ ์๊ณ , ์ค์ ์ ๋ณด๋ฅผ ๋ฐ๊พธ๋๋ผ๋ ๋ค๋ฅธ ์๋น์ค๋ค์ ๋ค์ ๋น๋ํ์ง ์์๋ ๋๋ค. ์๋น์ค๋ฅผ ๊ฐ๋ฐํ๋ ๊ฒฝ์ฐ, DEV์๋ฒ์ PROD ์๋ฒ๋ฅผ ๋ถ๋ฆฌํด์ ๊ฐ๋ฐํ๊ธฐ๋ ํ๋๋ฐ, ๊ฐ ์๋ฒ๋ค ๋ง๋ค ์ฌ์ฉํ๋ ์ค์ ์ ๋ณด๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ์๋ฒ์ ๋ง์ถฐ์ ๊ธฐ๋ํ ์ ์๊ฒ ๋ค. 1. Actuator ์์์ Config Server..
์ง๋ ํฌ์คํ
์์๋ Eureka Server์ Microservice๋ค์ ๋ฑ๋กํ๋ ์ค์ ์ ์์๋ณด์๋ค. ์ด๋ฒ ์๊ฐ์๋, Eureka Server์ ๋ฑ๋ก๋ ์๋น์ค๋ค์ Routingํ๋ ์ค์ ๋ฐฉ๋ฒ๊ณผ filter๋ฅผ ์์๋ณผ ๊ฒ์ด๋ค. 0. API Gateway Spring Cloud Gateway๋ ๋ฐ๋ ์์ฒญ์ Predicate(์กฐ๊ฑด)์ ๋ฐ๋ผ Filter๋ฅผ ๊ฑฐ์ณ, ๊ฐ Microservice์ Routing์ ํด์ฃผ๋ ์ญํ ์ ํ๋ค. ์ฌ๊ธฐ์ Gateway์๋ฒ๋ Spring์ ๊ธฐ๋ณธ ๋ด์ฅ ์๋ฒ์ธ Tomcat์ ์ฌ์ฉํ์ง ์๊ณ Netty๋ฅผ ์ฌ์ฉํ๋๋ฐ ,Netty๋ ๋น๋๊ธฐ ์ด๋ฒคํธ ๊ธฐ๋ฐ ๋คํธ์ํฌ ์ ํ๋ฆฌ์ผ์ด์
ํ๋ ์์ํฌ์ด๋ค. ์๋ฌด๋๋ Gateway๊ฐ ๋ชจ๋ ์์ฒญ๋ค์ ๋ฐ๊ณ Routingํ๋ ์ญํ ์ ํ๋ค๋ณด๋, ๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋๊ฒ ๋..