- 웹은 한대의 컴퓨터에서 시작
- 32년이 지났지만, 아직 우리는 한대의 컴퓨터인 것처럼 개발
- 지난 몇년간, 정적인 사이트는 CDN을 통해 사용자와 가까운 곳에서 서빙 되었음
- 이제 동적인 웹앱에도 같은 일이 벌어지고 있음. 이제 모든 곳에 배포 가능
Edge란 무엇인가
- 사람들이 "The Edge"라고 얘기하면, 당신의 사이트나 앱이 전세계 각각의 사용자에게 가까운 여러대의 서버에 배포된다는 것을 의미
- 누군가 당신의 사이트/앱을 요청하면 가장 가까운 서버로 안내됨
- 이 분산된 서버들은 정적인 사이트 애셋만이 아니라 동적 웹앱을 지원하는 커스텀 코드를 실행 가능
- 이렇게 근처의 서버로 움직이는 것은 레이턴시 최적화를 위한 시도이기도 함
- 페이지 로딩이 길어질수록 사용자가 떠날 확률이 높아짐
- Heroku 같은데다 배포하면 북미의 AWS 데이터 센터에 들어가며, 유럽이나 다른 도시에서는 TTFB(Time to First Byte)가 느려짐
- 하지만 우리 Edge Network인 Deno Deploy로 설치된 Deno.com 을 테스트해보면 TTFB가 훨씬 빠름
- Server 라는 컨셉은 1969년 RFC에서 처음 소개 되었음
- 팀버너스리 의 사무실에 있던 NeXT 머신이 첫 웹서버 였음. 하지만 인터넷은 이미 그 시점에 20년 넘게 운영되고 있었음
콘텐츠를 사용자 가까운 곳으로 캐싱하기
- 서버 아키텍쳐는 오래동안 잘 동작했지만, 90년대말 부터 웹이 커지면서 문제가 발생하기 시작
- Akamai가 1998년에 첫번째로 CDN을 소개
- 아카마이의 CDN은 콘텐츠를 서버들의 분산 시스템에서 캐슁
- CDN은 모던 웹의 중요 조각이 되어왔음
Less servers, more serverless
- 서버들은 "오버로딩"의 반대쪽으로도 문제가 발생 : under-utility
- 서버는 전원이 꺼질수 없고 100% 시간동안 켜져 있어야하고, 다 비용을 내야함
- 서버리스가 이 문제를 완화함. 필요할때만 시작했다가 다시 꺼짐
- 하지만 "서버리스"는 잘못된 이름임. 서버가 없지 않고 여전히 관련되어 있음
- 항상 실행되는 Dedicated 서버가 없을 뿐
- 널리 사용된 최초의 서버리스 프레임워크는 AWS Lambda
- 서버리스의 장점은 두가지
- 사용한 것에 대한 비용만 지불
- 서버들의 관리에 대해서 신경쓸 필요 없음. 계획도, 관리도, 유지보수도 없음
- 단점은 대부분 성능.
- "Cold Start" 문제
- 그리고 여전히 서버들은 중앙화 되어있기 때문에 긴 Round-Trip이 있음
- 그래서 현재에 도달했음
Livin's on the edge
- Edge의 아름다움은 CDN의 장점(사용자와 가까움)과 Serverless의 장점(함수를 실행)을 가져와서 결합했다는 것
- 즉, Edge로는 사용자와 가까운 곳에서 커스텀 코드를 실행 가능. 이것은 많은 이점이 있음
더 나은 성능
- 이게 사용자가 신경쓰는 오직 한가지
- 사이트나 앱이 사용자와 가까운 Edge서버에서 실행되면 중앙서버보다 빠름
- 하지만 성능의 이점은 거기서 멈추지 않음
- Compute가 사용자의 브라우저가 아닌 Edge에서 실행
- 앱은 사용자 머신에서는 더 적은 자원을 필요로 함
- 사용자에게 더 적은 페이로드만 전달되므로 더 작은 대역폭만 사용
- 함수가 제어된 환경에서 실행되므로, 함수와 API들이 일관적으로 동작
더 나은 보안
- Computation을 클라이언트/기기에서 서버리스 Edge로 옮기면 앱의 공격 표면을 줄임
- DDoS 공격하기가 더 어려움
더 나은 개발자 경험
- 현재는 Edge용 코드를 작성하는게 필요이상으로 까다로움
- 대부분의 문제는 Edge개발의 Hybrid적인 속성 때문
- 많은 프레임워크들이 Edge-First로 개발되지 않았기에 개발자는 각 함수나 페이지가 에지에서 또는 브라우저에서 실행되는지를 선택해야함
- 하지만 새로운 프레임워크들인 Fresh 같은 것은 SSR 과 Islands 아키텍처로 이런걸 간소화 함
- Fresh를 Deno Deploy와 함께 활용하면 Latency 최적화로 Lighthouse Score 만점을 받는게 가능
- Edge는 인터넷의 다음 이터레이션임.
웹을 더 빠르게 만드는 다음 단계이고, 사용자와 개발자를 위해 더 안전한 곳임