An Overview of Every Software Architecture
- 소프트웨어 아키텍처는 분산 시스템 배포 방식, 코드 파일 위치 등 다양한 의미로 해석될 수 있음 🤔
- Mark Richards와 Neil Ford의 "Fundamentals of Software Architecture"(FOSA) 책에서 8가지 아키텍처 스타일을 소개함 📚
- 레이어 아키텍처(N-Tier)는 UI, 비즈니스 로직, 영속성 레이어로 구분되지만, 레이어 간의 강한 결합으로 문제가 발생할 수 있음 🔗
- 파이프라인 아키텍처는 작은 유틸리티들을 연결하여 데이터를 처리하는 방식으로, Linux 운영체제 등에서 유용함 ⚙️
- 마이크로 커널 아키텍처는 핵심 시스템을 확장 가능한 플러그인 형태로 구성하여 상업 제품에 적합함 🔌
- 서비스 기반 아키텍처는 여러 서비스로 구성되며, 각 서비스는 명확한 책임을 가짐. UI와 데이터베이스를 공유하거나 분리할 수 있음 🧩
- 이벤트 드리븐 아키텍처는 오케스트레이션 모델(중앙 집중 관리)과 코레오그래피 모델(분산 처리)로 나뉨 🎭
- 마이크로서비스 아키텍처는 서비스 간의 독립성이 중요하며, 잘못 설계하면 분산된 진흙탕(ball of mud)이 될 수 있음 🧱
- 클린 아키텍처, 수직 슬라이스 아키텍처, 모듈형 모놀리스는 FOSA에서 설명하는 아키텍처의 변형으로 볼 수 있음 🧬
- 도메인 중심 아키텍처(클린, 어니언, 헥사고날)는 레이어 아키텍처의 변형으로, 도메인 레이어에 대한 의존성을 강조함 🎯
- 수직 슬라이스 아키텍처는 기능별 폴더 구성을 통해 응집도를 높이고 결합도를 낮춤 ✂️
- 모듈형 모놀리스는 서비스 기반 아키텍처의 변형으로, 독립적인 모듈로 구성되어 마이크로서비스의 장점을 제공함 📦
- 모듈형 모놀리스는 각 모듈 내부 아키텍처를 자유롭게 선택할 수 있는 유연성을 제공함 🤹
- 다양한 학습 자료(DoTrain 강좌, GitHub 템플릿 등)를 통해 각 아키텍처에 대한 더 자세한 정보를 얻을 수 있음 🎓