본문 바로가기
[개발] 이야기

모듈과 컴포넌트의 차이 명확하게 알려드립니다 - Module, Component & Connect(C&C), 자원할당에 대해서

by 헤이나우
반응형

목차

     

     

    1. 모듈과 컴포넌트를 알기전 [구조] 에 대해서

    높은 빌딩에는 기반과 기둥이 있습니다. 몸에는 뼈가 있습니다. 소프트웨어에는 구조(struncture)가 있습니다. 

    구조는 소프트웨어가 정렬되어 있는 형태입니다. 

    구조는 여러분이 작성한 코드에도 있고 실행하는 소프트웨어에도 있고 많은 사람의 협력 속에도 있습니다.

    구조를 만드는 일은 곧 요소들끼리 관계를 만드는 일입니다. 요소는 소프트웨어를 만드는 기본 조각입니다. 관계는 연관된 요소들이 함께 동작해서 특정 작업을 완수하는 단위입니다.

    2. 모듈과 컴포넌트, 자원할당이란?

    종이와 펜으로만 구조를 설계하면 현실을 반영하지 못할 가능성이 높습니다. (최대한 현실을 반영해야 좋은 구조라 할수 있다.)

    이를 피하기 위해서 요소와 관계를 세 가지 타입의 구조 중 선택해 설계할 수 있습니다. 이런 세 가지 타입을 모듈(Module), 컴포넌트(component), 자원할당(allocation)으로 정의했습니다. 

    구조를 만들려면 동일한 타입안에서 요소와 관계를 결합합니다.

    3. 모듈과 컴포넌트 요소와 관계

    각 타입별 요소와 관계의 예

      요소 관계
    모듈 클래스, 패키지, 레이어,저장 프로시저, 모듈, 설정 파일, 데이터베이스 테이블 사용한다, 사용을 허락한다, 의존한다
    컴포넌트 오브젝트, 커넥트, 스레드, 프로세스, 계층, 필터 호출한다, 구독한다, 연결한다, 송출한다, 응답한다
    자원 할당 서버, 센서, 랩톰, 로드 밸런서, 팀, 사람, 도커 컨테이너 구동한다, 책임이 있다, 개발한다, 저장한다, 지불한다

    4. 모듈, 컴포넌트, 자원할당의 의미

    모듈 : 이 타입은 설계할 때 만들기 시작해서 주로 코딩할 때 다루게 됩니다. 모듈은 파일 시스템상의 어떤 형태로 표현할 수 있으며 소프트웨어가 동작하지 않아도 상관없습니다.

     

    컴포넌트 : 이 타입은 소프트웨어가 실제 동작할 때부터 의미가 있습니다(runtime). 소프트웨어가 실행하기 시작하면 컴포넌트 간에 커넥션을 만들고 프로세스를 생성하거나 오브젝트를 초기화합니다. 모듈 타입과 다른점이라면 컴포넌트는 시스템이 동작하지 않으면 사라진다는 점입니다. 컴포넌트 타입은 프로그램이 실제 실행하면서 만드는 로그파일이나 데이터베이스 기록만으로 파악할 수 있습니다.

     

    자원할당 : 이 타입은 모듈과 컴포넌트가 서로 어떤 과계에 있는지 물리적인 요소로 보여주고자 할 때 만듭니다. 자원할당 타입은 매핑 구조라고도 불리우는데, 여러 요소가 서로 어떻게 매핑되는지 나타낼 수 있기 때문입니다.

    5. 모듈과 컴포넌트의 차이

    소프트웨어 개발에서 모듈과 컴포넌트가 유사한 의미로 혼용되곤 합니다. 기술적으로 말하자면 모듈과 컴포넌트는 다릅니다. 모듈(Module)은 설계 시점에 의미있는 요소이며, 컴포넌트(Component)는 런타임 시점에서 의미 있는 요소입니다.

    일반적인 주제에서 구조적으로 뭔가 쌓아올리는 블록을 표현하고 싶다면 컴포넌트나 모듈이 아니라 요소라고만 말해야 합니다.

     

    6. 정리

    모듈, 컴포넌트, 자원할당은 시스템 하나를 설계할 때 여러가지 속성을 고려할 수 있도록 합니다.

    예를 들어

    모듈은 테스트(기능테스트)와 운용을 고려할 때 유용

    컴포넌트타입으로 표현한 구조는 가용성과 성능, 퍼포먼스등을 고려할 때 유용합니다

     

     

     

     

    반응형

    댓글