작은 실험.
최근 코딩 프로젝트에서 불러오는 피드가 많아지면서 페이지 로딩 속도가 느려졌다. 페이지 첫머리에 무조건 피드를 불러오고 데이터베이스에 입력하는 스크립트를 넣어놓고 있었으니 당연한 일이다. 사실 '대개의 사용자에게' 페이지 로딩을 빠르게 하는 법은 전부터 생각하고 있었지만, 안하고 있다가 이번에 스크립트 처리 속도가 2초를 넘어가는 걸 보고 마침내 실행에 옮겼다.
해결책은 꽤 간단하다. 모든 사용자의 접속 때마다 피드를 불러오고 처리하는 게 아니라, 피드 처리 링크를 따로 달아서 피드 업데이트를 자동화 대신 수동화하는 거다. 대부분의 사용자는 피드 처리를 거칠 필요가 없고, '새로운 기사 불러오기' 링크를 클릭하는 사용자만 1~2초 로딩 시간을 들여 피드를 불러오고 데이터베이스에 입력하는 스크립트를 발동하면 된다. 덕분에 페이지가 많이 가벼워져서, 스크립트 처리 속도는 2초를 넘는 수준에서 다시 0.6~0.8초 수준으로 떨어졌다.
사용자 전체로 보면 이쪽이 더 효율이 높은 것은 당연하다. 2초, 0.6초는 서버에서 스크립트를 처리하는 시간 얘기고 브라우저에서 서버에 페이지를 요청하고 사용자에게 보이도록 화면에 표시하는 시간은 또 따로 있다. 따라서 모든 사용자가 페이지에 들어올 때마다 그 몇 초를 허비하는 게 없어졌으니 시간 면에서도, 서버 부담 면에서도 절약한 것은 적지 않다.
다만, 전에 망설였던 것은 이게 전체 사용자로 보면 시간을 많이 절약해주는 대신 새 기사가 나왔는지 확인하려는 사용자에게 링크를 클릭하는 약간의 노력과 몇 초의 로딩 시간을 요구한다는 점이다. 즉, 페이지에 들어오는 모든 사용자에게 요구했던 1.2~1.4초의 시간을 하루에 한두 명의 사용자에게 전가한 셈이 된다.
그게 내게는 이 문제의 흥미로운 점이다. 전체적인 절약은 큰데, 어차피 이전의 낭비야 (나만 빼고) 별로 의식하지 않았던 반면, 새로 기사가 있나 확인하려고 링크를 클릭하는 사용자는 클릭하는 수고와 추가 로딩 시간을 의식할 수밖에 없다. 그래서 과연 시간 절약을 사람들이 체감할까, 차라리 다같이 시간을 조금씩 더 낭비하면서도 아무도 의식하지 못하는 편이 체감 면에서는 더 효율적이지 않을까 싶다. (비록 그 체감이 거짓이기는 하지만.)
이게 어떻게 보면 상당수의 정책이나 체계의 역설이기도 하지 않나 싶다. 전체의 부담을 소수에게 옮겨서 집단 전체의 효용은 큰데, 그 효용의 수혜자는 좋아진 걸 별로 의식하지 못하고 부담이 생긴 소수는 자신에게 생긴 새로운 부담을 의식하는. 비유하자면 자유무역이 그렇다. 사회 전체적으로 생기는 효용은 굉장하지만, 어차피 그 효용이라는 게 대개의 사람에게는 물건 값이 약간 내려간 정도인데 무역으로 도태되게 된 기업과 관련자는 생계 자체에 위협을 받으니까.
물론 내 피드 수집 페이지는 자유무역과는 여러모로 경우가 다르다. 규모는 말할 것도 없고, 링크를 클릭하는 노력은 아주 적은 건 둘째치고라도 자발적이니까. 전체적으로는 별로 의식하지 못하는 절감의 대가로 소수가 비용 증대를 의식해야 한다는 점에서만 약간 비슷한 데가 있을 뿐. 그런 의미에서 역시 이건 '작은' 실험이다. 업데이트를 수동화한 것이 업데이트 주기에 어떤 영향이 있을지, 새로운 기사가 있는지 보려면 따로 링크를 클릭해야 한다는 것을 사용자들이 부담으로 인식할까, 아니면 재밌어할지 궁금하다.
수정: 업데이트가 잦다면 몰라도 또 링크를 의미 없이 누르는 일이 너무 잦아지는 것 같아서 이제는 그냥 마지막 확인한 시점에서 6시간이 지났으면 불러오는 스크립트를 자동으로 돌리게 했다. chron이 안 되는 서버이지만 데이터베이스로 흉내는 내는 셈.
해결책은 꽤 간단하다. 모든 사용자의 접속 때마다 피드를 불러오고 처리하는 게 아니라, 피드 처리 링크를 따로 달아서 피드 업데이트를 자동화 대신 수동화하는 거다. 대부분의 사용자는 피드 처리를 거칠 필요가 없고, '새로운 기사 불러오기' 링크를 클릭하는 사용자만 1~2초 로딩 시간을 들여 피드를 불러오고 데이터베이스에 입력하는 스크립트를 발동하면 된다. 덕분에 페이지가 많이 가벼워져서, 스크립트 처리 속도는 2초를 넘는 수준에서 다시 0.6~0.8초 수준으로 떨어졌다.
사용자 전체로 보면 이쪽이 더 효율이 높은 것은 당연하다. 2초, 0.6초는 서버에서 스크립트를 처리하는 시간 얘기고 브라우저에서 서버에 페이지를 요청하고 사용자에게 보이도록 화면에 표시하는 시간은 또 따로 있다. 따라서 모든 사용자가 페이지에 들어올 때마다 그 몇 초를 허비하는 게 없어졌으니 시간 면에서도, 서버 부담 면에서도 절약한 것은 적지 않다.
다만, 전에 망설였던 것은 이게 전체 사용자로 보면 시간을 많이 절약해주는 대신 새 기사가 나왔는지 확인하려는 사용자에게 링크를 클릭하는 약간의 노력과 몇 초의 로딩 시간을 요구한다는 점이다. 즉, 페이지에 들어오는 모든 사용자에게 요구했던 1.2~1.4초의 시간을 하루에 한두 명의 사용자에게 전가한 셈이 된다.
그게 내게는 이 문제의 흥미로운 점이다. 전체적인 절약은 큰데, 어차피 이전의 낭비야 (나만 빼고) 별로 의식하지 않았던 반면, 새로 기사가 있나 확인하려고 링크를 클릭하는 사용자는 클릭하는 수고와 추가 로딩 시간을 의식할 수밖에 없다. 그래서 과연 시간 절약을 사람들이 체감할까, 차라리 다같이 시간을 조금씩 더 낭비하면서도 아무도 의식하지 못하는 편이 체감 면에서는 더 효율적이지 않을까 싶다. (비록 그 체감이 거짓이기는 하지만.)
이게 어떻게 보면 상당수의 정책이나 체계의 역설이기도 하지 않나 싶다. 전체의 부담을 소수에게 옮겨서 집단 전체의 효용은 큰데, 그 효용의 수혜자는 좋아진 걸 별로 의식하지 못하고 부담이 생긴 소수는 자신에게 생긴 새로운 부담을 의식하는. 비유하자면 자유무역이 그렇다. 사회 전체적으로 생기는 효용은 굉장하지만, 어차피 그 효용이라는 게 대개의 사람에게는 물건 값이 약간 내려간 정도인데 무역으로 도태되게 된 기업과 관련자는 생계 자체에 위협을 받으니까.
물론 내 피드 수집 페이지는 자유무역과는 여러모로 경우가 다르다. 규모는 말할 것도 없고, 링크를 클릭하는 노력은 아주 적은 건 둘째치고라도 자발적이니까. 전체적으로는 별로 의식하지 못하는 절감의 대가로 소수가 비용 증대를 의식해야 한다는 점에서만 약간 비슷한 데가 있을 뿐. 그런 의미에서 역시 이건 '작은' 실험이다. 업데이트를 수동화한 것이 업데이트 주기에 어떤 영향이 있을지, 새로운 기사가 있는지 보려면 따로 링크를 클릭해야 한다는 것을 사용자들이 부담으로 인식할까, 아니면 재밌어할지 궁금하다.
수정: 업데이트가 잦다면 몰라도 또 링크를 의미 없이 누르는 일이 너무 잦아지는 것 같아서 이제는 그냥 마지막 확인한 시점에서 6시간이 지났으면 불러오는 스크립트를 자동으로 돌리게 했다. chron이 안 되는 서버이지만 데이터베이스로 흉내는 내는 셈.
분류없음
2008/05/02 07:24

댓글을 달아 주세요