
대규모 소프트웨어 패턴 강좌 업데이트
지난해 다양한 소프트웨어 아키텍팅 강의를 진행해 왔습니다. 아키텍처 설계 및 평가 기법, 그리고 부하테스트/ 성능 최적화에 대한 강의가 주를 이루었습니다.
아키텍처 설계 프로세스는 말그대로 진행은 하면 되지만, 결국 많은 설계 기법을 알지 못하면 좋은 설계를 하지 못하는 상황이 빈번하게 발생했습니다.
2022년에 다음과 같은 강좌 들을 진행했습니다.
- 현대 /기아 소프트웨어 패턴, 설계, 평가 과정
- 삼성 SDS 소프트웨어 설계 평가 과정 (4회 진행)
- IBK 기업 소프트웨어 설계및 성능 튜닝
- KT Clean 코드및 소프트웨어 아키텍처 특장
강의를 하다보면서, 아직 많은 교재들이 디자인패턴에 지식이 머물러있고, 몇몇 분들만 POSA1 아키텍처 패턴을 살짝 다루는 정도라서, 실제 좋은 설계를 하기 위한 요즘 패턴들이 대부분 반영되지 못한 상황입니다.
또한 후배들을 위해서도 한번 누군가는 정리를 해줘야 된다는 생각이 들었습니다. 이에 다음과 같은 패턴들을 정리하는 프로젝트르 진행했으며, 아직 초벌 수준이지만, 대규모 패턴 강좌가 업데이트 되었음을 말씀 드립니다.
Architecture 패턴 (POSA1)
큰 구조를 잡는 패턴들
이 패턴의 가치는 말씀 안드려도 잘 알거라 생각합니다. 패턴지향 소프트웨어 아키텍처 1권이라는 서적의 번역작업에 참여를 했었고, 현재 절판되어서 아쉬움이 큽니다.
GoF 디자인 패턴과 쌍벽을 이루는 패턴계의 명서인데, 아쉬움이 크네요.
특히 Broker 패턴, MVC, PAC 패턴등 소프트에어 설계 기법에 꼭 아셔야 하는 기법들이 잘 정리되어 있습니다. 아마 Broker 패턴 하나 만으로 1시간 이상 설명을 해야 되는 정말 중요한 패턴이지요.
- Layer
- Pipe&Filter
- Blackboard
- Broekr
- Model-View-Controller
- Presentation-Abstratcion-Control
- Microkernel
- Reflection
- Whole-Part
- Master-Slave
- Proxy
- Command Processor
- View Hander
- Forward-Reciever
- Client-Dispatcher-Server
- Publisher-Subscriber를 다룹니다.
저는 가볍게 1시간 분량으로 준비되어 있습니다.
Douglas Schmidth교수님의 소개 자료도 참고 바랍니다
분산 / 네트워크 서버 패턴 (POSA2)
분산 객체와 동시성을 어떻게 제어하나? 백엔드 프로그래머를 위한 패턴
이 패턴의 가치는 다들 잘 아시겠지만, Netty, WCF. .NET Remoting, EJB, COM+, CORBA와 같은 분산 객체 (Distributed Object)의 내부 구조를 설명하는 패턴입니다.
조금더 상세히 말씀드리면, Douglas Schmidth 교수님을 주축으로, ACT & TAO라고 하는 RealTime, 미션 크리티컬한 환경에서 사용된 분산객체를 40명정도 팀을 이루어 직접 개발을 하였고, 오픈소스로 공개하셨습니다. 더불어, 직접 내가 이렇게 설계했어리고 설명해 준 책이 바로 POSA 2 패턴입니다.
이 패턴을 이해하기 위해서는 다음과 같은 선수 지식들이 필요합니다.
- Common ORB Architecutre (CORBA)
- JAWS (어댑티브하게 구성을 변경할수 있는 Web Server)
- RealTime 환경에 배경 지식
총 6~7시간 정도의 시간이 소요될것으로 예측됩니다.
- 1시간으로 짧게 훑어보기 버전
- 3시간으로 배경 지식과 함께 깊게 이해해 보기
- 4시간의 Dispatcher 직접만들기 실습 (Client-Dispatcher, Reactor, Thread-Pool, Component Configurator, Proactor )
- Reactor/Proactor의 성능차이에 대한 이해

이 패턴에 대해서 핵심적으로 봐야 되는 두가지를 뽑으라면 저는 다음과 같이 가이드를 드릴수 있습니다 .
- 디스패처 (다양한 프로토콜이 추가되더라도 변경없이 확장하는 서버 만들기)
- 동기화 전략 ( 동시에 여러개의 요청을 처리하기 위해, 동기화 전략은 어떻게 가져가야 하나?)
특히 동기화 전략에서, Message Queue를 핸들링 하기 위한 기법들이 어떻게 보면 지금의 MQ 패턴의 씨앗이 되지 않았나 조심히 생각해 봅니다.
리소스 관리 패턴 (POSA3 – Resource Management Pattern)
제한된 자원을 어떻게 효율적으로 관리할까..
자원을 효율적으로 관리하기 위한 패턴입니다. (1시간 정도의 분량입니다.)
크게 3가지 파트로 나뉘어서 이 패턴을 나누어 설명할수 있습니다.
- 자원 획득을 위한 패턴 (Resource Acquisiton)
- 자원 수명주기를 위한 패턴 (Resource LifeCycle)
- 자원 해제를 위한 패턴 (Resource Release)

대용량 시스템을 위한 백엔드 설계 패턴 (AOSA)
오픈소스 기존 기술을 이용한 대용량 백엔드 아키텍처 구축하기
패턴계에는 POSA (Pattern Oriented Software Architecture)가 있다면, 오픈소스 진영에는 AOSA (Architecture of Open Source Application)이 있습니다.
오픈소스의 아키텍처를 공유한 서적인데요. 오픈소스 인만큼 모든 책 내용이 오픈되어 있습니다. 이 링크를 참고해서 보시길 바랍니다. http://aosabook.org/en/index.html
여기서 나오는 첫번째 챕터인 확장가능한 웹 시스템 만들기(http://aosabook.org/en/distsys.html)의 내용을 시작점으로 보강되었습니다. 책 내용에서는 단순히 아키텍처만 언급되어 있는데, 이러한 아키텍처를 만들기위해 사용할수 있는 COTS , 즉 오픈소스에 대한 추천과 이들을 사용하는 방법에 대해서 참조할만한 가이드를 같이 제공하고 있습니다.
- Google Photo 같은 이미지 공유 서비스를 만든다면?
- 기본개념 (서비스 구축, 이중화, 파티셔닝)
- 빠르게 접근,확장하기 ( Cache, Proxy, Index)
- 메세징 처리 기법 (Queue)
- 다양한 데이터 베이스 톺아보기
- 다양한 아키텍처의 적용 예 (OLTP, OLAP, Lambda, Kappa, Uber와 같은 Geo-Based Architecture)
- Netflix Devops 운영사례 / (실제 운영중인 모바일 APM – IMQA 운영사례는 이후 공유)

Cloud + MSA 패턴
클라우드 환경에서 다양한 오픈소스로 아키텍처 구축하기
이 패턴은 크게 아래 3가지 컨텐츠를 기반으로 정리를 했습니다. (2시간 분량)
- 1. 저희 PLoP 패턴학회에서 첫 발표한 Micro Service 패턴, 저도 이때 PLoP 컨퍼런스에 참여를 했는데, 정작 제 발표라서, 이 패턴을 듣지 못했어요.
- 2. Mind-mapping MSA Design Pattern 조금더 디테일하게 연관관계가 잘 나와있었던거 같아요
- 3. 정말 대단하다고 말을 할수 밖에 없는 Microsoft의 선 구안을 느낄수 있는, Cloud Design Pattern 을 기반으로 정리했습니다. 대단하고 말하는 이유가 2016년도에 처음 이 패턴을 발표 했거든요.
여튼 큰 뼈대는 가져왔어도, 상세 내용은 제가 찾아보고, 직접 정리를 했습니다.
아시다시피 위 패턴들에는 구체적인 컴포넌트들이 안나와있어서, Chatgpt와 함께 토론하면서 핵심 컴포넌트들을 나름 도출해 봤습니다.

고 가용성 확보를 위한 Fault Tolerance 패턴
죽지않는 시스템을 만들려면.. 어떠한 개념을..
제가 처음 PLoP 컨퍼런스에서 패턴을 발표할때, 저의 가이드(목자)가 되어주신 Robert S. Hanmer님의 Fault Tolerance 패턴입니다. 이 책을 번역을 하기로 마음을 먹고 이야기를 나누었는데, 특정 출판사가 독점으로 가지고 있고, 인쇄 부분이 서로 맞지 않아서, 번역을 포기한 기억이 납니다.
마음이 너무 아픈 서적이고, 이 서적이 국내에 번역이 되면 크게 도움이 될거 같다는 생각은 많이듭니다. 총 300페이지가 넘는 양인데, 일단 이중에 도움이 될만한 것을 추려서, 1/3 정도 공개를 했습니다.
실제 본 수업시간은 1시간 30분 ~ 2시간 사이가 될듯 합니다.
맺음
일단 몇몇 패턴들은 저의 지식이 아직 완전하지 않아, 계속 업데이트 중입니다. 시간이 되면 정리를 하도록 하겠습니다.
그리고 강의비는 일전에 아키텍처및 성능 튜닝 과정에서 언급한것처럼, 시간당 25만원이 최소 기준입니다.
단 1일 최소 강의 비용은 80만원까지입니다. (3시간 이상단위만 움직일 예정입니다 , 물론 2시간 하고 80을 주신다면 그건 수락 가능합니다. ) 저도 회사 연차등을 사용해야 하므로 1일 50만원으로는 여러가지 상황을 고려하면, 마이너스 인 상황입니다.
교수가 아니면 이 비용을 줄수 없다고 하시는 회사가 있으시지만, 죄송하지만 불가합니다. 실 세계의 경험의 가장 중요한 소프트웨어 아키텍팅 영역이, 아직도 학벌 타이틀로 강의비가 결정된 상황이 아쉽습니다.
Hillside Group 패턴학회의 정식 위원이고, ISO 29119 WG26의 국내에 몇 안되는 소프트웨어 테스팅 표준화 위원이지만, 그 비용을 못 주시면 다른 교수님에게 부탁드리겠습니다.
이에 반해, 수도권이 아닌 지역 분들이라면, 더 저렴하게 방문을 할 생각입니다. 편하게 연락주시길 바랍니다.
또한 수익 전액에 대해서 취약계층이나 장애인 기부를 하는 공공의 강의라면, 차비와 숙박비만 지원해 주시면, 2,3시간의 특강은 얼마든지 가능합니다.
indigoguru골뱅이gmail.com 으로 편하게 연락주세요.