1. 요구사항 정의
썸네일과 같이 올리브영의 현재 시스템 중에는 실시간 랭킹이라는 기능이 있습니다. 이는 앱에서만 지원하는 기능인 것으로 확인이 됩니다(아마도..!) 해당 기능은 현재 어떤 상품이 인기가 있는 지 보여주는 역할을 합니다.
하지만 이 기능을 보면 볼수록 한가지 의의한 부분이 있었습니다. 바로 실시간이라고 하지만 사실 그 랭킹은 몇 시간 전에 업데이트 된 랭킹일 수 있다는 점이었습니다. 저는 실시간이라는 키워드와 2시간 전 업데이트라는 키워드가 이중적이라고 생각했습니다. 그렇다면 올리브영은 왜 몇 시간 전 상품에도 실시간이라는 키워드를 넣어야만 했을까요?
출처: 넷플릭스 흑백요리사
제가 생각하기에 실시간이라는 키워드가 꽤나 매력적이었을 것이라 생각합니다. 그렇다고 리얼타임으로 기능을 제공한다면 사용자 경험이 분명 떨어질 것이라 생각했습니다. 극단적인 예로 마음에 담아두었던 1위 상품이 잠깐 한눈 판 사이에 순위권에서 사라져버려 찾을 수 없을 수 없을 지도 모르니까요. 이런저런 생각을 해봐도 올리브영의 약간은 애매한 실시간 기능은 꽤 합리적이라는 생각이 듭니다. 하지만 그럼에도 저는 실시간이라는 키워드가 이렇게 소비되는 것은 조금 아까웠습니다.
2. 제안사항 - “실시간의 실시간 / 트렌드 세터”의 이미지를 살리자!
출처: 구글 검생 n분만에 완판
위 스크린샷은 광고의 효과로 훌륭한 비즈니스 효과를 낸 것으로 보입니다. 각각 5분 1분으로 꽤나 짧은 시간동안 판매가 된 것을 볼 수 있습니다. 광고가 아니더라도 방송에 유명 아이돌이 특정 제품을 사용하는 장면이 미디어에 노출되면 금세 해당 상품이 품절되는 기사를 많이 접해봤을 것으로 생각합니다. 이처럼 실시간과 트렌드는 매출증가와 직결되어 있습니다. 이를 위해 실시간랭킹보다 더 실시간 랭킹을 제공하는 기능을 구현하고자 기획했습니다.
첫 번째로 떠올린 방법 - 올리브영의 N명이 보고 있어요에 집중.
올리브영 웹사이트의 제품 상세 페이지를 들어가면 몇 명이 현재 화면을 보고 있는 지 알 수 있습니다. 이 정보는 html로 확인가능하기에 이 정보를 크롤링해서 랭킹이나 핫템들 간의 순위를 간접적으로 보여주면 어떨까 싶었습니다. 문제는 이 데이터를 크롤링 하는 것이 실무관점에서 의미가 있을까? 분명 올리브영에서 자체적으로 데이터를 갖고 있을 테니 이를 활용한다고 치면 더미데이터를 사용하는 것과 무슨 차이가 있을까? 였습니다. 또한 해당 시스템은 올리브영 측에서도 언제 바뀔 지 알 수 없습니다. 이에 따라 보장 가능한 우리만의 시스템을 설계해야겠다고 생각했습니다.
두번째 방법 - 실시간 요청에 따른 실시간보다 더 실시간인 기능 제공
우리의 시스템에서는 접근하고자 하는 트래픽이 CloudFront를 거치도록 설계되어 있습니다. 이는 즉, 우리는 어떤 상품을 조회하고 구매하는 그 방대한 양의 데이터를 저장하고 관리할 수 있다는 것을 의미했습니다. 우리는 이 데이터를 보다 알차게 사용하며 실시간보다 더 실시간의 랭킹을 제공하는 기능을 구현하고자 했습니다.
오늘의 포스팅은 아주아주 간단하게 여기서 마칩니다.
아래의 포스팅에서는 우리가 어떻게 이런 시스템을 구축하였는 지 이제 구현의 관점에서 포스팅을 작성해보겠습니다.
https://footprints-tech.tistory.com/18