AWS 기초이론 - CloudWatch, Lambda, CloudFront
1. CloudWatch란?
- AWS 리소스 사용의 실시간 모니터링 기능 지원
- 다양한 이벤트들을 수집하여 로그파일로 저장
- 이벤트 & 알람 설정을 통해 SNS, AWS Lambda로 전송 가능
- 사요가능 서비스 : EC2, RDS, S3, ELB 등등
- 이벤트 정의
- S3 버켓 파일 업로드, 삭제
- S3 버켓 접근 시 접근거부 발생
- RDS 데이터베이스 접속 시도
- 이벤트 정의
모니터링 종류
- Basic Monitoring
- 무료
- cpu 사용량, 디스크 사용량, 네트워크 I/O 관련 Metrics 제공
- 5분 간격으로 최소 Metrics 제공
- Detailed Monitoring
- 유료
- 1분 간격으로 자셓나 Metrics 제공
사용 용례
- Use Case : 매일 얼마나 많은 사용자들이 모바일 앱을 사용하는지 확인
- Potential Issue : 똑같은 비용을 내며 AWS 리소스들을 사용하지만 낮시간대와 밤시간대에 필요한 서버의 성능은 달라질 수 있기 때문에 금전적 손실 발생 -> 서버 트래픽이 낮은 밤시간대에는 비용을 낮춰 서버의 성능을 낮추고 싶을 때 알람 설정을 통하여 특정 threshold에 도달했을때 개발자에게 상황을 보고해줌으로서 서버 management를 할 수 있음
2. Alarm
- 임의로 정해놓은 값에 도달할 시 Alarm을 울림
- Alarm이 울릴 시 특정 이벤트들을 작동시킬 수 있음
Alarm State
- Alarm : 어떤 metrics가 임의로 정해놓은 threshold값에 벗어났을 때 생기는 현상
- 알람이 울린다고 생각하면 됨
- Insufficient : 불충분하다는 뜻
- 예를 들어, EC2의 메모리관련 알람을 만들었는데 EC2 인스턴스를 잊고 생성하지 않았고 그 상태로 오랜시간 지속되게 되면 Insufficient 으로 분류
- OK : 알람이 울리지 않고 원하는 범위 내에서 resource가 정상적으로 동작하고 있음
Billing Alarm
- 정해놓은 지출 임계값을 초과할 경우 SNS를 통하여 경고해주는 기능
- 현재 N.Virginia(us-east-1)지역에서만 지원하는 기능
3. Lambda
- Serverless의 주축을 담당
- Serverless란 클라우드가 직접 서버를 돌려주고 생성하며, Resource들은 서버의 사용량에 따라 직접 할당해주어 문제가 덜 발생
- Events가 발생하면 Lambda를 실행
- Event는 예를 들면, S3에 파일이 업로드, 삭제 등을 의미
- NodeJS, Python, Java 등 다양한 언어 지원
- 이벤트가 감지되었을 때 사용자가 작성한 코드가 실행되게 할 수 있음
- Lambda Function : Lamda에서 작성한 코드
비용
- Lambda Function이 실행될때만 지불
- 매달 1,000,000이내의 함수 호출시 무료
기타
- 최대 5분 런타임 시간 허용
- 512MB의 일시적인 디스크 공간 제공
- Lambda함수로 들어오는 input을 일시적인 공간에 저장할 때 코딩을 통하여 임시 저장소에 두었다가 꺼내올 수 있음
- 최대 50MB Deployment Package 허용
- AWS 콘솔에서 직접 코딩을 할 수 있지만, local에서 다수의 파일을 하나의 압축 파일로 저장하여 AWS에 업로드하여 Deployment를 통해 사용 가능
- 50MB가 초과될시 S3 버켓 사용
사용 용례
- S3 버켓에 파일 업로드 -> PutObject 이벤트 발생 -> Lambda 함수 실행
- Lambda는 데이터를 읽어오고 불필요한 데이터 삭제, 변환 작업
- Lambda는 DB로 깨끗한 데이터를 업로드
4. CloudFront
- Edge Location을 사용하여 정적, 동적, 실시간 웹사이트 컨텐츠를 유저들에게 전달
- 특정 유저가 요청을 했을 때 Edge Location을 통해 웹사이트에 컨텐트가 딜리버리되어 퍼포먼스를 극대화
- Content Deliverty Network(CDN) : 웹페이지가 현재 어디서 불려지는지, 불러오려하는 사용자의 지역에 근거하여 컨텐트 웹페이지에 딜리버리해주는 분산 네트워크
호스팅되고 있는 웹사이틑 현재 한국이고 여러 나라에서 접근한다면 각각에서의 컨텐츠의 딜리버리 시간이 달라진다.
CDN은 한국에서 모든 컨텐츠를 전달하는 것이 아니라 Edge Location을 통해 유저들에게 컨텐츠를 전달한다. 첫 사용시 캐시에 없다면 Origin과 연결 후 그 정보를 Edge Location에 넣고 유저들에게 컨텐츠를 뿌린다. 컨텐츠들을 캐시에 등록되어 나중에 사용자들이 요청하면 더이상 Origin이 아니라 Edge Location을 이용해 뿌림으로 인해 딜리버리 속도가 빨라진다.
- Edge Location : 컨텐츠들이 캐시에 보관되어지는 장소
- Origin : 원래 컨텐츠들이 들어있는 곳, 웹서버 호스팅이 되어지는 곳, S3
- EC2인스턴스가 오리진이 될 수 있음
- Distribution(분산) : CDN에서 사용되어지며 전세계의 Edge Location들을 하나로 묶어 총칭하는 개념