본문 바로가기

기타 프로젝트

[AWS lambda] 1. lambda로 'Hello World!' 찍어보기

어쩌다가  Lambda를 써 보게 되었는가?

이번에 운영진으로 참여한 해커톤은 AWS에서 후원하는 해커톤이었다. 여기서 '해커네컷'이라는 slack 앱을 만들어 활용했는데, AWS의 김병준 이사님이 이 앱을 추가적으로 활용할 수 있는 기회를 마련해 주셨다. AWS라는 기업에 관심이 생겨 이것저것 찾아 봤다. AWS에서는 EC2 기능만 사용해 봤는데 내가 생각했던 이상으로 많은 기능이 있다는 사실을 알게 됐다.  Cloud9, S3, DynamoDB, Lambda... 새로운 이름이 툭툭 튀어나왔다. 하나같이 뭔가 멋있는 이름들이었다. 최신 유행이라면 그게 뭐든 찍먹해 봐야지! 이번 해커네컷에 한 번 사용해 보기로 했다.

 

 

 

AWS는 왜 Serverless에 집착할까?

그러면서 AWS의 지향점에 대해서도 생각해 봤다. AWS는 서버를 파는 곳인 줄로만 알았는데 왜 이렇게까지 많은 기능을 준비하고 또 애써 홍보할까? Lambda는 사용한 만큼만 돈을 내는 구조인데, 24시간 서버를 굴리도록 하면 더 많은 돈을 벌 수 있지 않을까? 왜 굳이 짧은 시간만 사용해도 되도록 하는 걸까?

 

그 답을 요즘 트렌드인 Cloud 기술과 Serverless 기조에서 찾았다. 실제로 AWS에서 제공하는 인스턴스들은 클라이언트로부터 요청 받고 라우팅하고 DB에서 자료를 저장하고 꺼내 오는 것까지 전부 아우른다. 심지어 Cloud9이라는 인스턴스를 이용하면 아예 로컬 없이 IDE를 이용해서 쉽게 개발할 수도 있다. 나처럼 server에 대해서 잘 모르는 개발자도 쉽게 서비스를 operating 할 수 있다는 것이다.

 

서버를 신경쓸 필요 없는 만큼 개발자는 더욱 쉽고 위험부담 적게 서비스를 운영할 수 있다. AWS의 인스턴스가 좋은 만큼 더욱 AWS에 의존하고 더 AWS에 최적화된 서비스 구조를 갖게 될 것이다. 이미 AWS에서 서버리스로 잘 굴러가고 있는 서비스를 다른 플랫폼으로 migration하는 것도 시스템의 구조 자체를 바꿔야 하기 때문에 어렵고 복잡한 작업이 된다. 아마 이렇게 개발자가 AWS에 의존하는 서비스를 만들게 되는 게 AWS가 얻는 이득인 것 같다.

 

 

 

그러면 Serverless란 무엇인가?

Serverless란 우리가 신경 쓸 필요 없는 곳에 관리형 서버가 따로 존재해서 개발자가 직접 서버를 구성하거나 유지보수 할 필요 없는 모델을 의미한다. 개발자는 사용할 기능을 미리 함수로 구현하고 그 함수가 호출될 trigger를 설정해 두면 그만이다.

 

 

 

Lambda란 무엇인가?

https://aws.amazon.com/lambda/?nc1=h_ls

 

클라우드 컴퓨팅 PaaS | Amazon Web Services

닫기 Amazon Simple Storage Service(Amazon S3)를 사용하여 업로드 후에 실시간으로 AWS Lambda 데이터 처리를 트리거하거나 기존 Amazon EFS 파일 시스템에 연결하여 대규모 파일 처리를 위한 대규모 병렬 공유

aws.amazon.com

Lambda는 AWS에서 밀고 있는 serverless 서비스용 인스턴스이다. 사용하지 않을 때는 비용이 들지 않고 유지보수에 신경 쓸 필요 없다는 장점이 있다.

 

 

 

왜 Lambda를 사용해야 하는 것인가?

생각해 보자. 여기 인천광역시 용현동의 김아무개가 만든 정체불명의 김치찌개와 굴지의 대기업 오뚜기에서 만든 진짬뽕이 있다. 둘 중 어느 것을 택할 것인가? 아마 대다수의 안전지향적 현대인은 오뚜기 진짬뽕을 선택할 것이다. 맛과 위생이 보장되어 있기 때문이다. 직접 server를 구축하는 것과 lambda 서비스를 사용하는 것의 차이도 마찬가지일 것이다. 내가 만든 정체불명의 서버보다는 대기업에서 구축하고 운영/관리해 주는 server를 신뢰하고 이용하는 것이다. 

 

 

 

Lambda로 'Hello World!' 찍어보기

1. Lambda 서비스 접속

AWS login->서비스->모든 서비스->Lambda

 

2. 함수 생성

함수 이름을 입력한다. 나는 python을 사용할 거라서 파이썬을 선택했다. 그런 다음 '함수 생성' 버튼을 클릭한다.

그러면 이런 창이 뜬다. 여기서 코드를 수정한 후 'Deploy' 버튼을 클릭한다.  일종의 API를 위한 함수를 만든 셈이다.

 

2. URL 생성

이 함수를 호출하기 위해선 적절한 URL이 필요하다. 함수 URL을 생성해 보자.

 URL이 성공적으로 생성되었다.

 

3. 만든 API 호출

'Hello world!'를 출력하는 기능의 API를 호출해 보자. 단순히 URL에 접속하기만 하면 된다.

성공!

 

 

 

Reference

https://cumulus.tistory.com/11

 

AWS Lambda 기초 개념 및 간단 사용

AWS Lambda란? Lambda는 AWS의 서버리스 컴퓨팅 서비스로 서버를 프로비저닝할 필요 없이 특정 이벤트에 대한 응답으로 코드를 실행할 수 있다. 완전 관리형 컴퓨팅 서비스 상태 비저장 코드 실행 Node.

cumulus.tistory.com

https://dev.to/raphael_jambalos/more-than-hello-world-in-lambda-build-and-deploy-flask-apis-in-aws-lambda-via-cdk-1m04

 

More than 'Hello World in Lambda': Build and Deploy Python Flask APIs in AWS Lambda via CDK

There are a lot of good tutorials on Lambda and CDK - most of them focus on deploying simple Python a...

dev.to

https://velog.io/@yoonvelog/AWS-lambda-%EC%B0%8D%EB%A8%B9%ED%95%98%EA%B8%B0

 

AWS lambda

AWS lambda란?

velog.io