새소식

독서/AWS 구조와 서비스

3. 컴퓨팅 서비스(하)

  • -

서버 자동 추가 및 제거

Amazon Ec2 Auto Scaling 기능을 사용하면 서버 추가 및 제거를 부하 상황에 맞게 수행할 수 있다. 서버를 추가하는 것을 스케일 아웃, 제거하는 것을 스케일 인이라고 한다. CPU사용률에 맞춰 서버를 추가하거나 CPU를 추가할 수 있다. 시작 템플릿에 AMI 정보와 서버가 추가될 조건을 설정하면 조건에 맞춰 서버가 자동으로 추가된다.

 

목표 사용률을 지정해 지정한 값을 유지하게끔 인스턴스 수를 자동으로 조절하는 대상 추적 조정 정책이라는 기능도 있다. 예를 들어 평균 CPU 사용률을 50%가 되도록 목표를 지정하면 대상 추적 조정 정책은 CPU 사용률을 감시해 50%를 넘으면 인스턴스를 추가한다. 반대로 CPU 사용률이 많이 내려가면 인스턴스를 줄인다.

 

서버 자원의 부하가 아닌 사용자 접속 수와 같은 기준을 적용한 자동 추가 및 삭제도 설정할 수 있고, 일정을 세워 인스턴스 수를 조절하는 스케줄 스케일이라는 설정도 있다. 예로 주말이나 연휴 등 접속자 수가 늘어나거나 줄어드는 것을 예측할 수 있다면 유용하게 사용할 수 있다.

 

Auto Scaling은 장애 대비용으로도 사용된다. 지정된 인스턴스 수를 유지하는 기능이 있어 예기치 못한 장애가 발생해 인스턴스가 멈췄다면, 자동으로 인스턴스가 새로 만들어진다. 그 밖에도 서버 수의 수요를 예측하는 예측 스케일링 기능이나 인스턴스를 시작할 때 템플릿이 될 부팅 설정 버전 관리 등 많은 기능이 있다. EC2뿐 아니라 RDS, ECS 같은 서비스에서도 사용할 수 있다.

 

 

서버리스 컴퓨팅 서비스 Lambda

AWS Lambda는 서버리스 컴퓨팅 서비스다. OS같은 인프라를 관리할 필요가 없으므로 사용자는 프로그램 코드를 준비하고 업로드만 하면 된다. 서버리스란 실제로 가동하는 서버가 없다는 것이 아니라, AWS에서 서비스가 실행될 인프라를 관리하므로 사용자가 관리할 서버가 없다는 것이다. 사용자는 인프라 관리를 AWS에 맞기고 코드 개발에만 집중하면 된다.

 

Lambda 장점

1. 보안 : AWS에서 OS와 미들웨어 등의 기반 시스템을 모두 관리한다. 장애와 보안 패치 등 모두 AWS 소관 하에 이루어지므로 이용자는 Lambda로 사용할 코드만 관리하면 된다.

2. 비용 : EC2는 사용하지 않아도 기동하고 있는 시간만큼 요금이 발생하지만, Lambda에서는 코드가 실행될 때만 요금이 부과된다.

3. 가용성 : 복수의 가용 영역에서 실행된다. 예로 AZ-A 에서 실행되었다면, AZ-B 에서도 실행되어 고가용성, 장애 대응성이 유지된다.

4. 확장성 : 동시에 다수의 처리를 해야 하는 경우 자동으로 AWS가 관리하는 처리용 인스턴스가 시작되면서 확장된다.

 

EC2 장점

1. 온프레미스의 응용 프로그램을 AWS로 이전하는 경우 OS 설정 등을 그대로 사용할 수 있다.

2. 인스턴스 유형, OS, 네트워크 등을 자유롭게 설정할 수 있는 유연성이 있다.

3. 대량의 트래픽이나 접속을 상시 처리하는 경우 EC2쪽이 저렴해질 수 있다.

4. 서버에 프로그램을 배포한다는 기존 방식으로 개발을 진행할 수 있다. Lambda는 상대적으로 더 어렵다.

 

 

AWS Lambda는 다른 서비스와 연계해 사용

Lambda에서는 함수라고 하는 단위로 프로그램 코드를 관리하고 처리한다. Lambda 함수는 입력받은 데이터를 처리하기도 하지만 다른 AWS 서비스와 연계해 사용자 접속이나 데이터 연동과 같은 처리를 자동으로 수행할 수도 있다.

 

1) 사용자 요청에 따라 Lambda 함수 실행

Amazon API Gateway 서비스와 Lambda를 결합해 사용자의 HTTP 요청을 Lambda 함수로 처리할 수 있다. API Gateway는 사용자로부터 HTTP 요청을 받으면 GET과 같은 HTTP 메서드나 /api 등의 요청 경로에 대한 정보가 포함된 JSON 데이터를 Lambda 함수에 전달한다. Lambda 함수에서 응답 내용을 반환하도록 코드를 작성하면 API Gateway를 통해 응답을 반환한다. 웹 브라우저라면 웹 브라우저 화면에 응답 데이터가 표시된다. API Gateway도 서버리스 서비스이므로 사용자는 서버를 구축하지 않고도 웹 응용 프로개름을 만들 수 있다.

 

2) S3에 데이터를 저장할 때 자동 처리

Amazon S3 버킷에 데이터가 저장되면 저장된 데이터를 Lambda로 자동 처리할 수 있다. 예로 데이터에 포함된 정보를 가공해 다른 S3 버킷에 저장하는 등의 처리가 가능하다. 

 

3) 주기적으로 Lambda 함수 실행

주기적으로 정해진 시간에 어떤 처리를 하고 싶다면 Amazon EventBridge라는 서비스와 Lambda를 연계해 구현할 수 있다. EventBridge에 규칙이라는 형태로 매일 실행할 내용을 정리해두고 실행 대상에 Lambda 함수를 지정하면 주기적인 실행이 가능하다. 추가로 매일 정해진 시간에 EC2를 중지하거나 시작하는 작업도 가능하다.

 

 

AWS Lambda 추가 설정 및 모니터링

Lambda 실행 환굥은 AWS에서 관리하므로 사용자는 서버 설정에 관여하지 않아도 된다. 아래 3가지 설정은 사용자가 변경할 수 있다.

 

1) 메모리 용량 : 함수 실행시 사용할 수 있는 메모리 용량을 지정한다. CPU값은 지정 X

2) 타임아웃 시간 : 함수가 실행되는 최대 시간이며, 이 시간이 지나도 실행된다면 중지한다. 기본값은 3초.

3) 환경 변수 : 환경 변수는 함수에 사용하는 외부 변수와 같은 개념인데, 개발 환경과 서비스 환경이 서로 다른 데이터베이스를 사용해야 하는 경우, 환경 변수에 데이터베이스 접속 정보를 저장해두면 동일한 코드를 사용해도 서로 다른 데이터 베이스를 이용할 수 있다. 즉, 환경마다 서로 다른 소스 코드를 만들지 않아도 된다.

 

Lambda는 이처럼 AWS 자원을 조작하기 위한 목적으로 사용되는 경우가 많지만, 처음 Lambda 함수를 만들면 다른 서비스에 대한 조작 권한을 따로 부여해야 한다. Lambda 함수에 IAM(Identity and Access ManageMent) 역할 형식으로 권한을 부여해야 한다.

 

 

Lambda 함수 실행 상태 모니터링

Lambda 함수를 만들어 배포하면 AWS 모니터링 서비스인 Cloud Watch에 실행 횟수, 실행 시간(최소/최대/평균), 오류 수와 실행 성공률 정보가 자동으로 전송되므로 사용자는 실행 상황을 확인할 수 있다. 

'독서 > AWS 구조와 서비스' 카테고리의 다른 글

6. 네트워크 용어 & VPC  (0) 2023.12.09
5. 스토리지 서비스  (0) 2023.12.08
4. 컨테이너의 구조와 특징 이해  (0) 2023.12.08
2. 컴퓨팅 서비스(상)  (1) 2023.12.05
1. AWS 기초지식  (1) 2023.12.05
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.