728x90
728x90
모바일 앱: MyTodoList 요구 사항 MyTodoList 라는 모바일 앱을 만든다. HTTPS 엔드 포인트가 있는 REST API 를 사용 서버리스 아키텍쳐 사용자가 직접 S3 에 있는 폴더와 상호작용할 수 있다. 사용자가 서버리스 서비스로 인증을 할 수 있다. 읽기와 쓰기를 모두 할 수 있지만 읽기 작업을 더 많이 할 것 이기 때문에 읽기 관련하여 성능을 높이면 좋다. 데이터베이스는 스케일할 수 있도록 구축해야 하고, 읽기 처리량이 높아야 한다. REST API Layer REST HTTPS 를 사용하기 위해 API Gateway 를 사용한다. 일반적인 서버리스 API 를 사용하는 방식으로 API 게이트웨이가 람다 함수를 호출해서 스케일링이 가능하며 람다 함수는 데이터베이스에 데이터를 저장하거나 ..
Cognito 개요 Cognito 는 사용자에게 자격 증명을 부여해 서버나 앱과 상호작용 할 수 있게 한다. Cognito User Pool 의 기능 앱 로그인 기능 API 게이트웨이와 통합 기능 Cognito Identity Pools(Federated Identity) AWS 자격 증명을 직접 앱 사용자에게 제공하여 AWS 리소스에 액세스하도록 한다. Cognito 사용자 풀과 통합된다. Cognito Sync 요즘은 잘 사용하지 않고 AppSync 를 사용한다. 디바이스에서 Cognito 로 데이터를 동기화한다. AWS Cognito User Pools (CUP) 모바일 앱용 서버리스 인증 데이터베이스라고 할 수 있다. 사용자 이름이나 이메일 비밀번호를 조합해 로그인 할 수 있게 한다. 이메일이나 ..
API Gateway AWS 에서 제공하는 서버리스 서비스이고 클라이언트가 접근 가능한 public REST API 를 생성할 수 있게 해준다. 클라이언트는 API 게이트웨이와 통신을 하게 된다. 람다 함수에서 오는 요청을 프록시해준다. API 게이트웨이를 사용하는 이유는 HTTP 엔드포인트보다 많은 기능을 제공하기 때문이다. 인증, 사용량 설정, 개발 단계를 비롯한 여러 기능이 있기 때문이다. Lambda 와 통합이 가능하고 서버리스 서비스이기 때문에 인프라를 관리할 필요가 없으며 WebSocket 프로토콜도 지원하기 때문에 API 게이트웨이를 통해 실시간으로 스트리밍이 가능하다. API 게이트웨이가 API 버전 관리를 해주기 때문에 여러 환경을 다루는데 아주 유용하다. 개발 및 테스트, 운영 환경으로..
DynamoDB DynamoDB 는 서버리스 데이터베이스로 가용성이 아주 높아서 데이터가 자동으로 여러 가용 영역에 복제된다. NoSQL 데이터베이스이며 분산형 데이터베이스라서 수평 확장을 한다. 하나의 테이블 내에서 초당 수백만 건을 처리할 수 있고 행이 거의 무제한이며 수백 TB 에 다르는 스토리지가 있다. 성능이 빠르고 일관적이어서 프로비저닝을 많이 할 필요가 없다. 데이터 회수 속도도 매우 빠르다. DynamoDB API 는 IAM 과 완전 통합되어 보안, 권한, 관리가 매우 편하다. DynamoDB 스트림으로 이벤트 기반 프로그래밍을 활성화할 수 있다. DynamoDB - Basics 기본적으로 테이블로 구성되어 있으며 완전 관리형 서비스이기 때문에 테이블만 생성해서 사용하면 된다. 각 테이블에..
Serverless 개요 서버리스라는 말은 서버가 없다는 것이 아니라 서버를 관리할 필요가 없다는 뜻이다. 즉, 서버를 프로비저닝 하지 않는 것 이다. 서버를 관리하지 않고 필요한 것들을 배치해서 가져다가 쓰기만 하면 된다는 뜻으로 코드를 배치하기만 하면 된다. 원래 서버리스는 FaaS, Function as a Service 를 뜻했지만 지금의 서버리스는 더 많은 것을 뜻한다. AWS 의 Lambda, DynamoDB, API Gateway, Cognito, S3, SQS, SNS, Kinesis Data Firehose, Aurora 서버리스, Fargate 등이 서버리스 서비스이다. Lambda 개요 클라우드에서 가상으로 실행되는 서버로 관리할 서버 없이 코드를 프로비저닝하면 함수가 실행된다. 15..
docker 도커는 앱을 배포하는 소프트웨어 개발 플랫폼으로 컨테이너 기술을 사용한다. 앱을 컨테이너에 포장하여 어떤 운영체제든 상관없이 실행된다. 즉, 앱이 한 번 컨테이너에 들어가면 어디든 상관없이 호환성 문제없이 프로그램이 실행된다는 것이다. 동작이 예측 가능하기 때문에 처리할 일이 줄어들고 배포와 유지가 수월하여 모든 언어로 사용이 가능하다. 도커 컨테이너는 도커 이미지로부터 생성된다. 도커 이미지들은 도커 리포지토리에 저장되고 도커 허브라고 불리는 레포지토리가 존재한다. AWS 에서 제공하는 사설 도커 레포지토리인 Amazon ECR 도 존재한다. 도커도 일종의 가상화 기술이지만 엄밀히 따지자면 아니라고 할 수 있다. 리소스들은 호스트와 공유되기 때문에 한 서버에서 여러 컨테이너를 띄울 수 있다..