블로그

서버리스는 서버에 관한 것이 아니라 앱에 관한 것입니다.

로리 맥비티 썸네일
로리 맥비티
2017년 6월 12일 게시

"서버리스 컴퓨팅" 개념을 둘러싼 혼란이 많습니다. 이름이 상당히 잘못 지정되었기 때문일 수도 있습니다. 서버나 컴퓨팅에 대한 것이 아닙니다. 적어도 대부분 IT 전문가들이 사용하는 전통적인 의미에서는 그렇지 않습니다.

서버리스는 Functions as a Service(FaaS)로 부르는 게 훨씬 더 좋습니다. 그게 바로 서버리스가 제공하는 것이기 때문입니다. FaaS가 서버리스인 것과 마찬가지로 SaaS도 서버리스이고, PaaS도 서버리스라고 결론 내릴 수 있습니다. 그 이유는 서버, 즉 컴퓨팅이 소비자, 즉 일반적으로 개발자의 관점에서는 방정식에서 제외되기 때문입니다. 컴퓨팅(서버, 네트워크) 리소스는 커버 아래에 숨겨져 있으며, 궁극적으로 서비스 제공자에 의해 관리되는 자동화 및 오케스트레이션 망을 통해 자동으로 프로비저닝, 관리 및 확장됩니다. 돈을 내지만, 실제로 볼 필요는 없습니다.

서버리스 FaaS는 SaaS나 PaaS, 혹은 전반적으로 클라우드를 대체하지 않습니다. 이는 기존 모델에 더해 개발자에게 요구에 따라 함수를 호출할 수 있는 흥미로운 기능을 제공하는 또 다른 옵션입니다. 이벤트 기반입니다. 즉, 이 함수는 이벤트에 의해 트리거됩니다. 그 이벤트는 종종 API 호출의 호출이며, 매우 구체적인 URI를 가진 HTTP 요청의 형태를 띱니다. 그렇습니다, API 호출입니다.

FaaS에 대해 가장 많이 언급되는 사용 사례는 이미지나 비디오 처리입니다. 이는 필요한 자원이 종종 예측할 수 없지만 빈도와 용량은 예측할 수 있기 때문입니다. FaaS는 해당 미디어를 호출별로 처리하는 저렴하고 효율적인 수단을 제공합니다. 또 다른 예는 사물 인터넷(IoT) 공간과 관련이 있을 수 있는데, 여기서 동작은 컨트롤러 앱이나 사물 자체에서 발생하는 이벤트에 의해 트리거됩니다. 그리고 항상 API 백엔드 사용 사례가 있는데, 이는 다른 사용 사례보다 대부분의 사람들에게 더 의미가 있습니다. 왜냐하면 API는 종종 함수를 호출하는 URI로 설명되기 때문입니다.  함수가 무엇을 하는지에 관계없이 특정 이벤트에 의해 트리거될 때만 실행되며, 단일하고 격리된 함수여야 합니다.

앱 분해

이것은 우리가 보거나 논의하는 데 익숙한 클라우드가 아닙니다. 그 이유는 클라우드(IaaS)가 인프라와 운영에 관한 것이고 FaaS(및 PaaS와 SaaS)는 애플리케이션에 관한 것이기 때문입니다. 이는 개발자가 더 큰 애플리케이션 이니셔티브의 일부로 일부 작업을 수행하는 코드를 구현할 수 있는 개발 환경으로 고안되었습니다. 여러 개의 FaaS 구현으로 앱을 구축할 수 있나요? 전적으로. 실제로 이 측면에서 FaaS와 SaaS의 관계는 마이크로서비스와 모놀리스의 관계와 같습니다.

하지만 요점은 바로 그것입니다. FaaS는 서버가 아닌 애플리케이션에 관한 것입니다. FaaS로 클라우드를 구현할 수는 없지만 애플리케이션은 개발할 수 있습니다. 앱을 "서버리스" 환경으로 리프트 앤 시프트할 수는 없습니다. 그것은 해체된 후 다시 구축되어야 하며, 아니, FaaS의 집합으로 재설계되어야 합니다.

이러한 조합(아니면 순열?)은 광범위합니다. IaaS에 배포된 앱에서 PaaS와 함께 FaaS를 통합할 수도 있습니다. IaaS와 PaaS는 온프레미스에 있는 반면, FaaS는 퍼블릭에 있을 수 있습니다.

SaaS, PaaS, FaaS의 경우 '서버'를 볼 수 없다는 게 문제입니다. IaaS에서는 그렇지 않습니다. IaaS에서는 서버를 "인스턴스"라고 부르고 이를 관리하고 유지해야 합니다. IaaS는 온프레미스든 퍼블릭이든 애플리케이션이 아닌 인프라와 운영을 제공하는 것이 목적이기 때문입니다. 그것은 항상 사실이었지만, "서버 == 애플리케이션"이 오랫동안 표준이었기 때문에 우리는 지난 10년 동안 그것을 무시할 수 있었습니다.

하지만 마이크로서비스와 API가 등장하고 이제는 FaaS가 등장하면서 더 이상 "서버 == 애플리케이션"이라는 방식으로 운영할 수 없게 되었습니다. 더 이상 사실이 아니기 때문입니다.

결국 FaaS는 서버나 클라우드(우리가 이해하는 의미에서)에 관한 것이 아닙니다. 하지만 이는 우리가 애플리케이션을 설계하고 구축하는 방식에 있어서 상당한 변화입니다.