대부분의 서버리스(Serverless) 솔루션은 클라우드 환경에서 실행하죠. 그런데 온프레미스 환경에서도 서버리스를 실행할 수 있다는 거 알고 계셨나요? 이 글에서는 클라우드 서버리스와 온프레미스 서버리스 특징을 살펴보고, 서버리스 프레임워크인 OpenFaaS로 온프레미스 환경에서 서버리스를 실행하는 방법을 알아보겠습니다.
서버리스란?
서버리스(Serverless)란 클라우드 서비스 제공업체가 관리하는 환경에서 애플리케이션을 개발하고 배포하는 방식입니다. 이 용어는 ‘서버를 관리할 필요가 없다’는 의미에서 유래했는데요. 서버리스에서는 클라우드 서비스 제공업체가 서버를 관리하고, 인프라 확장과 유지보수 업무를 자동 처리하기에 개발자는 서버 관리에 신경 쓰지 않아도 됩니다. 개발자는 코드를 빠르게 작성하며, 개발에 더 집중할 수 있죠.
과거에는 애플리케이션을 실행하려면 물리적 서버를 구입하고 유지 관리해야 했습니다. 대부분의 서버는 구입한 하드웨어 리소스의 지극히 일부만 사용해 비용이 많이 들었죠. 클라우드 컴퓨팅이 등장하면서 물리적 서버를 구입하는 과정은 짧아졌습니다. 그러나 여전히 가상 서버를 프로비저닝, 구성, 업데이트해야 하는 부담이 있었습니다.
클라우드 서비스 제공업체는 이 문제에 대응하기 위해 자사가 직접 서버풀(Serverful) 리소스를 가져가 서버리스 기술을 제공하기 시작했습니다. 서버풀*이란 기존 서버 기반 컴퓨팅 방식으로, 애플리케이션을 배포하는 전통적인 접근 방식인데요. 서버풀 아키텍처에서는 개발자를 비롯한 사용자가 애플리케이션을 실행하는 서버를 관리할 책임이 있죠.
그러나 클라우드 서비스 제공업체가 서버풀 리소스를 갖고 서버리스 기술을 공급하면서 개발자는 서버 관리 부담을 덜었습니다. 또 편리하게 코드를 실행하고, 데이터를 관리하며, 애플리케이션을 통합할 수 있게 됐고요.
클라우드 기반 서버리스에는 다음 장점이 있습니다.
- 인프라 관리 복잡성 해소: 개발자가 인프라 구성에 시간을 쓰지 않고 코드 작성에 집중할 수 있음
- 비용 최적화: 사용한 리소스만큼 비용을 지불하고, 유휴 리소스에 자원을 낭비하지 않음
- 리소스 효율화: 리소스가 트래픽 변동에 따라 자동으로 확장돼 리소스를 효율적으로 관리할 수 있음
*서버풀 아키텍처에서는 사용자가 인프라를 더 많이 제어할 수 있음. 여기서는 서버 프로비저닝, 운영 체제 업데이트 관리, 수요에 맞는 리소스 확장이 가능함. 또 고가용성과 내결함성이 보장됨.