딸기말차
[MSA] 8. Config Server, Eureka Server 본문
엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)
백엔드 개발 부트캠프
백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.
playdata.io
1. Configuration Service
Micro Service를 구현할 때, 공통 된 정보는 마이크로서비스마다 코드를 작성하는 것보단 한 곳에 설정정보를 작성해 모든 마이크로서비스에서 공통으로 사용할 수 있다면 편리할 것이다.
Spring Cloud Config는 배포 된 마이크로서비스에서 완전히 분리되어, 어플리케이션의 구성 데이터를 관리한다.
즉, 여러 마이크로서비스 인스턴스를 실행하더라도 항상 동일한 구성을 보장해주며, 자체적으로 사용할 수도 있지만 Git과 같은 저장소와 연동하여 사용할 수도 있다.
2. Chapter5 : Config-Server, Licensing-Service
# configserver/src/main/resources/config DIR
# licensing-service-dev.properties
# docker DIR
# docker-compose.yml
# config-server 재빌드, 이미지 다시 만들기
./mvnw package dockerfile:build
# 실행중인 docker compose 전부 중지
docker-compose down
# docker-compose를 통해 이미지 실행
docker-compose up
# 컨테이너를 띄운 후 API 요청
http://localhost:8080/v1/organization
/e839ee96-28de-4f67-bb79-870ca89743a0/license/279709ff-e6d5-4a54-8b55-a5c37542025b
3. Service Discovery
마이크로서비스를 구축하다보면, 서비스별로 접근할 수 있는 IP 및 Port가 다른 경우가 생긴다.
이 경우 IP를 하드코딩하여 접근할 수도 있지만 한 곳에서 해당 서비스들을 관리하는 문을 만든다면, 더 용이하게 관리할 수 있을 것이다.
즉, 서비스 디스커버리란 클라이언트 입장에서 웹 서비스를 이용하기 위한 IP 및 Port는 일정하되, 어떤 서비스를 요청했을 시 서비스 디스커버리에서 해당 서비스를 찾아줄 수 있게 구성하는 것을 의미한다.
1. 서비스를 소비하는 클라이언트 입장에서 서버가 배포 된 물리적 위치(IP 및 서버이름) 을 추상화
2. 서비스 소비자는 논리적인 이름을 사용해 서버의 비즈니스 로직 호출
3. 서비스 인스턴스가 시작되고 종료될 때 인스턴스들의 등록 및 취소도 처리
4. Eureka, Zookeeper 등을 사용해 구현 가능하다.
4. Chapter6 : Eureka Server
# configserver/src/main/resources/config DIR
# licensing-service-dev.properties
# organization-service-dev.properties
# docker DIR
# docker-compose.yml
# config-server build
./mvnw package dockerfile:build
# eureka-server build
./mvnw package dockerfile:build
# licensing-service build
./mvnw package dockerfile:build
# organization-service build
./mvnw package dockerfile:build
# 기존 실행중이던 docker-compose 중지
docker-compose down
# 새로 만든 도커 이미지 실행
docker-compose up
# eureka 내 organization-service에 접근
http://localhost:8070/eureka/apps/organization-service
# organization-service API 호출
http://localhost:8080/v1/organization
/e839ee96-28de-4f67-bb79-870ca89743a0/license/279709ff-e6d5-4a54-8b55-a5c37542025b/feign
5. 55일차 후기
마이크로서비스는 기존의 모놀리식과는 다르게 여러 서비스들을 구현해, 취합하여 사용하는 형태와 마찬가지이다.
때문에 기존에는 한 프로젝트에서 관리하던 설정정보 등을 공통으로 관리할 수 있는 수단이 필요했고, 이를 위해 Config Server를 구축해 사용해보았다.
또한, 여러 서비스를 일일이 IP로 접근하게 한다면, 나중에 IP가 변경되었을 때 전부다 바꿔줘야하는 불편한 작업을 겪게될 수 있다. 만일 이를 IP가 아니라 서비스의 이름을 통해 접근할 수 있다면, 추후 IP가 변경되더라도 코드의 변경없이 서비스를 유지할 수 있게 된다.
이를 위해 Eureka 등을 사용해 서비스 디스커버리를 구축하여 사용한다면, 유지보수에 많은 도움이 될거라는 생각이 들었다.
'Bootcamp > MSA' 카테고리의 다른 글
[MSA] 10. OS, 회복성 패턴, Kubernates 설정 (0) | 2023.10.23 |
---|---|
[MSA] 9. centOS, Kubernates 설치 (0) | 2023.10.20 |
[MSA] 7. Docker 활용, ConfigServer (0) | 2023.10.13 |
[MSA] 6. Docker 활용, SQL 예제 (0) | 2023.10.12 |
[MSA] 5. Docker 활용, Compose (0) | 2023.10.11 |