소프트웨어의 설계에서 계층의 분리는 정말 중요한 문제입니다. 흔히 말하는 관심사를 분리하는 과정이라고도 말할 수 있을 것 같은데, 그렇다면 이 분리가 왜 중요할까요? 이 분리는 과연 우리에게 어떤 이점을 가져다줄까요? 프로젝트를 진행하면서 직접 고민해보고 느껴본 바를 적어보면서 레이어를 분리하는 제 기준에 대해서 공유해보고자 합니다.
일단 가로와 세로 이전에 레이어에도 레벨
이라는 것이 존재합니다. 저는 코드 레벨이라는 아주 미시적인 관점의 레이어
부터 거시적으로 인프라 레벨에서 볼 수 있는 레이어
로 확장을 해 나갈 수 있는데요, 이 레벨
이라는 것의 기준을 세워두지 않으면 헷갈릴 수 있기 때문에, 가로 세로를 나누기에 앞서 각 레벨
별로 분리를 하고 그 안에서 가로 세로를 나누어보겠습니다.
먼저 큰 부분을 분리하고 세부적으로 들어가는게 쉽기 때문에
어플리케이션 수준 ⇒ 프론트엔드 프로젝트 수준 ⇒ 내부 코드의 수준 으로 분리해보겠습니다.
그리고 이 수준안에서 가로 세로 레이어를 나누어볼 수 있는데
세로 (수직) 레이어 : 가변 난이도와 역할에 따라 관심사를 따라 분리
할 수 있다.
가로 (수평) 레이어 : 같은 수준의 레이어 안에서 관심사에 따라 분리
할 수 있는 레이어입니다.
구체적인 것은 각 준에서의 분리를 보면서 파악해보도록 하겠습니다.
해당 수준에서 수직으로 레이어를 분리하면 위 그림처럼 나눌 수 있을 것 같은데요,