아마존 대항마 ‘쇼피파이’, 응답시간 밀리 초로 단축 방법

쇼피파이 온라인 상점 구현 화면. [출처: Shopify]

초보자도 만들기 쉬운 온라인쇼핑몰 ‘쇼피파이(Shopify)'는 아마존과 대항할 수 있는 유일한 플랫폼으로 평가받고 있다. 

쇼피파이는 최근 새로운 시스템으로 전환해 각 온라인 상점 톱 페이지인 스토어 프런트 응답 속도를 4~6배 빠르게 하는 데 성공했다고 블로그를 통해 밝혔다.

쇼피파이는 스토어 프런트 응답 시간을 밀리 초로 단축했다. 응답이 느릴 경우 SEO 등에 악영향을 미칠 뿐만 아니라 매출 감소로 이어질 가능성도 있다. 

이전 상점 구현(왼쪽)과 새로운 상점 구현(오른쪽). [출처: Shopify]

15년 전에 개발된 스토어 프런트는 ‘루비 온 레일즈(Ruby on Rails) 웹 프레임워크에 함께 존재하고 있다. 하지만, 쇼피파이 출스토어 프런트는 다른 서비스에 비해 성능 요구 사항이 훨씬 엄격해 다른 서비스와 동일한 시스템을 사용하려면 특성상 차이가 큰 것으로 나타났다.

결국 쇼피파이는 기존 시스템은 체크아웃, 관리, API 트래픽 처리에 집중시키고 스토어 프런트 트래픽은 처음부터 설계한 새로운 구현으로 처리했다. 이 과정에서 읽기 전용 복제 서버를 포함한 메인서버 부하를 경감했다. 

또한 개발자가 사용할 수 있는 디버깅 도구, 간단한 온보드 설정, 문서 등 정비나 세일 때 급격한 접속 증가에 견딜 수 있는 고부하 시 시스템 복구 능력과 용량을 높이는 데 역점을 두고 있다.

새로운 구현을 도입하기 전에 기존의 구현처럼 작동하는지 확인이 필요하다. 그래서 모두 구현 출력을 비교할 수 있는 메커니즘을 구축했다. 검증은 프로덕션 환경 트래픽을 사용해 수행되며, 클라이언트 요청을 웹 서버용 오픈 소스 엔진엑스(NGINX) 사용자 정의 라우팅 모듈을 중계해 새로운 구현과 기존 구현에 각각 요청을 보낸다.

요청에 대한 이전 환경에서 응답은 사용자 정의 라우팅 모듈로 중계돼 새로운 환경에 전송된다. 새로운 환경에서 검증 메커니즘을 받은 기존 환경 응답과 새로운 환경 응답을 비교해 검증 결과에 따라 정 또는 부 값을 응답한다.

클라이언트의 요청은 앞 검증처럼 모두 구현에 전송되지만, 렌더링 테스트에서는 라우팅 모듈은 해당 요청과 유사한 마지막 검증 결과에 따라 요청 대상을 결정한다.

즉, 검증 알고리즘 결과가 좋은 종류 요청만 새로운 구현에 전송된다. 그렇지 않은 요청은 기존 구현에 전송된다. 

검증 결과를 바탕으로 새로운 구현 개선을 거듭해가는 것으로, 검증을 실시하면서 기존 구현에서 새로운 구현으로 천천히 전환할 수 있다.

새로운 구현에서는 SQL 쿼리와 메모리 할당을 최적화해 성능 향상이 이루어지고 있으며, 새로운 구현에 의해 제공되는 요청 평균 서버 응답시간이 기존 구현보다 4배에서 6배 빨라진 것이다. 또한 새로운 구현이 렌더링에 실패했을 경우 기존 구현으로 대체되기 때문에 안전성도 고려됐다.

쇼피파이는 블로그를 통해 “스토어 프런트 구현을 대체하는 과정에서 많은 것을 배웠다”며, “우리는 미래를 위해 가능한 뛰어난 개발자 경험을 제공하면서 점점 시스템을 빠르게 하는 방법을 모색하고 있다”고 말했다.

민두기 기자 biz@