AWS Lambda를 이용한 AI 모듈 구현: Serverless란?

NNIJGNUS·2024년 11월 27일

개요

졸업 프로젝트를 진행하며, LLM을 이용한 뉴스 요약 서비스를 구현하게 됐다.
해당 API가 필요할 때만 호출되는 서비스이며, 이미 AWS EC2 프리티어 인스턴스가 백엔드 서버를 실행하고 있었으므로, 해당 서비스는 AWS Lambda를 이용해 Serverless 하게 구현하기로 했다.

여기서 잠깐, Serverless 란 도대체 무엇일까?

Serverless

서버리스 전문가인 지피티 선생님을 초빙해 몇 가지 여쭙기로 했다.

🤖

서버리스(Serverless) 란 서버 관리의 필요성을 최소화하여 애플리케이션을 개발하고 운영할 수 있게 해주는 클라우드 컴퓨팅 모델입니다.
이 모델에서는 개발자가 서버를 직접 관리할 필요 없이 클라우드 서비스 제공자가 인프라를 자동으로 관리하고 확장합니다.

서버리스의 주요 특징은 다음과 같습니다:

자동 확장: 트래픽에 따라 자동으로 리소스가 조정됩니다.
비용 효율성: 사용한 만큼만 비용을 지불하게 되어, 유휴 리소스에 대한 비용이 발생하지 않습니다.
개발 집중: 개발자는 비즈니스 로직에 집중할 수 있고, 인프라 관리에 대한 부담이 줄어듭니다.

대표적인 서버리스 서비스로는 AWS Lambda, Azure Functions, Google Cloud Functions 등이 있습니다.

이러한 서비스는 이벤트 기반으로 작동하며, 특정 이벤트가 발생할 때만 코드를 실행합니다.

고마워요 지피티맨!

다양한 서버리스 서비스들이 있지만, 가장 대표적이라 생각되는 AWS Lambda를 통해 주요 특징들을 알아보자.

자동 확장

AWS Lambda 공식 문서

AWS Lambda 는 설정한 메모리 사이즈에 따라 실행할 수 있는 vCPU의 갯수가 정해진다.
메모리는 1MB ~ 10,240MB까지 할당할 수 있으며, vCPU는 이에 따라 1 ~ 6개까지 할당된다.

비용 효율성

위는 AWS Lambda의 서울 리전 요금이다.

AWS Lambda요청 횟수, 총 실행 시간, 할당된 메모리 이 세가지 지표에 근거해 비용을 산출하지만, AWS는 친절하게도 가난한 학생들을 위해 월 1,000,000건의 무료 요청400,000GB-초의 컴퓨팅 시간을 제공해주니 알차게 이용하도록 하자.

이처럼 AWS Lambda는 실제 사용량에 근거해 비용을 산정한다.
주로 서버를 구축할 때 많이 사용하는 AWS EC2는 실제 인스턴스에 접속하지 않더라도 실행 시간에 따라 비용을 산정함에 대비된다.

개발 집중

위는 AWS Lambda가 제공하는 간단한 사용 예제이다.

해당 코드를 호출한다면, Hello from Lambda! 를 반환하는 아주 심플한 API이다.

이를 AWS EC2로 구현한다면 어떤 끔찍한 일이 생길지 상상해보자.

pem key를 생성한다. 물론 키가 외부로 노출되면 유쾌하지 못한 일이 발생하므로 잘 관리하자.

인스턴스를 생성한다. 현재 필요한 환경에 알맞은 사양과 OS를 선택한다.

인스턴스에 접속해 사용하고자 하는 언어, 프레임워크를 설치한다.
혹시라도 버전 충돌이 일어난다면 심히 유감이다.

이 외에도 Docker 설치, CI/CD 구축 등 약 108 단계에 걸친 난리 부루스를 완료한 후,
API를 호출한다.

물론 굉장히 과장된 과정이고, terraform 등 자동화 도구를 사용하거나 숙련자라면 쉽게 해낼 수 있을 것이다.
이번에는 이를 AWS Lambda 를 활용하도록 수정해보자. 그렇다면 아래와 같은 과정이 필요할 것이다.

코드를 작성한다. 그 후 코드를 실행한다.

지겨운 인프라 구축 과정을 모두 아마존에게 선물해주고, 즐거운 코딩 시간만이 남았다.
이처럼 Serverless 서비스를 통해 개발 단계에 집중하여 더욱 짱짱한 코드를 작성할 수 있겠다.

Serverless?

Serverless 를 학습하는 과정에서 나와 같은 영어 숙련자들은 다음과 같은 의문이 들 수 있다.

Serverless는 서버가 존재하지 않다는 말인가요?

이런 사소한 의문에 확신을 더하기 위해 친절한 조수 지피티씨에게 질문해봤다.

그렇다면 여기서 나와 같은 숙련된 컴퓨터 공학도들은 다음과 같은 의문이 자연히 떠오를 것이다.

서버가 존재하지 않다면, 저희가 만든 코드는 대체 어디서 돌아가고 있나요?

서버조차 없이 코드를 돌리고자 한다면, 4KB 메모리 컴퓨터로 사람을 달로 쏘아 보내는 여간 기합이 아니었던 선배들도 기함을 하며 고개를 절레절레 젓겠다.

그렇다면 Serverless란 정말 서버가 존재하지 않는다는 뜻일까?

여기에 지피티군이 명쾌한 해답을 제공해준다.

위 답변으로 미루어 보아 Serverless"서버 없음" 을 의미하기보다는 "(내가 관리할) 서버 없음" 정도로 해석할 수 있겠다.

0개의 댓글