SW/클라우드 서비스 아키텍처

소프트웨어 아키텍처 : 컴포넌트, 커넥터, 인터페이스 : 개념, 정의, 개요

얇은생각 2020. 4. 21. 19:30
반응형

컴포넌트, 커넥터, 인터페이스 

많은 문제 해결을 위하여 분할 정복이라는 문제 해결 방식을 사용합니다. 예를 들어 여러 명이 같이 쇼핑을 할 때 빨리 쇼핑을 마치를 위해 일을 나누어 각자가 많은 물건을 고르고 계산대에서 한꺼번에 지불하는 방법을 취할 수 있습니다.

 

 

소프트웨어 아키텍처 : 컴포넌트, 커넥터, 인터페이스 : 개념, 정의, 개요

 

소프트웨어 시스템의 개발에 있어서는 분할 정복은 우리가 적용하게 되는 가장 기본적이고 근본적인 접근 방법입니다. 따라서 시스템이 먼저 어떤 컴포넌트들로 구성되고 그들을 어떻게 연결하여 최종적으로 원하는 시스템이 되게 할 수 있는지 구상합니다. 이 활동을 시스템 아키텍처 설계라고 보는데 이와 같이 아키텍처 설계가 만들어지면 시스템의 프로그램은 아키텍처 설계를 따라 만들게 됩니다.

결국 우리가 크고 복잡한 문제를 해결하는 데 쓰지 않을 수 없는 문제 해결 방식의 적용 결과로 소프트웨어 시스템은 여러 컴포넌트와 이들을 연결하는 요소들, 즉 커넥터로 구성되게 되는 것입니다. 이와 같은 이유로 아키텍처는 컴포넌트와 커넥터로 구성되는데 아키텍처 다이어그램에서 컴포넌트는 네모로, 커넥터는 선으로 나타냅니다. 그리고 컴포넌트와 컴포넌트를 연결하는 것이 커넥터이기 때문에 컴포넌트와 커넥터는 다이어그램에서 반드시 교차하여 나타나게 됩니다. 

메타 등의 소프트웨어 아키텍처 연구자들의 연구에 따르면 커넥터는 컴포넌트 간의 상호작용을 실현시키는 요소로서 몇 가지의 서비스를 제공하고, 그런 서비스를 제공하는 커넥터로서 여러 종류의 커넥터들이 있습니다.

메타 등의 연구에 따르면 여러 가지 커넥터들이 있고 같은 종류의 커넥터라고 하더라도 우리가 기대하는 기능이나 구현, 프로그래밍 언어 등에 따라 세부적인 차이점들이 발생하고 그에 따라 더 세분화될 수 있습니다. 예를 들어 프로시저 콜(Procedure Call)이라는 커넥터의 경우 여러 프로그래밍 언어들이 이를 지원하는 방식은 다양하며 파라미터의 종류, 서브루틴 진입 방식과 호출 방식 등이 프로그래밍 언어에 따라 달라질 수 있습니다.

소프트웨어 아키텍처가 기본적으로 컴포넌트와 커넥터로 구성되고 컴포넌트와 커넥터가 네모와 선으로 표현된다고 하여 아키텍처의 표현을 네모와 선만으로 해야 하는 것은 아닙니다. 아키텍처 표현을 더 효과적으로 하기 위해 다른 도형들도 사용할 수 있습니다. 

예를 들어 데이터를 저장하는 컴포넌트를 나타내기 위해서 원통 모양을 쓰고 다른 컴포넌트들을 연결하는 기능을 갖는 특수한 컴포넌트를 육각형으로 나타낸다면 컴포넌트에 관한 많은 정보를 즉각적으로 전달할 수 있을 것입니다. 마찬가지로 선 외에도 화살표를 사용하면 해당 요소가 커넥터라는 정보 이외에도 데이터가 어떤 방향으로 흐르는지까지도 잘 나타낼 수 있습니다.

 

 

소프트웨어 아키텍처 : 컴포넌트, 커넥터, 인터페이스 : 개념, 정의, 개요

 

이와 같이 확장된 아키텍처 키워드를 사용한 아키텍처 다이어그램이 있습니다. 이 아키텍처는 3개의 컴포넌트가 커넥터에 의해 연결된 모습을 보여주고 있습니다. 가운데에 있는 컴포넌트는 주된 기능이 다른 컴포넌트들의 연결인 커넥션 컴포넌트입니다. 컴포넌트와 커넥터로 표현된 아키텍처는 시스템의 모습을 높은 추상수준에서 보여줍니다. 그러나 이 수준의 아키텍처 정의만으로 시스템의 구현을 시작할 수 없습니다.

특히 여러 개발자 혹은 개발팀의 협업을 가능하게 되는 설계 역할을 수행할 수 없습니다. 각 컴포넌트와 커넥터들이 여러 개발자나 개발팀에 의해서 개발된 뒤 일일이 서로 연결되어 동작할 수 있기 위해서는 그들의 연결 동작, 즉 인터페이스가 먼저 잘 정의되어 있어야 합니다. 여기서 인터페이스를 연결 동작이라고 말하는 이유는 인터페이스라는 단어가 접속 부위만을 지칭하는 듯 보이지만, 실제로는 접속 부위에서 일어나는 상호작용 동작까지 올바르게 정의되어야 컴포넌트와 커넥터들이 서로 연결되어 기대되는 동작을 할 수 있기 때문입니다.

인터페이스의 정의 혹은 명세가 이 슬라이드에서처럼 사용되는 함수들의 열거에서 끝나는 경우가 많이 있습니다. 그러나 이러한 명세는 인터페이스 명세라서 일반적으로 충분하지 않습니다. 아키텍처 다이어그램은 애크미(Acme)라고 하는 아키텍처 기술 언어로 작성되어 있는데 이 다이어그램에서 패킷타입은 커넥터이고 패킷타이저와 이미지 파이프라인은 컴포넌트입니다. 컴포넌트와 커넥터가 연결되는 인터페이스를 연결 요소들 간의 상호작용 프로토콜로 정의하고 있습니다.

따라서 아키텍처 요소가 보내고 받는 메시지들의 리스트 외에도 이들을 누가 어떤 순서로 보내고 받는지 규정하고,
패킷타이저 컴포넌트의 경우에는 그 컴포넌트의 행위를 상태머신으로 정의하고 있습니다. 이미지 파이프라인 컴포넌트와 패킷타입 커넥터의 경우에도 인터페이스의 일부로 정의할 수 있습니다.

반응형