add()는 RepresentationModel 클래스 메서드이며, linkTo() 메서드는 LicenseController 클래스를 검사해서 루트 매핑을 얻고, methodOn() 메서드는 대상 메서드에 더미 호출을 수행하여 메서드 매핑을 가져온다. 두 메서드 모두 org.springframework.hateoas.server.mvc.WebMvcLinkBuilder의 정적 메서드다. WebMvcLinkBuilder는 컨트롤러 클래스에 대한 링크를 생성하는 유틸리티 클래스다. 그림 3-8에서 getLicense() 서비스의 응답 내용에 포함된 링크를 볼 수 있다. 이 응답 결과를 얻으려면 HTTP GET 호출을 해야 한다.
이제 실행되고 기본 골격을 갖춘 서비스가 마련되었다. 하지만 개발 관점에서 보면 아직 완전한 서비스는 아니다. 좋은 마이크로서비스 설계는 서비스를 명확히 정의된 비즈니스 로직과 데이터 액세스 계층으로 나누는 것을 망설이지 않는다. 이후 장에서 이 서비스를 계속 반복하여 다루면서 어떻게 구조를 잡아 나갈지 자세히 살펴볼 것이다. 그럼 이제 마지막 관점으로 데브옵스 엔지니어가 서비스를 운영화하고 클라우드 배포를 위해 패키징하는 방법을 살펴보자.