Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 항해99후기
- java기본자료형
- 격파르타장점
- 코딩부트캠프후기
- java set 출력
- java참조자료형
- java알고리즘
- java list 저장
- java map 출력
- 격파르타합격후기
- 프로그래머스제일작은수
- javaJRE
- java list 출력
- java최솟값구하기
- 격파르타비전공자
- 작은수제거하기
- java 자료구조 활용
- 컴파일
- java map
- sqld자격증합격
- 항해15기
- 인터프린터언어
- java map 저장
- 격파르타후기
- 노베이스부트캠프
- java set 저장
- 비전공자sqld
- 프로그래머스
- javaJVM
- java알고리즘문제풀이
Archives
- Today
- Total
코딩과 결혼합니다
[영화 예매 웹사이트] 시스템 아키텍처 설계 본문
728x90
1. 개요 (Overview)
프로젝트 이름: 영화 예매 서비스
목적: 사용자가 영화를 예매하고, 상영 정보를 조회할 수 있는 웹 애플리케이션을 개발합니다.
아키텍처 선택 이유:
- 모놀리식 아키텍처 기반의 클라이언트-서버 아키텍처
- 모든 기능이 하나의 프로젝트에서 관리되어 혼자 개발하는 프로젝트에 적합
- Spring Boot와 JSP를 사용하여 신속하게 개발할 수 있으며, RESTful API를 통해 클라이언트와 서버 간의 통신을 구현
2. 요구사항 (Requirements)
기능적 요구사항:
- 사용자 등록 및 로그인
- 영화 목록/상세 조회
- 영화 예매
- 예매 내역 조회
- 예매 취소
비기능적 요구사항:
- 성능: 1초 이내의 응답 시간
- 보안: 사용자 인증 및 권한 관리
- 확장성: 추후 기능 추가를 고려한 구조
3. 시스템 아키텍처 (System Architecture)
구성 요소:
- 클라이언트 (Thymeleaf): 사용자 인터페이스 제공
- 서버 (Spring Boot): 비즈니스 로직 처리
- 데이터베이스 (MySQL, H2): 데이터 저장 및 관리
4. 구성 요소 설명 (Component Description)
클라이언트 ( Thymeleaf ):
- HTML, CSS, JavaScript를 사용하여 UI 구성
- 사용자가 입력한 데이터를 서버로 전달
서버 (Spring Boot):
- Spring MVC: 클라이언트 요청 처리
- Spring Data JPA: 데이터베이스 접근
- Spring Security: 사용자 인증 및 권한 관리
데이터베이스(H2, MySQL):
단위 테스트 (H2)
- 목적: 코드의 개별 단위(메서드, 클래스 등)가 예상대로 동작하는지 검증.
- 특징:
- 빠르게 실행되어야 함.
- 독립적이어야 하며, 외부 시스템(MySQL 등)에 의존하지 않아야 함.
- 데이터베이스: 인메모리 데이터베이스(H2)를 사용하여 빠르고 독립적인 테스트 수행.
- H2는 경량화된 데이터베이스이며, 라이브러리 형태로 제공. 따라서 프로젝트에 쉽게 포함시킬 수 있고, 별도의 설치 과정 없이 사용할 수 있다.
통합 테스트 (MySQL)
- 목적: POSTMAN으로 API 통합테스트. 여러 구성 요소들이 함께 작동하는지 검증.
- 특징:
- 실제 환경과 유사한 조건에서 테스트를 수행.
- 외부 시스템(MySQL, 실제 API 등)에 대한 의존성을 포함.
- 데이터베이스: 실제 운영 환경과 유사한 MySQL을 사용하여 테스트.
- MySQL은 오픈 소스 데이터베이스 관리 시스템으로, 무료로 이용할 수 있다. 또한 매우 널리 사용되는 DB로 관련 문서, 자료, 커뮤니티 지원이 풍부하며, 문제 발생 시 해결하기 쉽다. 이전부터 사용해 오던 거라 익숙하다.
5. 데이터베이스 설계 (Database Design)
엔티티 관계 다이어그램 (ERD):
주요 엔티티:

6. 인터페이스 설명 (Interface Description)
RESTful API:
- GET /api/movies: 영화 목록 조회
- POST /api/reservations: 영화 예매
- GET /api/reservations/{id}: 예매 정보 조회
7. 보안 (Security)
요구사항:
- 모든 API 요청은 인증된 사용자만 접근 가능해야 합니다.
- 사용자의 비밀번호는 해시 알고리즘을 사용하여 안전하게 저장되어야 합니다.
적용된 보안 메커니즘:
- Spring Security를 활용하여 API 요청의 인증 및 권한 관리 구현
- 비밀번호는 해시 알고리즘을 사용하여 저장 사용자의 비밀번호를 안전한 방식으로 저장하여 보안을 강화
- JWT(토큰 기반 인증)을 활용하여 사용자에게 보안 토큰을 부여하고, 인증된 사용자만이 API에 접근
- JWT 토큰의 만료 시간을 설정하여 토큰의 유효 기간을 제한
- 사용자가 로그인한 후에는 JWT 토큰과 함께 리프레시 토큰을 발급하고, JWT 토큰의 유효 기간이 만료되었을 때에는 리프레시 토큰을 사용하여 새로운 JWT 토큰 발급. 이를 통해 보다 안전한 인증을 유지하고, 사용자 경험을 향상
8. 배포 및 운영 (Deployment and Operations)
배포 전략:
- 로컬 서버에서 구동(배포 X)
- Spring Boot의 내장 Tomcat을 사용하여 간편하게 실행
운영 및 유지보수:
- 로컬 개발 환경에서 테스트
문서 작성 도구
- 다이어그램 도구: Draw.io, erd cloud 등
- 프로젝트 관리 도구: Jira 등
'코딩과 매일매일♥ > 영화예매' 카테고리의 다른 글
| [영화 예매 웹사이트] Figma로 웹페이지 구상하기 (0) | 2024.06.11 |
|---|---|
| [영화 예매 웹사이트] API 문서 작성 (0) | 2024.06.09 |
| [영화 예매 웹사이트] Jira 사용법 숙지 + 적용 (0) | 2024.06.08 |
| [영화 예매 웹사이트] ERD (0) | 2024.06.04 |
| [영화 예매 웹사이트] 클래스 다이어그램 (0) | 2024.05.28 |