마이크로서비스는 정보 은닉이라는 개념을 수용한다. 정보 은닉은 가능한 한 많은 정보를 구성 요소에 감추고 외부 인터페이스를 통해 최소한의 정보만 노출하는 것을 의미한다. 이 개념은 변경하기 쉬운 것과 변경하기 어려운 것을 명확히 구분하게 해준다. 외부 대상에게 감춰진 구현은 마이크로서비스가 노출하는 네트워크 인터페이스가 하위 호환성을 깨뜨리는 방식으로 바뀌지 않는 한 자유롭게 변경될 수 있다.
마이크로서비스 경계 내부의 변경은 업스트림 소비자에게 영향을 미치지 않으므로, 독립적인 기능 릴리스가 가능하다. 이는 마이크로서비스가 독립적으로 동작하고 필요에 따라 릴리스되는 데 필수적이다. 내부 구현이 변경되더라도 명확하고 안정적인 서비스 경계가 변경되지 않는다면, 시스템의 결합은 느슨해지고 응집력이 강해진다.
내부 구현 상세 정보를 숨기는 것에 대해 이야기할 때 헥사고날 아키텍처 패턴은 언급하지 않는 편이 좋다. 이 패턴은 다른 유형의 인터페이스를 통해 동일한 기능과 상호작용할 수 있다는 생각을 바탕으로 내부 구현과 외부 인터페이스를 분리하는 것이 왜 중요한지를 설명한다.
서비스 지향 아키텍처(service-oriented architecture, SOA)와 마이크로서비스(micro service architecture, MSA)는 다를까?
서비스 지향 아키텍처는 특정 기능들을 제공하기 위해 다수 서비스가 협업하는 설계 방식이다. 여기서 서비스는 일반적으로 완전히 분리된 운영 시스템의 프로세스를 의미하며, 이러한 서비스 간 통신은 프로세스 경계 내부의 메서드 호출이 아니라 네트워크 간 호출로 이뤄진다.
SOA는 대규모 모놀리식 애플리케이션에 대항하기 위한 방안으로 생겨났다. 이 방식은 소프트웨어의 재사용성을 향상시키는게 목표인데, 예를 들어 2개 이상의 사용자 애플리케이션이 동일한 서비스를 사용할 수 있도록 해준다. SOA는 소프트웨어 유지 보수와 재작성을 더 쉽게 하기 위한 것으로, 이론적으로는 서비스의 의미 체계가 너무 크게 바뀌지 않는 한 서로 모르게 다른 서비스로 교체할 수 있다.
마이크로서비스 방식은 SOA를 더 잘하고자 시스템과 아키텍처를 충분히 이해하려는 노력에 실제로 사용되면서 등장했으므로, 마이크로서비스도 SOA에 대한 특정한 접근 방식으로 생각해야 한다.
반응형
'기타' 카테고리의 다른 글
[MSA] 마이크로서비스 처음 사용 시 활성화 기술 (0) | 2025.04.03 |
---|---|
[MSA] 마이크로서비스의 핵심 개념 (0) | 2025.04.03 |
[npm] npm 버전 하나 올리는 명령어 (0) | 2025.04.02 |
Conventional Commit Rules (0) | 2025.02.23 |
ai 커리큘럼 키워드 (0) | 2025.01.16 |
댓글