Skip to content

taeik21/Book_Keeper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📚 Book Keeper (도서 관리 시스템 API 서버)

Spring Data JPA를 활용해 생상성을 극대화하고, 클라우드 환경에 직접 백그라운드 배포를 이룬 도서 관리 API 서버입니다.

🛠 Tech Stack

  • Language: Java
  • Framework: Spring Boot
  • Database: MySQL
  • Infrastructure: AWS EC2, Linux

💡 Key Features

1. 도서 관리 (CRUD) 및 비즈니스 로직 구현

  • API 설계: 클라이언트의 요청에 맞춘 GET / POST 메서드 기반의 API 규격 설계
  • 기능 구현: 도서 정보 생성, 대출 상태 기록, 도서 반납 기능 통합 구현
  • 예외 처리: 잘못된 API 요청이나 데이터베이스 접근 에러 등 예외 상황에 대비한 안정적인 Exception Handling 로직 적용

2. 데이터베이스 조작 및 연관관계 매핑

  • 데이터 관리: MySQL을 연동하여 영구적인 데이터 저장소 구축
  • 엔티티 매핑: 도서와 대출 기록 간의 비즈니스 요구사항을 반영하여 객체 간의 연관관계를 설정하고, 효율적인 데이터 조회를 위한 옵션 최적화

☁️ Infrastructure & Deployment

1. 클라우드 환경 세팅 및 백그라운드 배포

  • AWS EC2 셋업: AWS EC2 인스턴스를 대여하여 리눅스 기반의 클라우드 서버 환경 구축
  • 환경 분리: 코드 수정 없이 Profile 설정을 통해 로컬 개발 환경과 배포 환경의 DB 접속 정보를 제어
  • 무중단 운영: 터미널 접속이 끊어져도 서버가 계속 동작할 수 있도록 Background 실행 모드 적용

2. 도메인 및 네트워크 설정

  • 사용자가 복잡한 IP 주소 대신 직관적인 도메인 이름으로 API 서버에 접근할 수 있도록 네트워크 및 DNS 설정 완료

Technical Decisions & Troubleshooting

1. Spring Data JPA를 통한 반복 코드 제거

순수 JPA나 SQL을 작성할 때 발생하는 반복적인 CRUD 코드를 JpaRepository 인터페이스를 통해 단축했습니다.

2. 관심사의 분리와 스프링 컨테이너를 활용한 아키텍처 개선

  • 문제: 초기 Controller에 모든 비즈니스 로직과 데이터 접근 로직이 혼재되어 유지보수가 어려움.
  • 해결: 스프링 컨테이너와 빈(Bean)의 동작 원리를 기반으로 코드를 리팩토링함. Presentation(Controller) - Business(Service) - Data Access(Repository) 계층으로 역할을 명확히 분리하여 결합도를 낮추고 응집도를 높인 좋은 코드 구조 확립.

3. 응답 스펙을 위한 DTO 분리

  • 문제: 엔티티를 직접 API 응답으로 반환할 경우, 엔티티 구조가 변경되면 API 스펙 또한 변동되어 유지보수가 힘들어집니다.
  • 해결: 컨트롤러 계층과 서비스 계층 사이에 DTO 패턴을 도입했습니다. API가 요구하는 데이터만 담아 반환함으로써 엔티티를 보호하고 응답 스펙의 독립성을 보장했습니다.

4. 실제 서비스 배포 경험

localhost에서만 동작하던 애플리케이션을 외부 사용자가 24시간 접속할 수 있도록 구성했습니다. 가비아를 통해 도메인을 구입하고, AWS EC2 인스턴스에 백그라운드 실행 방식으로 서버를 배포하였습니다.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors