649 words
3 minutes
[MSA]Monolithic Architecture
2025-06-09
2026-01-09

Overview#

01. 몇가지 원칙#

DRY Don’t Repeat Yourself#

  • 동일한 코드가 3번 이상 반복되는 경우, 해당 코드를 함수로 분리하여 재사용성을 높일것
  • 시스템 기능의 동작을 단일 코드로 유지
  • 중복된 코드나 디자인 항목이 없도록 하여 유지보수성을 높임

KISS Keep It Simple, Stupid#

  • 시스템을 가능한 한 단순하게 유지
  • 복잡한 구조나 불필요한 기능을 피하고, 이해하기 쉬운 구조로 설계

YAGNI You Aren’t Gonna Need It#

  • 불필요한 기능을 미리 구현하지 않음

02. 모놀리식 아키텍처#

장점#

  • 쉬운 개발 및 배포
  • 쉬운 디버깅 및 테스트

단점#

  • 커플링 증가
  • 코드 분할 어려움
  • 관심사 분리 어려움
  • 격리 계층 없이 종속성 상호연결
  • 시간이 지남에 따라 복잡성 증가

해결법#

  • UI, 비즈니스 로직, 데이터 액세스 계층을 분리하여 모듈화
  • Layered Architecture를 사용하여 각 계층의 책임을 명확히 분리
  • SOLID 원칙을 적용하여 객체 지향 설계의 원칙을 준수

03. Layered Architecture#

  • 관심사 분리를 위한 코드 구성
  • N계층 아키텍처 스타일
  • 어플리케이션 내에서 특정 역할을 수행하는 각 계층을 수평적 논리적 계층으로 구성
  • 계층을 수정할 수 있고 변경사항이 다른 계층에 영향을 미치지 않도록 설계

04. Clean Architecture#

구조#

  • 1번으로 갈수록 내부,고수준이고, 4번으로 갈수록 외부,저수준임
  • 1번으로 갈수록 추상적이고 일반적이며 변경이 적음
  • 4번으로 갈수록 구체적이고 특수하며 변경이 잦음
  1. Entities: 비즈니스 규칙과 엔티티를 정의
  2. Use Cases: 애플리케이션의 유스케이스를 정의
  3. Interface Adapters: 유스케이스와 외부 인터페이스. Controllers, Presenters, Gateways 등을 포함
  4. Frameworks & Drivers: 외부 프레임워크, 데이터베이스, UI 등

특징#

  • 외부기관에 대한 독립적
  • UI 독립적
  • 프레임워크 독립성
  • 테스트 용이성

장점#

  • 쉬운 개발/ 디버깅/ 배포
  • 느슨하게 결합된 독립계틍
  • 우연한 논리적 계층
  • 테스트 용이하고 독립적이며 다른 라이브러리로 변경가능

단점#

  • 모든계층을 수정하는데 필요한 비즈니스 로직구현 코드
  • 확장성에 문제가 있는 Monolithic Architecture

Reference#

[MSA]Monolithic Architecture
https://yjinheon.netlify.app/posts/03be/msa/msa_03_monolithic_architecture/
Author
Datamind
Published at
2025-06-09
License
CC BY-NC-SA 4.0