서버가 없는 시대의 성능 최적화: Cloudflare Workers와 엣지 컴퓨팅
들어가며
웹 서비스의 성능을 논할 때 절대적인 기준 중 하나는 **‘물리적 거리’**입니다. 한국에 서버가 있다면 미국 사용자는 빛의 속도로 인한 물리적 지연(Latency)을 피할 수 없죠. 하지만 **엣지 컴퓨팅(Edge Computing)**은 이 상식을 깨뜨립니다.
오늘은 전 세계 300개 이상의 도시에서 실행되는 Cloudflare Workers를 활용해, 전 세계 사용자에게 10ms 미만의 압도적인 응답 속도를 제공하는 전략을 공유해 보려고 합니다.
1. 엣지 컴퓨팅이란 무엇인가?
기존의 클라우드 컴퓨팅이 거대한 데이터 센터(Centralized Cloud)에 데이터를 모아 처리했다면, 엣지 컴퓨팅은 사용자와 물리적으로 가장 가까운 네트워크의 끝단(Edge)에서 데이터를 처리합니다.
Cloudflare Workers는 이 엣지 인프라 위에서 V8 JavaScript 엔진을 사용하여 수 밀리초 만에 부팅되고 실행되는 서버리스 환경을 제공합니다.
- 콜드 스타트(Cold Start) 제로: 기존 람다(Lambda)와 달리 부팅 지연이 거의 없습니다.
- 글로벌 배포: 코드를 한 번 올리면 전 세계 Cloudflare 노드에 즉시 배포됩니다.
- 저렴한 비용: 실행 시간에 대해서만 정교하게 과금되어 경제적입니다.
2. 실전: 엣지에서 데이터 처리하기
Cloudflare Workers를 사용하면 단순한 정적 파일 전달을 넘어, 엣지에서 복잡한 로직을 수행할 수 있습니다. 예를 들어, 사용자의 위치에 따라 다른 응답을 주는 코드는 다음과 같이 작성할 수 있습니다.
export default {
async fetch(request, env, ctx) {
// 사용자의 국가 정보 추출 (Cloudflare가 자동으로 헤더에 추가)
const country = request.cf.country;
const city = request.cf.city;
return new Response(`당신은 지금 ${country}의 ${city}에서 접속 중이시군요!`, {
headers: { 'content-type': 'text/plain;charset=UTF-8' },
});
},
};
3. 엣지 가속을 위한 핵심 전략
HTML Rewriter를 이용한 동적 조작
데이터베이스를 거치지 않고 엣지에서 HTML을 실시간으로 수정할 수 있습니다. 예를 들어 로그인 여부에 따라 네비게이션 바를 바꾸는 작업 등을 오리진 서버 방문 없이 처리합니다.
const rewriter = new HTMLRewriter()
.on('nav#user-menu', {
element(el) {
el.setInnerContent('Welcome, User!');
},
});
return rewriter.transform(response);
Workers KV와 Durable Objects
엣지에 데이터를 저장할 수도 있습니다. Workers KV는 전 세계적으로 읽기 속도가 매우 빠른 키-값 저장소이며, Durable Objects는 상태(State) 유지가 필요한 애플리케이션(예: 실시간 채팅)에 적합합니다.
4. 엣지 컴퓨팅 도입 시 주의점
모든 로직을 엣지로 옮기는 것이 정답은 아닙니다.
- 중앙 집중 데이터베이스와의 거리: 엣지에서 코드는 빨리 돌지만, 데이터베이스가 미국에 있다면 결국 DB 쿼리에서 지연이 발생합니다. (이 경우 D1이나 Turso 같은 엣지 DB 사용을 권장합니다.)
- 실행 제한: 복잡한 계산이나 긴 실행 시간이 필요한 작업은 기존 서버가 더 나을 수 있습니다.
마치며
Cloudflare Workers는 현대 웹 개발자에게 “전 세계 어디서나 빠른 서비스”를 만들 수 있는 초능력을 부여해 줍니다. 특히 Astro나 Next.js 같은 프레임워크와의 결합도가 높아지면서 엣지 컴퓨팅은 이제 특별한 기술이 아닌 표준이 되어가고 있습니다.
지연 시간 1ms를 줄이기 위해 고민하고 계신가요? 지금 바로 여러분의 로직을 엣지로 옮겨보세요. 사용자 경험의 차원이 달라질 것입니다!