티스토리 뷰

Architecture

Microkernel Architecture

realizers 2023. 9. 9. 14:51
728x90
반응형

By unsplash

 

Microkernel Architecture란


마이크로커널 아키텍처는 플러그인 아키텍처라고도 합니다. 이 아키텍처는 코어 시스템과 플러그인 컴포넌트라는 두 가지 아키텍처 요소로 구성된 단순한 모놀리식 아키텍처입니다.

간단한 예시를 들면 Spring으로 개발을 해봤다면 Eclipse, InteliJ 같은 IDEA를 많이 사용해보고 Spring Plugin도 많이 접해보셨을거라 생각합니다. 여기서 IDEA는 Core System에 속하고 번역 플러그인 같은것들은 Plugin Component에 속하게 됩니다. 

기본적인 Microkernel Architecture

 

💡 Core System

 

  • 코어 시스템은 시스템을 실행시키는데 필요한 최소한의 기능을 제공합니다. 위 예시에서 IDEA는 파일을 열고, 수정하고, 저장하는 기능을 제공합니다. 
  • 코어 시스템은 다양한 플러그인을 등록하고, 라이프 사이클을 관리하며 플러그인 간 통신, 동적 플러그인 교체와 같은 중요한 기능을 제공합니다. 
  • 코어 시스템은 규모와 복잡도에 따라 레이어드 아키텍처나 모듈러 모놀리스로 구현할 수 있습니다.

 

💡 Plugin Component

 

  • 플러그인 컴포넌트는 특수한 처리 로직, 부가 기능, 코어 시스템을 개선/확장하기 위한 커스텀 코드가 구현된 컴포넌트입니다. 
  • 변동성이 매우 큰 코드를 분리하여 애플리케이션 내부의 유지보수성과 시험성을 높이고, 플러그인들은 상호독립적으며 의존성이 없습니다.
  • 플러그인 컴포넌트를 분리함으로써 관심사를 분리할 수 있으며, 각 플러그인은 단일 책임 원칙을 준수할 수 있습니다. 
  • 플러그인 컴포넌트와 코어 시스템은 보통 point-to-point 통신을 합니다. 

 

컴파일 기반 플러그인 컴포넌트

 

  • 컴파일 기반의 플러그인 컴포넌트는 관리하기 편하지만, 변경, 추가, 삭제 시 전체 모놀리식 애플리케이션을 재배포해야 합니다.

런타임 기반 플러그인 컴포넌트

 

  • 런타임 기반의 플러그인 컴포넌트는 재배포하지 않고, 추가, 삭제가 가능합니다.

 

💡 Core System과 Plugin Component의 소통 방법

 

  • 플러그인 컴포넌트가 반드시 코어 시스템과 point-to-point 방법으로 통신을 할 필요는 없습니다. 각 플러그인 컴포넌트는 REST나 메시징 등 다른 방법으로 호출하는 방법도 있습니다.
  • 플러그인 컴포넌트 간에 직접 호출할 수 없으며 메시지는 코어 시스템에 전달되어야 합니다. 

 

 

레지스트리


코어 시스템은 어떤 플러그인을 사용할 수 있는지, 해당 플러그인을 가져오려면 어떻게 해야 하는지 알고 있어야 합니다. 가장 일반적인 방법은 플러그인 레지스트리를 경유하는 방법입니다.

이 레지스트리에는 플러그인의 명칭, 데이터 계약, 세부 원격 엑세스 프로토콜 등 각 플러그인 모듈에 관한 정보가 있습니다.

 

 

Microkernel Architecture의 장단점


장점

 

  • 코어 시스템의 변경하지 않고도 새로운 기능을 추가하거나 수정하는 것이 더 쉬워집니다. 따라서 확장성과 유연성을 향상시킬 수 있습니다.
  • 개별 플러그인 컴포넌트별로 테스트할 수 있습니다.

단점

 

  • 플러그인 컴포넌트끼리 통신을 할 수 없고 코어 시스템을 거쳐 통신을 해야하므로 오버헤드가 증가할 수 있습니다.

 

 

 

 

 

참고

 

 

 

 

 

 

 

728x90
반응형

'Architecture' 카테고리의 다른 글

Event Driven Architecture  (0) 2023.09.16
Service Based Architecture  (0) 2023.09.13
PipeLine Architecture  (0) 2023.09.07
Layered Architecture  (1) 2023.09.06
CQRS 패턴  (0) 2023.01.14