본문 바로가기
AWS 클라우드

AWS Lambda는 무엇일까?

by 반화넬 2023. 7. 22.
반응형

안녕하세요.

클라우드서비스를 많이 이용하는데요.

Lambda를 이용하는 이유는 AWS 내 로직 코딩으로 서비스를 자동으로 확장/축소하기 위해 많이들 사용하는데요. 정말 클라우드의 서비스가 많은 기능을 하기 때문에 IDC 자체 운영 보다는 클라우드 운영으로 많이 넘어오는것 같아요. 하지만 금액적인  부분도 있기 때문에 고려할사항들은 있게죠 .어디든 최소 장비로 최대 서비스를 해야만 운영비용이 줄어들기 때문이죠. 

 

AWS Lambda에 대해서 알아보기

 


AWS Lambda은 서버를 프로비저닝하거나 관리하지 않고도 코드를 실행할 수 있게 해주는 컴퓨팅 서비스입니다.

Lambda는 고가용성 컴퓨팅 인프라에서 코드를 실행하고 서버와 운영 체제 유지 관리, 용량 프로비저닝 및 자동 조정, 코드 및 보안 패치 배포, 로깅 등 모든 컴퓨팅 리소스 관리를 수행합니다. Lambda를 사용하면 Lambda가 지원하는 언어 런타임 중 하나로 코드를 제공하기만 하면 됩니다.

Lambda 함수에 코드를 구성합니다. Lambda 서비스는 필요할 때만 함수를 실행하고 자동으로 확장됩니다. 

Lambda를 사용해야 하는 경우


Lambda는 빠르게 스케일 업해야 하고 수요가 없을 때는 0으로 스케일 다운해야 하는 애플리케이션 시나리오에 이상적인 컴퓨팅 서비스입니다. 예를 들어 Lambda를 다음에 사용할 수 있습니다.

파일 처리: 업로드 후 Amazon Simple Storage Service(S3)를 사용하여 Lambda 데이터 처리를 실시간으로 트리거합니다.

스트림 처리: Lambda 및 Amazon Kinesis를 사용하여 애플리케이션 작업 추적, 거래 주문 처리, 클릭스트림 분석, 데이터 정리, 로그 필터링, 인덱싱, 소셜 미디어 분석, 사물 인터넷(IoT) 디바이스 데이터 텔레메트리 및 계측을 위한 실시간 스트리밍 데이터를 처리합니다.

웹 애플리케이션: Lambda를 다른 AWS 서비스와 결합하여 여러 데이터 센터에서 고가용성 구성으로 자동으로 스케일 업/스케일 다운되고 실행되는 강력한 웹 애플리케이션을 빌드합니다.

IoT 백엔드: Lambda를 사용하여 서버리스 백엔드를 구축함으로써 웹, 모바일, IoT 및 서드 파티 API 요청을 처리합니다.

모바일 백엔드: Lambda 및 Amazon API Gateway를 사용하여 백엔드를 구축함으로써 API 요청을 인증하고 처리합니다. AWS Amplify를 사용하여 iOS, Android, 웹 및 React Native 프론트엔드와 손쉽게 통합합니다.

Lambda를 사용하면 사용자는 자신의 코드에 대해서만 책임을 갖습니다. Lambda는 메모리, CPU, 네트워크 및 기타 리소스의 균형을 제공하는 컴퓨팅 플릿을 관리하여 코드를 실행합니다. Lambda가 이러한 리소스를 관리하므로 컴퓨팅 인스턴스에 로그인하거나 제공된 런타임에 운영 체제를 사용자 지정할 수 없습니다.

Lambda는 사용자를 대신하여 용량 관리, 모니터링 및 Lambda 함수 로깅을 비롯한 운영 및 관리 활동을 수행합니다.

컴퓨팅 리소스를 관리해야 하는 경우 이외에도 다음과 같은 AWS 컴퓨팅 서비스를 고려할 수 있습니다.

AWS App Runner는 컨테이너식 웹 애플리케이션을 자동으로 빌드 및 배포하고, 암호화를 통해 트래픽 로드 밸런싱을 수행하고, 트래픽 요구 사항에 맞게 확장하고, 프라이빗 Amazon VPC에서 서비스에 액세스하고 다른 AWS 애플리케이션과 통신하는 방법을 구성할 수 있게 합니다.

Amazon ECS의 AWS Fargate는 가상 머신의 클러스터를 프로비저닝, 구성 또는 확장할 필요 없이 컨테이너를 실행합니다.

Amazon EC2를 사용하면 운영 체제, 네트워크 및 보안 설정, 전체 소프트웨어 스택을 사용자 지정할 수 있습니다. 용량을 프로비저닝하고, 플릿 상태 및 성능을 모니터링하고, 내결함성을 위해 가용 영역을 사용할 책임은 사용자에게 있습니다.

 

주요 기능

다음 주요 기능은 확장 가능하고 안전하며 쉽게 확장할 수 있는 Lambda 애플리케이션 프로그램을 개발하는 데 도움이 됩니다.

함수 옵션 구성
콘솔 또는 AWS CLI를 사용하여 Lambda 함수를 구성합니다.

환경 변수
환경 변수를 사용하여 코드를 업데이트하지 않고 함수의 동작을 조정합니다.

버전
예를 들어 안정적인 프로덕션 버전의 사용자에게 영향을 주지 않고 베타 테스트에 새 함수를 사용할 수 있도록 버전으로 함수 배포를 관리합니다.

컨테이너 이미지
기존 컨테이너 도구를 재사용하거나 기계 학습과 같은 상당한 종속 구성 요소에 의존하는 더 큰 워크로드를 배포할 수 있도록 AWS에서 제공하는 기본 이미지 또는 대체 기본 이미지를 사용하여 Lambda 함수에 대한 컨테이너 이미지를 생성합니다.

계층
라이브러리와 기타 종속 구성 요소를 패키징하여 배포 아카이브의 크기를 줄이고 코드를 더 빠르게 배포할 수 있도록 합니다.

Lambda 확장
모니터링, 관측성, 보안 및 거버넌스를 위한 도구로 Lambda 함수를 보강합니다.

함수 URL
Lambda 함수에 전용 HTTP(S) 엔드포인트를 추가합니다.

응답 스트리밍
Node.js 함수에서 클라이언트로 응답 페이로드를 다시 스트리밍하여 첫 번째 바이트까지 시간(TTFB) 성능을 개선하거나 더 큰 페이로드를 반환하도록 Lambda 함수 URL을 구성합니다.

동시성 및 크기 조정 컨트롤
프로덕션 애플리케이션의 크기 조정 및 응답성에 대해 세밀한 제어를 적용합니다.

코드 서명
승인된 개발자만 변경되지 않은 신뢰할 수 있는 코드를 Lambda 함수에 게시하는지 확인합니다.

프라이빗 네트워킹
데이터베이스, 캐시 인스턴스, 내부 서비스 등의 리소스에 대해 프라이빗 네트워크를 생성합니다.

데이터베이스 액세스 및 프록시
Amazon RDS 프록시 데이터베이스 프록시를 생성하여 데이터베이스 연결 풀을 관리하고 함수에서 쿼리를 릴레이합니다. 프록시를 사용하면 함수가 데이터베이스 연결을 소모하지 않고 높은 동시성 수준을 달성할 수 있습니다.

파일 시스템 액세스
함수 코드가 높은 동시성으로 안전하고 공유 리소스에 액세스하고 수정할 수 있게 Amazon Elastic File System(Amazon EFS)을 로컬 디렉터리에 탑재하도록 함수를 구성합니다.

Lambda SnapStart for Java
일반적으로 함수 코드를 변경하지 않고 추가 비용 없이 Java 런타임의 시작 성능을 최대 10배 향상시킵니다.

반응형