-
Notifications
You must be signed in to change notification settings - Fork 0
Description
8 마이크로커널 아키텍처: 맞춤형으로 제작하기
고인 그린의 혜택
고잉 그린(Going Green)은 오래된 휴대전화, 음악 플레이어 및 기타 소형 전자제품을 구매하고 재활용하는 시장을 공략하기 위해 빠르게 성장하는 스타트업입니다.
지금까지의 시스템은 다음과 같습니다.
- 고객이 공개 사용자 인터페이스를 통해 견적 요청
- 고객이 제품을 제공하고 기기를 보냄
- 기기 평가 시스템으로 가격 결정
- 재활용 / 회계 시스템으로 재판매나 재활용
- 고객에게 견적 기반으로 가격 지불
마이크로커널 아키텍처의 두 부분
마이크로커널 아키텍처는 코어와 플러그인 두 가지 주요 부분으로 구성됩니다.
코어: 마이크로커널의 핵심
- 최소한의 기능성 제공
- 초기 구현 후 거의 변경 없음
- 사용자 정의 동작을 구현하지 않음
플러그인
- 모든 사용자 정의 동작을 제공
- 서로 독립적으로 작동
- 독립적으로 배포
대부분 아키텍처가 마이크로커널인지 평가할 때, 플러그인 없이 코어가 얼마나 잘 작동하는지와 코어가 얼마나 변동성이 큰지로 판단합니다.
'마이크로커널-성'의 스펙트럼
극단적인 마이크로커널에서는 플러그인이 설치되지 않으면 코어는 유용한 작업을 거의 수행할 수 없습니다.
- 이클립스 IDE: 순수 마이크로커널로 설계되어 플러그인을 통해 서로 다른 언어와 도구들을 지원합니다.
- 보험 애플리케이션: 플러그인 없이 중간 수준의 기능을 갖추고 있습니다.
- 웹 브라우저: 플러그인을 지원하지만 플러그인이 없어도 잘 동작합니다.
- 린터: 플러그인 기능
- 지속적 통합 도구: 확장성을위해 여러 플러그인을 지원합니다.
- 보험 청구 처리 시스템: 특정 상황에 맞는 사용자 정의 규칙을 개발자가 구축할 수 있도록 허용합니다.
기기 평가 서비스 코어
코어 시스템에는기기를 평가하는 데 필요한 기준이 포함됩니다.
각 기기 유형마다 기기 전용 플러그인을 사용하여 규칙을 실행하고, 시스템이 기기의 재판매 가치를 평가하는 방법을 결정할 수 있습니다.
플러그인의 확장성을 높이기 위해 물리적으로 분산된 아키텍처를 사용합니다.
플러그인은 코어와 동기식으로 통신합니다.
캡슐화된 플러그인 vs. 분산된 플러그인
모놀리식 아키텍처로 마이크로커널을 설계하면, 인터페이스를 통해 각 플러그인을 코어에 연결하는 컴포넌트로 구현합니다.
마이크로커널 아키텍처 구현에서는 플러그인이 웹 엔드포인트, 이벤트큐 등으로 분산됩니다.
플러그인 통신
모놀리식 아키텍처에서는 플러그인을 핵심 기술 스택과 동일한 기술 스택으로 구현하고, 플랫폼의 네이티브 컴포넌트로 배포합니다.
분산 플러그인은 동기 또는 비동기 호출로 호출할 수 있습니다.
개발자는 코어의 구현 플랫폼으로만 제한되지 않습니다.
다양한 언어로 플러그인을 작성할 수 있습니다.
플러그인 간의 직접적인 통신은 신중해야 합니다.
이는 몇 가지 심각한 부정적인 트레이드오프를 초래할 수 있습니다.
첫째, 코어와 플러그인 간에 일관된 계약이 필요하며, 이는 결국 버전 관리와 관련됩니다.
둘째, 플러그인 간의 의존성은 가용성 문제를 발생시킵니다. 모든 필요한 플러그인이 런타임에 존재해야 한다는 보장을 해야 하기 때문입니다.
플러그인 계약
아키텍트가 마이크로커널 아키텍처를 구현하면 코어는 플러그인을 호출할 때 항상 계약(다른 말로 인터페이스)을 사용합니다.
플러그인 간에 통신을 허용하면 코어가 중재자 역할을 해야 합니다.
[고잉 그린]이 친환경을 실천하다
코어와 플러그인 상호작용을 구현하는 최선의 방법을 고려한 후, 팀은 각 플러그인이 구현할 인터페이스(DeviceInterface라고 함)를 정의하기로 결정했습니다.
이제 [고잉 그린]은 인터페이스를 구현하고 특정 기기에 대한 평가 프로세스를 맞춤화하여 새로운 기기를 추가할 수 있습니다.
마이크로커널의 슈퍼파워
맞춤형 동작
적응성
기존 기능을 유지하면서 새로운 기능을 계속 추가할 수 있는 능력을 의미합니다.
새로운 플러그인을 구현하더라도 기존 플러그인을 그대로 사용할 수 있습니다.
진화성
시스템이 이전 동작 방식에서 점진적으로 벗어나도록 근본적인 변화를 쉽게 할 수 있다는 것을 의미합니다.
적응형과 달리 진화형 아키텍처는 기존의 동작을 짧은 시간 동안만 지원합니다.
단순한 구조
코어와 플러그인의 두 요소는 개발자들이 이해하고 구현하기 쉽습니다.
분할
마이크로커널의 크립토나이트
변동성의 불일치
코어 시스템은 거의 변경되지 않아야 하는데 자주 변경된다면 이 아키텍처의 해결책이 아니거나 잘못된 것을 플러그인으로 만든 것입니다.
플러그인 간 공유
이는 결합과 배포에 관한 문제를 일으킵니다
수다쟁이 플러그인
플러그인간 상호작용의 허용은 많은 트레이드오프를 수반합니다.
성능
분산 아키텍처라면 코어와 플러그인 간에 전달되는 정보의 양에 따라 성능에 영향을 미칠 수 있습니다.
마이크로커널 등급표
| 아키텍처 특성 | 별점 |
|---|---|
| 유지보수성 | ⭐⭐⭐ |
| 테스트 용이성 | ⭐⭐⭐ |
| 배포 용이성 | ⭐⭐⭐ |
| 단순성 | ⭐⭐⭐⭐ |
| 진화성 | ⭐⭐⭐ |
| 성능 | ⭐⭐⭐ |
| 확장성 | ⭐ |
| 탄력성 | ⭐ |
| 결함 허용성 | ⭐ |
| 전반적인 비용 | 💲 |
Metadata
Metadata
Assignees
Labels
Projects
Status