서버리스 기술은 기술 커뮤니티에서 많은 관심을 불러일으키며 약간의 반발을 받고 있습니다. 이 기술은 2014년 AWS Lamba의 출시로 시작되었으며, 이후 2016년에는 Azure Functions가 뒤를 이었습니다.
Google은 2018년 7월 Google Cloud 함수를 출시하며 뒤를 이었습니다. 그렇다면 서버리스 기술이란 무엇일까요? 이 질문에 가장 잘 대답하기 위해 전통적인 서버 기반 컴퓨팅으로 돌아가 봅시다.
전통적인 IT 모델에서는 기본적으로 모든 것을 당신이 책임져야 했습니다. 사업주로서, 서버 및 라우터, 스위치, 서버를 설치할 랙과 같은 네트워킹 장비에 대한 예산을 마련해야 했습니다.
또한 청결하고 안전한 데이터 센터를 구축하고 충분한 냉각 및 백업 전원 및 인터넷 서비스를 제공할 수 있도록 보장해야 했습니다. 설치가 완료되면 운영 체제를 설치하고 나중에 응용 프로그램을 배포해야 했습니다. 또한 모니터링 시스템을 설정하고 방화벽 및 침입 방지 및 탐지 시스템과 같은 보안 기능을 구현해야 했습니다.
당신이 추측할 수 있듯이, 이것은 자원을 많이 소모하고 비용이 많이 들며 힘들어집니다.
그러다 클라우드 컴퓨팅이 기술 세계에 들어오면서 서버와 애플리케이션을 배포하고 관리하는 방식을 완전히 혁신했습니다. 개발자들이 쉽게 클라우드 서버와 데이터베이스를 만들어 내고 자신의 애플리케이션에 착수하는 새로운 시대를 알렸습니다. 전통적인 IT 컴퓨팅과 관련된 문제, 예를 들어 가동 중지 시간, 비싼 장비, 데이터 센터 대여와 같은 문제에 대해 걱정할 필요가 없습니다.
클라우드 컴퓨팅은 IT 자원을 배포하는 데 있어 편의성과 규모의 경제를 가져왔지만, 일부 기업은 네트워크 트래픽이나 활동의 급증으로 애플리케이션을 압도할 것이라고 예상하여 서버 공간과 자원 단위를 과잉 구매합니다.
예상치 못한 급격한 급증에도 불구하고 자동 확장을 통해서도 비용이 많이 들 수 있습니다. 또한 로드 밸런서를 설정하는 등의 다른 작업을 수행해야 하며, 이는 운영 비용을 증가시킬 수 있습니다.
클라우드로 전환하더라도 아직 일부 병목 현상이 남아 있으며 비용을 늘리고 자원 낭비를 유발할 가능성이 있습니다. 그리고 이것이 서버리스 컴퓨팅이 등장하는 곳입니다.
서버리스 컴퓨팅이란?
서버리스 컴퓨팅은 사용자에게 페이-어즈-유-고 방식으로 백엔드 서비스를 제공하는 클라우드 모델입니다. 간단히 말해, 클라우드 제공 업체가 컴퓨팅 리소스를 할당하고 애플리케이션이 실행되는 시간에 대해서만 요금을 부과합니다. 이는 케이블 비용을 월 정액 요금제에서 TV 프로그램을 시청할 때만 지불하는 방식으로 변경하는 것과 동등합니다.
‘서버리스’라는 용어는 약간 오해를 줄 수 있습니다. 서버가 포함되어 있습니까? 물론, 그렇습니다. 그러나 이 경우에는 서버와 기본 인프라가 클라우드 제공 업체에 의해 순수하게 처리되고 유지됩니다. 따라서 걱정할 필요가 없습니다. 개발자로서 여러분의 초점은 애플리케이션을 개발하고 그들이 여러분의 만족에 부합하는지를 보장하는 데 있습니다.
이를 통해, 서버리스 컴퓨팅은 서버를 관리하는 귀찮음을 없애고 애플리케이션에 대한 소중한 시간을 절약해 줍니다.
서버리스 컴퓨팅이 제공하는 백엔드 서비스
A perfect example of serverless backend service is Function-as-a-Service (FaaS) platform. FaaS is a cloud computing model that enables developers to develop, execute, and manage code in response to events without the complexity of building and managing an underlying infrastructure usually associated with the deployment of microservices.
FaaS는 약간의 차이를 가진 서버리스 컴퓨팅의 하위 범주입니다. 서버리스 컴퓨팅은 컴퓨팅, 데이터베이스, 저장소 및 API 등 다양한 서비스를 포함하고 있습니다. FaaS는 애플리케이션이 요청에 응답하여 즉시 실행되는 이벤트 기반 컴퓨팅 모델에 중점을 둡니다.
FaaS 컴퓨팅 모델의 예시로는 다음이 있습니다:
- AWS Lambda by AWS
- Azure functions by Microsoft
- Cloud Functions by Google
- Cloudflare Workers by Cloudflare
요약하자면, FaaS를 사용하면 응용 프로그램이 실행되는 시간만 지불하며 클라우드 제공업체가 기본 인프라를 처리하는 등 거의 모든 것을 처리합니다. 서버 관리는 걱정거리 중 가장 적은 부분입니다.
서버리스 컴퓨팅의 장점
지금까지 서버리스 컴퓨팅이 가져다주는 일부 장점에 대해 좋은 아이디어를 가졌습니다. 이제 기술을 받아들이는 데 들어가는 이점을 더 자세히 살펴보겠습니다.
1. 서버 관리 없음
이것은 아마도 서버리스 컴퓨팅 모델을 채택하는 가장 큰 장점 중 하나일 것입니다. ‘서버리스’라는 용어가 서버가 전혀 관련되지 않는 것처럼 오해될 수 있지만, 사실은 응용 프로그램은 여전히 서버에서 실행됩니다. 중요한 점은 서버 관리가 완전히 클라우드 공급업체의 업무이며, 이로 인해 응용 프로그램에 대해 더 많은 시간을 할애할 수 있습니다.
2. 쉬운 및 효율적인 확장
서버리스 인프라는 사용량, 수요 또는 사용자 기반의 성장에 대응하여 응용 프로그램을 자동으로 확장합니다. 응용 프로그램이 여러 인스턴스에서 실행되는 경우 서버는 필요할 때 시작하고 중지합니다. 전통적인 클라우드 컴퓨팅 설정에서는 트래픽이나 활동의 급증이 서버 리소스를 쉽게 과부하로 만들어 실행 중인 응용 프로그램에 불일치를 일으킬 수 있습니다.
3. 내장된 가용성
개발자로서 응용 프로그램을 고가용성으로 만들기 위해 특별한 인프라를 구축할 필요가 없습니다. 서버리스 컴퓨팅은 내장된 고가용성을 제공하여 응용 프로그램이 필요할 때 가동되도록 보장합니다.
4. 운영 비용 절감
서버리스 컴퓨팅은 사용량에 따라 리소스를 할당합니다. 코드가 실행될 때만 응용 프로그램이 백엔드 함수를 필요로하며, 작업량에 따라 자동으로 확장됩니다.
이는 응용 프로그램이 실행되는 시간에만 청구되므로 규모의 경제를 제공합니다. 전통적인 서버 모델에서는 응용 프로그램이 실행 중이든 아니든 서버 공간, 데이터베이스 등 기타 리소스에 대해 비용을 지불해야합니다.
5. 응용 프로그램의 신속한 배포
서버리스 아키텍처는 전통적인 설정과 같이 백엔드 구성 및 코드를 수동으로 서버에 업로드할 필요가 없습니다. 개발자가 효율적인 방식으로 작은 코드 스택을 업로드하고 훌륭한 제품을 출시하기 쉽습니다.
배포의 용이성은 또한 개발자가 전체 응용 프로그램을 변경하지 않고도 특정 기능의 코드를 쉽게 패치하고 업데이트할 수 있도록 합니다.
서버리스 컴퓨팅의 함정
서버리스 모델과 관련된 단점이 있습니까? 알아보겠습니다.
1. 보안
서버리스 컴퓨팅과 관련된 가장 큰 위험 중 하나는 잘못 구성된 애플리케이션입니다. 예를 들어 AWS를 선택하는 경우, AWS 내의 다른 서비스와 상호 작용하는 방식을 결정하는 애플리케이션에 대해 서로 다른 권한을 구성하는 것이 현명합니다. 권한이 모호한 경우, 함수 또는 서비스가 필요한 것보다 더 많은 권한을 가질 수 있어 보안 위반에 큰 문제가 될 수 있습니다.
2. 공급업체 락인
서버리스 모델을 선택하면 다른 공급업체로의 이전에 도전이 될 수 있습니다. 이는 각 공급업체마다 약간씩 다른 기능과 워크플로우를 갖고 있기 때문입니다.
3. 애플리케이션 테스트 및 디버깅의 어려움
서버리스 모델에 의해 제기되는 또 다른 도전은 서버리스 환경을 재현하여 코드의 성능을 테스트하고 모니터링하는 것이 어렵다는 것입니다. 이는 주로 개발자가 클라우드 제공업체의 백엔드 서비스에 액세스할 수 없기 때문입니다.
4. 서버리스 애플리케이션 모니터링의 어려움
서버리스 애플리케이션을 모니터링하는 것은 디버깅 및 테스트가 어려운 이유로 복잡한 작업입니다. 이는 백엔드 서비스와 통합된 도구의 부재로 인해 더욱 어려워졌습니다. 예를 들어 AWS Lambda.
결론
서버리스 컴퓨팅은 회사와 개발자들 사이에서 인기를 끌고 있으며, 이는 3가지 핵심 이유로 인해 발전하고 있습니다. 하나는 운영 비용을 줄이는 것을 의미하는 가격 경쟁력입니다. 둘째, 서버리스 컴퓨팅은 자동 및 빠른 확장을 용이하게 합니다. 마지막으로, 개발자들은 공급업체가 처리하는 기본 인프라에 대해 걱정할 필요가 없습니다.
한편, 클라우드 제공업체들은 서버리스 컴퓨팅과 관련된 몇 가지 단점을 해결하기 위해 시간을 내고 있습니다. 그 중에는 애플리케이션의 디버깅 및 모니터링이 어려운 점이 있습니다.