9장. 아키텍처
이제는 가상화를 넘어 서버가 없는 개념이 등장했습니다. 서버가 없다는 것이 즉, 사용자 관점에서는 더 이상 신경 써야 할 서버가 없다는 의미에 가깝습니다. 이는 기존 클라우드 서비스를 통해 하드웨어적인 서버를 걱정하지 않아도 된다는 것을 의미합니다. 사용자는 단순히 서비스 내에서 보이는 인스턴스를 관리하거나 생성, 삭제할 뿐입니다. 서버리스는 이러한 관리 요소를 더욱 간소화했습니다.
사실 아무리 서버리스 형태의 서비스를 제공한다고 해도 실제 서버는 반드시 어딘가에는 존재를 합니다. IDC(인터넷 데이터 센터)라 불리는 데이터 센터에 위치해 있습니다. 서버리스를 이해하기 전에 가상화의 대표적인 서비스로 AWS의 EC2와 같은 가상 머신 서버를 제공하는 서비스가 있습니다.
서버를 물리적으로 하나 할당 받아 사용하는 것이 아니라, 하나의 가상 머신을 제공하는 방식입니다. 이러한 가상화라는 것은 우리는 물리적 서버의 위치를 알 필요가 없습니다. 여기서 가상머신과 서버리스의 차이는 가상 머신은 가상으로 서버를 제공하면서 OS부터는 관리를 할 수 있는 영역이 됩니다.
하지만 서버리스는 관리할 서버로 접속하는 것도 제공되지 않고, 소스만 업로드 하면 임의의 위치의 서버가 해당 코드를 수행해줍니다. 이러다 보니 서버 관리자는 더 이상 서버를 관리 하지 않아도 되고, 더 많은 서버를 준비하거나 오토 스케일링 설정을 하지 않아도 됩니다. 서버리스는 사용한 만큼 비용을 지불하는 개념이고, 얼마든지 사용할 수가 있습니다. 어떤 서버에서, 어떤 VM에서 돌리든 서버 리스가 자동으로 처리합니다. 따라서 서버는 존재하지만 우리가 직접 관리해야 하는 서버는 없습니다. 이것이 서버리스라는 용어를 사용하는 이유입니다. 무슨 차이가 있을까요? 인스턴스는 우리가 명확하게 관리해야 하고, 보안 패치 및 확장과 같은 작업을 수행해야 합니다. 인스턴스 타입은 크기를 조절해줘야 합니다.
트래픽이 많아져서 헤비한 트래픽이 되면 인스턴스를 늘려야 하는데, 모두 운영자가 관리해야 하는 작업이지만, 서버리스에서는 이러한 관리가 필요하지 않습니다. 소스 코드가 호출되면 자동으로 처리됩니다.
서버리스는 서버 관리가 필요 없는 환경으로 진화하고 있습니다. 대표적인 서비스 중 아마존의 람다는 함수를 업로드하여 기능을 실행하는 것이 특징입니다. 기타 클라우드 플랫폼에서는 클라우드 함수로 유사한 기능을 제공합니다.
장단점이 존재하는데, 비용은 사용 상황에 따라 다르며 서버리스가 싸다는 구간도 있습니다. 단, 초기 수행 속도가 느릴 수 있습니다. 최초 수행 시 콜드 상태를 깨워 VM을 준비하는 시간이 소요되기 때문입니다.
서버리스는 시간 제약과 초기 속도 등의 제약사항이 존재하며, 비용도 나중에 증가할 수 있습니다. 그러나 무료로 사용 가능한 부분도 있습니다. 서버 관리 부담이 줄어들어가고 있으며, 과거에는 물리적 장비를 직접 관리했던 시대에서 VM으로 넘어왔습니다. VM은 관리 요소를 줄여준 덕분에 널리 사용되고 있습니다.
서버리스에서는 CPU 사용량으로 돈을 받는 반면, VM은 띄워놓은 시간으로 돈을 받습니다. 이는 시간에 따라 돈을 받는 것과 사용량에 따라 돈을 받는 것 간의 차이를 의미합니다. 서버리스를 통해 비용 구조가 크게 변화하며, 효과적인 비용 절감과 변화를 가져올 수 있습니다. 소스 코드에 대한 수정이 필요할 수 있지만, 이러한 변화는 전환의 가치가 있습니다.
서버리스의 이러한 특징을 이해하면서 적절한 상황에서의 선택이 중요합니다.
서버리스 서비스 위에 서버 프로그램 코드만 업로드하면 실행됩니다. 필요한 서버의 개수를 고민할 필요가 없으며, 호출되는 만큼 실행되고 과금됩니다. 이는 매우 합리적인 구조이며, 관리 요소는 거의 없습니다. 프로그래머는 코드를 업로드하면 서버 운영까지 자동으로 처리됩니다. Node.js와 같은 프로그램 코드를 업로드하면 서버에서 자동으로 실행됩니다.