2024.09.11 - [Project] - [예약 대기 시스템] 1. 답답하니까 직접 만들게요
2024.09.12 - [Project] - [예약 대기 시스템] 2. 어드민 시스템 데이터 모델링 (개체-관계 모델, ERD)
이전 포스팅에선 어드민 시스템의 데이터 모델링을 다뤘었습니다.
이번 포스팅에선 본격적인 개발 전 어드민 시스템의 프로젝트 설정을 다뤄보겠습니다.
사용할 기술 스택
- Java 17
- Spring Boot 3 (작성일 기준 3.3.3)
- MySQL 8.0.39 (8.0 버전대에서 bug fix series)
- LTS 버전은 8.4 입니다. 8.0 버전과 다른 점이 여러 가지(8.0과 8.4의 차이점 보기) 있지만 Real MySQL 8.0 책의 내용을 적용해 보기 위해 bug fix 버전 중 마지막 버전인 8.0.39 버전을 사용합니다.
- Docker
k8s 는 어드민 시스템과 예약 시스템 모두 구현되면 사용할 예정입니다.
왜 Docker 를 사용하나요?
jvm 환경만으로도 운영체제와 상관없이 자바 애플리케이션이 동작합니다.
하지만 WAS 같은 애플리케이션은 운영체제뿐만 아니라 DB만 보더라도 DB 버전에 따라 기대하지 않은 동작을 야기할 수 있습니다.
거기다 네트워크 설정 등 복잡한 주변 환경을 제어해야 한다면 동일한 개발 환경을 맞춰야 하기 때문에 불필요한 자원을 소모하게 됩니다.
도커의 컨테이너 기술은 애플리케이션이 구동되는 주변 환경(운영체제, DB 버전, 네트워크 설정 등)을 스냅샷과 같이 이미지화해서 동일한 환경에서 동작하도록 보장할 수 있습니다.
뿐만 아니라, docker hub 와 같은 이미지 저장소를 통해 손쉽게 이미지를 공유하고 컨테이너를 실행하기가 편리합니다.
게다가 나중에 배포할 때 사용할 쿠버네티스까지 활용한다면 컨테이너화된 애플리케이션을 관리하고 배포하기가 한결 수월해집니다.
이러한 이유들로 컨테이너 환경에서 개발하기위 도커를 사용합니다.
의존성
프로젝트의 의존성은 웹 사이트(https://start.spring.io/)에서 이미지를 가져와봤습니다.
- Lombok: 보일러 플레이트 코드를 줄이기 위한 의존성
- Spring Web: RESTful API 서버에 필요한 의존성
- Spring Security: 어드민 계정에 대한 인증/인가를 제어하는데 필요한 의존성
- Spring Data JPA: 객체지향적인 코드 작성, Data 접근 계층의 추상화 등을 도와주는 ORM
- MySQL Driver: MySQL JDBC 드라이버로 MySQL 데이터베이스와 연결을 도와주는 의존성
- Validation: 클라이언트에서 전송한 데이터를 검증하기 위한 의존성
- Spring REST Docs: API 문서 자동화를 위한 의존성
- Swagger 를 사용하지 않는 이유는 프로덕션 코드에 애너테이션을 추가해야 한다는 단점, api 수정 시 동기화가 되지 않는 단점 등 때문에 채택하지 않았습니다.
- Docker Compose Support: Docker Compose 를 사용하기 편리하게 도와주는 의존성
다음 포스팅에선 공통으로 사용되는 도메인을 개발해 보겠습니다.
읽어주셔서 감사합니다.
'Project' 카테고리의 다른 글
[올려올려 라디오] 올려올려 라디오 서비스 개발기 - 2 (2) | 2024.10.08 |
---|---|
[올려올려 라디오] 올려올려 라디오 서비스 개발기 - 1 (4) | 2024.10.07 |
[예약 대기 시스템] 4. 컨테이너 환경에서 테스트하기 (Testcontainers) (5) | 2024.09.16 |
[예약 대기 시스템] 2. 어드민 시스템 데이터 모델링 (개체-관계 모델, ERD) (2) | 2024.09.12 |
[예약 대기 시스템] 1. 답답하니까 직접 만들게요 (2) | 2024.09.11 |