데브옵스는 급부상하는 IT 분야이지만 데브옵스 엔지니어에게 마이크로서비스 설계는 모두 실제 운영 환경에서 서비스 관리와 관계된 것이다. 코드 작성은 상대적으로 쉬운 일이 될 수 있고, 계속 동작하게 만드는 것이 힘들다. 다음 네 가지 원직을 갖고 마이크로 서비스 개발을 시작하자.
- 마이크로서비스는 일체형이어야 한다 : 하나의 소프트웨어 산출물로 시작 및 종료할 수 있는 서비스의 여러 인스턴스를 독립적으로 배포할 수 있어야 한다.
- 마이크로서비스는 구성 가능 해야 한다 : 서비스 인스턴스가 시작하면 필요한 구성 정보를 한곳에서 읽어 오거나 환경 변수로 전달 받아야 한다. 서비스 구성 정보를 설정하는 데 사람 개입이 없어야 한다.
- 마이크로서비스 인스턴스는 클라이언트에 투명해야 한다 : 클라이언트는 서비스의 정확한 위치를 알고 있어서는 안된다. 그 대신 애플리케이션이 마이크로서비스 인스턴스의 물리적 위치를 몰라도 인스턴스 위치를 찾을 수 있도록 마이크로서비스 클라이언트는 서비스 디스커버리 에이전트와 통신해야 한다.
- 마이크로서비스는 자기 상태를 전댈해야 한다 : 마이크로서비스 인스턴스는 장애가 날 수 있으며 디스커버리 에이전트는 장애 난 인스턴스를 우회해서 라우팅해야 한다. 이를 가능하게 하기 위해 스프링 부트 액추에이터(actuator)를 사용하여 각 마이크로서비스 상태를 표시해야 한다.
데브옵스 관점에서 마이크로서비스와 관련된 운영상 요구 사항을 사전에 해결하고, 이러한 네 가지 원칙을 마이크로서비스를 빌드하고 환경에 배포할 때마다 발생하는 표준 수명 주기 이벤트로 변환해야한다. 이 네 가지 원칙은 다음에 나오는 운영 수명 주기에 매핑할 수 있다.
- 서비스 조립 : 동일한 서비스 코드와 런타임이 정확히 동일한 방식으로 배포 되도록 반복성과 일관성을 보장하면서 서비스를 패키징하고 배포하는 방법이다.
- 서비스 부트스트래핑 : 마이크로서비스를 사람의 개입 없이 모든 환경에서 빠르게 시작하고 배폴할 수 있도록 런타임 코드에서 애플리케이션 코드와 환경별 구성 코드를 분리하는 방법이다.
- 서비스 등록 및 디스커버리 : 새 마이크로서비스 인스턴스가 배포될 때 애플리케이션 클라이언트가 새 서비스 인스턴스를 발견할 수 있는 방법이다.
- 서비스 모니터링 : 마이크로서비스 환경에서 높은 가용성이 요구되므로 한 서비스에 여러 인스턴스를 실행하는 것이 일반적이다. 데브옵스 관점에서 마이크로서비스 인스턴스를 모니터링해야 하며 장애가 발생한 서비스 인스턴스를 우회해서 라우팅하고 종료되는지 확인해야 한다.
'마이크로서비스' 카테고리의 다른 글
Springboot 마이크로서비스 기본 개발 (0) | 2024.10.17 |
---|---|
마이크로서비시 아키텍처 설계 (0) | 2024.10.14 |
클라우드 네이티브 마이크로서비스 구축을 위한 12 팩터 앱 (0) | 2024.10.10 |
스프링 클라우드란? (1) | 2024.10.07 |
마이크로서비스 개발 패턴 (3) | 2024.09.10 |