서버 리스 컴퓨팅

서버 리스 컴퓨팅: 개념과 장단점

서버 리스 컴퓨팅(Serverless Computing)은 최근 클라우드 컴퓨팅에서 각광받고 있는 기술 중 하나입니다. 이는 인프라스트럭처로부터 직접적인 관리를 해주지 않아도 코드 실행을 가능하게 함으로써 개발자들의 생산성을 증가시킬 수 있는 기술입니다. 아래에서 서버 리스 컴퓨팅의 개념과 이에 대한 장단점을 살펴보겠습니다.

서버 리스 컴퓨팅의 개념

서버 리스 컴퓨팅은 이름에서 알 수 있듯이 서버가 없는 컴퓨팅 기술이라고 생각할 수 있습니다. 이는 클라우드 컴퓨팅에서 Function as a Service(FaaS)라는 이름으로도 불리기도 합니다. 서버 리스 컴퓨팅은 개발자가 함수를 작성하면 클라우드 제공자가 이 함수를 실행하는 방식입니다. 이를 위해서는 개발자는 해당 함수를 클라우드 제공자가 지원하는 언어로(Typescript, Go, Python, Java 등) 작성해야 하며, 해당 함수를 호출하기 위한 이벤트를 정의할 필요도 있습니다.

어떤 이벤트가 언제 발생하면 해당 함수가 실행되는지를 정의하는 것이 바로 서버리스 컴퓨팅의 문법입니다. 쿼리나 파일 등으로부터의 HTTP 요청, 메시지 큐 끝점, 업로드 등의 이벤트를 트리거로 지정할 수 있습니다. 이러한 이벤트는 서버리스 구성에서 따로 구성하지 않아도 이미 존재하는 AWS Lambda, Azure Functions, Google Cloud Functions 등의 서비스를 사용하여 구성할 수 있습니다.

서버 리스 컴퓨팅의 장단점

장점

높은 생산성

서버 리스 컴퓨팅은 개발자가 인프라에 대한 관심을 덜 수 있게 한다는 장점이 있습니다. 개발자는 함수를 작성하기만 하면 되며, 이 함수를 실행하기 위한 인프라는 클라우드 제공자가 대신 관리합니다. 이는 개발자가 애플리케이션 로직에 더 집중할 수 있게 해줍니다.

스케일링 및 고가용성

서버 리스 컴퓨팅을 사용하면 고성능 서버 같은 리소스를 대규모로 공유하므로 서버에서 실행하는 것보다 월세용 고성능 서버 사용을 줄일 수 있습니다. 서버 리스 컴퓨팅은 미리 정해진 trigger 이벤트를 감지하고 함수를 자동으로 확장 및 축소할 수 있어 다양한 크기와 소프트웨어 요구사항의 애플리케이션에 적합합니다.

지속적 배포

서버 리스 컴퓨팅은 정적 사이트 호스팅과 같은 지속적 배포 파이프라인과 함께 사용되기 때문에 변화에 빠르게 대응할 수 있습니다. 서버 리스 컴퓨팅과 함께 사용되는 지속적 배포 파이프라인에서는 애플리케이션 코드의 변경이 감지되면 테스트, 통합 및 제공 단계를 거쳐 신속하게 배포할 수 있습니다.

단점

우수한 애플리케이션 설계 불가

서버리스 컴퓨팅은 애플리케이션 개발자에게 제약 사항을 규정합니다. 애플리케이션은 함께 실행해야 하는 모든 함수 및 응답 시간 제한과 같은 제한 사항을 고려할 필요가 있습니다. 이러한 설계 제한 사항을 준수하지 않으면 애플리케이션은 불안정하게 동작할 수 있습니다.

일부 고객에게서 처리 능력이 떨어짐

느린 인터넷 연결 또는 느린 서버 리스 실행 환경에 비해 고객은 더 빠른 애플리케이션 응답 시간을 기대합니다. 이를 위해서 멀티지역 배포 등 추가 Lambda를 사용하거나 대체 서비스를 사용해야 하므로 추가적인 비용이 발생할 수 있습니다.

정리

서버 리스 컴퓨팅은 인프라 관리의 복잡성을 줄여주어 개발자의 생산성을 높여주는 장점이 있지만, 애플리케이션 설계 제약 사항과 일부 고객의 처리 능력에 대한 문제가 있습니다. 따라서 개발자들은 애플리케이션의 치명적인 문제를 방지하기 위해 적극적으로 리스컴퓨팅을 도입하기 전에 이러한 장단점들을 잘 고려해야 합니다.