2022년 5월 18일 수요일

Serverless Architecture 개념 및 장단점

많은 기업들이 Serverless Architecture를 사용하여 관리의 최소화와 비용의 효율화를 이루려고 하고 있다. AWS Lambda, Azure Functions, Google Cloud Functions 등 Public Cloud Vendor에서 Serverless 기능을 제공하는 서비스들이 있으며, 본 글은 해당 서비스들을 비교하는 것이 아닌, 큰 틀에서 Serverless Architecture를 구성할 때에 장단점에 대해서 설명한다.

Serverless는 이름에서 나타는 것과 같이 서버가 없이 필요할 때에 Code만 수행되어 결과를 제공하는 Architecture이다. 그때 그때 Code가 수행되기 때문에 Stateless하고, Asynchronous task들을 수행하기에 알맞는 선택이다. 물론 Public Cloud Vendor들이 Synchoronous task들을 수행할 수 있게 하는 서비스들을 추가적으로 제공하고 있고, 이로 인해 모든 종류의 task들에서 Serverless Architecture를 이용하여 구성할 수 있다. 서버에서 Code를 수행하는 점과 비교해서 한계점은 한번 Code 수행할 때에 병렬수행에도 한계가 있고, 수행시간에 제약이 있으며 이 시간은 Cloud Vendor별로 다르지만 약 10분정도 이다.

많은 현업의 개발자들과 담당자들이 Serverless 기능을 제공하는 서비스들을 보면서 해당 서비스들을 기술적인 관점에서 바라보려고 하는 경우를 많이 목격했으나, Serverless 서비스들은 기술과 상관없이 사용자에게 편리한 가격적인 정책으로 생각을 전환하면 장단점을 이해하기 쉽다. 모든 Serverless 서비스들은 현재 호출 몇번당 얼마의 가격으로 제공되며, 이렇게 측정된 가격때문에 수행시간의 한계가 존재하는 것이다. 예를 들어서 Serverless 서비스에서 내부적으로는 미리 생성된 VM들이나 container들을 재활용하여 자원들을 제공할 수도 있다. 이렇게 되면 Public Cloud Vendor의 입장에서는 수행시간의 한계점이 없으면, Cost에 대한 계산이 불가능하기 때문에 가격을 책정할 수 없게 된다. 그러므로 앞에서 얘기한 대로 1어떤 기술을 사용하냐는 중요한 부분이 아니고, 중요한 부분은 호출 후에 얼마나 빠르게 수행이 시작되는지, 그리고 수행자체의 성능이다. 이런 부분을 알아야지 Serverless Architecture가 해당 업무에 맞는 기능을 제공하는지 판단할 수 있게 된다.

Serverless를 사용할 때의 가장 큰 장점은 관리해야할 서버들이 없다는 것이다. Code만 deploy해 놓으면 해당 Code가 수행될 때에 자동적으로 자원이 할당되어 수행 후 결과값을 제공한다. 수행될 때에만 자원이 할당됨으로 수행되지 않을 때에는 비용이 발생하지 않는다. 사용자의 입장에서는 하나의 서버에서 여러개의 독립적인 Code를 관리해야하는 것이 아님으로 Code deploy도 빠르게 이루어질 수 있고, 마지막으로 Serverless Code는 특정 서버에서 수행되는 것이 아님으로 호출하는 Application과 가까운 곳에서 수행되서 빨리 결과를 제공할 수 있다.

Serverless는 장점이 확실한만큼 단점 또한 많이 존재한다. 우선적으로, 수행시간과 병렬수행에 한계가 있다는 점이다. 이는 복잡하고 동시수행이 많은 업무에는 한계점이 있다. 또한 각 Public Cloud Vendor별로 Serverless 서비스들이 약간 다르기에, 다른 Public Cloud Vendor로 이미 구성된 Serverless Architecture의 Migration이 쉽지 않다. 2 마지막으로 요즘 많이 사용하는 Machine Learning (ML)의 Modeling 작업은 Serverless로 하기에 적합하지 않다. 우선 현재 GPU가 Serverless로 제공되어있지가 않으며, 통상적으로 ML Modeling 작업은 10분 이상이 소요되는 경우가 많이 있기에 Serverless 서비스들을 이용하기엔 어려움이 있다. 3

어떤 특정 기술이나 Architecture가 모든 문제를 해결해주지는 못하고, 매일 새로운 기술들, 서비스와, 제품들이 시장에 소개되기때문에, 각각의 단점과 장점을 잘 파악하여 업무에 가장 효과적인 기술과 Architecture를 선택하는 능력이 요즘 시장 상황에서는 더욱 필요로 된다.

  1. Public Cloud의 As-a-Service – Part I 사용시 고려사항
  2. What is Serverless Architecture? What are its criticisms and drawbacks?
  3. Why we don’t use Lambda for serverless machine learning

    Related Posts

    클라우드 서비스와 오픈소스 라이선싱
    ML 모델 도입을 위한 SageMaker의 효율성
    클라우드 환경에서의 데이터베이스 가용성

    1 Response

    Leave a Reply