banner
홈페이지 / 블로그 / 마이크로서비스를 구축하지 말고 느슨한 결합을 추구하세요
블로그

마이크로서비스를 구축하지 말고 느슨한 결합을 추구하세요

Sep 01, 2023Sep 01, 2023

작성자: Chris Bertinato, 2023년 8월 29일

안정적인 애플리케이션 성능에 대한 수요가 항상 증가하고 있다는 점을 고려하면 많은 기업이 향후 확장을 염두에 두고 시스템을 구축하는 것은 놀라운 일이 아닙니다. 많은 업계 전문가들은 시스템의 미래 보장을 위한 최선의 방법으로 마이크로서비스를 지적했습니다. 그러나 모든 시점에서 모든 회사에 적용되는 단일 전략은 없으므로 "적절한 규모의 서비스"라는 용어를 사용하는 것이 더 나을 수도 있습니다. . 팀은 최신 트렌드 중 어떤 것을 전략으로 채택할지 고민하기보다는 결합의 기본 요소를 인식하고 이에 집중해야 합니다. 대부분 변경될 가능성이 있는 구성 요소 사이에 느슨한 결합이 있는 경우 시스템은 더 유연하고 동적입니다.

시스템 맥락에서 결합은 시스템 구성 요소가 연결되는 방식을 나타냅니다. 느슨한 결합에는 인터페이스가 필요합니다. 전기 시스템의 경우 이러한 인터페이스는 전압 레벨 측면에서 설명된 핀, 소켓 및 프로토콜이 있는 물리적 커넥터로 구현됩니다. 전기 커넥터에 비유되는 소프트웨어 시스템은 API(응용 프로그래밍 인터페이스)로, 이는 기능 집합이나 HTTP 기반 리소스 등으로 구현될 수 있습니다. 그러나 느슨한 결합에는 인터페이스만으로는 충분하지 않습니다. 해당 인터페이스는 어느 정도 안정적이어야 합니다. 즉, 사용자는 입력이 오랫동안 동일하게 유지되거나 적어도 예측 가능하게 변경되는 인터페이스가 있을 것이라고 믿을 수 있어야 합니다.

시스템의 구성 요소가 느슨하게 결합된 경우 시스템의 나머지 부분을 크게 방해하지 않고 해당 구성 요소를 내부적으로 변경할 수 있습니다. 일상적인 예를 생각해 보십시오: 전구. 전구 소켓은 표준 스레드와 표준 전압을 갖춘 표준 크기를 갖습니다. 전구 자체는 램프나 조명 기구를 바꾸지 않고도 필라멘트부터 LED까지 다양한 소재로 진화해 왔습니다. 이제 소프트웨어 시스템의 간단한 예를 살펴보겠습니다. HTTP 서버와 캐시, 대기열 또는 데이터베이스와 같은 데이터 저장소가 있습니다. 대부분의 경우 데이터 저장소 구현을 쉽게 변경할 수 있도록 서버와 데이터 저장소 사이에 인터페이스를 배치하는 것이 좋습니다. 이 두 구성 요소가 느슨하게 결합되면 변경될 가능성이 있는 항목은 다른 항목을 크게 변경하지 않고도 변경할 수 있습니다.

시스템의 구성 요소가 너무 밀접하게 얽혀 있으면 아주 작은 변화라도 시스템의 다른 부분에 큰 피해를 줄 수 있습니다. 이 구조를 근접하게 자란 식물 그룹과 비교할 수 있습니다. 모든 줄기가 서로 얽혀 있기 때문에 하나의 식물을 새 식물로 교체하는 것은 어려울 것입니다. 한 번의 잘못된 움직임으로 인해 다른 많은 식물이 쉽게 뿌리째 뽑힐 수 있기 때문입니다.

대조적으로, 느슨하게 결합된 시스템에서는 한 구성 요소에 문제가 발생하면 시스템의 나머지 부분이 복원력을 유지할 것이라는 확신을 갖고 변경을 수행할 수 있습니다. 이러한 확신은 변경에 대한 유연성을 높이고 새로운 기능과 제품의 출시 기간을 단축하며 잠재적으로 경쟁 우위를 제공합니다.

느슨한 결합의 필연적인 이점은 진화성입니다. 인터페이스가 가장 변경될 가능성이 있는 장소에 위치하면 시스템이 더 쉽게 발전할 수 있습니다. 인터페이스는 안정적이고 불투명해야 하므로 그 뒤에 일어나는 모든 일은 일반적으로 해당 인터페이스 사용자에게 알려지지 않고 관련이 없습니다. 따라서 인터페이스가 안정적으로 유지되는 한 인터페이스 뒤의 시스템은 자유롭게 변경되고 진화할 수 있습니다.

마이크로서비스 전략이 느슨한 결합을 지원하는 것은 사실이지만 이것이 유일한 방법은 아닙니다. 더 단순한 아키텍처 전략은 더 작거나 새로운 프로젝트에 더 지속 가능한 방식으로 느슨한 결합의 이점을 제공하여 마이크로서비스 중심 인프라를 구축하는 것보다 오버헤드를 덜 발생시킵니다.

아키텍처 선택은 확장성 및 성능과 같은 기술적 문제만큼이나 소프트웨어 시스템 구축 및 운영의 인간 구성 요소에 관한 것입니다. 그리고 인간 구성 요소는 마이크로서비스가 부족할 수 있는 부분입니다.