---
id: SYS-ARCH-PAT-001
category: "[[10_Wiki/💡 Topics/AI]]"
confidence_score: 1.0
tags: [systems, architecture, software-engineering, design-patterns, microservices, layered-architecture, event-driven, scalability]
last_reinforced: 2026-04-26
---

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

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

## 📖 구조화된 지식 (Synthesized Content)
- **추출된 패턴:** "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)
- [[Service-oriented-Architecture]], [[Microservices-Foundations]], [[Scalability-in-AI-Systems]], [[API-Design-Principles]]
- **Raw Source:** [[10_Wiki/Topics/AI/Software-Architecture-Patterns.md]]
