매일 매일, 차곡 차곡 쌓기



완벽하지 않은 것을 두려워 말며,
완성도를 높히는데 집중하자.

소프트웨어 아키텍처

레이어드 아키텍처

blockbuddy93 2024. 1. 13. 20:17

레이어드 아키텍처란?

레이어드 아키텍처는 소프트웨어 시스템을 관심사 별로 여러 개의 계층으로 분리한 아키텍처를 말합니다. 각 계층은 어플리케이션 내에서 특정 역할과 책임을 가지며, 자신의 역할에만 집중합니다. 레이어드 아키텍처에서는 추상화된 인터페이스를 통해 소통하며, 소통은 자신에게 인접한 하위 계층에 요청을 보내는 방식으로 이루어집니다. 상위 계층은 하위 계층으로 단방향 의존성을 가집니다. 일반적인 레이어드 아키텍처는 다음과 같은 4단계로 구성됩니다:

  1. 프레젠테이션 계층: 사용자 혹은 클라이언트 시스템과 직접 연결됩니다.
  2. 서비스 계층: 비즈니스 로직을 구현하는 부분입니다.
  3. 영속성 계층: 데이터의 영구 저장과 관리를 담당합니다.
  4. 데이터베이스 계층: 실제 데이터베이스를 의미합니다.

레이어드 아키텍처를 사용하면 계층 간의 결합도를 낮출 수 있고, 유지보수를 용이하게 할 수 있습니다.

 

장점

  • 각 계층이 관심사 별로 분리되어 있어 코드의 응집도를 높이고 재사용성과 유지보수성이 향상됩니다.
  • 변화에 유연하게 대처할 수 있습니다.
  • 각 계층이 독립적으로 개발, 확장, 변경이 가능합니다.
  • 각 계층에서 기능이 확장되거나 변경이 발생할 경우 해당 계층의 코드만 변경됩니다.

단점

  • 오버헤드: 계층 간 통신을 통해 데이터 전달 및 변환 과정에서 오버헤드가 발생하며, 계층이 많아질수록 이러한 오버헤드가 증가합니다.
  • 복잡성: 계층 간 통신을 위한 인터페이스와 로직을 추가해야 하므로 복잡성이 증가하며, 특히 대규모 프로젝트에서는 계층 간의 관리와 유지보수가 복잡해질 수 있습니다.

 

 

싱크홀 패턴

싱크홀 패턴은 하위 레이어를 거치지만, 그 레이어에서는 추가적인 작업 없이 단순히 데이터를 전달만 하는 경우를 말합니다. 이렇게 되면 불필요한 오버헤드만 발생하고 애플리케이션의 성능이 저하될 수 있으므로 레이어드 아키텍처에서 싱크홀 패턴을 조심해야 합니다.

'소프트웨어 아키텍처' 카테고리의 다른 글

클린아키텍처  (0) 2024.02.01
마이크로서비스 아키텍처  (1) 2024.01.13
모놀리식 아키텍처  (0) 2023.12.04