Files
2nd/10_Wiki/Topics/Principles-of-Architecture.md
T
2026-05-02 23:33:34 +09:00

2.8 KiB


id: P-Reinforce-AUTO-PARC-001 category: Unified confidence_score: 0.95 tags: [auto-reinforced, software-Architecture, Principles, quality-attributes, design] last_reinforced: 2026-04-20

Principles-of-Architecture

📌 한 줄 통찰 (The Karpathy Summary)

"지속 가능한 복잡성을 위한 약속: 시스템이 커져도 무너지지 않도록, 구성 요소 간의 결합을 끊고 소통 방식을 표준화하는 거시적 설계 원칙."

📖 구조화된 지식 (Synthesized Content)

소프트웨어 아키텍처 원칙(Principles of Architecture)은 복잡한 시스템을 효율적으로 구축하고 유지보수하기 위해 지켜야 할 기본 지침입니다.

  1. 가장 핵심적인 3대 원칙:
    • [[뇌와 팔다리의 분리 - 관심사의 분리 (Separation of Concerns)|Separation of Concerns]] (관심사 분리): 핵심 로직, 데이터 접근, UI 처리를 명확히 분리하여 한 부분의 변화가 전체를 흔들지 않게 함.
    • Abstraction (추상화): 구현의 세부 사항을 감추고 인터페이스만 노출하여 시스템간 결합도를 낮춤.
    • Modularity (모듈화): 독립적으로 재사용 가능한 단위로 시스템을 쪼개어 확장성 확보.
  2. 품질 속성 (Quality Attributes):
    • Scalability: 늘어나는 부하에 대응할 수 있는가?
    • Resilience: 장애 시 복구 가능한가?
    • Maintainability: 읽기 쉽고 고치기 쉬운가?
  3. 설계 접근법:
    • Monolithic vs Microservices: 비즈니스 규모와 팀 구조에 따른 선택.
    • Layered Architecture: 계층별 역할 분담을 통한 구조적 통제.

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

  • 과거 데이터와의 충돌: 과거에는 '완벽한 미리 설계(Upfront Design)'를 권장했으나, 현대 아키텍처는 비즈니스 변화에 유연하게 대응하는 '진화적 아키텍처(Evolutionary Architecture)'와 'Agile 설계'를 지지함.
  • 정책 변화(RL Update): 클라우드 네이티브 환경으로의 전환 정책에 따라, 모든 시스템 아키텍처는 '장애를 가정하고 설계(Design for Failure)'해야 한다는 안정성 최우선 정책이 글로벌 표준이 됨.

🔗 지식 연결 (Graph)