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

채널 생성 방식 개선 #2

Open
devphilip21 opened this issue Jun 21, 2020 · 0 comments
Open

채널 생성 방식 개선 #2

devphilip21 opened this issue Jun 21, 2020 · 0 comments
Assignees
Labels
🙋‍♀️Discussion 제안 또는 논의를 요청할 때 사용하는 라벨

Comments

@devphilip21
Copy link
Member

devphilip21 commented Jun 21, 2020

채널 코드 생성

기존에 논의한 내용 #3

채널 생성에 대한 트랜잭션 보장 문제

현재 서버를 트래픽으로인한 장애 발생 가능성에 따라서 물리적으로 분리했는데, 이 분리의 기준을 잘못 잡았다는 생각이 듭니다.

현재 채널 생성의 프로세스는 다음과 같습니다.

  1. 클라이언트에서 채널 ID 생성
  2. 생성된 채널 ID 를 통해 컨버터 서버로 요청
    (클라이언트에서 Rest 요청으로 슬라이드 포맷을 이미지로 변환하여 S3에 올리는 헤비한 작업)
  3. 채널 ID 와 기타 데이터를 통해 채널에 대한 정보를 생성
    (클라이언트에서 GraphQL 요청으로 DB에 저장)
  4. 채널생성 완료 응답

즉, 2번 프로세스까지 성공하고 3번 프로세스가 실패하면, 전체 채널생성 트랜잭션이 롤백 되어야하는데 거기에 대한 처리가 되어있지 않습니다.

그리고 현재 구조에서 이는 구현이 상당히 까다로워 보입니다.
따라서, DB에 채널 정보를 생성하는 것 또한 컨버터 서버에서 하는 것이 합당해보입니다.

소스코드의 중복

현재 클라이언트 쪽 소스에서, 채널생성에 대한 동일한 코드가 드래그앤 드랍으로 생성할 때와, input 을 통해 생성할 때 각각에 삽입되어있습니다.

이 부분을 공통화해서 관리해야할 것으로 보입니다.

프로그레스 개선

현재 프로그레스를 폴링 방식(요청을 재귀적으로 하는 방식)으로 구현했는데, 컨버팅 시간이 굉장히 긴 슬라이드의 경우 커넥션이 프로그레스 도중 끊어지면서, 제대로 응답이 이뤄지고 있지 않은 이슈가 있습니다. 결국 소켓 통신을 활용하는 것이 좋아보입니다. socket.io 활용 추천

@devphilip21 devphilip21 added the 🙋‍♀️Discussion 제안 또는 논의를 요청할 때 사용하는 라벨 label Jun 21, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🙋‍♀️Discussion 제안 또는 논의를 요청할 때 사용하는 라벨
Projects
None yet
Development

No branches or pull requests

4 participants