본문 바로가기
BackEnd/Project

[PT Manager] Ch01. 요구사항 분석

by 개발 Blog 2024. 8. 26.

공부 내용을 정리하고 앞으로의 학습에 이해를 돕기 위해 작성합니다.

 

요구사항 이해하기

1. 이용권 시스템 이해하기 

PT 이용권 서비스 프로젝트는 스프링 배치를 활용해 실제 현업에서 사용되는 배치 작업을 구현해 보는 프로젝트이다. 프로젝트를 시작하기 전에 배치 작업이 어떤 상황에서 사용되는지, 왜 스프링 배치를 사용하는지에 대해 이해하고 넘어가야 한다.

 

배치 작업이 필요한 이유

배치는 실시간으로 처리하기 어려운 대량의 데이터를 효율적으로 처리하기 위해 사용된다. 다음과 같은 작업들은 배치로 처리하는 것이 더 적합하다

- 데이터를 실시간으로 처리하는 게 아닌 일괄적으로 모아서 처리하는 작업이다.

- 위의 4가지 작업들을 왜 배치작업으로 일괄적으로 해야할까?

  • 메시지 예약 발송
    • 예약된 시간에 맞춰 광고성 메시지를 발송해야 하는 경우, 사용자가 직접 발송하지 않고 배치 작업으로 예약된 시간에 자동 발송할 수 있다.
  • 통계 데이터 처리
    • 주간, 월간 통계 보고서를 실시간으로 갱신하기보다, 해당 기간이 종료된 후 데이터를 일괄 처리해 보고서를 생성하는 것이 효율적이다.
  • 대량 데이터 익스포트
    • 100만 건 이상의 데이터를 실시간으로 익스포트 하면 사용자 경험이 떨어질 수 있다. 배치 작업으로 처리한 후 사용자에게 결과를 제공하는 것이 좋다.
  • 모델 학습 작업 예약
    • 여러 사용자가 한정된 서버 자원을 공유할 때, 작업 시간을 예약해 배치 작업으로 효율적으로 자원을 사용할 수 있다.

Spring Batch

  • 스프링의 특성을 그대로 사용하여 배치 작업을 구현할 수 있다.
  • 스케줄러가 아닌 배치 작업에 특화된 프레임워크이다.
  • 구성 요소로는 Application (사용자 코드 및 구성), Core (Job, Step, JobLauncher, JobParameter), Infrastructure (File, DB) 등이 있다.

시스템 구조 

  • Batch
    • 데이터베이스(DB) 내의 데이터를 읽고, 이를 업데이트하는 작업을 처리한다.
    • 예약된 시간에 배치 작업을 통해 일괄적으로 데이터 처리 작업을 수행한다.
  • API
    • 웹 애플리케이션에 데이터를 제공하기 위해 DB와 통신을 하여 필요한 정보를 가져온다.
    • 웹 인터페이스를 통해 사용자와 관리자에게 데이터를 제공하는 역할을 한다.

2. 이용권 서비스 요구사항 이해하기 

헬스장에 가서 PT를 등록한다고 가정해 보자. 직원이 여러 프로그램을 소개해주며 각각 유효기간과 횟수가 다르다. 그중 2개월에 10회 PT 이용권을 선택했다면, 오픈 기념으로 3개월 동안 헬스장 이용권도 함께 제공된다. 예약 수업 전에는 알림을 받고, 수업 종료 후에는 이용권에서 자동으로 횟수가 차감된다. 또한, 서비스 중 필라테스가 새로 생기면서 모든 회원에게 1회 필라테스 이용권이 일괄 지급되기도 한다.

 

위 내용을 도메인별로 정리하면 다음과 같다.

  • 사용자는 N개의 이용권을 가질 수 있다.
  • 이용권은 횟수가 모두 소진되거나 이용기간이 지나면 만료된다.
  • 이용권 만료 전 사용자에게 알림을 제공한다.
  • 특정 시간에 맞춰 일괄로 이용권을 지급할 수 있다.
  • 예약된 수업 10분 전에 알림을 제공한다.
  • 수업 종료 후에는 수업 예약자 중 참석자의 이용권 횟수가 차감된다.
  • 다양한 데이터를 수집하여 유의미한 통계 데이터를 생성한다.

앞에 있는 서비스 요구사항들을 각 컴포넌트에 맞는 피처들로 다시 정리를 하면 다음과 같다.

  • Batch
    • 이용권 만료, 일괄 지급, 알림 발송, 통계 데이터 구축 등의 작업을 처리한다.
  • View
    • 사용자 및 관리자 페이지에서 이용권 조회, 등록, 통계 조회를 제공한다.
  • API

데이터와 웹 인터페이스 간의 통신을 담당하며, API를 통해 데이터 제공 및 처리 작업을 수행한다.