컴퓨팅 서비스 EC2
EC2는 IaaS(Infrastructure as a Service) 서비스로, 다양한 인스턴스 타입을 제공하여 사용자의 다양한 컴퓨팅 요구에 대응한다. 인스턴스 타입은 범용 컴퓨터, 컴퓨팅 최적화, 메모리 최적화, 가속 컴퓨팅, 스토리지 최적화 등 다양한 형태로 구분된다.
예를 들어, M6g.xlarge는 인스턴스 패밀리(M)에서 6세대 인스턴스 세대를 가지고 있으며, 추가 기능(g)이 탑재되어 있고 인스턴스 사이즈는 xlarge 이다. EC2 T 패밀리는 버스팅 기능을 가지고 있어 가격이 저렴하면서도 개발 서버나 POC(Proof of Concept) 서버로 자주 사용된다.
AWS EC2의 5세대 인스턴스는 Nitro 시스템이 적용되어 있다. 이는 Nitro 하이퍼바이저, NVMe, ENA, Nitro 보안 칩 등을 포함한 기술로 구성되어 성능을 향상시키고 보안을 강화한다. 또한, AWS EC2의 6/7세대에는 Graviton 칩이 사용되고 있으며, 64비트 Arm Neoverse N1 Core를 기반으로 사용 된다. M6g와 C7g는 비용이 더 저렴하면서 성능이 우수한 특징을 가지고 있다.
버스팅 기능이란?
버스팅 기능은 컴퓨터 시스템에서 프로세서가 일시적으로 추가적인 컴퓨팅 리소스를 사용할 수 있는 기능을 말한다. 이는 프로세서가 일부 작업을 처리하는 동안에는 낮은 수준의 리소스를 사용하다가, 특정 조건이 충족되면 더 많은 리소스를 사용할 수 있도록 하는 메커니즘이다.
POC(Proof of Concept) 란?
POC(Proof of Concept)는 새로운 아이디어나 기술을 실제로 시험해보고, 그 아이디어나 기술의 유효성과 실행 가능성을 확인하는 검증 단계이다.
AWS Lambda란 무엇인가?
AWS Lambda는 서버리스 컴퓨팅 서비스로, FaaS(Function as a Service)의 개념을 기반으로 한다. 다양한 런타임을 지원하며, 필요한 시점에만 코드를 실행하는 특징을 가지고 있다. 또한, 사용한 만큼만 비용을 지불하므로 효율적이다. Lambda는 실시간 파일 처리를 지원하며, 주로 배치성 시스템에서 사용되지만 사용량이 일정치 않은 웹 어플리케이션에서도 주로 활용된다.
AWS의 EC2와 Lambda는 각각 다른 컴퓨팅 환경에서 유용하게 사용되는 서비스이다. EC2는 가상 서버를 제공하여 다양한 컴퓨팅 요구에 대응하며, Lambda 는 서버리스 환경에서 코드 실행을 담당하여 이벤트에 응답하고 작업을 처리한다.
Lambda 함수는 이벤트 기반으로 실행되며 Amazon S3 버킷에 새로운 파일이 업로드되었을 때, 특정 API 호출이 발생했을 때 등 다양한 이벤트에 응답하여 작업을 처리할 수 있다. 개발자는 필요한 로직을 Lambda 함수에 구현하고, 해당 함수를 이벤트와 연결하여 실행한다.
Lambda는 코드를 관리하고 실행 환경을 관리하는 부담을 덜어주기 때문에 개발자는 코드 로직에 집중할 수 있는 특징이 있다. 또한, Lambda는 필요한 만큼의 리소스를 동적으로 할당하여 작업을 처리하기 때문에 확장성과 유연성이 뛰어나며, 자동으로 고가용성을 제공한다.
Lambda는 다양한 언어와 런타임을 지원하여 개발자가 선호하는 언어로 함수를 작성할 수 있다. 또한, 각 함수는 독립적으로 실행되기 때문에 서로 영향을 주지 않고 개별적으로 확장하고 관리할 수 있다.
서버리스 아키텍처의 중요한 구성 요소로 인식되는 AWS Lambda는 개발과 운영의 간편성, 확장성, 비용 효율성을 제공하여 개발자들에게 혁신적인 서비스 제공을 도와 주곤 한다.
Lambda 의 잘못된 사용
Lambda 함수를 잘못 사용하면 예상치 못한 비용이 발생할 수 있다. 그에 대한 예시를 4가지로 정리해 보았다.
잘못된 트리거 설정
Lambda 함수를 실행하는 트리거를 잘못 설정하면 예상치 못한 이벤트가 발생하여 함수가 계속 실행될 수 있다. 예를 들어, S3 버킷에 파일이 업로드될 때마다 Lambda 함수를 실행하도록 설정했는데, 파일이 지속적으로 업로드되면 함수가 지속적으로 실행되어 비용이 증가할 수 있다. 이를 방지하기 위해 적절한 트리거 설정과 필요한 이벤트 필터링이 필요하다.
함수 실행 시간 및 메모리 할당
Lambda 함수의 실행 시간과 할당된 메모리에 따라 비용이 결정된다. 함수가 실행되는 동안 불필요하게 긴 실행 시간이나 과도한 메모리 할당이 발생하면 비용이 증가할 수 있다. 최적화되지 않은 코드, 메모리 할당의 과다 또는 부족 등을 검토하여 비용을 관리해야 한다.
루프 또는 재귀 호출
Lambda 함수 내에서 잘못된 루프 또는 재귀 호출이 발생하면 함수가 계속해서 재귀 호출하거나 반복 실행되어 비용이 급증할 수 있다. 함수를 디버깅하고 로직을 검토하여 이러한 문제를 방지해야 한다.
비효율적인 리소스 사용
Lambda 함수 내에서 비효율적으로 리소스를 사용하면 비용이 증가할 수 있다. 예를 들어, 데이터베이스 쿼리나 API 호출 등에서 불필요한 데이터를 요청하는 경우 비용이 발생할 수 있다. 최적화된 리소스 사용을 고려하여 비용을 최소화해야 한다.
'Computer Science > 클라우드' 카테고리의 다른 글
AWS 클라우드: 네트워크 서비스 (VPC, CloudFront, Route 53) (0) | 2023.05.31 |
---|---|
AWS 클라우드: 스토리지 서비스 (S3, EBS, EFS) (0) | 2023.05.31 |
AWS 클라우드: 다양한 서비스의 종류 (0) | 2023.05.30 |
AWS 클라우드: 리전, 서비스, 엣지 로케이션 (0) | 2023.05.30 |
AWS 클라우드: AWS 를 배워야 하는 이유 (0) | 2023.05.30 |