Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[4기 신재윤] Shorten URL 과제 제출입니다. #55

Open
wants to merge 14 commits into
base: Shin-Jae-Yoon
Choose a base branch
from

Conversation

Shin-Jae-Yoon
Copy link

@Shin-Jae-Yoon Shin-Jae-Yoon commented Oct 11, 2023

📌 과제 설명

  • URL 단축 기능을 개발하는 과제
  • 기본적으로 Base62 인코딩 방법 이용

👩‍💻 요구 사항과 구현 내용

  • URL 입력폼 제공 및 결과 출력
  • URL Shortening Key는 8 Character 이내로 생성
  • 단축된 URL 요청시 원래 URL로 리다이렉트
  • 단축된 URL에 대한 요청 수 정보저장 (optional)
  • Shortening Key를 생성하는 알고리즘 2개 이상 제공하며 애플리케이션 실행중 동적으로 변경 가능 (optional)

✅ PR 포인트

  • 많은 데이터가 저장될 것으로 예상되어, 추후, NoSQL과 같은 DB로 변경할 가능성이 있다고 생각했습니다. 따라서, Repository 단을 추상화 하였습니다.
  • 이 과정에서 Entity가 JPA에 의존하고 있었기에, 도메인 Entity와 JPA Entity를 따로 두게 되었습니다.
  • Repository 인터페이스가 저수준에 있을 때, 여전히 고수준인 서비스가 저수준을 의존하고 있기에 DIP를 적용시켜서 서비스 계층으로 끌어올렸습니다.
  • 최종적으로, 서비스 계층에 Repository 인터페이스, 인프라 계층에 RepositoryImpl, JpaRepository가 위치하게 되었습니다.

✅ 궁금한 점

  • 나누고 나서 보니, JPA에 의존하지 않는 설계로 구성하여 신기했지만, 과연 이렇게까지 추상화를 할 필요가 있을까 생각되었습니다. 예를 들어, JPA의 장점인 변경감지를 이용하지 못하여 어쩔 수 없이 쿼리를 한 번 더 날리는 경우가 존재했습니다.
  • 만약 DB를 변경해야 할 일이 있다면, 그때 가서 리팩토링 하는 것이 나을 지, 미리 추상화하는 것이 나을 지 궁금점이 생겼습니다.

💻 시연 영상

2023-10-11.8.38.21.mov

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant