Upgrade to Pro — share decks privately, control downloads, hide ads and more …

3일 걸릴 것 같던 구매목록 다운로드는 왜 3주가 걸렸을까?

RIDI
April 11, 2019

3일 걸릴 것 같던 구매목록 다운로드는 왜 3주가 걸렸을까?

RIDI

April 11, 2019
Tweet

More Decks by RIDI

Other Decks in Programming

Transcript

  1. 001 기능 요청 리디북스 - 구매 목록 엑셀 추출 기능

    제가 가지고 있는 책이 약 1000권 정도인데 책이 많아 책의 목록을 한눈에 보고 싶은데 리스트를 엑셀로 다운받을 수 있게 해주실 수 있나요? 특히 패키지로 묶여있는 책들은 세부 목록이 있으면 더욱 좋을 것 같습니다. 북 리스트를 다운받을 수 있는 기능을 만들어주시면 감사하겠습니다^^ 출처 : 서비스 제안
  2. 대략적인 기간 논의 1. DB SELECT 한다 2. 기존 라이브러리를

    사용하여 엑셀 파일을 만든다 3. Response에 파일을 담는다 1. 데이터를 불러온다 2. 엑셀 파일을 만든다 3. 파일을 전달한다 엑셀 다운로드 과정 내가 생각한 과정 002
  3. 004 구체적인 목표 설정 1. 20만 건의 구매 목록을 5분

    안에 엑셀 파일로 다운로드 2. 엑셀 파일에 특정한 정보를 포함 - 구매 일자 - 제목 - 부제목 - 저자 - 출판사 - 카테고리 - 구매 형태 - 만료 일자
  4. 1. DB SELECT 하면 되지 005 실제 개발 프로세스 1.

    데이터를 불러온다 내 생각 구매목록은 샤딩된 DB라 BOOK이랑 조인이 안된다!
  5. 1. DB SELECT 하면 되지 005 실제 개발 프로세스 1.

    데이터를 불러온다 내 생각 구매목록은 샤딩된 DB라 BOOK이랑 조인이 안된다! 2. 샤드된 DB에 book 리소스를 전달해야겠다
  6. 3. 쪼개서 SELECT 해야지 005 실제 개발 프로세스 1. 데이터를

    불러온다 SELECT 도중 구매 목록 변경되면 목록이 이상해지네
  7. 3. 쪼개서 SELECT 해야지 005 실제 개발 프로세스 1. 데이터를

    불러온다 4. isolation level 분리를 위해 transaction 걸어야겠다 SELECT 도중 구매 목록 변경되면 목록이 이상해지네
  8. 1. Resource DB를 샤딩된 DB에 복제 2. 데이터 전파하는 transmitter

    워커 추가 3. 기존에 있던 워커 버그 수정 4. transaction 걸어서 DB SELECT 실제 개발 프로세스 1. 데이터를 불러온다 실제로 하게 된것 005
  9. 1. 기존 라이브러리 사용해야지 005 실제 개발 프로세스 2. 엑셀

    파일을 만든다 내 생각 1만권일때 최대 16초 걸리네! (20만권 기준 5분 초과)
  10. 2. CSV로 만들어야겠다. 005 실제 개발 프로세스 2. 엑셀 파일을

    만든다 내 생각 20만건에 30초안에 된다!
  11. 2. CSV로 만들어야겠다. 005 실제 개발 프로세스 2. 엑셀 파일을

    만든다 내 생각 윈도우에서 인코딩 에러! 20만건에 30초안에 된다!
  12. 3. 다른 라이브러리 사용해야겠다 005 실제 개발 프로세스 2. 엑셀

    파일을 만든다 내 생각 20만건에 100초안에 된다!
  13. 1. 기존 라이브러리 테스트 2. CSV로 테스트 3. 새로운 라이브러리

    사용 실제 개발 프로세스 2. 엑셀 파일을 만든다 실제로 하게 된것 005
  14. 1. 동기적으로 response에 파일을 담아서 줘야지! 005 실제 개발 프로세스

    3. 파일을 전달한다 내 생각 네트워크 유실되거나 페이지 이동시 재시작 해야 되네?
  15. 1. 동기적으로 response에 파일을 담아서 줘야지! 005 실제 개발 프로세스

    3. 파일을 전달한다 내 생각 네트워크 유실되거나 페이지 이동시 재시작 해야 되네? 2. 큐랑 워커를 사용해서 비동기로 처리하고 파일은 S3에 담아둬야겠다
  16. 3. 완료한 후에 메일로 파일 링크를 전송해야지 005 실제 개발

    프로세스 3. 파일을 전달한다 내 생각 메일 늦게 체크해서 만료된 파일 열면 S3에러를 보겠네
  17. 4. 그럼 우리 도메인에 페이지 만들어서 파일관리를 해줘야겠다 005 실제

    개발 프로세스 3. 파일을 전달한다 내 생각 할 게 너무 많아지네
  18. 4. 그럼 우리 도메인에 페이지 만들어서 파일관리를 해줘야겠다 005 실제

    개발 프로세스 3. 파일을 전달한다 내 생각 할 게 너무 많아지네 유저가 모두 이메일 인증이 되어있는게 아니네!?
  19. 4. 그럼 우리 도메인에 페이지 만들어서 파일관리를 해줘야겠다 005 실제

    개발 프로세스 3. 파일을 전달한다 내 생각 할 게 너무 많아지네 유저가 모두 이메일 인증이 되어있는게 아니네!? 5. 메일 포기하자
  20. 1. 생성 요청을 받는 api 개발 2. queue의 진행 상태를

    알려주는 api 개발 3. queue를 꺼내와서 엑셀을 만들고 S3에 추가하는 워커 개발 4. 프론트에서 매초마다 질의 해서 완성되면 다운로드 실제 개발 프로세스 3. 파일을 전달한다 실제로 하게 된것 005
  21. 실제 개발 프로세스 워커 메모리 이슈 구매 목록 정렬 이슈

    잘못된 redis로 인한 속도 감소 엑셀 width 커스텀 이슈 숨김 목록을 다른 시트로 분리하는 기능 추가 구매 목록이 없을 때 다운로드 에러 IE ajax 캐싱 순간 중복 요청 방지 . . . 005
  22. 005 실제 개발 프로세스 워커 메모리 이슈 구매 목록 정렬

    이슈 잘못된 redis로 인한 속도 감소 엑셀 width 커스텀 이슈 숨김 목록을 다른 시트로 분리하는 기능 추가 구매 목록이 없을 때 다운로드 에러 IE ajax 캐싱 순간 중복 요청 방지 . . . 함정 함정 함정 함정 함정 함정 함정 함정 함정 함정 함정
  23. 결론 칭찬 – 구매 목록 숨기기 기능 관련 만족 달팽이의별입니다.

    느낌상 오랜만에 글을 쓰네요. 리디북스에도 숨기기 기능이 추가된 것은 알고들 계시지요? 교보문고, 크레마진영에 이어 리디북스에도 구매목록 숨기기 기능이 생겼습니다. 그리고 엑셀 다운로드도 보입니다. 구매목록 중에서 숨기고 싶은 것을 체크한 다음 [선택 숨기기] 버튼을 클릭하면 됩니다. (중략) 리디북스는 구매 목록에서 책을 숨겨도 이미 다운로드한 책은 지워지지 않습니다. 이게 맘에 드네요. 가족과 공유하기 애매한 책은 구매와 동시에 다운로드 한 후 구매목록에서 숨기면 됩니다. 므흣한 책들은 리디에서 사는 걸로! 즐독하세요. 출처 : 이북카페 (http://café.naver.com/ebook/472609) 006
  24. 결론 칭찬 – 구매 목록 숨기기 기능 관련 만족 달팽이의별입니다.

    느낌상 오랜만에 글을 쓰네요. 리디북스에도 숨기기 기능이 추가된 것은 알고들 계시지요? 교보문고, 크레마진영에 이어 리디북스에도 구매목록 숨기기 기능이 생겼습니다. 그리고 엑셀 다운로드도 보입니다. 구매목록 중에서 숨기고 싶은 것을 체크한 다음 [선택 숨기기] 버튼을 클릭하면 됩니다. (중략) 리디북스는 구매 목록에서 책을 숨겨도 이미 다운로드한 책은 지워지지 않습니다. 이게 맘에 드네요. 가족과 공유하기 애매한 책은 구매와 동시에 다운로드 한 후 구매목록에서 숨기면 됩니다. 므흣한 책들은 리디에서 사는 걸로! 즐독하세요. 출처 : 이북카페 (http://café.naver.com/ebook/472609) 006
  25. 결론 칭찬 – 구매 목록 숨기기 기능 관련 만족 달팽이의별입니다.

    느낌상 오랜만에 글을 쓰네요. 리디북스에도 숨기기 기능이 추가된 것은 알고들 계시지요? 교보문고, 크레마진영에 이어 리디북스에도 구매목록 숨기기 기능이 생겼습니다. 그리고 엑셀 다운로드도 보입니다. 구매목록 중에서 숨기고 싶은 것을 체크한 다음 [선택 숨기기] 버튼을 클릭하면 됩니다. (중략) 리디북스는 구매 목록에서 책을 숨겨도 이미 다운로드한 책은 지워지지 않습니다. 이게 맘에 드네요. 가족과 공유하기 애매한 책은 구매와 동시에 다운로드 한 후 구매목록에서 숨기면 됩니다. 므흣한 책들은 리디에서 사는 걸로! 즐독하세요. 출처 : 이북카페 (http://café.naver.com/ebook/472609) 006
  26. 결론 머나먼 미래에 여러 엑셀이 필요한 기능들을 지원할 수 있으면

    좋겠다. 리디셀렉트 – 검색 기능 및 도서 목록 제공 관련 의견 리디셀렉트 너무 잘 쓰고 있는데요 일일히 검색해야만 알 수 있어서 답답합니다. 신간, 베스트셀러 말고 좀 오래된 도서도 셀렉트에 있는 것 같은데 저는 그런 책들을 찾아보고 싶어요 셀렉트 책 목록을 엑셀 파일로 주실 수 있냐고 문의드렸더니 어렵다고 하셨는데요.. 편리한 확인을 위해서 도서명 저자명 출판사명 등이 포함된 리스트를 제공해주면 좋을 것 같아요... 검색하기엔 너무 불편합니다. 페이지 로딩도 느리구요 리디북스 – 독서노트 일괄 내보내기 해외에서 리디북스로 책을 즐겨보고 있는 학생입니다. 다름이 아니라 저는 책을 읽고나서 독서 일지를 쓰고 있습니다. 아마존에서 굿리즈를 지원하는 것처럼 리디북스에도 독서록 서비스를 제공할 계획이 있나요? 그리고 현재는 에버노트를 이용해 독서노트를 작성하고 있는데 리디북스가 도서에 저장된 독서노트를 한꺼번에 추출할 수 있는 방법이 있나요? 형광펜을 많이 칠하는 편이라 각 독서노트마다 복사해서 붙여넣는 게 너무 시간이 걸리네요. 항상 리디북스 덕에 재밌는 책을 즐겨보고 있습니다. 답장 해주시면 감사하겠습니다. 출처 : 1:1 문의 비고 : 독서노트 한 개의 항목 단위로만 내보내기가 가능함. 특정도서에 남긴 독서노트 일괄 엑셀파일 추출 등과 같은 제안이 종종 접수되고 있음 리디북스 – 카트/위시리스트 엑셀 추출 기능 리디북스는 카트/위시리스트 엑셀 저장기능 지원 안하니? 입문한지 얼마 안돼서 살게 많아서 항상 카트가 정신없거든.. 그래서 주기적으로 엑셀 정리해서 산거 안산거 체크하는데 리디는 엑셀 저장기능 찾아도 안보이네ㅠ 리디만 없나... 내가 놓친건가? 카트에 100개 가까이 있는데 일일히 적기도 귀찮고 어떻게 하니 톨들? 006