---
id: P-REINFORCE-AUTO-PARC-001
category: "10_Wiki/💡 Topics/AI"
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 (관심사 분리)**: 핵심 로직, 데이터 접근, 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)
- [[Object-Oriented-Design-Patterns]], [[Software-Design-Principles]], [[Polymorphism-in-Engine-Architecture]], [[Complexity Theory]], System Thinking
- **Modern Tech/Tools**: Kubernetes, Docker, AWS Well-Architected Framework.
---
