본문 바로가기
목차훔치기/면접을 위한 CS 전공지식 노트

노출모듈 패턴(면접을 위한 CS 전공지식 노트)

by 해삼2 2023. 8. 13.
728x90
반응형
노출모듈 패턴

노출모듈 패턴

노출모듈 패턴(Exposure Module Pattern)은 소프트웨어 디자인 패턴의 하나로, 복잡한 시스템이나 

애플리케이션에서 모듈 간의 의존성을 최소화하고 모듈들 사이의 상호작용을 단순화하기 위한 패턴입니다. 이 패턴은 대규모 프로젝트나 복잡한 소프트웨어 아키텍처에서 특히 유용하며,

모듈화를 통해 유지보수성을 개선하고 개발 과정을 더욱 용이하게 만드는데 목적이 있습니다.

 

노출모듈 패턴의 핵심 아이디어

모듈 간의 의존성 최소화: 

노출모듈 패턴은 시스템의 모듈들을 각각의 역할과 책임에 따라 분리합니다. 

이때, 각 모듈은 외부 모듈들과 최소한의 의존성만을 가지며, 필요한 정보나 기능을 노출(공개)합니다. 

이렇게 하면 모듈 간의 결합도를 낮출 수 있어, 한 모듈의 변경이 다른 모듈에 미치는 영향을 줄일 수 

있습니다.

인터페이스와 추상화: 

각 모듈은 외부 모듈들과 상호작용하기 위한 인터페이스를 정의하며, 

이를 통해 모듈 간의 통신이 이루어집니다. 

이 인터페이스는 모듈의 핵심 기능과 데이터를 노출하는 데 사용되며, 내부 구현 사항은 숨겨집니다. 

이러한 추상화를 통해 모듈 간의 결합도가 낮아지고, 변경 시에도 영향을 최소화할 수 있습니다.

중재자(또는 조정자) 역할: 

노출모듈 패턴에서는 중재자(또는 조정자) 역할을 하는 모듈이 존재할 수 있습니다. 

이 모듈은 다른 모듈 간의 상호작용을 관리하고 조정하는 역할을 수행합니다. 

이를 통해 모듈 간의 직접적인 의존성을 피하고, 중재자를 통해 간접적으로 상호작용하게 됩니다.

확장성과 유지보수성 향상: 

노출모듈 패턴은 시스템을 더 작은 부분으로 나누어 개발하고 관리함으로써 확장성과 유지보수성을 

향상합니다. 

각 모듈의 역할과 책임이 분명하게 정의되어 있기 때문에 새로운 기능을 추가하거나 변경할 때 다른 

모듈에 미치는 영향을 예측하기가 더 쉬워집니다.

노출모듈 패턴은 시스템 아키텍처를 설계하고 구현할 때 고려해 볼 가치가 있는 디자인 패턴 중 

하나입니다. 

이 패턴을 활용하면 복잡한 시스템을 더 모듈화 된 구조로 만들어 관리하기 쉽게 만들 수 있습니다.

노출모듈 패턴 장점

모듈 간 결합도 감소: 

노출모듈 패턴은 각 모듈이 외부에 제공하는 인터페이스를 통해 상호작용하므로, 모듈 간의 직접적인 

의존성이 줄어듭니다. 

이로 인해 시스템의 결합도가 감소하고, 변경 시에 다른 모듈에 미치는 영향을 최소화할 수 있습니다.

유연성과 확장성 향상: 

각 모듈이 독립적으로 작동하며 필요한 기능만을 노출하므로, 새로운 기능을 추가하거나 기존 기능을 

변경할 때 다른 모듈에 큰 영향을 주지 않습니다. 이로 인해 시스템의 유연성과 확장성이 향상됩니다.

코드 재사용성: 

각 모듈이 분리되어 구현되기 때문에 필요한 모듈을 다른 프로젝트에서 재사용할 수 있습니다. 

이는 개발 생산성을 높이고 코드 중복을 줄이는데 도움을 줍니다.

유지보수 용이성: 

각 모듈의 역할과 책임이 분명하게 정의되어 있어 변경 사항을 파악하기가 쉽습니다. 

이로 인해 코드를 이해하고 유지보수하는 데 시간을 절약할 수 있습니다.

테스트 용이성: 

각 모듈은 인터페이스를 통해 상호작용하므로, 모듈 단위로 테스트하기가 용이합니다. 

이로 인해 유닛 테스트 작성과 디버깅이 간편해집니다.

 

 

노출모듈 패턴 단점

복잡성 증가: 

노출모듈 패턴을 적용하면 모듈 간의 인터페이스 및 중재자 등을 추가로 관리해야 합니다. 

이로 인해 초기 설계 및 구현이 복잡해질 수 있습니다.

오버헤드: 

모듈 간의 중재자 역할을 수행하는 모듈이 필요한 경우, 중재자의 추가 오버헤드가 발생할 수 있습니다.

성능 저하: 

노출모듈 패턴은 모듈 간의 간접적인 상호작용을 요구하므로, 직접적인 호출보다 약간의 성능 저하가 

발생할 수 있습니다.

설계와 관리의 어려움: 

모듈 간의 인터페이스를 정의하고 관리하는 과정이 필요하며, 이를 올바르게 유지하기 위한 관리가 

필요합니다.

노출모듈 패턴은 장단점을 고려하여 프로젝트의 특성과 목표에 맞게 적용해야 합니다. 

대규모의 복잡한 소프트웨어 시스템에서 모듈 간의 결합도를 낮추고 유지보수성을 높이는데 유용한 

패턴이지만, 적용 시에는 추가적인 디자인 및 관리 비용을 고려해야 합니다.

 

노출모듈 패턴 자세히 알기!

게시글 모듈: 

게시글과 관련된 작성, 수정, 삭제 등의 기능을 담당합니다. 

게시글을 작성할 때 필요한 정보를 받아와 처리하며, 게시글 데이터를 데이터베이스에 저장하고 

가져오는 역할을 합니다. 

이 모듈은 게시글과 관련된 기능을 노출하고 외부 모듈들과의 상호작용을 담당합니다.

댓글 모듈: 

댓글 작성 및 조회와 관련된 기능을 제공합니다. 

댓글 데이터를 게시글과 연결하여 저장하고 가져오는 역할을 합니다. 

댓글 작성 시 필요한 정보를 받아와 처리하며, 게시글과 관련된 댓글 목록을 반환하는 등의 기능을 노출

합니다.

사용자 인증 모듈: 

사용자 인증과 관련된 기능을 제공합니다. 

회원 가입, 로그인, 로그아웃 등의 기능을 담당하며, 사용자 정보를 관리합니다.

다른 모듈들과 사용자 인증에 필요한 데이터를 주고받아 인증 절차를 수행합니다.

UI 모듈: 

사용자 인터페이스와 관련된 기능을 제공합니다.

화면에 게시글 목록을 표시하고, 사용자의 입력을 받아 처리하는 등의 역할을 수행합니다.

다른 모듈들과 사용자의 상호작용을 중재하면서 UI 요소를 조작합니다.

이렇게 모듈들이 각각의 역할과 책임을 가지며, 외부 모듈들과는 인터페이스를 통해 상호작용하게 됩니다. 

예를 들어, 게시글을 작성하려면 UI 모듈이 사용자의 입력을 받아 게시글 모듈에 전달하고, 게시글 모듈은 

받은 정보를 가공하여 데이터베이스에 저장합니다. 

댓글 작성이나 사용자 인증도 유사한 방식으로 각각의 모듈 간의 상호작용이 이루어집니다.

이렇게 모듈들이 각자의 역할을 수행하면서 외부에 필요한 기능을 노출하고, 중재자 없이 간접적으로 

상호작용하면서 시스템의 유연성과 유지보수성을 향상할 수 있습니다.

 

 

 

*바쁜 사람을 위한 깜찍한 정리

노출모듈 패턴은 복잡한 시스템이나 애플리케이션에서 모듈 간의 의존성을 최소화하고 모듈이 서로 상호작용을 단순화하는 패턴을 의미하고 주로 대규모 프로젝트에 많이 사용된다. 노출모듈은 예를 들어 슈퍼마켓이면 각 구역 별로 본인이 하는 역할이 있듯이 노출모듈도 각각 기능별로 분리하여 자신의 책임과 역할을 가지게 만들고 독립적으로 작동하도록 만들어 놓은 시스템이라고 생각하면 된다. 마켓 사장이 시키지 않아도 물건이 들어오면 옮기고 정리하는 직원들처럼 이해하면 쉬울 거 같습니다.
728x90
반응형