코드의 양이 적을때는 한 파일에 모든 코드를 작성해도 문제 없지만 프로젝트 규모가 커지면 파일 하나만 가지고 코드를 작성하기에는 너무 복잡해진다.🤯
🤔그럼 복잡하고 규모가 큰 프로젝트의 코드는 어떻게 관리하는것일까? 프로젝트를 시작할때 제일 먼저 다음 요소들을 염두해 두고 코드의 아키텍쳐를 생각해 보는 것이 좋다.
1. 확장성, 2.재사용성, 3. 유지보수성, 4. 가독성, 5. 테스트가능성
제일 많이쓰이는 흔한? 널리 적용되는 패턴 중 하나인 Layerd architecture pattern 에 대해서 정리해 보겠다.
코드를 논리적인 부분 /
역할에 따라 독립된 모듈로 나누어서 구성하는 패턴이다.
실제 layer 들이 층을 구분하듯이 각 모듈들이 쌓여서 연결된 구조이다. 시스템마다 다를 수 있다고 하지만 보통 다음과 같은 3개의 layer가 존재한다고 한다.
1. presentation Layer, 2. Business Layer, 3. Persistence Layer
제일 위에 위치한 layer 이며, 시스템을 사용하는 클라이언트와 연결되는 부분이다. 웹에서는 UI부분, backend에서는 endpoint 부분에 해당한다.
UI <-----------------------------------------------> Endpoint
presentation layer에서 API의 엔드포인트를 정의하고 request를 읽는 로직을 구현한다. 그 외의 일은 처리 하지 않는다. 짬이 좀 있나보다
이메일 validate_check 나 해당 request를 거부해야하는 비지니스로직을 구현하기 위한 공간이다.
데이터 베이스와 관련된 로직을 구현하는 층이다. CRUD 작업이 이층에서 이루어진다
기억하자 🙏단방향 의존성. 각 레이어는 자기보다 밑에 있는 Layer에게만 의존한다. 반대로 보면 각 층은 자기보다 위에 있는 층에 대해 독립적이란 뜻이다.
각 레이어의 역할이 명확하다. 각 층은 맡은일 빼고는 하지 않는다. cool
reference