더북(TheBook)

3.4 데브옵스 이야기: 혹독한 런타임 구축

데브옵스는 급부상하는 IT 분야이지만 데브옵스 엔지니어에게 마이크로서비스 설계는 모두 실제 운영 환경에서 서비스 관리와 관계된 것이다. 코드 작성은 상대적으로 쉬운 일이 될 수 있고, 계속 동작하게 만드는 것이 힘들다. 다음 네 가지 원칙을 갖고 마이크로서비스 개발을 시작하고, 이 책 후반부에서 이 원칙을 적용할 것이다.

마이크로서비스는 일체형(self-contained)이어야 한다: 하나의 소프트웨어 산출물로 시작 및 종료할 수 있는 서비스의 여러 인스턴스를 독립적으로 배포할 수 있어야 한다.

마이크로서비스는 구성 가능(configurable)해야 한다: 서비스 인스턴스가 시작하면 필요한 구성 정보를 한곳에서 읽어 오거나 환경 변수로 전달받아야 한다. 서비스 구성 정보를 설정하는 데 사람의 개입이 없어야 한다.

마이크로서비스 인스턴스는 클라이언트에 투명해야(transparent) 한다5: 클라이언트는 서비스의 정확한 위치를 알고 있어서는 안 된다. 그 대신 애플리케이션이 마이크로서비스 인스턴스의 물리적 위치를 몰라도 인스턴스 위치를 찾을 수 있도록 마이크로서비스 클라이언트는 서비스 디스커버리 에이전트와 통신해야 한다.

마이크로서비스는 자기 상태(health)를 전달해야 한다: 이는 클라우드 아키텍처에서 매우 중요한 부분이다. 마이크로서비스 인스턴스는 고장 날 수 있으며 디스커버리 에이전트는 고장 난 인스턴스를 우회해서 라우팅해야 한다. 이 책에서는 스프링 부트 액추에이터(actuator)를 사용해서 각 마이크로서비스 상태를 표시한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.