amplitude.init("2e2e5a386856efdf3237cf254a9d14d9"

[개념 콕] 스프링 Controller, Service, Repository

내일배움캠프 수료생이 개발에 꼭 필요한 핵심 개념만 콕 집어 드립니다.
May 31, 2024
[개념 콕] 스프링 Controller, Service, Repository
✍🏼
개발을 시작하시는 여러분, 정보가 너무 많고 배워야 할 것도 산더미라 어디서부터 시작해야 할지 막막하신가요? 내일배움캠프 수료생들이 4개월 동안 배운 엄선된 핵심 개념을 직접 정리해서 알려 드립니다. 공부하다 막히거나 헷갈리는 개념이 있다면 개념 콕으로 정리해보세요.
 
Spring을 이용하여 프로젝트를 개발하면 자연스럽게 Controller, Service, Repository 계층으로 나누어 개발하게 됩니다. 그렇다면 왜 이렇게 나누어 개발하는걸까요?
 

레이어드 아키텍처 패턴

이렇게 계층으로 나누어 개발하는 패턴을 레이어드 아키텍처 패턴이라 합니다. 레이어드 아키텍처 패턴이란 코드를 분리하여 관리하는 방법입니다. 구체적으로 얘기하면 애플리케이션의 구성 요소들을 프레젠테이션, 비즈니스, 퍼시스턴스, 데이터베이스로 나눠서 관리합니다.
 
notion image
위 그림과 같이 프레젠테이션은 컨트롤러, 비즈니스는 서비스, 퍼시스턴스는 레포지토리, 데이터베이스는 우리가 사용하는 DB로 표현합니다. 위처럼 각 계층이 독립적이고 역할이 분명하므로 코드의 확장성이 높아집니다. 코드의 구조를 파악하기 쉬울 뿐만 아니라 재사용 가능성도 높아집니다. 
 

레이어드 아키텍처 패턴의 계층 간 의존성 규칙

레이어드 아키텍처 패턴에서는 각 계층 간의 의존성이 중요한 규칙으로 작용합니다. 이를 단방향 의존성이라고도 하는데, 상위 계층은 하위 계층에만 의존할 수 있고, 하위 계층은 상위 계층에 의존해서는 안 된다는 원칙입니다. 예를 들어, Controller 계층은 Service 계층을 직접 호출할 수 있지만, Repository 계층을 직접 호출해서는 안 됩니다. 마찬가지로 Service 계층은 Repository 계층에 의존할 수 있지만, Controller 계층에 의존해서는 안 됩니다.
이러한 단방향 의존성 규칙을 지킴으로써 계층 간의 결합도를 낮추고, 시스템의 유연성과 유지보수성을 높일 수 있습니다. 또한 각 계층의 역할과 책임을 명확히 구분할 수 있어, 시스템의 복잡성을 관리하는 데에도 도움이 됩니다. 따라서 레이어드 아키텍처 패턴을 적용할 때는 상위 계층이 하위 계층에만 의존하도록 설계해야 합니다.
 

Controller, Service, Repository

프리젠테이션 계층 - Controller - 웨이터

  • 손님(클라이언트)이 웨이터(Controller)에게 스테이크를 주문(Request)합니다.
  • 웨이터는 손님의 주문을 받아 주방장(Service)에게 전달하고, 스테이크를 준비해달라고 요청합니다.
  • 주방장이 스테이크를 완성하면, 웨이터는 그것을 손님에게 전달(Response, 스테이크, View/REST API)하는 것처럼, controller는 클라이언트의 요구사항을 이해하고 요청을 service에게 전달합니다.

비즈니스 계층 - Service - 주방장

  • 주방장(Service)은 웨이터로부터 스테이크 주문을 받습니다.
  • 주방장은 스테이크를 만들기 위해 필요한 재료를 재료 담당 알바생(Repository)에게 요청합니다.
  • 재료를 받은 주방장은 자신만의 레시피(비즈니스 로직)에 따라 스테이크를 조리합니다.
  • 완성된 스테이크는 웨이터에게 전달되어 손님에게 제공됩니다.
  • 주방장(service)은 웨이터와 재료 담당 알바생 사이에서 중심적인 역할, 즉 데이터를 가공하는 등 비즈니스 로직을 수행하고 이를 다시 컨트롤러에게 반환하는 역할을 수행합니다.

퍼시스턴스 계층 - Repository - 재료 담당 알바생

  • 재료 담당 알바생(Repository)은 냉장고(데이터베이스)에서 스테이크용 고기를 주방장에게 가져다 줍니다.
  • repository는 서비스가 비즈니스 로직을 수행할 때 필요한 데이터를 생성, 수정, 조회 등을 처리하여 실제로 데이터베이스에 데이터를 저장, 수정, 조회하는 역할을 수행합니다.
 
 
 

내일배움캠프는 개발에 필요한 핵심만 배웁니다

지금까지 꼭 필요한 개발 지식에 대해 알아보았습니다. 내일배움캠프에서는 전문가들이 선별한 핵심 개발 지식으로 개발 공부도, 취업도 보다 효율적으로 할 수 있는데요. 국내 유수의 IT기업 출신 튜터님들과 실습 위주의 독보적인 커리큘럼으로 개발자 취업을 체계적으로 준비해보세요. 내일배움캠프 4개월, 여러분 인생의 가장 큰 터닝 포인트입니다.
 
 
 
CREDIT
글 | 손창현 내일배움캠프 수료생 편집 | 정효재 팀스파르타 에디터
 
 

취업 준비, 어디서부터 시작해야 할지 모르겠다면?

 
🧐비전공자인데 IT 업계 취업할 수 있을까?
😟프로젝트 경험이 부족한데, 어떻게 준비해야 할까?
🥺IT 기업으로 이직하고 싶은데 뭐부터 시작해야 할까?
 
이런 고민을 하고 있다면, 내일배움캠프의 IT 취업 컨설팅을 받아보세요.
취업 코칭 전문가들이 여러분의 고민을 해결해 드립니다.
 
다음 링크에 이메일을 입력하시면 메일로 1:1 커리어 상담권과 취준 자료집을 보내드릴게요.
 
 
 
Share article
Subscribe to our newsletter
RSSPowered by inblog