[Pre-Onboarding] - 8퍼센트 기술과제 회고

김주현·2021년 12월 12일
0

8퍼센트 과제 정보

  • 원티드x위코드 백엔드 프리온보딩 과제4
  • 기업명 : 8퍼센트
  • 깃허브 링크

db 모델링 설계하기

이번에는 db설계를 할 때 각 컬럼의 타입과 제약을 걸어야할 사항들이 많아 다같이 회의를 하여 db설계를 하였습니다.

데이터타입을 설정할때 각각 칼럼에 따라 적절한 크기를 정하기 위해 varchar타입을 설정하였으며,데이터를 저장할때 메모리를 의도치않게 많이 사용하지 않도록 데이터 크기를 지정해두었습니다.

계좌의잔액은 int형으로 지정하였는데, 해외로 서비스를 확장하거나 소수점이 필요한 상황이 있다면 (확장가능성이 크다고 함)decimal형으로 지정하는 것이 더 용이하다고 들었습니다.

docker를 통한 배포하기

이번에는 AWS와 Docker를 공부하여 제대로 배포해야 겠다는 마음을 먹고 프로젝트에 임하였습니다.

지난 프레시코드 과제에서 도커를 통한 배포를 실패했던 경험이 있기 때문에 여러강의들과 블로그 검색을 통해 도커학습을 하면서 실습도 해보았습니다.

6명의 팀원 중 3명이서 배포를 맡아 각자 공부한 것을 바탕으로 실제 프로젝트에 도커파일을 생성해보고 로컬환경에서 테스트를 해보았습니다. 로컬환경에서 테스트를 통해 정상실행되는지 확인을 하고 최종적으로 도커컨테이너에서의 배포를 무사히 마쳤습니다. 아직 docker에 대한 개념이 확립하지 않은 상태에서 혼자서 실습하였을때는 오류고치는 것도 너무 힘들고 어떻게 docker컨테이너를 생성을 하여 개발환경을 만들어야할지 막막했었다. 하지만 팀원들과 다같이 어려웠던 점들을 공유하고 함께하니 혼자했을때보다 더 빠르게 해결할 수 있었고 그만큼 성공하기까지 오래걸리지 않았다고 느꼈습니다.

1억건의 데이터를 넣어보기

많은 어려움을 겪었던 것 중 하나가 있었는데 바로 1억건의 데이터를 넣어보는 것이었습니다.
1억건의 데이터를 넣어보는 것보다 어떻게 효율적으로 빠르게 데이터를 넣는지에 초점을 맞추어 테스트를 진행했습니다.

첫 테스트에서는 1억건이라도 가깝게 데이터를 넣는 시도를 했습니다. 1억건의 데이터를 모두 집어넣는 것은 노트북 과부화와 엄청난 시간소요(약 18시간)로 인해 실패하였고 5천만건의 데이터까지 넣는것까지 성공했습니다.

문제해결을 위해 database indexing을 활용하고자 하였고 테스트 결과 indexing과 상관없이 limit offset pagination만으로도 조회 성능에는 문제가 되지 않았습니다.

관계형 데이터베이스에서 페이징 성능향상을 하는 방법은 다양하지만 그 중에서 가장 많이 사용하는 방법으로 Cursor pagination방법을 사용한다고 하는데 (limit offset pagination보다 빠르다고함), 시간 상 이 방법을 사용해보지 못한 점이 아쉬웠습니다.

0개의 댓글