Intellij) JDBC 프로젝트 (6) UI와 Service

Intellij) JDBC 프로젝트 (6) UI와 Service

Simple JDBC Project (kor)
(1) 
Java, DB 설치 + Docker Compose로 쉽게 해 보기
(2) 프로젝트 생성, Postgresql 컨테이너 게시
(3) Flyway 도입하기
(4) JDBC 연결하기
(5) 위임된 Main Application
(6) UI와 Service

UI와 서비스의 구분

사용자에게 보여 주고 상호작용을 하는 '창구' 영역과, 그때 발생할 동작을 수행하는 '실무' 영역을 구분해 사용합니다. 식당으로 치면 마치 웨이터와 요리사가 업무를 나누는 것처럼요.

  • UI: User Interface. 사용자에게 보여 주는 화면으로 이해할 수 있습니다. 조금 더 구체적으로는 사용자와 상호작용하는 영역을 뜻합니다.

  • Service: 뒤에서 동작할 소스 코드 영역을 서비스라고 구분했습니다. 반드시 서비스라고 명명해야 하는 것은 아닙니다. 우리가 이해하기 편한 용어로는 Service, Manager 등 다양한 표현이 있을 수 있습니다.

(참고할 수 있는 개념: MVC 패턴)

대표적인 UI 분류

우리가 접할 수 있는 UI는 아주 다양합니다. 그중 대표적인 두 가지는 다음과 같습니다.

  • CLI: 텍스트 기반의 UI입니다. TUI, CUI라고도 부를 수는 있습니다.

  • GUI: 그래픽 기반의 UI입니다. 주로 데스크톱 애플리케이션, 게임 클라이언트, 웹 서비스의 페이지 등이 GUI에 해당합니다. 모바일 애플리케이션도요.

그 외에도 우리의 신체 동작을 센싱하여 반응하거나 자연물·사물을 이용한 각종 상호작용 등에도 용어를 붙여서 NUI, OUI라고 부르기도 합니다.

우리는 이번에 CLI로 구축해 볼 계획이죠.

서비스에도 추가적인 계층이 있을까?

사실 UI에도 여러 계층을 둘 수 있지만, 서비스는 더더욱 계층의 구분이 중요합니다.

다음 중 우리는 수평적인 분류와 수직적인 구분을 모두 수행합니다.

  • 수평적 분류: 리소스(다루려는 데이터, 주제)나 피처(기능) 단위로 서비스를 분류합니다.

  • 수직적 분류: 하나의 기능 구현에서도 세부적인 단계와 역할에 따라 계층을 구분합니다.

서비스와 DAO

UI 외의 기능 처리를 서비스에서 한다면, 그중에서도 데이터베이스에 접근해서 데이터의 입출력 작업을 담당하는 것을 'DAO'라고 부릅니다. 보통 서비스와 용어와 계층을 나누어서 보는 편입니다.

UI가 주요 업무를 서비스에 인계한다면, 서비스는 작업들 중 데이터베이스와 주고 받을 내용을 DAO에게 인계하는 식입니다.

  • DAO: Data Access Object. 데이터베이스에 접속해서 데이터의 입출력을 담당합니다.

다음 글에서는 그중 DAO를 만드는 작업을 먼저 해 보겠습니다.


< Prev

(5) 위임된 Main Application