개요

소프트웨어의 설계에서 계층의 분리는 정말 중요한 문제입니다. 흔히 말하는 관심사를 분리하는 과정이라고도 말할 수 있을 것 같은데, 그렇다면 이 분리가 왜 중요할까요? 이 분리는 과연 우리에게 어떤 이점을 가져다줄까요? 프로젝트를 진행하면서 직접 고민해보고 느껴본 바를 적어보면서 레이어를 분리하는 제 기준에 대해서 공유해보고자 합니다.

가로와 세로로 나눠보는 레이어

일단 가로와 세로 이전에 레이어에도 레벨 이라는 것이 존재합니다. 저는 코드 레벨이라는 아주 미시적인 관점의 레이어부터 거시적으로 인프라 레벨에서 볼 수 있는 레이어 로 확장을 해 나갈 수 있는데요, 이 레벨 이라는 것의 기준을 세워두지 않으면 헷갈릴 수 있기 때문에, 가로 세로를 나누기에 앞서 각 레벨 별로 분리를 하고 그 안에서 가로 세로를 나누어보겠습니다.

먼저 큰 부분을 분리하고 세부적으로 들어가는게 쉽기 때문에

어플리케이션 수준 ⇒ 프론트엔드 프로젝트 수준 ⇒ 내부 코드의 수준 으로 분리해보겠습니다.

그리고 이 수준안에서 가로 세로 레이어를 나누어볼 수 있는데

세로 (수직) 레이어 : 가변 난이도와 역할에 따라 관심사를 따라 분리 할 수 있다.

가로 (수평) 레이어 : 같은 수준의 레이어 안에서 관심사에 따라 분리 할 수 있는 레이어입니다.

구체적인 것은 각 준에서의 분리를 보면서 파악해보도록 하겠습니다.

어플리케이션 수준에서의 레이어 분리


스크린샷 2022-06-19 오전 12.24.48.png

해당 수준에서 수직으로 레이어를 분리하면 위 그림처럼 나눌 수 있을 것 같은데요,

DB 레이어 (Store Layer)