더북(TheBook)

3.1.3 서비스 인터페이스 설계

아키텍처에 대한 마지막 조언은 애플리케이션 내 마이크로서비스들의 상호 통신 방식의 정의에 관한 것이다. 마이크로서비스로 비즈니스 로직을 구축할 때 서비스의 인터페이스는 직관적이어야 하고 개발자는 애플리케이션의 서비스 중 한두 개를 완전히 이해함으로써 모든 서비스가 어떻게 동작하는지 규칙을 습득해야 한다. 일반적으로 서비스 인터페이스 설계에 대해 다음 지침을 사용할 수 있다.

REST 철학을 수용하라: 이것은 리처드슨의 성숙도 모델(Richardson Maturity Model)과 함께 모범 사례(부록 A 참고) 중 하나다. 서비스에 대한 REST 접근 방식은 표준 HTTP 동사(GET, PUT, POST, DELETE)를 사용하면서 서비스 호출 프로토콜로 HTTP를 수용하는 것이 핵심이다. HTTP 동사(verb)를 기반으로 기본 행동 양식을 모델링하라.

URI를 사용하여 의도(intent)를 전달하라: 서비스의 엔드포인트로 사용되는 URI는 문제 영역에 존재하는 다양한 자원을 기술하고 자원 관계에 대한 기본 메커니즘을 제공해야 한다.

요청(request)과 응답(response)에 JSON을 사용하라: JSON은 총 경량 데이터 직렬화 프로토콜이며 XML보다 훨씬 사용하기 쉽다.

HTTP 상태 코드로 결과를 전달하라: HTTP 프로토콜에 서비스 호출의 성공과 실패를 명시하는 풍부한 표준 응답 코드가 있다. 상태 코드를 익히고 모든 서비스에 일관되게 사용하는 것이 매우 중요하다.

모든 기본 지침은 서비스 인터페이스를 쉽게 이해하고 소비할 수 있게 만드는 것이 목표다. 여러분은 개발자가 앉아서 서비스 인터페이스를 살펴보고 바로 사용하길 원한다. 마이크로서비스를 소비하기 쉽지 않다면 개발자는 이 문제를 우회해서 해결하고 아키텍처의 본래 의도를 와해하려고 할 것이다.

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