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

앱 버전 관리 기능 구현 #72

Merged
merged 35 commits into from
Oct 27, 2023
Merged

앱 버전 관리 기능 구현 #72

merged 35 commits into from
Oct 27, 2023

Conversation

GIVEN53
Copy link
Member

@GIVEN53 GIVEN53 commented Oct 27, 2023

Changes 📝

  • 앱 버전 api

Details 🌼

버전 정보

설계에 있어 두 가지의 고민이 있었습니다

  1. 버전 정보를 추가할 때 기존의 버전 정보를 업데이트해서 테이블에 하나의 row만 남게 한다.
    • 조회 쿼리 1번, 업데이트 쿼리 1번 발생
    • 버전 정보를 조회할 경우 O(1) 소요
    • 사용자가 앱에 접속할 때마다 조회하므로 캐싱 필요
  2. 업데이트하지 않고 row를 추가한다.
    • 삽입 쿼리 1번 발생
    • PK를 created_at으로 설정하여 버전 정보를 조회할 때 O(1) 소요 (PK는 정렬되어 있고, 조회할 때 가장 최근에 저장된 row를 조회)
    • 사용자가 앱에 접속할 때마다 조회하므로 캐싱 필요
    • 버전 히스토리 추적 가능

두 상황 간의 트레이드 오프는 크게 없다고 판단했고 버전 히스토리를 추적할 필요가 있을 수 있다고 생각해서 두 번째를 선택했습니다

버전 추가는 쿼카의 요청사항을 반영해서 로그인없이 api 호출, body의 key와 server에서 정의한 key를 비교해서 일치할 경우 저장합니다.

schema.sql

main/resource/schema-dev.sql을 수정하면 test/resource/schema.sql도 똑같이 수정해야 했습니다
따라서 symbolic link를 설정해서 main/resource/schema-dev.sql을 수정할 경우 자동으로 test/resource/schema.sql에 반영되도록 변경했습니다

main/resource/schema-dev.sql을 수정했을 경우 command + s로 저장하면 test/resource/schema.sql에 반영됩니다

Check List ☑️

  • 테스트 코드를 통과했다.
  • merge할 브랜치의 위치를 확인했다. (main ❌)
  • Assignee를 지정했다.
  • Label을 지정했다.

@GIVEN53 GIVEN53 added test 테스트 feature 기능 labels Oct 27, 2023
@GIVEN53 GIVEN53 self-assigned this Oct 27, 2023
@coniverse-github-app

This comment has been minimized.

@coniverse-github-app
Copy link

Passed

Analysis Details

0 Issues

  • Bug 0 Bugs
  • Vulnerability 0 Vulnerabilities
  • Code Smell 0 Code Smells

Coverage and Duplications

  • Coverage 100.00% Coverage (97.00% Estimated after merge)
  • Duplications 0.00% Duplicated Code (0.80% Estimated after merge)

Project ID: co-niverse_dangjang-backend_AYj2jZJELehUZAlqDvRk

View in SonarQube

* @author TEO
* @since 1.3.0
*/
public record VersionResponse<T>(String minVersion, String latestVersion, @JsonInclude(JsonInclude.Include.NON_NULL) List<T> loadData) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

loadData가 어디서 쓰이는지 궁금해요 !

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

intro 때 클라이언트에서 미리 로드할 데이터들을 넘기기 위한 필드에요 1.0.0 버전 때부터 존재했던거 였는데 앞으로도 계속 쓰이지 않을 경우 삭제하도록 하겠습니당

@13wjdgk
Copy link
Contributor

13wjdgk commented Oct 27, 2023

수고하셨습니다 ~

@GIVEN53 GIVEN53 merged commit 4ccf625 into dev Oct 27, 2023
1 check passed
@GIVEN53 GIVEN53 deleted the feat/version branch November 6, 2023 06:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature 기능 test 테스트
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants