[Review] 소프트웨어 아키텍처 3주차 후기
이번 3주차 스터디에서는 마이크로커널 아키텍처(Microkernel Architecture)와 서비스 기반 아키텍처(Service-Based Architecture)에 대해 깊이 있는 토론을 나눴습니다. 특히 이번 세션은 책의 이론적인 내용을 넘어, 실제 현업에서의 적용 사례와 '실험실 자동화(Lab Automation)'라는 흥미로운 도메인 이야기가 어우러져 더욱 풍성한 시간이었습니다.
1. 마이크로커널 아키텍처 (Microkernel Architecture)
첫 번째 세션은 마이크로커널 아키텍처에 대한 발제와 다양한 사례 공유로 시작되었습니다.
핵심 개념: 코어 시스템과 플러그인
마이크로커널 아키텍처는 '변경되지 않는 안정적인 코어 시스템'과 '확장 가능한 플러그인'으로 구성됩니다. 이 아키텍처가 실제로 어떻게 쓰이는지 다음과 같은 사례를 통해 알아보았습니다.
핵심 개념: 코어 시스템과 플러그인
마이크로커널 아키텍처는 '변경되지 않는 안정적인 코어 시스템'과 '확장 가능한 플러그인'으로 구성됩니다. 이 아키텍처가 실제로 어떻게 쓰이는지 다음과 같은 사례를 통해 알아보았습니다.
- - Open Code (오픈 코드): Node.js 기반의 터미널 에이전트 앱으로, 코어 커널 컴포넌트 위에 인증용 플러그인이나 커스텀 툴, MCP 서버 등을 붙여 확장하는 형태를 가집니다.
- - Grafana (그라파나): Go 언어로 작성된 메인 코어 서버에 몽고DB, MySQL 등 다양한 데이터 소스를 플러그인 형태로 붙여 관찰성(Observability)을 확보하는 대표적인 사례입니다.
토론: JIRA와 Slack은 마이크로커널일까?
책에서는 JIRA를 예시로 들었지만, 스터디원들 사이에서는 "JIRA나 Slack은 이제 단순한 마이크로커널이라기보다 플랫폼에 가깝지 않나?"라는 의견이 오갔습니다.
- - 초기에는 호스트 프로그램에 설치하는 플러그인 방식이었을지 몰라도, 지금은 웹훅(Webhook)이나 별도 서버(Lambda 등)를 통해 이벤트를 주고받는 형태로 발전했기 때문입니다.
- - 결국 "플러그인끼리 서로 참조하는 순간, 그것은 더 이상 플러그인이 아니라 플랫폼이 된다"는 통찰이 인상적이었습니다.
현업의 고민: 실무 아키텍처 사례
한 스터디원은 실무에서 겪은 아키텍처 사례를 공유해주셨습니다. 서비스를 확장하는 과정에서 데이터를 한곳에서 관리하려다 보니 구조가 비대해지고, 이로 인해 클라이언트 성능 저하가 발생했던 경험이었습니다. 이를 두고 Gemini에게 물어보니 "실패한 오케스트레이션 주도 아키텍처"라는 신랄한(?) 평가를 받았다는 에피소드는 스터디원들에게 큰 웃음과 교훈을 주었습니다.
2. 서비스 기반 아키텍처와 도메인 이야기
두 번째 세션에서는 서비스 기반 아키텍처와 바이오/로봇 자동화 도메인에 대한 흥미로운 이야기가 이어졌습니다.
아키텍처의 진화
아키텍처의 진화
- - Layered Monolith: 가장 익숙하고 시작하기 좋은 구조이지만, 팀과 기능이 커지면 계층 간 점프나 스파게티 코드가 발생하기 쉽습니다.
- - Modular Monolith: 패키지 단위로 도메인을 나누어 결합도를 낮추는 시도입니다.
- - Service-Based Architecture: 모놀리스와 마이크로서비스의 중간 단계로, 도메인별로 서비스를 나누지만 DB를 공유하거나 트랜잭션을 묶는 등 현실적인 타협점을 찾기도 합니다.
"알고 있는 것" vs "모른다는 것을 아는 것"
스터디에서는 아키텍처를 공부하며 '우리가 모르는 줄도 모르는 영역(Unknown Unknowns)'을 줄여나가는 것이 중요하다는 점이 강조되었습니다. 아키텍처 결정은 프로젝트 초반, 즉 우리가 가장 무지할 때 이루어지기 때문에 미래를 예측하고 확장성을 고려하는 시각이 필수적입니다.
흥미로운 도메인: 실험실 자동화 (Lab Automation)
이날 가장 뜨거운 반응을 얻은 것은 '세포 배양 자동화' 이야기였습니다.
스터디에서는 아키텍처를 공부하며 '우리가 모르는 줄도 모르는 영역(Unknown Unknowns)'을 줄여나가는 것이 중요하다는 점이 강조되었습니다. 아키텍처 결정은 프로젝트 초반, 즉 우리가 가장 무지할 때 이루어지기 때문에 미래를 예측하고 확장성을 고려하는 시각이 필수적입니다.
흥미로운 도메인: 실험실 자동화 (Lab Automation)
이날 가장 뜨거운 반응을 얻은 것은 '세포 배양 자동화' 이야기였습니다.
- - 문제: 신약 개발이나 바이오 연구에서 세포를 배양하는 과정은 24시간 관리가 필요하고, 사람의 실수가 치명적일 수 있습니다.
- - 해결: 로봇을 이용해 이 과정을 자동화합니다. 로봇 팔이 피펫팅을 하고, 인큐베이터에 넣고, 원심분리기를 돌리는 과정을 소프트웨어로 제어합니다.
- - 아키텍처적 난제: 고객사마다 원하는 실험 레시피가 다르고, 장비 구성이 제각각입니다.
- - 이 지점에서 마이크로커널 아키텍처가 이상적인 해법으로 떠오릅니다.
- - 코어(Core): 로봇 제어, 스케줄링 등 공통 로직.
- 플러그인(Plugin): 각 고객사의 커스텀 실험 레시피 및 장비 모듈.
3. 자유 토론 및 잡담
스터디 중간중간 개발자들의 다양한 경험담이 쏟아져 나왔습니다.
- - 서킷 브레이커(Circuit Breaker): AWS나 Cloudflare 장애 이야기를 하며, 외부 장애가 우리 서비스로 전파되는 것을 막는 서킷 브레이커 패턴의 중요성을 다시금 실감했습니다. "지라가 안 돼서 공부를 접고 PC방에 갔는데 롤도 안 되더라"는 웃픈 에피소드도 있었죠.
- - 클린 코드 vs 클린 아키텍처: 로버트 C. 마틴(Uncle Bob)과 마틴 파울러(Martin Fowler)의 책들을 혼동했던 에피소드로 웃음꽃을 피웠습니다.
- - 팀 토폴로지(Team Topologies): 아키텍처는 결국 조직 구조와 뗄 수 없습니다. 콘웨이의 법칙처럼, 팀이 일하는 방식이 소프트웨어 구조에 그대로 반영된다는 점에 다들 깊이 공감했습니다.
![[Review] 소프트웨어 아키텍처 3주차 후기](https://objectstorage.ap-chuncheon-1.oraclecloud.com/n/axxcchwrqnfq/b/k-devcon-dev/o/uploads%2F2026-01-29%2Ff05892fb-9568-4b93-8dc1-d3d4a2f9dd5b.webp)