개요

알고윗미 팀의 큰 주제 중 하나는 “비용절감”입니다.

이 주제는 FE에서 비용절감을 실현하기 위한 아이디어입니다.

가장 간단한 아이디어: 클라이언트의 컴퓨팅 파워 이용하기

가장 간단하게 비용 절감을 하는 방법을 생각해보면, Server의 컴퓨팅 파워를 사용하지 않고 Client의 컴퓨팅 파워를 사용하는 방법을 떠올릴 수 있습니다. 하지만 이 방법은 팀의 주제인 ‘코딩테스트’와 일정 맞지 않는 부분이 있습니다.

단순하게 클라이언트에서 자바스크립트 코드를 실행하고 결과만 봐도 된다면 eval 을 사용해도 됩니다. 메인 스레드의 안정성을 위해 web worker 정도까지 도입하는 것이면 충분할 것입니다. 하지만 저희 주제에선 시험 환경을 조성해야하기 때문에 자바스크립트의 실행 환경에 엄밀함을 추가해야합니다. 즉, 최대한 공정한 환경을 조성해야합니다.

따라서 엄밀함을 따지기 위해 채점은 서버에서 코드를 실행하는 것이 좋아보입니다.

하지만 여기에 비용 절감을 위해 유저가 본인의 입력을 테스트하는 정도의 수행은 클라이언트로 부담을 분산해보자! 라는 아이디어를 떠올렸고, 이를 위해 클라이언트에서 만드는 런타임 환경은 얼만큼 엄밀한지 측정하는 것이 이 글의 주제입니다.

정리하자면

<aside> 💡 클라이언트에서 “엄밀한” 환경을 조성할 수 있는가? 그렇다면 얼만큼 엄밀한가?

</aside>

를 점검해보겠습니다.

가정: QuickJS를 탑재하면 모든 브라우저에서 동일한 성능을 보장할 수 있다

엄밀하기 위한 변수들

아주 불만이 많은 유저가 있다고 하고 클라이언트에서 자바스크립트를 실행한 결과를 제출하게 되는 경우를 따져 봅시다.