-
(2023-11-07자 TIL) 3계층 아키텍쳐에 대해 알아보자프로그래밍 언어/Spring 2023. 11. 7. 21:43
1주차 강의를 들으며 memo 어플리케이션을 만들던 도중, 이런 생각이 들었다.
'Controller.java 파일에 이렇게 많은 기능들이 있어도 될까?'
강의를 수강하며 만든 내 Controller에는 CRUD와 그밖의 여러가지 기능들이 혼잡해 있어 코드가 한눈에 들어오지 않았다.
이는 과거의 개발자들이 절대 용납하지 않는 직관성과 가독성을 해치는 '안좋은 코드'의 예시에 부합한다.
그렇다면, 이 복잡한 기능을 가진 Controller를 어떻게 단순하고 명료하게 만들었을까?
여기서부터가 2주차 Spring강의의 첫번째 키워드, '3계층 아키텍쳐'(3 Layer Architecture)이다.
IBM에서 정의한 3계층 아키텍쳐란,
1. 애플리케이션을 프레젠테이션 계층 또는 사용자 인터페이스,
2. 데이터가 처리되는 애플리케이션 계층,
3. 애플리케이션과 관련된 데이터가 저장 및 관리되는 데이터 계층,
으로 이루어진 3개의 논리적이고 물리적인 컴퓨팅 계층으로 구성하는 확립된 소프트웨어 애플리케이션 아키텍처이다.
정확하진 않지만, 강의에서 나온 이름들로 1, 2, 3의 계층을 개발자들이 쓰는 java파일 이름을 치환하자면,
프레젠테이션 계층 = Controller,
애플리케이션 계층 = Service,
데이터 계층 = Repository
로 명명해서 사용하고 있음을 짐작할 수 있다.
각각의 계층들의 역할과 상세설명은 다음과 같다.
1. Controller
사용자와 기계의 경계선에 위치한 계층으로, 주 목적은 사용자에게 정보를 표시하고 수집하는 역할을 한다.
Controller는 Client에게 요청을 받고, 요청에 대한 로직 처리를 Service에 넘긴후, Service의 응답을 다시 Client에게 반환한다.
2. Service
논리계층이라고도 불리며, 애플리케이션의 핵심이다. Service는 Controller에서 받아온 정보를 비지니스 로직에 따라 처리하고 필요에 의하면 Repository에 DB 정보 조회 및 삭제, 수정을 요청할 수 있다.
3. Repository
데이터베이스 계층이라고 불리며, 애플리케이션이 처리하면 정보가 저장되어있는 계층이다. 이 곳에서 DB CRUD작업을 진행할 수 있다.
'프로그래밍 언어 > Spring' 카테고리의 다른 글
API 게이트 웨이에 대해 파헤치기 (0) 2024.08.06 정규 표현식 정리 (0) 2023.11.29 1대N, N대1, N대M 관계에 대해 알아보자 (1) 2023.11.20 Spring MVC 간단 정리 (1) 2023.11.20 (2023-11-08 TIL) IoC와 DI에 대하여 (0) 2023.11.08