대부분의 서버리스(Serverless) 솔루션은 클라우드 환경에서 실행하죠. 그런데 온프레미스 환경에서도 서버리스를 실행할 수 있다는 거 알고 계셨나요? 이 글에서는 클라우드 서버리스와 온프레미스 서버리스 특징을 살펴보고, 서버리스 프레임워크인 OpenFaaS로 온프레미스 환경에서 서버리스를 실행하는 방법을 알아보겠습니다.
서버리스란?
서버리스(Serverless)란 클라우드 서비스 제공업체가 관리하는 환경에서 애플리케이션을 개발하고 배포하는 방식입니다. 이 용어는 ‘서버를 관리할 필요가 없다’는 의미에서 유래했는데요. 서버리스에서는 클라우드 서비스 제공업체가 서버를 관리하고, 인프라 확장과 유지보수 업무를 자동 처리하기에 개발자는 서버 관리에 신경 쓰지 않아도 됩니다. 개발자는 코드를 빠르게 작성하며, 개발에 더 집중할 수 있죠.
과거에는 애플리케이션을 실행하려면 물리적 서버를 구입하고 유지 관리해야 했습니다. 대부분의 서버는 구입한 하드웨어 리소스의 지극히 일부만 사용해 비용이 많이 들었죠. 클라우드 컴퓨팅 이 등장하면서 물리적 서버를 구입하는 과정은 짧아졌습니다. 그러나 여전히 가상 서버를 프로비저닝, 구성, 업데이트해야 하는 부담이 있었습니다.
클라우드 서비스 제공업체는 이 문제에 대응하기 위해 자사가 직접 서버풀(Serverful) 리소스를 가져가 서버리스 기술을 제공하기 시작했습니다. 서버풀*이란 기존 서버 기반 컴퓨팅 방식으로, 애플리케이션을 배포하는 전통적인 접근 방식인데요. 서버풀 아키텍처에서는 개발자를 비롯한 사용자가 애플리케이션을 실행하는 서버를 관리할 책임이 있죠.
그러나 클라우드 서비스 제공업체가 서버풀 리소스를 갖고 서버리스 기술을 공급하면서 개발자는 서버 관리 부담을 덜었습니다. 또 편리하게 코드를 실행하고, 데이터를 관리하며, 애플리케이션을 통합할 수 있게 됐고요.
클라우드 기반 서버리스에는 다음 장점이 있습니다.
- 인프라 관리 복잡성 해소: 개발자가 인프라 구성에 시간을 쓰지 않고 코드 작성에 집중할 수 있음
- 비용 최적화: 사용한 리소스만큼 비용을 지불하고, 유휴 리소스에 자원을 낭비하지 않음
- 리소스 효율화: 리소스가 트래픽 변동에 따라 자동으로 확장돼 리소스를 효율적으로 관리할 수 있음
*서버풀 아키텍처에서는 사용자가 인프라를 더 많이 제어할 수 있음. 여기서는 서버 프로비저닝, 운영 체제 업데이트 관리, 수요에 맞는 리소스 확장이 가능함. 또 고가용성과 내결함성이 보장됨.
클라우드 서버리스 vs 온프레미스 서버리스
서버리스는 클라우드 환경에서 많이 실행합니다. 이에 클라우드는 일반적으로 서버리스 아키텍처 구축 핵심 요소로 취급되죠. 그런데 로컬, 온프레미스 인프라를 사용해 서버리스를 실행할 수도 있습니다.
온프레미스 서버리스 동작 방식은 이렇습니다. 사용자는 자체 데이터 센터에서 실행되는 로컬 서버에 애플리케이션 코드를 배포합니다. 그다음, 외부 이벤트나 트리거에 대응해 코드를 온디맨드로 실행합니다.
클라우드 서버리스와 온프레미스 서버리스 특징을 비교하면 다음과 같습니다.
특징 | 클라우드 서버리스 | 온프레미스 서버리스 |
---|---|---|
호스팅 위치 | 클라우드 호스팅 | 로컬(사무실, 데이터 센터 등) 호스팅 |
비용 | 사용량 기반 요금제로 비용 효율적임 | 워크로드(Workload) 사용 비용이 클라우드보다 더 적게 들 수 있음 |
데이터 보안 | 동일한 공간에 다른 클라우드 사용자의 애플리케이션도 호스팅되므로 애플리케이션 보안에 부정적 영향을 미칠 수 있음 | 자체 인프라로 데이터 보안 강화 |
공급업체 의존성 | 클라우드 서비스 제공업체가 지원하는 언어에 의존하며, 비용도 의존적임 | 의존성 없음 |
운영 복잡성 | 운영 관리가 간편함 | 인프라 유지 관리가 필요함 |
클라우드 서버리스는 ‘비용, 선택 언어가 클라우드 서비스 제공업체에 의존적임’을 제외하면 이점이 많 습니다. 그러나 대부분의 클라우드 서비스 제공업체는 멀티 테넌트(Multi-Tenant, 논리적으로 같은 물리 서버에서 그룹/사용자 간 리소스 격리) 환경에서 서버리스를 실행하는데요. 민감한 데이터를 많이 취급하는 기업은 사내 데이터 보안 정책을 고려해 온프레미스 서버리스를 클라우드 서버리스 대안으로 활용해도 좋습니다.
‘워크로드(Workload)’란?
컴퓨팅 시스템이 처리해야 할 작업의 양. 리소스 관점에서 워크로드 유형은 아래와 같음.
- CPU 사용량: 연산 처리에 필요한 프로세서 능력
- 메모리 사용량: 데이터 처리, 저장에 필요한 RAM
- 스토리지 I/O: 데이터 읽기/쓰기 작업에 필요한 저장 공간과 처리 속도
- 네트워크 대역폭: 데이터 전송에 필요한 네트워크 자원