Edge 에 대한 정의가 중요할 것 같은데요.
CDN 은 사용자에게 서버보다 가까운 곳에서 Content 를 전달하는 역할 밖에 하지 못한다면, Edge 는 사용자에게 서버보다 가까운 곳에서 컴퓨팅을 해서 전달한다는 개념이고
그런 의미에서 fly.io 는 엣지컴퓨팅을 아주 잘 하는 회사입니다.
기존 클라우드 사업자들이 전세계에 리전을 두고 있는데 이것도 엣지 컴퓨팅이라고 보시는건가요? 즉, aws ec2도 엣지컴퓨팅의 일종인가요?
cdn 위에 펑션을 올리는 클라우드 플레어 같은 회사와 많이 다른 길을 가는것 같은데, 왜 엣지라고 불릴 수 있는지 잘 모르겠습니다.
기존 곳들은 직접 Edge 를 '구현' 합니다.
Fly.io 는 Edge 를 서비스로 '제공' 합니다.
Cloudflare Edge 를 제공하는 것이 맞고 Edge 로 불립니다.
다만 성격들이 좀 다른데, 요즘 Edge 'fucntion' 을 제공하는 곳들은 Serverless Edge 를 제공해주는 것이죠.이는 상대적으로 쉽지만 모든 요구사항을 충족시켜주지 못합니다.
Fly.io 는 Server Edge 를 제공합니다. 기존에 Server 를 이용하면서 단일 region 에만 적합한 구조를 사용하는 곳들이 많았다면 (global 에 적합한 구조를 가져가기가 쉽지 않았기 때문에), Fly.io 를 이용하면 상대적으로 손쉽게 Server Edge 를 구성해서 global 서비스를 만들 수 있습니다.
자세히 설명해주셔서 감사합니다. 그런데 약간 제 상식과 충돌하는 지점이 있습니다.
예를 들어, 우리가 Serverless Edge function 을 deploy 한다고 하면, 모든 Edge 에 일일이 배포하지 않아야 합니다. 한 번만 배포한다면 알아서 각 엣지로 Function 코드와 빌드환경이 전파되어야 하죠. 그리고 실제로도 그런 식으로 배포된다고 알고 있습니다.
그러나, Fly.io 가 제공하는 방식은 하나의 리전을 선택해서 배포하도록 되어있습니다. 제가 한 번의 Deploy 를 한다면 하나의 Server, 하나의 물리공간에 Function 혹은 Server 가 배포됩니다. 따라서 말씀하신 부분과 제가 실제로 써봤을 때의 사용감 사이에 괴리가 있는 것 같은데요,
"엣지 컴퓨팅이라 함은 한 번의 배포로 엣지마다 코드가 배포되어야 한다"라는 전제에 대해서 어떻게 생각하십니까?
그리고 그러면 그냥 EC2 각 region 에 만들어 놓고 띄우는 거랑 무슨 차이냐 라고 하신다면
- Edge Computing 이 됩니다. 즉, 요청을 가까운 region 이 처리하도록 수 있도록 하는 시스템이 갖춰져있습니다.
- clustering 이 되지 않는 다른 framework 에서는 느끼기 힘든 장점이라 아마 Fly.io 의 컨셉에 대해 많은 분들이 의아해하시는 것 같은데, Phoenix 에서는 Fly.io 에서 제공하는 network 시스템을 기반으로 clustering 이 쉽게 가능합니다. 예를 들면, 서버가 여러 region 에 나뉘어 5개가 떠있어도 각 서버에 접속해있는 유저의 정보를 서버 간에 쉽게 동기화할 수 있습니다(facebook 에서 내가 접속한 region 에 따라 친구들의 online 표시가 영향을 받지는 않죠). 따라서 Fly.io 에서는 Edge Computing 에서의 여러 technical challenge 가 쉽게 해결됩니다.
이제야 무슨 말씀이신지 조금 이해가 된 것 같습니다. 제가 식견이 짧아서 따라잡는 데 좀 오래 걸렸네요. 친절한 설명 거듭 감사드립니다.
해당 전제의 어떤 근거가 있으신가요? 그냥 많은 경우 그렇다라고 한다면 그것이 전제인 이유가 없는 것 같습니다.
Fly.io 에서 region 선택은 사용자에게 제어 권한이 있는 부분이지 제약이 있는 부분은 아닙니다.
모든 곳에 한 번에 배포되고 싶다면 모든 region 을 region pool 에 추가하고 scale 값만 늘려놓으면 됩니다.
Edge function 은 어느 region 에 띄워주든 제공자나 사용자 다 딱히 고려해야할 사항이 없지만
Edge server 를 띄우는 것은 비용 때문에 얘기가 달라집니다. 예를 들어, 나는 서버 2개를 띄울 비용을 지불할 용의가 있는데 사용자가 아시아 전역에 분포되어있다면, 이 서버를 한국, 도쿄, 싱가폴, 인도 등의 region 중에 2군데를 골라서 띄워야 합니다. 전세계 모든 region 에 띄우는 것은 비용면에서 비합리적입니다.
제가 fly io 를 잘 모르고 한 얘기일수도 있습니다. 그렇지만 직접 써본 입장에서는 AWS App runner 와 흡사하다는 느낌을 받았긴 합니다
네 사용자 입장에서 보면 기존 클라우드와 다른 건 없다고 느끼는게 맞을 것 같습니다.
Docker Without Docker - Fly.io의 기반 기술 소개
위 글에서 보는 것처럼, 이들의 기술 기반은 도커이미지를 Firecracker VM으로 변환한 후 사용자 근처의 엣지 서버에 배포해서 레이턴시를 최소화 하는걸 목표로 합니다. 그를 위해서 클라우드 리전이 아닌, 각 도시들에 직접 피지컬 서버들을 운용하고 있고요. 전세계 20만대가 넘는 엣지 서버를 운용하는 Akamai 같은 CDN에 비할 바는 아니지만, 가능성은 충분하다고 생각됩니다.
fly.io 를 엣지컴퓨팅 회사로 보는게 맞나요? 좀 더 기술력이 강화된 경량 헤로쿠 정도로 이해해서요 (빠른 배포)