포스트

(Url 단축 - 2) 요구 사항 고민

프로젝트의 요구 사항을 정리해보기


1. 요구 사항

요구 사항을 정해보자.

  • SSR(타임 리프로 구현)
    • 메인 페이지에서 바로 URL을 입력할 수 있는 폼
    • 단축 URL에 대한 상세 정보를 볼 수 있는 페이지
      • 예: 생성된 날짜, 단축 URL 사용 횟수, 원본 URL
  • HTTP API도 제공한다
  • 원본 URL에 대한 단축 URL을 제공한다
  • 단축 URL에 대한 상세 정보를 제공한다
  • 동일한 URL에 대해서도 다른 숏코드가 존재할 수 있다
  • 단축 URL 사용 횟수 기록



2. 기술 스택

다음의 기술 스택을 사용할 예정이다.

  • Java 17

  • Spring Boot 3.3.1
  • JPA(Hibernate)
  • Junit5
  • Thymeleaf
  • Lombok
  • H2 2.2.224



3. 서비스 제공의 흐름

사용하기로 구현 방법을 다시 살펴보자.

  • 프로젝트에서는 해시값을 Base62 인코딩해서 앞 7자를 잘라서 사용하는 방식으로 구현할 것이다.
  • 중복 숏코드를 처리하는 로직은 해시 충돌 때문에 중복이 되든, 같은 원본 URL이 이미 존재해서 중복이 되든 솔트를 추가해서 숏코드를 다시 생성하는 방식으로 처리할 것이다.


sc4



4. 고민

경험이 없으니 이것이 제대로 된 설계인지 아직 감이 안잡힌다.

  • 단순히 값만 조회하는 로직은 서비스 계층 없이 그냥 바로 레포지토리 계층에서 호출해도 될지 고민된다


일단 개발을 시작하고, 차차 바꿔나갈 생각이다.

다음 포스트에서는 개발 도중 생겨난 이슈의 트러블슈팅을 다룰 예정이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.

Comments powered by Disqus.