ajax를 기반으로 한 페이스북, 트위터 같은 소셜 게시판을 제작하고 있습니다.

 

페이스북이나 트위터는 실시간으로 새로고침이 되는 것 같은데, 

 

ajax로 충분히 이들과 흡사하게 구현할 수 있을까요?

  • ?
    예전에 pjaxboard라고 새로고침 안해도 댓글이나 추천수가 자동으로 갱신되는 게시판 모듈이 있었는데 ajax로도 가능할 것 같습니다
  • profile

    ajax로도 실시간 업데이트를 얼마든지 구현할 수 있지요. 접속자가 늘어날수록 서버 부하가 기하급수적으로 늘어나서 아주 작은 사이트 외에는 실제로 활용하기가 어려울 뿐...

  • profile ?
    트래픽 4TB 정도는 과부하 심할까요?
  • ? profile

    트래픽이 몇 테라인지는 중요하지 않습니다. 움짤 첨부파일 10테라를 전송하는 것보다 HTML 페이지 10기가를 전송하는 것이 훨씬 많은 부하를 일으킬 수도 있습니다.

    이렇게 생각하시면 됩니다. 일반적인 사용자들은 평균 30초에 한 번씩 새 글을 읽거나 댓글을 쓰는 등 서버에 어떤 작업을 요청하는데, ajax 실시간 기능을 사용하면 5초에 한 번씩 서버에 업데이트를 요청한다고 가정해 보아요. 100명이 30초에 한 번씩 작업을 요청한다면 1분에 200개만 처리해 주면 됩니다. 100명이 5초에 한 번씩 작업을 요청한다면 1분에 1200개를 처리해 줘야 합니다. 단순히 계산해도 서버 부하가 6배로 늘어나겠지요? 게다가 다른 탭에 사이트를 띄워놓고 딴짓하는 사이에도 일정한 주기로 계속 서버에 접속할 테니, 실제 부하는 10배, 20배로 늘어날 수도 있습니다.

     

    실시간 새글 알림이라는 모듈이 이미 오래 전부터 있었습니다. 체크 주기를 1~2분 정도로 해놓으면 그나마 괜찮은데, 동접수가 100명쯤 되는 사이트에서 체크 주기를 몇 초 단위로 했다가는... 그 기능 켜는 순간 서버 다운됩니다.

  • profile ?
    페이스북의 경우에는 체크 주기가 몇 초라고 보면 좋을까요? 사실 완벽히 100% 실시간은 아니고, 50%정도 실시간인 것 같더군요.
  • profile ?
    새로 게시글이 등록되거나 추천이 발생하거나 할 때만 서버에서 클라이언트로 통신하면 부하가 적지않을까요?

    일일히 주기적으로 통신해야할 필요가 있나요 (기술적으로 모르기에..)
  • ? profile
    대부분의 대형 사이트는 일정 주기로 체크하는 게 아니로 웹소켓(node.js)으로 구현합니다.
  • ? profile

    새로 글이 등록되거나 추천이 발생했는지 클라이언트가 어떻게 알죠? 서버에 물어봐야 알죠.

    웹소켓(node.js) 등 다른 기술을 사용하지 않는다면 클라이언트가 물어보지도 않은 정보를 서버에서 임의로 보내줄 수 없습니다. 일반 ajax라면 주기적으로 물어보는 수밖에 없지요.

  • profile ?
    소켓 통신이 ㅠㅠㅠ 구현이 참 어려워서... 일단 임시로 ajax로 하려해요. 아직 커뮤니티 초창기구요.