데브옵스 관점에서의 마이크로 서비스

Developer:Bird·2021년 1월 15일
0

마이크로서비스

목록 보기
3/4

주의)위내용은 스프링 마이크로 서비스 공작소를 바탕으로 리뷰한내용입니다.

[1. 데브옵스 엔지니어 입장에서의 마이크로 서비스 설계란?]

서비스 운영 및 클라우드 배포를 위한 패키징방법이다.

[2. 데브옵스를 위한 4가지 원칙]

첫번째, 산출물을 사용해 서비스 인스턴스 시작,제거 및 독립적으로 배포가능
두번째, 구성가능(Configurable)해야한다. 필요한 데이터를 환경 변수로 전달된 구성 정보를 받아야한다.(사람의 개입없이)
세번째, 위치에관한 투명성: 클라이언트가 서비스의 정확한 위치를 알고 있어서는 안된다. 서비스 디스커버리 에이전트와 통신해야함
네번째, 자신의 상태(health)를 전달해야한다. 잘못된 서비스 인스턴스를 피해 라우팅해야한다.

[2.1 발생하는 문제점]

마이크로 서비스 사용하면 애플리케이션 동작 부분많아지고,컨테이너들이 분산되어 독립적으로 실행되기에 장애가 많이 생긴다.

[2.2 해결하기 위한 라이프 사이클]

1. 서비스 어셈블리: 일관성있는 서비스,패키징 배포방식

설명

동일한 서비스 코드와,런타임을 정확히 같은 방식으로 배포해야한다.

방법

Maven,Gradle 스크립트를 사용해 빌드함. mvn clean package사용하여 Jar파일에 내장된 톰캣 실행 파일로 빌드한후 실행.

2. 서비스 부트스트래핑: 애플리케이션 구성 코드를 런타임코드와의 분리

설명

사람이 개입하지 않아도 모든 환경에 마이크로서비스 인스턴스를 신속하게 시작하고 배포하기 위해 구성코드와 런타임코드를 분리해야한다.

방법

처음시작시 구성정보를 로드(데이터베이스또는 property에서), 이후 구성정보 변경되면 구성정보 다시 읽어 오도록 알려줘야한다.

3. 서비스 등록 및 디스커버리: 어플리케이션들끼리 통신위한 알림

설명

새로운 인스턴스가 배포될때 그것을 발견할 수 있어야한다.하지만 물리적 위치의 투명성을 띤채로 통신이 가능해야한다. 그이유는 클라우드 기반 환경에서 서버는 일시적이기 때문이다.(ip에 해당하는 소스가 쉽게 제거되고 추가되기에)

방법

제3자 에이전트에 새로운 인스터들이 직접 등록해야한다. 이를 '디스커버리'라고 하고 물리적인 IP 주소, 논리적인 서비스 이름 두가지를 전달 해야한다.

4. 서비스 모니터링: 인스턴스 모니터링 및 고장을 회피하는 라우팅,비정상 서비스 인스턴스 제거함

설명

서비스 디스커버리 에이전트는 등록된 각 서비스 상태를 모니터링한다.그리고 클라이언트가 고장 난 서비스를 호출하지 않도록 자신의 라우팅 테이블에서 문제가 된 서비스 인스턴스를 제거한다.

방법

해당 서비스가 가용한지 확인하기 위해 상태 확인 인터페이스를 계속 모니터링하고 핑(Ping)한다. 일관된 상태 확인 인터페이스 구축시 모니터링 도구를 사용해 문제를 감지 적절히 대응가능하다. 이때 인터페이스를 만드는방법은 JSON페이로드,HTTP엔드포인트 노출이다. 메이븐 빌드파일을 수정해 Spring Actuator 을 다음과 같이 의존성을 추가하면 서비스 상태이해하고 관리하는데 도움이 되는 엔드포인트 기능제공한다.

<dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

참고자료:Spring actuator
저작 이미지및 내용:스프링 마이크로 서비스공작소

profile
끈임없이 발전하자.

0개의 댓글