향해99

3주차 김종협 코치님 멘토링

dev_0hoon 2024. 7. 2. 23:42
  1. 유저 토큰은 jwt를 사용하지 않고 DB에 테이블을 만들어서 유저의 대기열 대기 순서와 잔여 시간등 정보를 넣고 모든 api에서 사용자 정의 어노테이션을 만들어 유저의 토큰정보가 필요한 모든 api에서 요청일 올때마다 해당 테이블을 조회하여 로직을 수행할 수 있도록 설계를 하려고하는데 이런 방식으로 진행해도 되는지 질문드립니다.
  2. - jwt 써도되긴함
  3. 폴링에 대해 - 10만명 동시 접속 - > insert into 대기열 with status:wait, DB poling -> 1건? 10건? 100건? 리스트 status:proceeding? 으로 바뀌겠지 service에서  -> finish.  ,,
  4. - 대기열에서 예약가능 날짜까지 온다면 피니쉬인데.. db폴링도 괜찮고 스케쥴러도 괜찮다. 
  5. 시퀀스 다이어그램을 그릴 때 API별로 세부적으로 모두 작성하는지 아니면 연관된 API가 묶여있는 하나의 시나리오에 대해서 작성하는지 궁금합니다.
  6. 마일스톤이나 다이어그램을 작성하는데 어떤 프로그램을 사용하는지 궁금합니다. 저의 경우 마일스톤은 구글의 스프레드 시트에서 작성중이고 각 API별 시퀀스 다이어그램은 intellij에서 plantUML 플러그인을 다운받아 프로젝트 내에 파일을 만들어 작업을 하고 있습니다.
  • 정구현
    • 시퀀스 다이어그램을 아래와 같이 작성했습니다. 추가하지 않은 사항은 예외 처리 및 세부 구현사항들인데 이것들도 같이 상세히 시퀀스 다이어그램에 처리해야 되는지 궁금합니다.
    • 대기열 토큰은 UUID, 대기열순서, 대기시간등을 말씀하셨는데, UUID + 대기시간 + 대기열 순서라는 String이 있다고 예를 들면 그것을 암호화하여 디비에 저장해야 할까요? 아니면 암호화가 필요 없을까요?
    /**
    	암호화를 하지 않았다면 다음과같이 일정한 값이 들어와 문자열을 split하여 
    이용하는 방법은 좀 어색할지 의문입니다.
    */
    private String token = "UUID/2024-02-01T00:00:00/5";
    
    // "/"로 split 하여 값을 사용한다.
    
    • 대기열 토큰은 JWT 처럼 모든 API 호출시 검증이 필요한 부분일까요, 아님 티켓 구매시에만 필요할까요
    • 마일스톤은 어떻게 작성해야 할지 궁금합니다. 4주동안 서버구성에 대한 작업을 하는데 각주차에서 어떤 미션이 주어질지 잘 모르겠고, 큰 그림을 그려서 대기열 파트개발은 몇주차에 시작, 예약기능은 몇주차에 시작, 이런식으로 작성을 해야 할까요
      • 노션 타임라인으로 작성해도 될까요?
    • ERD는 다음과 같이 구성해봤습니다. 궁금한것은 하나의 유저가 하나의 티켓만 구매 가능한가요 아님 여러개가 구매 가능한가요.
      • 아래 ERD는 하나의 유저가 여러 티켓을 구입할 수 있도록 만들어논 상태입니다.
  • 이영훈
    1. 시퀀스 다이어그램 작성시에 사용자 → 애플리케이션 → 도메인 → 인프라스트럭쳐 순으로 작성하는게 맞을까요?
    2. 시퀀스 다이어그램 요청시에 애플리케이션→ 도메인 → 인프라스트럭쳐는 각각 요청내용이 다를 수 있을 것 같은데 하나의 큰 요청 처리로 표현하는 것이 젛을까요?
    3. 토큰 인증 부분에서 토큰 생성 후에 대기열 번호를 부여하게 됩니다. 대기순서가 디비에 저장되어있을텐데 이것을 클라이언트에서 폴링을 이용해 업데이트 해줘야할 것인데 폴링을 계속 요청하면 디도스 공격이 되지 않을까합니다. 스케쥴러 등을 이용해서 구현해야할까요?
    4. 대기열 토큰 등록 api에서 토큰과 함께 대기순서, 잔여시간을 함께 발급해야 한다고 나오는데, 그럼 토큰 발급은 예약 등록 혹은 좌석 조회를 눌렀을 때에 발급되어야 하는 것이란 말이 됩니다. api상으로는 2번의 호출이 필요해 보입니다. 그럼 시퀀스 다이어그램은 2개의 api를 따로 그리는 것이 바람직 할까요?
      1. 유저 토큰은 jwt를 사용하지 않고 DB에 테이블을 만들어서 유저의 대기열 대기 순서와 잔여 시간등 정보를 넣고 모든 api에서 사용자 정의 어노테이션을 만들어 유저의 토큰정보가 필요한 모든 api에서 요청일 올때마다 해당 테이블을 조회하여 로직을 수행할 수 있도록 설계를 하려고하는데 이런 방식으로 진행해도 되는지 질문드립니다.
      2. 시퀀스 다이어그램을 그릴 때 API별로 세부적으로 모두 작성하는지 아니면 연관된 API가 묶여있는 하나의 시나리오에 대해서 작성하는지 궁금합니다.
      3. 마일스톤이나 다이어그램을 작성하는데 어떤 프로그램을 사용하는지 궁금합니다. 저의 경우 마일스톤은 구글의 스프레드 시트에서 작성중이고 각 API별 시퀀스 다이어그램은 intellij에서 plantUML 플러그인을 다운받아 프로젝트 내에 파일을 만들어 작업을 하고 있습니다.
      • 정구현
        • 시퀀스 다이어그램을 아래와 같이 작성했습니다. 추가하지 않은 사항은 예외 처리 및 세부 구현사항들인데 이것들도 같이 상세히 시퀀스 다이어그램에 처리해야 되는지 궁금합니다.
        • 대기열 토큰은 UUID, 대기열순서, 대기시간등을 말씀하셨는데, UUID + 대기시간 + 대기열 순서라는 String이 있다고 예를 들면 그것을 암호화하여 디비에 저장해야 할까요? 아니면 암호화가 필요 없을까요?
        /**
        	암호화를 하지 않았다면 다음과같이 일정한 값이 들어와 문자열을 split하여 
        이용하는 방법은 좀 어색할지 의문입니다.
        */
        private String token = "UUID/2024-02-01T00:00:00/5";
        
        // "/"로 split 하여 값을 사용한다.
        
        • 대기열 토큰은 JWT 처럼 모든 API 호출시 검증이 필요한 부분일까요, 아님 티켓 구매시에만 필요할까요
        • 마일스톤은 어떻게 작성해야 할지 궁금합니다. 4주동안 서버구성에 대한 작업을 하는데 각주차에서 어떤 미션이 주어질지 잘 모르겠고, 큰 그림을 그려서 대기열 파트개발은 몇주차에 시작, 예약기능은 몇주차에 시작, 이런식으로 작성을 해야 할까요
          • 노션 타임라인으로 작성해도 될까요?
        • ERD는 다음과 같이 구성해봤습니다. 궁금한것은 하나의 유저가 하나의 티켓만 구매 가능한가요 아님 여러개가 구매 가능한가요.
          • 아래 ERD는 하나의 유저가 여러 티켓을 구입할 수 있도록 만들어논 상태입니다.
      • 이영훈
        1. 시퀀스 다이어그램 작성시에 사용자 → 애플리케이션 → 도메인 → 인프라스트럭쳐 순으로 작성하는게 맞을까요?
        2. 시퀀스 다이어그램 요청시에 애플리케이션→ 도메인 → 인프라스트럭쳐는 각각 요청내용이 다를 수 있을 것 같은데 하나의 큰 요청 처리로 표현하는 것이 젛을까요?
        3. 토큰 인증 부분에서 토큰 생성 후에 대기열 번호를 부여하게 됩니다. 대기순서가 디비에 저장되어있을텐데 이것을 클라이언트에서 폴링을 이용해 업데이트 해줘야할 것인데 폴링을 계속 요청하면 디도스 공격이 되지 않을까합니다. 스케쥴러 등을 이용해서 구현해야할까요?
        4. 대기열 토큰 등록 api에서 토큰과 함께 대기순서, 잔여시간을 함께 발급해야 한다고 나오는데, 그럼 토큰 발급은 예약 등록 혹은 좌석 조회를 눌렀을 때에 발급되어야 하는 것이란 말이 됩니다. api상으로는 2번의 호출이 필요해 보입니다. 그럼 시퀀스 다이어그램은 2개의 api를 따로 그리는 것이 바람직 할까요?

 

 

- 이번주 개념으로 마일스톤을 만들어도됌

- 전체 마일스톤으로 어떤 방식으로 개발할건가만 그리면 된다.

 

현업에서는

github main -운영

github develop - default 개발

git switch develop

git pull origin develop (develop 최신)

git branch feature/milestone-develop  : 이 브런치가 디벨론 최신이다.)

(create feature/milestone-develoop from develop 최신)

git branch (switch)

git add ./commit/push ->

 

github site pr 에서 (from feature/milestone-develop to develop)만들고

 

feature/milestone-develop에서 다시 브랜치를 만들어서

그걸 커밋한다.

 

 

 

from feature to step5

from step 5 to step6