AWS(Amazon Web Service) 115

[AWS] Serverless 솔루션 아키텍처 토론

Mobile application : MyTodoList나의 할 일 목록이라는 모바일 애플리케이션을 만든다고 해보자.우리가 하고자 하는 것은 다음과 같은 요구 사항을 가지고 있다.  - HTTPS 엔드포인트를 가진 REST API를 노출하고 싶다.  - 서버리스 아키텍처로 구축하고 싶다.  - 원하는 경우 사용자가 S3에서 자신의 폴더와 직접 상호 작용하여 데이터를 관리할 수 있다.  - 관리형 서버리스 서비스를 통해 사용자도 인증할 수 있어야 한다.  - 사용자들은 할 일을 쓸 수도 읽을 수도 있지만 대부분 읽는다.  - 데이터베이스 레이어는 스케일링이 가능해야 하고 읽기 처리량이 매우 높아야 한다.  Mobile app : REST API layer첫 번째는 시작하는 것이다. 모바일 클라이언트가 있고..

[AWS] 솔루션 설계자 관점의 Serverless - Amazon Cognito

Amazon Cognito사용자에게 웹 및 모바일 앱과 상호 작용할 수 있는 자격 증명을 부여한다.일반적으로 이 사용자들은 AWS 계정 외부에 있는데 모르는 사용자들에게 자격 증명을 부여해 사용자를 인식(Cognito) 한다.Cognito에는 두 종류의 하위 서비스가 있다.  - Cognito User Pools(사용자 풀)      : 앱 사용자에게 가입 기능을 제공한다.      : API Gateway 및 애플리케이션 로드 밸런서와 원활히 통합된다.  - Cognito Identity Pools (Federated Identity)      : 앱에 등록된 사용자에게 임시 AWS 자격 증명을 제공해서 일부 AWS 리소스에 직접 액세스 할 수 있도록 해준다.      : Cognito 사용자 풀과 원..

[AWS] 솔루션 설계자 관점의 Serverless - Step Functions

AWS Step Functions서버리스 워크플로를 시각적으로 구성할 수 있는 기능이다.주로 람다 함수를 오케스트레이션 하는 데 활용한다.그래프를 만드는데 각 그래프 단계별로 해당 단계의 결과에 따라 다음으로 수행하는 작업이 뭔지 정의한다.좀 복잡한 워크플로를 만들어 AWS에서 실행시킬 수 있는 편리한 도구이다.Step functions가 제공하는 기능으로는 시퀀싱, 병행 실행, 조건 설정, 타임아웃, 에러 처리하기 등이 있다.람다 함수만 처리하는 게 아니라 EC2랑도 연동할 수 있고, ECS, 온프레미스 서버 또 API Gateway, SQS queues, 등등 다양한 AWS 서비스를 워크플로에 넣을 수 있다.워크플로에 사람이 개입해서 승인을 해야만 진행되는 단게를 설정할 수 있다.  - 예를 들어, ..

[AWS] 솔루션 설계자 관점의 Serverless - API Gateway

Example : Building a Serverless APILambda 함수에서 API의 데이터베이스로 DynamoDB를 사용할 수 있으며 테이블을 생성, 읽기, 업데이트 삭제할 수 있다.클라이언트도 이 Lambda 함수를 지연 호출(Invoke)할 수 있게 하려면 클라이언트에게 IAM 권한이 있어야 한다.클라이언트와 Lambda 함수 사이에 애플리케이션 로드 밸런서를 배치하면 Lambda 함수가 HTTP 엔드포인트에 노출된다.API Gateway를 사용하는 방법도 있다.  - AWS의 서버리스 서비스로 REST API를 생성할 수 있으므로 클라이언트가 퍼블릭 액세스 할 수 있다.  - API Gateway에 클라이언트가 직접 소통하며 다양한 작업을 할 수 있고 Lambda 함수에 요청을 프록시 한다..

[AWS] 솔루션 설계자 관점의 Serverless - DynamoDB의 고급기능

DynamoDB Accelerator (DAX)DAX는 DynamoDB를 위한 고가용성의 완전 관리형 무결절 인메모리 캐시이다.DynamoDB 테이블에 읽기 작업이 많을 때, DAX 클러스터를 생성하고 데이터를 캐싱하여 읽기 혼잡을 해결한다.DAX는 캐시 데이터에 마이크로초 수준의 지연 시간을 제공한다.DAX 클러스터는 기존 DynamoDB API와 호환되므로 애플리케이션 로직을 변경할 필요가 없다.DynamoDB 테이블과 애플리케이션이 있을 때, 몇몇 캐시 노드가 연결된 DAX 클러스터를 생성하면 백그라운드에서 DAX 클러스터가 Amazon DynamoDB 테이블에 연결된다.캐시의 기본 TTL은 5분으로 설정되어 있으나 변경할 수 있다.   DynamoDB Accelerator (DAX)  vs  El..

[AWS] 솔루션 설계자 관점의 Serverless - DynamoDB

AWS DynamoDB완전 관리형 데이터베이스로 데이터가 다중 AZ 간에 복제되므로 가용성이 높다.DynamoDB는 클라우드 네이티브이며, AWS의 독점 서비스이다.NoSQL 데이터베이스이고, RDS나 Aurora 같은 관계형 데이터베이스는 아니지만 트랜잭션 지원 기능이 있다.DynamoDB를 이용하면 방대한 워크로드로 확장이 가능하다.  - 데이터베이스가 내부에서 분산되기 대문이다.초당 수백만 개의 요청을 처리하고 수조 개의 행, 수백 TB의 스토리지를 갖게 된다.성능은 한 자릿수 밀리초를 자랑하고 일관성 또한 높다.보안과 관련된 모든 기능은 IAM과 통합되어 있다.  - 보안, 권한부여, 관리 기능이 포함된다.비용이 적게 들고 오토 스케일링 기능이 탑재되어 있다.유지 관리나 패치 없이도 항상 사용할 ..

[AWS] 솔루션 설계자 관점의 Serverless - RDS 람다 호출 및 이벤트 알림

RDS, Aurora와 Lambda는 긴밀하게 통합될까?사실 우리는 데이터베이스 인스턴스안에서 람다 함수를 호출할 수도 있다. 그러면 우리는 데이터베이스 안에서 일어나는 데이터 이벤트를 처리할 수 있게 된다.  - RDS for PostgreSQL과 Aurora MySQL에 지원된다.예를들어 사용자가 이벤트 데이터를 우리의 등록 테이블에 삽입하고, RDS는 우리의 람다 함수를 직접 호출하도록 설정이 될 것이다.우리의 람다 함수는 사용자에게 환영 이메일을 보낼 수 있고, 사용자는 그걸 받게 된다.AWS 콘솔에서 설정하는게 아니라 우리가 데이터베이스에 접속하고 그 안에서 설정해야 한다. 그리고 우리가 그렇게하면 RDS 인스턴스는 우리의 람다 함수를 호출하는 것이다.RDS 데이터베이스 인스턴스로부터 람다 함수..

[AWS] 솔루션 설계자 관점의 Serverless - Lambda in VPC

Lambda by default기본적으로 Lambda 함수를 시작하면 우리의 VPC 외부에서 시작된다.  - VPC는 AWS가 제공하는 서비스이다.우리는 VPC내에서 리소스에 액세스할 권한이 없다.RDS 데이터베이스, ElastiCache 캐시 내부 로드 밸런드를 시작하면 Lambda 함수가 해당 서비스에 액세스 할 수 없다.  - Lambda 배포의 기본 설정이다.인터넷의 퍼블릭 API에 액세스하는 것은 가능하다.DynamoDB에 액세스 할 수 있는 건 DynamoDB가 AWS 클라우드의 퍼블릭 리소스이기 때문이다.  - 하지만 프라이빗 RDS 데이터베이스에는 연결할 수 없다. Lambda in VPC위를 해결하려면 우리의 VPC에서 Lambda 함수를 시작하면 된다.이를 위해서는 VPC ID Lamb..

[AWS] 솔루션 설계자 관점의 Serverless - Lambda@Edge & CloudFront Functions

Customization At The Edge (엣지에서의 사용자 지정)보통은 함수와 애플리케이션을 특정 리전에서 배포하지만 CloudFront를 사용할 때는 엣지 로케이션을 통해 콘텐츠를 배포한다.모던 애플리케이션에서는 애플리케이션에 도달하기 전에 엣지에서 로직을 실행하도록 요구하기도 한다.  - 이를 엣지 함수라고 하며, CloudFront 배포에 연결하는 코드이다.이 함수는 사용자 근처에서 실행하여 지연 시간을 최소화하는 것이 목적이다.CloudFront에는 두 종류의 함수가 있다.  - CloudFront 함수  - Lambda@Edge : 엣지 함수를 사용하면 서버를 관리할 필요가 없다. (전역으로 배포되기 때문에)사용 사례  - CloudFront의 CDN 콘텐츠를 사용자 지정하는 경우    ..

[AWS] 솔루션 설계자 관점의 Serverless - Lambda

AWS Lambda EC2는 클라우드의 가상 서버라서 프로비저닝이 필요하다.프로비저닝을 할 메모리와 CPU 크기가 제한된다.지속적으로 실행되어야해서 최적화를 하기위해 효율적으로 시작하고 중단해야 한다.  - 그렇지 않으면 인스턴스에 어떤 일이 생기든 관계없이 EC2는 지속적으로 실행된다.오토 스케일링 그룹으로 스케일링 할 수 있는데, 자동으로 서버를 추가하고 제거하는 그런 작업을 해야 한다는 뜻이다.Lambda는 가상 함수이다.관리할 서버 없이 코드를 프로비저닝하면 함수가 실행되는 것이다.제한 시간이 있어서 실행 시간이 짧다고 하지만 최대 15분은 그렇게 짧지는 않다.온디맨드로 실행된다. 즉, Lambda를 사용하지 않으면 람다함수가 실행되지 않고 비용 역시 함수가 실행되는 동안만 청구되며 호출을 받으면..