요깨비's LAB

[Spring Boot, Back-End] 1. 어떻게 만들 것인가 본문

웹 개발/스프링 부트 프로젝트(레스토랑 예약)

[Spring Boot, Back-End] 1. 어떻게 만들 것인가

요깨비 2019. 12. 30. 16:14

본 강의는 아샬님의 강의를 정리한 것입니다.

1. Domain Modeling

Restaurant(가게 이름, 주소, 취급하는 음식 종류)
Menu Item(음식/음료 리스트)
User(고객, 관리자, 사장님)
Favorite(즐겨찾기 정보)
Review(리뷰 정보)
Reservation(예약 정보)

2. System Architecture
서비스는 프로그램으로만 이루어진 것이 아니죠.
(소프트웨어 + 하드웨어 + 인프라) = 시스템이라고 부름 
이러한 시스템이 어떻게 구성되는 지를 다루는 것이 System Architecture라고 합니다.

System Architecture를 올바르게 구성하기 위해 제약조건을 먼저 생각해 보아야 합니다.
2-1) 제약 조건
이 서비스는 홈페이지를 통해 제공될 것이기 때문에 웹 기술을 사용해야 하며,
모바일 환경에서도 쓰기를 원합니다.
=> Web과 Mobile을 모두 지원해야함!

여기에서 Web과 Mobile은 분명히 다른 부분이 존재합니다.
하나는 웹 브라우저로 접근한다는것. 다른 하나는 설치형 앱을 통해 접근합니다.

공통 부분도 존재하는데요.
모든 기능은 같구요, 이런 공통 부분을 두 서비스가 같이 쓸 수 있도록 하는게 좋습니다.
그래서
서로 다른 부분들을 Front-End
공통인 부분을 Back-End라고 나눌 수 있습니다.

이 두 부분에 대해서 조금 더 심도있게 알아보겠습니다.
System Architecture에는 Multi-tier Architecture라는 방법이 있습니다.
여러개의 계층으로 나누어서 시스템을 구성하는 방법이죠.(대표적으로 3-tier architecture)
3-tier는 Presentation, Business, Data Source 세가지의 계층으로 구성 되어있습니다.

  • Presentation: 사용자와 소통하는 부분
    Front-End(WEB-HTML/CSS/JS, Mobile-Swift/Adroid)

  • Business: 사용자의 요청을 처리하고, 소통한 결과를 지금 일어나야 되는 것들을 처리하는 부분
    Back-End(REST API, GraphQL)

  • Data Source: 우리가 처리한 데이터를 저장하는 부분
    Database(DBMS)

저는 Back-End 프로젝트를 진행할 것이므로 위 세개 중 Business 부분에 대해 조금 더 자세히 알아볼게요.
* Business
백엔드를 어떻게 만들것인가... 여기에는 Layered Architecture가 사용됩니다.
이것은 크게 4개의 Layer로 백엔드 시스템을 만드는 것을 뜻합니다.
각 레이어는 바로 아래 레이어 혹은 그보다 아래 레이어에 의존하고, 아래의 레이어는 위에 있는 레이어를
사용할 수 없습니다!! -> Program의 복잡도를 낮추기 위해...

  • UI Layer
  • Application Layer
  • Domain Layer
  • Infrastructure Layer

3. 기술 선택

  • Java
  • Spring Boot
  • REST API
Comments