🛍 대구소프트웨어고등학교 학생들이 사용할 수 있는 교내 마켓 서비스 (재능 물품, 중고 물품, 요청 물품)
Web | Server | |
---|---|---|
Developer | 제정민 | 제정민 |
Develop Language | TypeScript | Java |
FrameWork | NextJS | Spring Boot |
Develop Tool | Visual Studio Code | InteliJ |
대구소프트웨어고등학교 학생들이 함께 사용할 수 있는 교내 마켓 서비스입니다.
서비스는 3가지로 각각 관심사가 분리되어 개발됩니다
- Item (물품)
- User (유저)
- Common (공용)
물품은 재능 물품 (디자인 외주 등), 중고 물품 (사용하지 않는 책 등), 요청 물품 (웹 퍼블리싱 요청 등)이 있습니다
물품에 관련된 제어 계층과 그에 따른 비즈니스 로직 계층, 즉 물품에 특화된 기능이 개발됩니다
item
ㄴ controller - 클라이언트의 요구사항
ㄴ service - 요구사항의 비즈니스 로직
ㄴ domain - 데이터베이스 관련
유저는 교내 스마트 스쿨 플랫폼인 도담도담 API를 사용해 기본적인 유저의 정보를 관리합니다
유저에 관련된 제어 계층과 그에 따른 비즈니스 로직 계층, 즉 유저에 특화된 기능이 개발됩니다
user
ㄴ controller - 클라이언트의 요구사항
ㄴ service - 요구사항의 비즈니스 로직
ㄴ domain - 데이터베이스 관련
공용은 물품, 유저 서비스에서 공용으로 사용하는 모듈들이 포함되어 있습니다
비즈니스 계층이 아닌 에러 처리, 보안 등 공통적인 저수준 기능이 개발됩니다
common
ㄴ annotation - 직접 정의하여 사용하는 어노테이션
ㄴ aspect - 특정 비즈니스 로직의 공통된 처리를 수행
ㄴ configuration - IOC & DI를 위한 Bean 생성, Configurer 구현체
ㄴ enums - 코드 단순화, 가독성 등을 위한 열거형 타입
ㄴ exception - 정확한 에러 생성을 위한 사용자 정의 에러
ㄴ filter - 모든 API에 대한 요청을 필터링
ㄴ handler - 비즈니스 로직에서 일어난 특정 이벤트를 처리하는 핸들러
ㄴ interceptor - 특정 API에 대한 요청을 검사
ㄴ lib - 비즈니스 로직과 분리된 재사용, 가독성을 위한 모듈
ㄴ retrofit - 교내 도담도담 서비스와 통신
ㄴ vo - 객체를 정의 후 값을 사용하기 위한 모듈
Client의 요청이 들어올 때 Filter 계층에서 해당 요청에 대한 정제 작업을 수행합니다.
그 후, 특정 API에 따라 공통된 처리가 필요할 때 Interceptor 계층에서 공통된 처리를 수행합니다.
만약 특정 메서드에 따라 공통된 처리가 필요하다면 Aspect 계층에서 공통된 처리를 수행할 수 있습니다.
서버 내 서비스 구조는 3계층(Controller, Service, Domain)으로 이루어집니다.
Controller는 클라이언트의 요청을 받고, Service는 요청의 비즈니스 로직을 수행하며, Domain을 통해 데이터베이스에 접근합니다.
DTO를 사용하여 계층 간 데이터를 교환할 수 있고, VO를 사용하여 객체를 정의하고 값을 사용합니다.