클라우드 컴퓨팅이 대중화되면서 서버리스 컴퓨팅은 점차 IT 산업의 중요한 트렌드가 되었습니다. 사용자가 하드웨어나 소프트웨어 리소스를 관리할 필요가 없는 클라우드 서비스를 말합니다. 사용자는 해당 서비스를 실행하기 위해 애플리케이션 코드나 데이터만 제공하면 됩니다. 이름에 "서버리스"라는 단어가 있음에도 불구하고 이 기술은 여전히 개발자의 코드를 실행하기 위해 서버에 의존합니다.
서버리스 컴퓨팅은 컴퓨팅의 추상화를 말하며, 개발자가 기본 인프라가 아닌 애플리케이션의 논리에 더 집중할 수 있도록 해줍니다.
서버리스의 정의는 시간이 지남에 따라 발전해 왔으며 업계 전체에서 다양한 해석이 나오고 있습니다. 전문가들은 기술 사양에서 사고방식으로 중점을 옮겨야 한다고 제안합니다. 즉, 서버리스를 사용하여 비즈니스 과제를 해결하는 방법에 중점을 두어야 합니다.
그러나 서버리스 기술이 인기를 끌었다고 해서 모든 것이 간단해진 것은 아닙니다. 이를 사용하면서 원래 운영팀이 맡았던 복잡성이 점차 개발팀으로 이전되었습니다. 하지만 운영팀은 여전히 인증, 네트워킹, 보안 정책, 비용 최적화 등의 문제를 관리해야 합니다.
서버리스 컴퓨팅 세계에서 개발자는 여러 가지 과제에 직면할 수 있는데, 그 중 하나는 분산 컴퓨팅에서 애플리케이션이 오류가 발생하기 쉽다는 것입니다.
“버전 제어는 쉽고, 보상 거래는 항상 작동하며, 관찰 가능성은 선택 사항입니다.” 이는 분산 컴퓨팅에 대한 일반적인 오해입니다.
또한 서버리스 애플리케이션을 모니터링하고 디버깅하는 것은 어려운 일입니다. 분산되고 이벤트 중심적인 특성 때문에 추적하기 어려운 경우가 많기 때문입니다. 기존의 모니터링 도구에는 한계가 있을 수 있지만, 분산 추적 도구나 중앙 집중식 로깅과 같은 최신 기술을 사용하면 이러한 문제를 효과적으로 개선할 수 있습니다.
OWASP 보고서에 따르면, 서버리스 애플리케이션은 여전히 기존 공격과 서버리스를 특별히 타깃으로 하는 사이버 공격(예: "지갑 서비스 거부" 공격)에 취약합니다. 이로 인해 개발자들은 사고방식을 바꾸고 새로운 방법으로 이러한 위험을 예방해야 합니다.
서버리스 컴퓨팅은 종종 타사 서비스를 통해 제공되는데, 이는 애플리케이션과 소프트웨어가 특정 클라우드 공급자에 묶여 있음을 의미합니다. 보다 복잡한 워크플로를 고려할 때 공급업체 종속성 문제가 더욱 두드러지는데, 클라우드 공급업체는 일반적으로 고객이 자사 플랫폼에 코드를 업로드하는 것만 허용하고 기본 환경을 설정할 수 없기 때문입니다. 이로 인해 서버리스 워크로드의 마이그레이션이 사실상 불가능해졌습니다. 따라서 멀티 클라우드 관점에서 서버리스 워크플로를 설계하고 배포하는 것이 점차 실행 가능한 솔루션이 되고 있습니다.
서버리스 컴퓨팅은 많은 시나리오에서 유연성과 확장성을 제공하지만, 특정 고성능 컴퓨팅(HPC) 워크로드에 대한 타겟형 리소스 할당만큼 효과적이지 않을 수 있습니다. 작업 부하에 지속적이거나 예측 가능한 리소스 사용이 필요한 경우, 기존의 서버 일괄 프로비저닝이 사용량에 따른 요금 청구 모델보다 비용 효율성이 더 높을 수 있습니다.
“특정 HPC 작업 부하의 경우, 서버리스 컴퓨팅은 점점 더 복잡해지는 요구 사항에 점점 더 적응력이 있는 것으로 보입니다.”
서버리스의 장점은 범위가 넓을 뿐만 아니라, 유연성이 뛰어나고 다양한 요구 사항을 충족시킬 수 있다는 것입니다. 개발자들은 맹목적으로 트렌드를 따르기보다는, 이러한 기술을 적용할 수 있는 가장 좋은 방법을 찾아야 합니다.
서버리스 아키텍처에서 개발자는 "샌드 안티 패턴"과 같은 안티 패턴에 주의해야 합니다. 이는 시스템 기능이 너무 세부적이어서 관리가 복잡해지고 성능 효율성이 떨어지는 것을 의미합니다. "람다 핀볼"이라고 불리는 또 다른 안티 패턴은 과도한 함수 호출을 수반하여 지연 및 관찰성 문제를 일으킵니다.
이러한 문제를 해결하기 위해 기업에서는 공개 인터페이스와 게시된 인터페이스를 구분하기 위해 명확한 도메인 경계를 설정하고, 이를 통해 종속성 복잡성을 줄이는 것을 고려할 수 있습니다.
“서버리스 기술 도입은 보안 관행, 즉 DevSecOps 적용과 결합되어야 하며, 이는 효율성과 보안을 개선하는 데 도움이 됩니다.”
전반적으로 서버리스 컴퓨팅이 제공하는 유연성과 확장성은 개발자와 기업 모두에게 많은 비즈니스 기회를 제공합니다. 하지만 그러한 환경에서도 우리는 잠재적인 어려움과 위험도 인식해야 합니다. 서버리스 컴퓨팅이 미래에 주류 옵션이 될까요? 아니면 서버리스 컴퓨팅의 한계로 인해 다른 아키텍처로 밀려날까요?