느슨한 결합
느슨하게 결합된 서비스는 마이크로서비스 아키텍처의 주요 특성 중 하나입니다.11 서비스는 구현 코드를 감싼 API를 통해서만 상호 작용하므로 클라이언트에 영향을 끼치지 않고 서비스 내부 구현 코드를 바꿀 수 있습니다. 느슨하게 결합된 서비스는 유지보수성, 테스트성을 높이고 애플리케이션 개발 시간을 단축하는 효과가 있습니다. 무엇보다 개발자가 서비스를 이해하고, 변경하고, 테스트하기가 더 쉽습니다.
서비스는 느슨하게 결합되고 API를 통해서만 동작하기 때문에 서비스가 직접 DB와 통신하는 일은 불가능합니다. 또 클래스 필드 같은 서비스의 영속적 데이터는 반드시 프라이빗으로 유지해야 합니다. 이렇게 해야 개발자가 자신이 맡은 서비스의 DB 스키마를 변경할 때 다른 서비스 개발자와 조율하느라 시간을 허비하지 않습니다. 서비스가 DB 테이블을 서로 공유하지 않기 때문에 런타임 격리(runtime isolation)도 향상됩니다. 어떤 서비스가 DB 락을 획득하여 다른 서비스를 블로킹하는 일 자체가 불가능하죠. 물론 DB를 공유하지 않기 때문에 여러 서비스에 걸쳐 데이터를 쿼리하고 일관성을 유지하는 일은 더 복잡해지는 단점이 있습니다.