서버리스와 컨테이너화는 최근 몇 년간 가장 큰 화두( DevOps )였으며, 그럴 만한 이유가 있습니다. 적절한 사용 사례에서는 둘 다 성능을 개선하고 비용을 절감할 수 있습니다. 그러나 서버리스 컴퓨팅의 인기에도 불구하고 모든 사람이 서버리스 컴퓨팅과 컨테이너의 차이점을 이해하는 것은 아닙니다.
이 글에서는 두 기술이 무엇인지 살펴보고, 두 기술을 비교하고, 서로를 보완하는 방법을 설명하고, 서버리스와 컨테이너 보안이라는 중요한 주제를 살펴봅니다.
컨테이너는 애플리케이션을 실행하기 위한 모든 종속성과 코드를 포함하는 경량의 변경 불가능한 소프트웨어 단위입니다.
컨테이너는 다양한 운영 체제 및 플랫폼에서 실행할 수 있는 "컨테이너 런타임"(컨테이너 엔진이라고도 함)을 기반으로 실행됩니다. 컨테이너 런타임은 컨테이너에 필요한 모든 시스템 리소스를 제공하기 때문에 기존 운영 체제에서 애플리케이션을 배포할 때 발생하는 운영상의 복잡성을 최소화할 수 있습니다.
컨테이너는 휴대성도 뛰어납니다. 컨테이너 런타임이 있는 곳이라면 어디에서나 컨테이너 이미지를 배포할 수 있습니다. 또한 컨테이너는 애플리케이션을 실행하는 데 필요한 것만 포함하기 때문에 가상 머신과 같은 대안보다 가볍고 빠릅니다.
컨테이너 플랫폼의 가장 인기 있는 예는 Docker입니다. 하지만 Docker가 유일한 컨테이너 플랫폼은 아닙니다. 예를 들어, Linux 컨테이너(LXC)는 Docker보다 먼저 등장했으며 오늘날에도 여전히 사용되고 있습니다. 또한 컨테이너 배포를 대규모로 오케스트레이션하고 관리하는 데 사용되는 Kubernetes (K8s)와 같이 컨테이너를 보완하는 많은 도구가 있습니다.
서버리스는 인프라를 프로비저닝하거나 관리할 필요 없이 온디맨드 방식으로 코드를 실행하는 컴퓨팅 모델입니다.
이름에서 알 수 있듯이 서버리스 컴퓨팅에는 서버가 존재합니다 . 하지만 기업에서는 서버 인프라에 대해 전혀 걱정할 필요가 없습니다. 대신 개발팀은 서버리스 플랫폼에 코드를 배포하기만 하면 되고, 코드가 실행되어 서버 리소스를 사용할 때만 요금이 부과됩니다.
기업은 서버 리소스(예: CPU)를 사용한 시간에 대해서만 비용을 지불하므로 서버리스는 사용량이 급증하거나 감소하는 애플리케이션 배포 비용을 최소화할 수 있는 좋은 방법이 될 수 있습니다. 이는 베어메탈 서버, 가상 머신 또는 컨테이너를 실행하는 것과는 근본적인 변화입니다. 유휴 시간에는 비용이 발생하지 않으며, 앱이 활발하게 실행 중이고 리소스를 사용할 때만 요금이 발생합니다.
또한 서버리스 플랫폼 제공업체가 모든 인프라를 추상화하기 때문에 운영 복잡성이 감소합니다. DevOps 팀은 코드에만 집중하면 됩니다. 서버리스 컴퓨팅 플랫폼의 인기 있는 예로는 AWS Lambda, Azure 앱 서비스, Google의 Cloud Run 등이 있습니다.
이제 서버리스 컴퓨팅과 컨테이너가 무엇인지 이해했으니 가장 많이 사용되는 몇 가지 사용 사례를 살펴보겠습니다.
물론 이는 컨테이너와 서버리스 컴퓨팅으로 가능한 것의 일부에 불과합니다. 일반적으로 컨테이너는 휴대가 간편하고 가벼우며 변경 불가능한 이미지를 안정적으로 배포해야 하는 모든 곳에서 유용합니다. 서버리스 컴퓨팅은 워크로드가 매우 가변적이고 인프라 관리 노력을 최소화하는 것이 최우선 과제인 다양한 애플리케이션에 유용합니다.
보시다시피 서버리스 컴퓨팅과 컨테이너는 몇 가지 높은 수준의 유사점이 있습니다. 복잡성을 없애고 팀이 애플리케이션을 더 쉽게 배포하고 확장할 수 있습니다. 하지만 다음과 같은 몇 가지 중요한 차이점을 고려해야 합니다:
이러한 차이점에도 불구하고 컨테이너와 서버리스 컴퓨팅이 반드시 상호 배타적인 것은 아닙니다. 예를 들어 Docker를 사용하여 서버리스 기능을 컨테이너화할 수 있습니다. 또한 Google의 Cloud Run과 같은 플랫폼은 사용량에 따라 지불하는 서버리스 모델을 사용하여 컨테이너를 배포하도록 설계되었습니다.
기술 자체와 마찬가지로 서버리스와 컨테이너 보안은 미묘한 DevSecOps 주제입니다.
서버리스는 인프라 관리와 관련된 많은 보안 문제를 제거하지만, 여전히 많은 중요한 Serverless Security 고려해야 할 사항이 여전히 많습니다. 예를 들어, 안전하지 않은 서버리스 권한 구성은 애플리케이션에 취약성을 야기할 수 있습니다. 또한 서버리스 워크플로우를 지원하는 더 많은 기능과 프로토콜은 보호해야 할 잠재적 공격 벡터가 더 많아진다는 것을 의미합니다. 서비스 제공업체가 인프라의 많은 부분을 처리하기 때문에 서버리스 배포에 대한 가시성이 제한된다는 보안상의 단점도 있습니다.
반면에 컨테이너 보안에는 고유한 과제가 있습니다. 예를 들어, 신뢰할 수 있는 컨테이너만 안전하게 소싱하여 배포하고 패치를 유지하는 것은 운영상의 어려움이 될 수 있습니다. 또한, ID 및 액세스 관리(IAM)와 컨테이너 구성 관리는 강력한 보안 태세의 중요한 측면입니다.
애플리케이션 개발에 대한 두 가지 접근 방식은 복잡성을 줄이기는 하지만 강력한 보안 태세의 필요성을 없애지는 못하며 개발 프로세스에 보안을 통합해야 합니다. 최소 권한 원칙을 준수하고 '제로 트러스트' 정책을 채택하는 것은 인프라 보안을 유지하는 데 중요한 부분이지만 개발팀도 올바른 보안 솔루션을 구현하기 위한 기술과 도메인 전문 지식이 필요합니다.
CheckPoint 소프트웨어는 이러한 문제를 해결하기 위해 특별히 제작되었습니다. 예를 들어 CloudGuard는 서버리스 및 컨테이너 기반 배포를 포함한 모든 엔터프라이즈 클라우드 자산에 대한 엔드투엔드 멀티클라우드 보안을 제공합니다. CloudGuard는 위협 차단, 클라우드 보안 상태 관리, 클라우드 워크로드 보호(컨테이너 및 서버리스 앱용), 지능형 위협 헌팅과 같은 기능을 제공합니다.
컨테이너 또는 Serverless Security 자세를 개선하고 싶다면 지금 바로 무료 즉시 보안 점검에 등록하세요. 이 점검을 통해 클라우드 환경 전반에서 보안 및 규정 준수를 위협할 수 있는 잘못된 구성을 식별할 수 있습니다. 또는 CloudGuard를 직접 체험해보고 싶다면 무료 평가판에 가입하세요.
서버리스와 컨테이너 보안에 대해 자세히 알아보려면 무료로 제공되는
Serverless Security 어드밴티지 전자책과 컨테이너 보안 가이드는 시작하기에 좋은 시작점입니다.