아키텍처 패턴 정리

Ohgyuchan·2023년 2월 17일
0
post-thumbnail

이번 주에 면접을 봤는데 아래 질문이 나왔는데, 준비를 너무 안 했었어서 제대로 설명하지 못해서 한 번 정리해 본다..

MVVM 패턴을 주로 썼다고 이력서에 나와있던데, MVVM 패턴을 설명하고 알고 있는 다른 패턴들이 있다면 장단점을 설명해보세요.

개발(설계) 패턴(Design Pattern) 이란?

소프트웨어 아키텍처 패턴은 소프트웨어 설계에 도움을 주는 일련의 구조화된 패턴을 의미한다. 이들 패턴은 특정 문제를 해결하는 데 도움이 되는 방식으로, 각각의 패턴에는 장단점이 있다. 주요 소프트웨어 아키텍처 패턴에는 MVC, MVP, MVVM, 레이어드 아키텍처, 이벤트 드리븐 아키텍처, 마이크로서비스 아키텍처 등이 있다.

1. 패턴 종류

1.1. Model-View-Controller (MVC):

  • 장점:
    • 관심사의 분리로 가독성과 모듈화가 증가
    • 개발자 간 협업이 용이함
    • 웹 애플리케이션 개발에 적합
  • 단점:
    • 컨트롤러가 과도한 역할을 수행할 수 있어 코드가 복잡해질 수 있음
    • 프로젝트 규모가 커지면 관리가 어려워질 수 있음

1.2. Model-View-Presenter (MVP):

  • 장점:
    • View와 Model 간의 의존성이 줄어듦
    • 테스트 용이성이 증가함
    • 유지보수가 쉬움
  • 단점:
    • 프레젠테이션 로직이 복잡해질수록 코드가 늘어남
    • 학습 곡선이 존재함

1.3. Model-View-ViewModel (MVVM):

  • 장점:
    UI 개발에 적합한 구조 제공
    데이터 바인딩을 통한 자동화와 모듈화
    높은 수준의 모듈화와 유지보수성
  • 단점:
    학습 곡선이 높을 수 있음
    데이터 바인딩으로 인한 오류 추적이 어려울 수 있음

1.4. 레이어드 아키텍처:

  • 장점:
    • 각 레이어의 관심사가 분리되어 유지보수가 쉬움
    • 개발 과정에서 일관성 있게 코드를 작성할 수 있음
  • 단점:
    • 성능이 저하될 수 있음 (레이어 간 호출 때문에)
    • 각 레이어 간의 의존성 관리가 필요함

1.5. 이벤트 드리븐 아키텍처:

  • 장점:
    • 비동기적 시스템에 적합함
    • 확장성이 뛰어남
    • 느슨한 결합으로 인해 유지보수가 쉬움
  • 단점:
    • 이벤트 추적과 디버깅이 어려울 수 있음
    • 복잡한 시스템에서 이벤트의 흐름을 이해하는 데 어려움이 있을 수 있음
    • 이벤트 처리 시 순서와 타이밍을 고려해야 함

1.6. 마이크로서비스 아키텍처:

  • 장점:
    • 독립적인 서비스로 구성되어 개발과 배포가 용이함
    • 서비스 간 느슨한 결합으로 인해 유지보수가 쉬움
    • 확장성이 높음
  • 단점:
    • 분산 시스템에 대한 복잡성 증가
    • 네트워크 지연과 레이턴시 이슈 처리 필요
    • 전체 시스템에 대한 모니터링과 디버깅이 어려울 수 있음

각 소프트웨어 아키텍처 패턴은 특정한 상황과 요구 사항에 따라 선택해야 한다. 프로젝트의 목적과 특성을 고려하여 가장 적합한 패턴을 선택하는 것이 중요하다.

profile
Flutter 개발자

0개의 댓글