산업 제조
산업용 사물 인터넷 | 산업자재 | 장비 유지 보수 및 수리 | 산업 프로그래밍 |
home  MfgRobots >> 산업 제조 >  >> Industrial Internet of Things >> 클라우드 컴퓨팅

서버리스 컴퓨팅이란 무엇입니까?

인프라 관리는 최신 소프트웨어 개발 워크플로에 복잡성을 가중시킵니다. 서버 가동 및 실행 유지, 보안 업데이트 관리, 리소스 확장은 DevOps팀에서 소중한 시간을 소비합니다. 서버리스 컴퓨팅을 사용하면 모든 인프라 운영이 서비스 제공업체에서 처리됩니다. 따라서 서버리스를 사용하면 개발 팀이 인프라 관리에 너무 많은 시간을 소비하는 대신 코드 작성에 집중할 수 있습니다.

이 도움말에서는 서버리스 컴퓨팅이 무엇이며 다양한 클라우드 배포 모델과 어떻게 비교되는지 설명합니다. 또한 서버리스의 장단점을 살펴보고 몇 가지 일반적인 사용 사례에 대해 이야기하겠습니다.

서버리스 컴퓨팅이란 무엇입니까?

서버리스 컴퓨팅은 서버 프로비저닝 및 인프라 관리를 다루지 않고 클라우드에서 코드를 배포하고 실행하는 방법입니다. 이름에도 불구하고 서버리스는 여전히 코드 실행을 위해 클라우드 또는 물리적 서버에 의존합니다. 그러나 개발자는 기본 인프라에 관심이 없습니다. 이는 필요한 컴퓨팅 리소스를 동적으로 할당하고 사용자를 대신하여 관리하는 서버리스 공급자에게 맡겨집니다.

개발자에게 이는 서버 관리, 유지 관리, 리소스 확장 또는 용량 계획에 소요되는 시간이 전혀 없음을 의미합니다. 그들은 단순히 코드를 업로드하고 공급자가 다양한 이벤트 또는 요청을 기반으로 서버 측 논리를 실행하도록 합니다. 익숙한 클라우드 결제 모델과 달리 서버리스 서비스는 코드가 실행된 횟수나 특정 이벤트가 발생한 시점에 따라 요금이 부과됩니다.

서버리스 컴퓨팅은 어떻게 작동합니까?

서버리스 환경에서 코드는 이벤트에 의해 트리거되고 함수로 실행됩니다. 이것이 서버리스가 유사한 개념인 "Functions-as-a-Service" 또는 FaaS와 종종 연관되는 이유입니다. FaaS는 사용자 개입 없이 코드 실행을 위한 서버 측 로직을 처리하는 이벤트 기반 클라우드 모델입니다. 이러한 이벤트는 간단한 HTTP 요청, API 호출에서 데이터베이스 쿼리 또는 파일 업로드에 이르기까지 무엇이든 될 수 있습니다.

함수는 상태 비저장 컨테이너에서 실행됩니다. 즉, 함수를 실행하기 위한 컴퓨팅 리소스는 호출될 때만 프로비저닝됩니다. 데이터가 RAM에 유지되거나 디스크에 기록되지 않습니다. 요청이 완료되면 앱 상태가 재설정되고 트랜잭션 메모리가 없습니다. 처음부터 프로비저닝할 리소스에 대한 새 요청을 호출하면 이전 호출에 대한 참조 없이 코드가 실행됩니다.

이 상태 비저장 상태를 수용하려면 애플리케이션을 상태 비저장 컨테이너에서 실행할 수 있는 기능으로 아키텍처해야 합니다. 이는 일반적으로 마이크로서비스를 통해 달성됩니다. 대규모 모놀리스 앱은 더 작은 세그먼트로 세분화되고 API를 통해 상호 연결됩니다. Monolith 앱은 여전히 ​​단일 기능으로 실행할 수 있지만 이는 일반적인 방법이 아닙니다. 모든 요청에 ​​대해 새로운 컴퓨팅 컨테이너가 프로비저닝된다는 점을 염두에 두고 대규모 기능은 실행 속도와 지속 시간에 부정적인 영향을 미칩니다.

FaaS 기능은 무한히 실행되지 않습니다. 호출되면 일정 시간이 지나면 종료됩니다. 대부분의 경우 함수는 약 5분 후에 시간 초과됩니다. 즉, 장기간 작업을 실행하는 앱은 종료 제한을 고려하여 재설계되어야 합니다.

함수 실행을 위해 컨테이너를 프로비저닝하고 초기화하는 데에도 시간이 걸립니다. 이것은 일반적으로 밀리초 단위로 측정됩니다. 그러나 복잡한 기능은 초기화하는 데 몇 초가 걸리므로 지연 시간이 길어질 수 있습니다.

기능을 초기화하는 일반적인 방법에는 웜 스타트와 콜드 스타트의 두 가지가 있습니다. 경고 시작은 이전 이벤트의 리소스를 재사용하는 반면 콜드 시작은 새 컨테이너를 배포합니다. 함수를 초기화하고 실행하는 데 걸리는 시간은 코드의 양, 프로그래밍 언어, 스크립트가 사용하는 라이브러리의 수 및 기타 여러 요인에 따라 달라집니다. 지연 시간 측면에서 콜드 스타트는 기능을 시작하는 데 더 많은 시간이 걸립니다.

서버리스 컴퓨팅은 BaaS, PaaS 및 IaaS와 어떻게 비교됩니까?

모든 소프트웨어 트렌드와 마찬가지로 서버리스가 무엇이고 무엇이 서버리스가 아닌지를 설명하는 공식적인 정의는 없습니다. 이것이 서버리스 컴퓨팅이 종종 다른 클라우드 서비스 및 배포 모델과 혼동되는 이유입니다. 서버리스 컴퓨팅의 개념은 두 가지 유사한 영역을 중심으로 이루어집니다.

서비스로서의 백엔드 — BaaS를 통해 개발자는 모든 백엔드 작업을 서비스 제공업체에 오프로드하면서 프론트엔드 인터페이스 작성에 집중할 수 있습니다. 이러한 백그라운드 작업에는 일반적으로 즉시 사용 가능한 사용자 인증, 스토리지, 데이터베이스 관리, 호스팅 서비스가 포함됩니다. 또한 개발자는 백엔드를 실행하는 서버를 관리할 필요가 없으므로 더 빠른 앱 배포가 가능합니다.

서비스로서의 기능 — 이 서버리스 클라우드 서비스 모델은 인프라 관리를 없애줍니다. 서비스 제공자는 사용자의 코드를 실행하기 위해 온디맨드로 컴퓨팅 리소스를 배포해야 합니다. 이벤트나 요청이 트리거될 때마다 발생합니다. 서버리스 함수는 상태 비저장 컨테이너에서 실행됩니다. 즉, 함수가 호출될 때만 컴퓨팅 리소스가 배포됩니다.

혼란의 주요 지점은 서비스로서의 백엔드와 서비스로서의 플랫폼(PaaS) 사이입니다. 전자는 서버리스 컴퓨팅 기술이고 후자는 클라우드 배포 모델입니다. PaaS는 몇 가지 기본 특성을 공유하지만 서버리스의 요구 사항에 맞지 않습니다.

서비스로서의 플랫폼 — 사용자는 PaaS를 사용하여 개발 워크로드에 필요한 하드웨어 및 소프트웨어 솔루션을 서비스 제공업체로부터 구독료로 임대합니다. 이를 통해 개발자는 인프라 관리에 대한 걱정 없이 코딩에 더 많은 시간을 할애할 수 있습니다. 반면 BaaS는 즉시 사용 가능한 사용자 인증, 관리되는 데이터베이스, 이메일 알림 등과 같은 추가 기능을 제공합니다. 또한 BaaS를 통해 개발자는 주문형 다양한 백엔드 서비스를 통합하면서 프론트엔드 구축에만 집중할 수 있습니다.

서비스로서의 인프라 — IaaS는 공급자가 사용자를 대신하여 인프라를 호스팅하는 셀프 서비스 클라우드 솔루션을 나타냅니다. 소프트웨어 설치를 포함한 모든 서버 프로비저닝 및 관리 작업은 사용자가 처리합니다. 일부 IaaS 제공업체는 서버리스 솔루션도 제공하지만 분명히 다른 제품입니다.

일반적인 서버리스 컴퓨팅 사용 사례

앞서 언급했듯이 서버리스가 모든 사람을 위한 것은 아닙니다. 그러나 이러한 사용 사례 중 일부와 요구 사항이 일치한다면 서버리스의 이점을 누릴 수 있습니다.

API 구축

관리할 서버가 없기 때문에 확장성과 응답성이 뛰어난 API를 구축하는 것은 서버리스의 가장 인기 있는 사용 사례 중 하나입니다. 서버리스의 자동 크기 조정 기능은 트래픽이 많은 상황에서도 API를 항상 사용할 수 있도록 합니다. 또한 API 호출이 없을 때 유휴 리소스에 대한 요금이 사용자에게 부과되지 않습니다.

웹사이트 및 애플리케이션

서버리스 플랫폼에 웹 사이트 및 웹 기반 앱을 배포하는 데는 사전 인프라 설정이 필요하지 않습니다. 이를 통해 완전한 기능의 웹 앱을 시작하는 데 걸리는 시간을 크게 단축할 수 있습니다. 사용자가 수요 증가를 지원하기 위해 더 많은 서버를 프로비저닝하는 것에 대해 걱정할 필요가 없기 때문에 자동 크기 조정 기능도 여기서 중요한 역할을 합니다. 결과적으로 100% 가동 시간을 유지하는 것이 훨씬 쉽습니다.

다국어 애플리케이션

서버리스를 사용하면 단일 앱을 다양한 언어로 작성할 수 있습니다. 서버리스를 사용하면 개발자가 모놀리식 앱을 더 작은 부분으로 분할하고 마이크로서비스로 실행할 수 있습니다. 그런 다음 이러한 마이크로서비스는 API를 통해 서로 통신합니다. 앱의 각 부분은 다른 프로그래밍 언어를 사용하여 작성할 수 있습니다.

CI/CD 파이프라인

자동화는 성공적인 개발, 테스트, 통합 파이프라인을 실행하는 데 중요합니다. 서버리스를 사용하면 개발자가 자동으로 코드를 테스트하고 버그를 더 빠르게 수정할 수 있습니다. 서버리스는 이벤트 기반이므로 사용자는 수동 개입 없이 자동 테스트를 트리거하도록 이벤트를 설정할 수 있습니다.

서버리스 컴퓨팅의 장점은 무엇입니까?

기존의 서버 지향 클라우드 컴퓨팅과 비교할 때 서버리스 컴퓨팅은 인프라 운영을 추상화합니다. 모든 것이 즉시 작동하므로 더 빠른 코드 릴리스와 더 저렴한 가격으로 자동화된 확장성을 보장합니다.

다음은 서버리스의 가장 일반적인 세 ​​가지 이점입니다.

자동 확장

서버리스 공급자는 수요에 따라 인프라 리소스를 확장합니다. 확장 작업은 개발자의 개입 없이 동적으로 자동으로 수행됩니다.

출시 시간 단축

복잡한 서버 클러스터를 프로비저닝할 필요 없이 개발자는 릴리스 속도를 높이는 데 더 집중할 수 있습니다. 이렇게 하면 코드를 프로덕션으로 릴리스하거나 점진적인 코드 변경을 구현하는 데 걸리는 시간이 단축되어 고객에게 앱을 더 빨리 제공할 수 있습니다.

최적화된 비용

모든 것이 온디맨드 방식으로 프로비저닝되기 때문에 조직은 사용하지 않는 스토리지 공간, 컴퓨팅 시간 또는 네트워킹에 대해 비용을 지불할 필요가 없습니다. 서버리스 서비스 사용량은 일반적으로 밀리초 단위로 측정되며 그에 따라 청구됩니다.

서버리스 컴퓨팅의 단점은 무엇입니까?

다른 소프트웨어 솔루션과 마찬가지로 서버리스에도 몇 가지 단점이 있습니다. 하지만 빌드하는 앱에 따라 서버리스의 이러한 단점 중 일부에 대해 그다지 신경 쓰지 않을 수도 있습니다.

지연 시간

함수를 실행할 때 서버리스 공급자는 모든 호출에 필요한 리소스를 자동으로 배포합니다. 워크로드의 크기에 따라 컨테이너는 일반적으로 밀리초 단위로 프로비저닝되지만 몇 초가 걸릴 수도 있습니다. 이전 실행의 인스턴스를 재사용하는 "경고 시작"을 통해 대기 시간을 줄일 수 있습니다.

실행 기간

서버리스 기능의 실행 시간은 제한되어 있으며 일정 시간이 지나면 중단됩니다. 일반적으로 호출 후 약 5분 정도 소요되지만 공급자에 따라 다릅니다. 실행 제한은 장기 프로세스를 시작하는 앱의 주요 단점입니다. 코드를 더 작은 청크로 분할하고 마이크로서비스로 실행하면 이 문제를 완화할 수 있습니다.

공급업체 종속

공급자는 일반적으로 독점 기술을 사용하여 서버리스 서비스를 활성화합니다. 이로 인해 작업 부하를 다른 플랫폼으로 마이그레이션하려는 사용자에게 문제가 발생할 수 있습니다. 다른 제공업체로 이동하면 코드 및 앱 아키텍처의 변경이 불가피합니다.

보안

사용자는 자신의 코드를 실행하는 인스턴스 구성을 거의 제어할 수 없습니다. 이것은 사용자에게 숨겨져 있으며 서비스 제공자의 영역에 속합니다. 따라서 보안 작업도 공급자의 손에 넘어갑니다. 공격이 발생하면 사용자는 무력하며 손상을 완화하고 시스템을 복구하기 위해 공급자에게만 의존합니다. 서버리스 환경에서 여러 진입점이 있는 애플리케이션은 공격 표면이 증가하여 취약성에 더 취약합니다.

서버리스 컴퓨팅의 미래는 무엇입니까?

서버리스 컴퓨팅은 여전히 ​​비교적 새로운 기술입니다. 그 미래는 위에 나열된 몇 가지 단점(가장 중요한 것은 콜드 스타트)을 해결할 수 있는 서비스 공급자의 능력에 달려 있습니다. 공급자는 잠시 동안 유휴 상태에 있던 함수를 실행하는 데 걸리는 시간을 줄여야 합니다. 이 문제를 해결하면 대기 시간이 줄어들고 원활한 사용자 경험이 보장됩니다.

서버리스는 현재 기능 실행을 위해 상태 비저장 컨테이너에 의존합니다. 서버리스의 미래는 상태 저장 앱이 서버리스의 이점을 활용할 수 있도록 하는 방향으로 이동하고 있습니다. 이를 통해 개발자는 백엔드 데이터 관리에 대해 걱정하지 않고 상태 저장 앱을 빌드할 수 있습니다.

DevOps 측면에서 서버리스는 NoOps의 확장으로 이어질 것입니다. 이러한 추세는 서버리스 공급자가 고객을 대신하여 모든 인프라 운영을 처리하게 할 것입니다. 이러한 환경에서는 기업이 사내 운영 팀을 가질 필요가 없습니다.

향후 몇 년 동안 Kubernetes는 서버리스의 기반이 될 것으로 예상됩니다. 네트워킹, 민첩한 자동 확장, 다중 클라우드 배포를 지원하는 Kubernetes 이식성은 여러 가지 방식으로 서버리스 컴퓨팅을 향상시킵니다. 서비스 공급자가 때때로 동작을 제한하기 때문에 서버리스에서 특정 클래스의 앱을 실행하는 것은 비현실적입니다. Kubernetes를 통해 개발자는 이러한 한계를 극복하고 특정 요구 사항에 따라 서버리스 플랫폼을 구축할 수 있습니다.

결론

이름이 서버가 없음을 암시하지만 서버리스 컴퓨팅은 여전히 ​​클라우드 또는 물리적 서버에 의존합니다. 개발자가 앱 작성 및 배포에 집중할 수 있도록 인프라 작업을 제거하는 컴퓨팅 모델입니다. 서버리스 모델은 서비스로서의 백엔드(Backend-as-a-Service) 및 서비스로서의 기능(Functions-as-a-Service)이라는 두 가지 핵심 영역을 중심으로 이루어집니다.

전자는 사용자에게 즉시 사용 가능한 백엔드 아키텍처를 제공하고 후자는 상태 비저장 컨테이너에서 앱을 실행할 수 있습니다. 이러한 컨테이너는 이벤트 또는 트리거를 기반으로 자동으로 프로비저닝됩니다. 따라서 서버리스는 현재의 모든 개발 문제에 대한 완벽한 솔루션이 아닙니다. 주로 마이크로서비스 기반 아키텍처를 사용하는 비모놀리식 앱을 대상으로 합니다.


클라우드 컴퓨팅

  1. 서버리스 컴퓨팅 - 최신 "서비스형" 오퍼링
  2. 최고의 클라우드 컴퓨팅 과정은 무엇입니까?
  3. 클라우드 컴퓨팅이란 무엇이며 클라우드는 어떻게 작동합니까?
  4. 빅 데이터와 클라우드 컴퓨팅의 관계는 무엇입니까?
  5. 서버리스 도입의 가장 큰 장애물
  6. 클라우드 컴퓨팅과 온프레미스
  7. A2 스틸이란 무엇입니까?
  8. 에지 컴퓨팅이란 무엇이며 왜 중요한가요?
  9. 양자 컴퓨팅이란 무엇입니까?
  10. 유압 펌프의 HS 코드는 무엇입니까?