🧠 Patterns: 소프트웨어 설계의 공통 언어

Patterns 문서는 소프트웨어 개발 과정에서 반복적으로 마주치는 문제들을 효율적이고 재사용 가능한 방식으로 해결하기 위한 설계 지식의 집합입니다.

이 문서에서는 크게 두 가지 패턴 계층을 다룹니다:

(1) 아키텍처 패턴 (Architectural Patterns)

  • 소프트웨어 아키텍처의 공통적인 발생 문제에 대한 일반적인, 재사용 가능한 해결책
  • 소프트웨어 디자인 패턴과 비슷하지만 더 넓은 범위
  • 하드웨어 성능 제한, 비즈니스 위험의 최소화와 고가용성 등의 문제를 해결하고자 함
  • 시스템 전체의 구조와 모듈 간의 책임 분리, 데이터 흐름을 설계하는 전략
  • 예: Layered Architecture, CQRS, DDD 등

(2) 디자인 패턴 (Design Patterns)

  • 특정 문맥에서 공통적으로 발생하는 문제에 대해 재사용 가능한 해결책
  • 프로그래머가 애플리케이션이나 시스템을 디자인할 때 공통된 문제들을 해결하는데에 쓰이는 형식화 된 가장 좋은 관행
  • 클래스, 객체, 메서드 수준의 구조와 협력 관계를 다루는 설계 해법
  • 예: Builder, Observer, Strategy 등

패턴을 공부하는 이유

“패턴은 단순한 이론이 아니라, 설계를 더 잘하기 위한 사고 도구입니다.”
이 문서를 통해 설계의 감각과 구조적 사고를 키워보도록 하겠습니다.

Reference

https://ko.wikipedia.org/wiki/소프트웨어_디자인_패턴
https://ko.wikipedia.org/wiki/아키텍처_패턴