타운광장토픽게시판

전체 글 수 100만개 이상, 타임라인으로 구현한 통합게시판 글 수 50만개 이상인 중대형 커뮤니티에서

  • 기존 타임라인 모듈 사용시 평균 로딩시간 1.15초
  • 타임라인 Plus 모듈 사용시 평균 로딩시간 0.25초

페이지 로딩속도(TTFB)와 서버 부하가 4배 이상 개선되었습니다.

 

글 수가 몇만 개 이하이거나, 기간제한을 두어서 통합게시판 글 수를 줄여놓은 사이트라면 체감속도 차이가 거의 없을 것입니다. 그러나 모아놓은 글 수가 많은 사이트라면 차이가 확 느껴집니다. 지금까지 성능 관련해서 특정 모듈을 추천해본 적이 없는데, 서버기술자 입장에서 이건 신세계예요. 애매한 시간에 서버 터졌다고 갑자기 연락오는 빈도도 줄어들 것 같습니다. 서버 튜닝 문의하시는 분들께 강추해야겠네요.

 

코어에서 캐시 기능을 제공한 지 한참 되었는데 아직도 이것을 적절히 활용하지 못해서 불필요하게 느리게 동작하는 자료들이 무척 많습니다. 특히 애드온 쪽은 거의 캐시의 불모지라고 봐도 될 정도... 자료 제작자분들 모두 하루씩이라도 시간을 내어 캐시 알고리즘을 공부해보시면 좋겠습니다. 적절한 시점에(예: 모듈 설정이 변경되었을 때) 캐시 갱신만 잘 해주면 사실상 공짜로 몇 배의 성능을 얻을 수 있으니까요. 접속자수가 많은 대형 사이트에 자료를 판매하고 싶다면 캐시 활용은 필수입니다.

 

글쓴이 기진곰

profile
GitHub 아이디는 @kijin입니다. 사람을 위한 인터넷 생태계의 발전과 웹 보안에 많은 관심을 가지고 있습니다.
우리가 만들어 가는 XE의 새 이름, 라이믹스(Rhymix) 프로젝트에 참여하고 있습니다.
오픈소스 도로명주소 검색서버 및 API Postcodify를 개발, 운영하고 있습니다.
국내외 서버 및 클라우드서버 세팅, 이전, 튜닝해 드립니다.
  • profile
    이번 타임라인Plus 모듈의 핵심적인 기능이 아마 캐싱활용 및 불필요한 쿼리부분을 개선하는것이 가장컸죠.

    기존 원래 게시판의 게시글을 가져오고난뒤, 타임라인에서 다시 쿼리하여 덮어씌우는 방식을 트리거를 활용하여 한번 쿼리하도록 수정한 뒤, 그 다음 제일 악질쿼리를 미리 캐싱해두는 기술을 사용한거죠 ㅎㅎ

    그래서 대형사이트일수록 이런 기능을 사용하기가 까다로웠을텐데 제 모듈이 도움이 되기를 희망하고 있습니다 :)
  • profile
    라이믹스 2.0의 통합게시판 기능 + 슈퍼캐시의 게시판 캐시 가 같은 효과를 낼 수 있겠죠?
  • profile profile
    슈퍼캐시에서는 아마 타임라인으로 인해 캐싱에서 제외됩니다.

    하지만 슈퍼캐시의 핵심 캐싱을 타임라인에서 처리합니다.

    쿼리숫자가 슈퍼캐시는 0이라면 타임라인은 1일뿐이고, 이 쿼리는 아무리 쿼리해도 부하도가 그렇게 부담가지 않습니다.

    따라서 저 위의 속도가 가능한것입니다.
  • profile profile
    타임라인이아닌 라이믹스 코어의 글 모으기 기능이요.
  • profile profile
    아하 ㅋㅋㅋ 죄송합니다.
    라이믹스 코어 글모으기 쓰시더라도 슈퍼캐시에서 저장된 항목을 캐싱해주니 아마 똑같은 효과가 나올겁니다 ㅎ
  • profile profile
    네, 간단하게 통합게시판으로만 쓰고 싶은 분은 라이믹스 내장 기능을 쓰시면 되고, 좀더 복잡한 조건으로 베스트 게시판을 만들고 싶은 분은 유료 모듈을 사용하면 될 것 같습니다. 라이믹스 입장에서도 통합게시판 관련하여 feature request가 너무 빗발치면 난감하거든요.
  • profile profile
    네. 단순 통합게시판 기능으로 라이믹스 2.0 기능이 훌륭한거 같네요.
    조건을 걸어야 하는 부분에 타임라인에서 좀더 맡아주면 좋겠어요.
  • profile profile
    추가 조건부로는 or까지는 지원할 것 같습니다.

    and or 썩어서 하는건 쿼리상으로 유지보수가 안될것 같고요.

    and절, or절 묶어서 따로 관리하는 정도는 될것 같네요 ㅎㅎ
  • profile profile
    네. 지금 인기글 조건이 OR가 안되서 추천수, 조회수 둘 중 하나를 선택해야 해서 굉장히 이상한 조건이라 애매해서 그 기능이 절실하긴 합니다. 나중에 업데이트 되면 베스트,인기글은 타임라인모듈을 쓰게 될겁니다. 안정화 되면 살펴봐주세요.
  • profile profile
    네 알겠습니다 :)
  • profile
    오호,, 의뢰를 통해 타임라인 모듈에 캐싱을 사용하긴 하는데 새로 나온 모듈이 getDocumentList를 지원한다는건 상당히 구미가 당기네요..
  • profile profile

    문제되는 핵심 쿼리만 따로 캐싱하고 게시판은 항상 쿼리합니다.
    따라서 성능은 문제을 해결하고 기능도 똑같이 사용할 수 있는것이죠 ㅎㅎ

  • profile profile
    다만 현재 타임라인 모듈 게시판 글들이 위젯에도 나오게 처리해둔 상태라 조금만 더 정리 후에 새로운 모듈로 가봐야겠네요ㅎㅎㅎ...
    현재 타임라인을 지정한 게시판의 글이 17만개를 넘겼는데 점점 버티기 힘들만한 상태가 올 것 같긴 하기에 결정을 할 때가 다가오긴 할 것 같긴 합니다
  • profile profile
    56만개 커뮤니티에서 저도 직접 테스트해보니 진짜 기존보다 훨신 빨라지긴 했습니다...

    저도 만들어놓고 뭔짓한거냐고 외쳣다니까요...ㅋㅋㅋ
  • profile
    글이 50만개라니....
    저정도는 되야 중형에 들어가는군요~~^^
    전 이제야 메뉴 대~~충 만들고 샘플 글들 몇개씩 올리는 상태니~~~