Files
2nd/10_Wiki/Topics/Software-Architecture-Patterns.md
T

3.0 KiB

id, category, confidence_score, tags, last_reinforced
id category confidence_score tags last_reinforced
SYS-ARCH-PAT-001 Dev 1.0
systems
Architecture|Architecture
software-engineering
design-patterns
microservices
layered-architecture
event-driven
Scalability|Scalability
2026-04-26

Software Architecture Patterns (소프트웨어 아키텍처 패턴)

📌 한 줄 통찰 (The Karpathy Summary)

"코드를 작성하기 전에 지식과 기능의 '지도(Map)'를 먼저 그려라. 올바른 패턴 선택은 복잡성이라는 파도 앞에서 시스템을 지탱하는 가장 견고한 닻이 된다" — 소프트웨어 시스템의 구조적 문제를 해결하기 위해 반복적으로 사용되는 검증된 설계 원칙과 골격.

📖 구조화된 지식 (Synthesized Content)

  • 추출된 패턴: "[[뇌와 팔다리의 분리 - 관심사의 분리 (Separation of Concerns)|Separation of Concerns]] and Structural Modularity" — 시스템의 책임을 명확히 분리하여 변경의 파급 효과를 최소화하고, 특정 요구사항(확장성, 성능, 배포 속도 등)에 최적화된 컴포넌트 간 배치 방식을 결정하는 패턴.
  • 주요 아키텍처 패턴:
    • Layered (N-tier): 역할을 수평으로 분리 (UI-business-Data). 가장 범용적이고 단순함.
    • Event-driven: 비동기 이벤트를 통해 통신. 높은 확장성과 유연성 제공.
    • Microservices: 비즈니스 단위로 서비스를 완전히 쪼개어 독립적 배포와 확장이 가능하게 함.
    • Microkernel (Plugin): 핵심 코어에 기능을 추가/제거할 수 있는 플러그인 구조. 확장성 우수.
    • Hexagonal (Ports & Adapters): 핵심 로직을 외부 환경(DB, UI 등)으로부터 고립시켜 테스트 용이성 극대화.
  • 의의: 개발팀이 동일한 설계 언어를 공유하게 하며, 초기 결정이 향후 시스템의 생존 여부와 비용에 결정적인 영향을 미치는 '소프트웨어의 뼈대' 구축 과정.

⚠️ 모순 및 업데이트 (Contradictions & RL Update)

  • 과거 데이터와의 충돌: "무조건 마이크로서비스가 최고다"라는 유행에서 벗어나, 시스템의 규모와 팀의 역량에 맞춰 단순한 모놀리식(Monolithic)이나 모듈형 모놀리식(Modular Monolith)이 더 효율적일 수 있다는 실용주의적 접근이 다시 강조되고 있음.
  • 정책 변화: Antigravity 프로젝트는 핵심 에이전트 엔진은 마이크로커널 패턴으로 설계하여 기능을 유연하게 확장하고, 전체 서비스 배포는 독립성을 위해 마이크로서비스 지향적 패턴을 준수함.

🔗 지식 연결 (Graph)