웹사이트 검색

LFCA: 서버리스 컴퓨팅, 이점 및 함정 알아보기 - 15부


서버리스 기술은 기술 커뮤니티에서 많은 호기심을 불러일으키고 어느 정도 반발을 불러일으킬 만큼 많은 과장된 반응을 불러일으켰습니다. 2014년 AWS Lamba 출시로 시작된 기술이며, 2016년 후반에 Azure Functions가 뒤따랐습니다.

Google은 이후 2018년 7월에 Google Cloud 기능을 출시했습니다. 그렇다면 서버리스 기술이란 무엇일까요? 이 질문에 가장 잘 답하기 위해 전통적인 서버 기반 컴퓨팅으로 돌아가 보겠습니다.

기존 IT 모델에서는 기본적으로 모든 것을 담당했습니다. 사업주라면 서버와 라우터, 스위치 등 기타 네트워킹 장비, 서버 애도를 위한 랙에 대한 예산을 세워야 할 것입니다.

또한 깨끗하고 안전한 데이터 센터를 확보하고 냉각 및 중복 전력과 인터넷 서비스를 충분히 제공할 수 있는지도 걱정해야 합니다. 일단 설정되면 운영 체제를 설치하고 나중에 애플리케이션을 배포해야 합니다. 또한 모니터링 시스템을 설정하고 방화벽, 침입 방지, 탐지 시스템과 같은 보안 기능을 구현해야 합니다.

짐작하셨겠지만 이는 리소스 집약적이고 비용이 많이 들고 소모적입니다.

그 후 클라우드 컴퓨팅이 기술 세계에 등장하여 서버와 애플리케이션을 배포하고 관리하는 방식에 완전히 혁명을 일으켰습니다. 이는 개발자가 즉시 클라우드 서버와 데이터베이스를 쉽게 구축하고 애플리케이션 작업을 시작할 수 있는 새로운 시대를 예고했습니다. 가동 중지 시간, 고가의 장비, 데이터 센터 임대 등 기존 IT 컴퓨팅과 관련된 문제에 대해 걱정할 필요가 없습니다.

클라우드 컴퓨팅은 IT 리소스 배포에 있어 편리함과 규모의 경제를 가져왔지만, 일부 회사에서는 애플리케이션을 압도할 수 있는 네트워크 트래픽이나 활동의 급증을 예상하여 서버 공간과 RAM, CPU 같은 리소스 단위를 과도하게 구매했습니다.

신중한 조치이기는 하지만 의도하지 않은 결과는 종종 낭비되는 서버 리소스의 활용도 저하입니다. 자동 크기 조정을 사용하더라도 예상치 못한 갑작스러운 급증은 비용이 많이 들 수 있습니다. 또한 운영 비용이 증가할 수 있는 로드 밸런서 설정과 같은 다른 작업을 수행해야 합니다.

클라우드로 전환했음에도 불구하고 일부 병목 현상이 여전히 남아 있어 비용이 증가하고 리소스 낭비가 발생할 가능성이 있다는 것은 분명합니다. 그리고 이것이 서버리스 컴퓨팅이 등장하는 곳입니다.

서버리스 컴퓨팅이란?

서버리스 컴퓨팅은 종량제 방식으로 사용자에게 백엔드 서비스를 제공하는 클라우드 모델입니다. 간단히 말해서, 클라우드 공급자는 컴퓨팅 리소스를 할당하고 애플리케이션이 실행되는 시간에 대해서만 비용을 청구합니다. 이는 케이블 결제를 월간 요금제에서 TV 프로그램을 시청할 때만 결제하는 방식으로 전환하는 것과 같습니다.

'서버리스'라는 용어는 약간 오해의 소지가 있을 수 있습니다. 관련 서버가 있나요? 물론, 이 경우 서버와 기본 인프라는 전적으로 클라우드 공급자가 처리하고 유지 관리합니다. 따라서 걱정할 필요가 없습니다. 개발자로서 귀하의 초점은 순전히 애플리케이션을 개발하고 애플리케이션이 만족스럽게 작동하는지 확인하는 것입니다.

이를 통해 서버리스 컴퓨팅은 서버 관리의 골치 아픈 일을 없애고 애플리케이션 작업에 소요되는 귀중한 시간을 절약해 줍니다.

서버리스 컴퓨팅이 제공하는 백엔드 서비스

서버리스 백엔드 서비스의 완벽한 예는 Function-as-a-Service(FaaS) 플랫폼입니다. FaaS는 개발자가 일반적으로 마이크로서비스 배포와 관련된 기본 인프라를 구축하고 관리하는 복잡성 없이 이벤트에 대응하여 코드를 개발, 실행 및 관리할 수 있게 해주는 클라우드 컴퓨팅 모델입니다.

Faas는 미묘한 차이가 있는 서버리스 컴퓨팅의 하위 카테고리입니다. 서버리스 컴퓨팅에는 컴퓨팅, 데이터베이스, 스토리지, API 등 다양한 서비스가 포함됩니다. FaaS는 애플리케이션이 온디맨드, 즉 요청에 응답하여 실행되는 이벤트 중심 컴퓨팅 모델에만 중점을 둡니다.

FaaS 컴퓨팅 모델의 예는 다음과 같습니다.

  • AWS의 AWS 람다
  • Microsoft의 Azure 기능
  • Google의 Cloud Functions
  • Cloudflare의 Cloudflare 작업자

요약하자면, FaaS를 사용하면 애플리케이션이 실행되는 시간에 대해서만 비용을 지불하고 클라우드 제공업체가 기본 인프라 처리를 포함하여 거의 모든 작업을 수행한다는 것을 확인했습니다. 서버 관리는 걱정거리가 가장 적습니다.

서버리스 컴퓨팅의 이점

이제 서버리스 컴퓨팅이 제공하는 몇 가지 장점에 대해 잘 이해하셨습니다. 기술 수용의 이점에 대해 더 자세히 살펴보겠습니다.

1. 서버 관리 없음

이는 아마도 서버리스 컴퓨팅 모델을 채택할 때 얻을 수 있는 가장 큰 장점 중 하나일 것입니다. '서버리스'라는 용어가 관련 서버가 없다는 의미로 오해될 수도 있지만, 사실 애플리케이션은 여전히 서버에서 실행됩니다. 문제의 핵심은 서버 관리가 전적으로 클라우드 공급업체의 업무이므로 애플리케이션 작업에 더 많은 시간을 할애할 수 있다는 것입니다.

2. 쉽고 효율적인 확장

서버리스 인프라는 사용량, 수요 또는 사용자 기반의 증가에 대응하여 애플리케이션의 자동 확장을 제공합니다. 애플리케이션이 여러 인스턴스에서 실행 중인 경우 필요할 때 서버가 시작되고 중지됩니다. 기존 클라우드 컴퓨팅 설정에서는 트래픽이나 활동이 급증하면 서버 리소스에 쉽게 과부하가 걸려 실행 중인 애플리케이션과의 불일치가 발생할 수 있습니다.

3. 내장된 가용성

개발자는 애플리케이션의 가용성을 높이기 위해 특별한 인프라를 구축할 필요가 없습니다. 서버리스 컴퓨팅은 필요할 때 애플리케이션이 가동되어 실행되도록 보장하기 위해 내장된 고가용성을 제공합니다.

4. 운영 비용 절감

서버리스 컴퓨팅은 종량제 방식으로 리소스를 할당합니다. 애플리케이션에는 코드가 실행될 때만 백엔드 기능이 필요하며 워크로드 양에 따라 자동으로 확장됩니다.

이는 애플리케이션이 실행되는 시간에 대해서만 비용이 청구되므로 규모의 경제를 제공합니다. 기존 서버 모델에서는 애플리케이션이 실행 중인지 유휴 상태인지에 관계없이 서버 공간, 기타 리소스 중에서 데이터베이스에 대한 비용을 지불해야 합니다.

5. 애플리케이션 배포 속도 향상

서버리스 아키텍처는 백엔드 구성이 필요하지 않으며 기존 설정과 같이 서버에 코드를 수동으로 업로드할 필요도 없습니다. 개발자가 효율적인 방식으로 작은 코드 스택을 업로드하고 훌륭한 제품을 출시하는 것은 쉽습니다.

또한 배포가 간편하므로 개발자는 전체 애플리케이션을 변경하지 않고도 코드의 특정 기능을 쉽게 패치하고 업데이트할 수 있습니다.

서버리스 컴퓨팅의 함정

서버리스 모델과 관련된 단점이 있습니까? 알아 보자.

1. 보안

잘못 구성된 애플리케이션은 서버리스 컴퓨팅과 관련된 가장 큰 위험 중 하나를 초래합니다. 예를 들어 AWS를 선택하는 경우 애플리케이션에 대해 다양한 권한을 구성하는 것이 현명하며, 그에 따라 AWS 내의 다른 서비스와 상호 작용하는 방식이 결정됩니다. 권한이 모호한 경우 기능이나 서비스에 필요한 것보다 더 많은 권한이 있을 수 있으므로 보안 위반이 발생할 여지가 충분합니다.

2. 공급업체 종속

서버리스 모델을 선택하면 다른 공급업체로 마이그레이션할 때 문제가 발생할 수 있습니다. 이는 주로 각 공급업체가 나머지 공급업체와 약간 다른 고유한 기능과 작업 흐름을 갖고 있기 때문입니다.

3. 애플리케이션 테스트 및 디버깅의 어려움

서버리스 모델이 제기하는 또 다른 과제는 코드를 실행하기 전에 코드 성능을 테스트하고 모니터링하기 위해 서버리스 환경을 재현하는 것이 어렵다는 것입니다. 이는 주로 개발자가 클라우드 공급자의 자산인 백엔드 서비스에 대한 접근성이 부족하기 때문입니다.

4. 서버리스 애플리케이션 모니터링의 어려움

서버리스 애플리케이션을 모니터링하는 것은 디버깅 및 테스트가 어려운 작업인 것과 같은 이유로 복잡한 작업입니다. 이는 AWS Lamba와 같은 백엔드 서비스에 통합된 도구를 사용할 수 없기 때문에 더욱 복잡해졌습니다.

결론

서버리스 컴퓨팅은 세 가지 주요 이유로 기업과 개발자 사이에서 지속적으로 관심과 활용을 얻고 있습니다. 하나는 운영 비용 절감을 의미하는 경제성입니다. 둘째, 서버리스 컴퓨팅은 자동적이고 빠른 확장을 촉진하며, 마지막으로 개발자는 공급업체가 처리하는 기본 인프라에 대해 걱정할 필요가 없습니다.

한편, 클라우드 제공업체는 애플리케이션 디버깅 및 모니터링의 어려움 등 서버리스 컴퓨팅과 관련된 몇 가지 함정을 해결하기 위해 24시간 내내 노력하고 있습니다.