목록development/개발 일기 (4)
PMPV
또 다시 데이터가 늘었다. Factory boy를 사용해 400만 건 이상의 Post, 마찬가지로 수백만 건 이상의 Comment, Like를 추가하는데 30시간 이상이 걸렸다. 뭔가 이것도 실행 시간을 줄일 방법이 있지 않을까 싶다. 목표치였던 1억건의 Post는 현실적으로 불가능할 것 같아서 현재 데이터로 만족하기로 했다. 앞으로 데이터가 더 늘어날 일은 없을 듯 하다. 추가적으로 예상과 다르게 3번까지 늘어난 글을 보면서 나중에 불필요한 부분을 덜어내고 한 편의 글로 정리해야겠다는 생각을 했다. 우선 현 상황에 대해 다시 작성한다. 생각보다 쿼리 타임은 크게 늘어난 것 같지 않다. 대신 페이지네이션 부분에서 로드가 커졌다. 3번째 줄에 나타난 쿼리는 아래와 같다. 페이지네이션은 구글 검색을 통해 가..
당황스러운 결과가 나왔다. 코드를 뜯어 고치기 위해 레포를 새로 팠고, 데이터를 조금 추가했다. Post는 17만, Comment는 93만, Like는 170만, User는 280만 정도가 된다. 이전 포스팅에서 300ms 정도로 측정되던 속도가 1초 가량으로 올라갔다. 데이터의 양에 많은 영향을 받는다는 것을 확인할 수 있고, 데이터의 양이 이보다 훨씬 늘어난다면 (Post가 1억개 이상, Like는 30억개 이상) 더 많은 부하가 걸릴 것이라는 느낌이 들었다. 아무튼, 쿼리 요청을 처음부터 재설계하다가 확인한 부분인데.. 가장 기초가 되는 쿼리이다. SELECT * FROM "board_post" 형식. 여기에 N+1을 방지하기 위해 base_user 테이블의 정보를 select related 메서드..
2019.12.29, 현재 작성 중인 글입니다. 계속 업데이트될 예정입니다. 기초적인 웹 게시판을 만들었다. 포스트 테이블을 기반으로 User, Like, Comment, Hitcount 등의 기능이 있는 가장 기초적이고 보편적인 형태의 BBS이다. ERD를 보자. Comment와 Like는 Post 테이블 뿐만 아니라 다른 테이블도 범용적으로 바라볼 수 있는 FK를 가져야 한다. 따라서 장고의 Generic Relation을 사용했다. Content Type 테이블에는 장고 프로젝트의 모든 앱과 모델의 정보가 저장되어 있다. Generic Relation은 타겟이 되는 객체의 Content Type과 Object id를 저장해 해당 객체가 어떤 객체를 참조하는지 알 수 있다. 구현하고 싶은 비주얼은 아..
오랜만에 티스토리에 글을 작성한다. 지금 나는 멋사를 퇴사한 후 오랜 시간 생각 정리라는 핑계로 늘어지게 놀고 다시 구직 활동을 하고 있다. 구직 활동을 진행하며 포트폴리오의 필요성을 다시 한 번 느끼게 되었고, 통상적인 10장 내외의 pdf 파일로는 개발 이력을 모두 담아내기 어렵다는 것 또한 느끼고 있다. 이를 개선하기 위해 오랜만에 블로그를 다시 찾았고 개발 일기의 목적은 두 가지다. 1) 포트폴리오에 소개될 프로젝트의 A to Z 2) 개발 학습 복기 간단한 이미지와 기술 스택 소개로는 개발자로서 자기 PR에 무리가 있다고 생각한다. 여기에는 어떤 과정을 통해서 프로젝트가 진행되었고 어떤 경험을 얻었는지에 대해 최대한 자세하게 서술할 예정이다. 또한 정말정말 간단한 메서드나 프레임워크의 구조에 대..