캘리포니아에 있는 나에게는 즉각 반응하던 사이트가 호주 고객에게는 느릿느릿하게 느껴진 적이 있었어요. 같은 사이트, 같은 코드였는데 차이는 오직 거리뿐이었죠.
실제로 무슨 일이 벌어지고 있었는지 설명하면 이렇습니다. 코드는 한 도시의 서버 한 대에 올려져 있었어요. 시드니 고객이 무언가를 클릭할 때마다 요청은 그 서버까지 날아갔다가 처리된 뒤 다시 날아와야 했습니다. 빛이 빠르기는 하지만 마법은 아니에요. 클릭할 때마다 지구 반 바퀴를 왕복하다 보면 사이트가 뭔가 깊이 고민하는 것처럼 느려지죠.
엣지는 코드를 여러 곳에 분산해 이 문제를 해결해요. 한 도시의 서버 한 대 대신 세계 수십 개 도시에 복사본을 둡니다. 누군가 클릭하면 요청은 본사가 아니라 그 사람과 가장 가까운 복사본으로 가요.
커피 체인점으로 비유하면 이렇습니다. 예전 방식은 도심에 대형 플래그십 매장 하나를 두고 도시 사람 모두가 거기까지 차를 몰고 오는 거예요. 엣지는 골목마다 지점을 두는 것이고요. 같은 커피, 같은 레시피인데 그냥 근처 지점으로 걸어가면 되죠. 에스프레소 한 잔 때문에 도시 반대편까지 갈 필요가 없어요.
비슷하게 들린다면, 파일을 사람 가까이에 두는 개념과 같은 발상입니다. 차이는 무엇이 이동하느냐예요.
- 파일 버전(CDN)은 자료를 가까이 둬요. 이미지, 동영상, 로고, 용량 큰 다운로드처럼 변하지 않는 정적인 것들이죠. 완성된 상품 창고를 동네마다 두는 것과 같아요.
- 엣지는 코드를 가까이 둬요. 실제로 실행되며 판단을 내리는 로직이에요. 로그인 여부 확인, 어느 버전 페이지를 보여줄지 선택, 다른 페이지로 이동시키는 일 같은 것들이죠. 완성된 파일을 가까이 두는 것이 아니라 일 처리 자체를 가까이에서 합니다.
두 번째가 핵심적인 도약이에요. 오랫동안 가까운 복사본은 미리 만들어진 파일만 전달할 수 있었어요. 실제 처리는 여전히 중앙 주방 한 곳에서만 이뤄졌죠. 엣지는 주방의 일부를 골목마다 내보낸 거예요.
그렇다면 실제로 엣지에서 무엇을 실행할까요? 사용자가 도착하는 순간 즉시 처리해야 하는 빠르고 가벼운 작업들이에요.
사용자 확인. 로그인했는가? 접근 권한이 있는가? 본사에 물어보는 대신 가까운 곳에서 바로 판단해요.
올바른 경로 안내. 모바일 방문자는 여기로, 독일 방문자에게는 유로 가격을 보여주고, 오래된 링크는 새 페이지로 이동시키죠.
페이지 즉석 수정. 페이지가 다 로드되기 전에 사용자 이름, 도시, 언어를 삽입해요.
단점도 있어요. 골목의 작은 지점은 규모가 작습니다. 동네마다 있는 커피 지점에 로스팅 공장과 회계 부서까지 들어갈 수는 없잖아요. 엣지는 빠른 판단을 위해 설계된 것이지 무거운 작업을 위한 건 아니에요. 대용량 데이터베이스, 본격적인 연산, 진짜 힘이 필요한 작업은 여전히 중앙 한 곳에 있는 경우가 많아요. 엣지는 빠른 첫 응답을 담당하고, 무거운 작업은 뒤에서 처리되죠.
직접 설정을 건드리지 않더라도 알아두면 유용해요. "엣지에서 실행한다"는 말은 과장처럼 들리지만 사실은 그냥 설명이에요. 요청한 사람 가까이에서 작업을 처리해요. 이게 합리적이라는 건 이미 알고 있잖아요. 그래서 근처 골목 에스프레소가 도심 것보다 항상 빠른 거예요.