๐ฑ Spring Cloud - Service Discovery (Netflix Eureka) ๐ฑ
Service Discovery ?
- ๋ณดํต์ ๊ฒฝ์ฐ ํ ์๋น์ค์์ ๋ค๋ฅธ ์๋น์ค๋ฅผ ํธ์ถํ ๋ IP์ Port์ ๋ณด๋ฅผ ์ด์ฉํ์ฌ ํด๋น ์๋น์ค๋ฅผ ์๋ณํ์ฌ ์์ฒญํ๋ค. ํ์ง๋ง ํด๋ผ์ฐ๋ ํ๊ฒฝ์์๋ IP์ Port์ ๋ณด๊ฐ Auto-scaling ๋ฑ์ผ๋ก ์ธํด ๋์ ์ผ๋ก ๋ฐ๋๊ฒ ๋๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ํด๋นํ๋ ์๋น์ค๋ฅผ ์๋ณํ ์ ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ด ํ์ํ๋ค.
- Service Discovery๋ ์๋น์ค์ ์์น์ ๊ฐ์ฉ ์ํ ๋ฑ์ ๊ด๋ฆฌํ์ฌ ํด๋ผ์ด์ธํธ ์๋น์ค๊ฐ ์์ฒญํ ์๋น์ค๋ฅผ ์๋ณ ๊ฐ๋ฅํ ๋ก ํ๋ค.
Service Discovery์ ์ข
๋ฅ
- Client Side Discovery
- ์์ฑ๋ ์๋น์ค๋ Service Registry์ ์๋น์ค๋ฅผ ๋ฑ๋ก๋๊ณ , ์๋น์ค๋ฅผ ์ฌ์ฉํ ํด๋ผ์ด์ธํธ๋ Service Registry์์ ์๋น์ค์ ์์น๋ฅผ ์ฐพ์ ํธ์ถํ๋ ๋ฐฉ์์ด๋ค.
- Server Side Discovery
- ์๋น์ค๋ฅผ ์ฌ์ฉํ ํด๋ผ์ด์ธํธ์ Service Registry ์ฌ์ด์ Load Balancer๋ฅผ ๋๋ ๋ฐฉ์์ด๋ค.
- ํด๋ผ์ด์ธํธ๋ Load Balancer์ ์๋น์ค๋ฅผ ์์ฒญํ๊ณ Load Balancer๊ฐ Service Registry์ ํธ์ถํ ์๋น์ค์ ์์น๋ฅผ ์ง์ํ๋ ๋ฐฉ์์ด๋ค.
Eureka Server
- ์ค์ตํ๊ฒฝ
- Spring boot 2.4.x
- Spring cloud 2020.0.0
- Dependency
- Springboot mainํด๋์ค์ @EnableEurekaServer ์ค์
- .yml or .properties ์ค์
- ์ ์ค์ ์ ๋ง์น๊ณ Springboot main๋ฉ์๋๋ฅผ ์คํํ๊ณ ํด๋น ํฌํธ๋ก ์ด๋ํ๋ฉด Eureka Dashboard๋ฅผ ํ์ธํ ์ ์๋ค.
Test Service ์์ฑ
- ์ค์ตํ๊ฒฝ
- Spring boot 2.5.0
- Spring cloud 2020.0.3
- Eureka Discovery Client
- Spring web
- .yml or .properties ์ค์
- Test Service ์คํ ํ Eureka Server์ ๋ฑ๋ก๋ ๊ฒ์ ํ์ธ
๋ค์ํ ์๋ฒ ๊ตฌ๋ ๋ฐฉ๋ฒ์ ํตํ ์ฌ๋ฌ ๊ฐ ์๋น์ค ์ธ์คํด์ค ๋ฑ๋ก
๋ฐฉ๋ฒ 1 - IDE์ฌ์ฉ (intellij Ultimate)
- Run/Debug Configurations
- ์๋์ ๊ฐ์ด ์ค์
- ๊ฐ๊ฐ ์คํ
- Eureka Server์ 2๊ฐ ์ธ์คํด์ค๊ฐ ๋ฑ๋ก๋ ๊ฒ์ ํ์ธ
๋ฐฉ๋ฒ 2 - Maven๋ช
๋ น์ด ์ฌ์ฉ
- mvn spring-boot:run -Dspring-boot.run.jvmArguments='-Dserver.port=8082'
๋ฐฉ๋ฒ 3 - ์ปดํ์ผ ํ jarํ์ผ ์คํ
- mvn clean compile package
- ํ๋ก์ ํธ ํด๋์ targetํด๋๊ฐ ์์ฑ
- targetํด๋์ jarํ์ผ ์คํ
- java -jar -Dserver.port=8082 ./target/project_name.jar
Random Port
- ์ฌ๋ฌ ๋ฐฉ์์ ํตํด ํ๋ก์ ํธ๋ฅผ ์ํํด๋ณด์๋ค. ํ์ง๋ง ๋งค๋ฒ ์คํ๋ง๋ค ํฌํธ๋ฅผ ์ค์ ํด์ฃผ์ด์ผ ํ๋ ๋ถํธํจ์ด ์๋ค.
- spring์ด ์ ๊ณตํด์ฃผ๋ random port๊ธฐ๋ฅ์ ์ด์ฉํด๋ณด์.
- .yml or .properties ์ค์
- ํฌํธ๋ฒํธ๋ฅผ 0์ผ๋ก ์ค์ ํ๋ค.
- ๋ ๊ฐ ์ธ์คํด์ค ๋ฑ๋ก
- ์ฒซ ๋ฒ์งธ ์๋น์ค๋ IDE์์ ์คํ
- ๋ ๋ฒ์งธ ์๋น์ค๋ mvn๋ช
๋ น์ด๋ฅผ ํตํด ์คํ
- mvn spring-boot:run
- ํฌํธ ๋ฒํธ๋ฅผ ๋ฐ๋ก ์ค์ ํด์ฃผ์ง ์์๋ ๋๋ค.
- ๋ฑ๋ก๋ ์ธ์คํด์ค ํ์ธ
- ๋ฑ๋ก๋ ์ธ์คํด์ค์ ๋ง์ฐ์ค ์ปค์๋ฅผ ์ฌ๋ฆฌ๋ฉด ์ผ์ชฝ ํ๋จ์ ๋๋คํ๋ ํฌํธ๋ฒํธ๋ฅผ ํ์ธ ํ ์ ์๋ค.