Lambda란?
Lambda는 서버를 프로비저닝 하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다. Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 코드 모니터링 및 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. Lambda를 사용하면 거의 모든 유형의 애플리케이션 또는 백엔드 서비스에 대한 코드를 실행할 수 있습니다. Lambda가 지원하는 언어 중 하나로 코드를 공급하기만 하면 됩니다.
출처: AWS Lambda 개발자 안내서
최근 클라우드 컴퓨팅 부문에서 가장 주목받는 용어 중 하나가 '서버리스 컴퓨팅(serverless computing)'입니다. 서버리스란 물리적인 서버가 없는 형태는 아닙니다. IT인프라를 구축하기 위해서는 필수적으로 물리적인 서버가 필요합니다. 서버리스 서비스를 사용하면 개발자는 서버 운영을 신경 쓰지 않고 코드 개발로만 서버를 운영할 수 있습니다. 즉, 서버리스란 '사용자 입장에서 서버를 관리할 필요가 없다는 의미' 입니다.
애초에 AWS 클라우드 서비스를 사용하는 이유는 온프레미스(On-premise) 환경의 물리적 서버를 직접 구축하지 않아도 된다는 장점에 있습니다. 하지만 서버리스 컴퓨팅은 온프레미스의 장점에서 더 나아가 로드밸런싱, 서버 부팅 등을 모두 관리해 줍니다. 즉, 사용자는 함수(Lambda)만 관리하여 코드를 통해 서버를 운영할 수 있다는 이점이 있습니다.
Lambda특징
1. 완전 관리형 서비스
쉽게 말해 하드웨어, 네트워크, os(운영체제)까지 개발자가 파악할 필요 없이 알아서 관리해주는 서비스라고 생각하면 좋습니다. 개발자(사용자)는 코드를 자바, 파이썬 등으로 작성할 수 있으며 람다에서 함수 생성시 어떠한 런타임으로 실행할지 선택하기만 하면 됩니다.
(* 런타임 이란 프로그래밍 언어가 구동되는 환경이다. 예를 들어 프로그래밍언어(js,python 등)가 browser에서 실행된다면 런타임은 browser이 된다.)
2. 유연성 확장성
람다는 다른 AWS서비스들을 호출하여, 자신만의 서비스를 만들 수 있습니다.
3. 고가용성
AWS 람다는 99.999%의 가용성을 자랑합니다. 직접 서버를 구성하면 온프레미스 환경에서 여러 안전성 문제들이 생길 가능성이 있지만, AWS에서는 여러 곳의 AZ(가용 영역)을 통해 서비스가 문제가 될 확률을 매우 낮게 줄여줄 수 있습니다.
4. 마이크로 서비스와 호환성
람다는 서버리스 컴퓨팅으로 함수를 생성하여 특정 역할이나 활동을 수행하기 위해 작고 독립적인 코드 단위로 개발할 수 있습니다. 이는 마이크로 서비스의 전달 수단으로 사용되어 클라우드 환경에서 효율적으로 확장하기 어려운 모놀리식 앱의 단점을 극복할 수 있습니다.
5. 시간적 제약이 있다.
한번 작동 시 시간적 제한이 있다. 때문에 오랜 시간이 걸리는 대규모 연산 작업에는 어울리지 않다.
Lambda함수 이해
AWS Lambda(람다)는 이벤트에 대한 응답으로 코드를 실행하고 자동으로 기본 컴퓨팅 리소스를 관리하는 서버리스 컴퓨팅입니다. 여기서 '이벤트에 대한 응답으로 코드를 실행'한다는 말은 쉽게 말해 특정 상황이 input 되었을 때 람다 함수를 실행한다는 의미이다.
(* 아래 그림에서 이벤트 발생 = 이벤트 트리거 = 이벤트 발생 소스이다.)
아래는 조금 심화된 Lambda architecture이다. 언뜻 보면 어려워 보이지만 AWS Lambda 서비스에 API 관리를 위한 API gateway를 연결하고 s3 스토리지 서비스를 연결하여 CDN이 작동하는 모습을 보여주고 있다.
핵심 서버리스 서비스
AWS 람다에 대해 짧게 알아보는 포스팅이었다. 다음 포스팅에서는 s3를 트리거로 활용한 람다 서비스를 간단한 실습으로 구현해보겠다.
댓글