AWS

Amazon 서비스로 모바일 앱 만들기

박현국 2024. 10. 30. 16:23
MyTodoList
  • 서버리스 아키텍처인 MyToList 라는 모바일 애플리케이션을 만들어보자.
  • HTTPS 엔드포인트를 가진 Rest API 를 호출하며, 서버리스 아키텍처로 구축한다고 가정
    • S3 에서 자신의 폴더와 직접 상호 작용하여 데이터를 관리할 수 있도록 만듥
    • 관리형 서버리스 서비스를 통해 사용자도 인증할 수 있도록 만들기
    • 사용자들은 Todo 를 쓸 수도 읽을 수도 있지만 대부분 읽기 작업 
      -> 여기서 성능과 관련해 할 일이 있을 수도 있다. DB 레이어는 스케일링이 가능해야 하고 읽기 처리량이 매우 높아야 한다

1. Rest HTTPS 작업

  • 이를 위해 고전적인 서버리스 API 방식으로 수행하는 AWS API Gateway 를 사용 
  • API 게이트웨이는 기본적으로 서버리스 인프라를 스케일링하고 사용할 수 있도록 해주는 람다 함수를 호출해준다.
  • Lambda 는 DB 에서 저장하고 읽을 수 있어야한다. 그러려면 확장성이 뛰어나고 서버리스인 DB 여야 하는데 그것이 바로 DynamoDB 이다
  • + 로 인증 레이어를 진행하기 위해 AWS Cognito 와 같은 서버리스 기술을 사용할 수 있다. 따라서 모바일 클라이언트는 코그니토에 연결하여 인증할 수 있다.
  • 그런 다음 API 게이트웨이가 Cognito 를 사용하여 인증을 확인한다.
  • 이로써 매우 고전적인 서버리스 API 가 제공 되었다.

Rest HTTPS 작업

 

 

 

2. S3 버킷에 대한 액세스 권한 부여

  • Cognito 는 임시 자격 증명을 생성하여 이를 모바일 클라이언트에게 반환할 수 있다.
  • 그리고 이러한 자격 증명을 통해 모바일 클라이언트는 Amazon S3 에서 파일을 저장하고 검색할 수 있으며, S3 에서 자신만의 공간에 액세스할 수 있다.
  • 우리는 즉, Cognito 와 S3 를 임시 자격 증명으로 사용하는 것이다.

 

 

3. 읽기 처리량 향상 및 비용을 줄이기 위한 아케텍처 변경

  • 지금까지의 패턴은 앱이 스케일링되고, 더 많은 사용자를 확보하고, 패턴을 살펴보면 읽기 처리량이 매우 높다는 것을 알 수 있다. 그래서 우리는 많은 RCU 를 가지고 있는데, 할 일 목록은 별로 변하지 않는다. 즉, 자주 편집되지 않는다.
  • 그래서 해당 아키텍처를 기본적으로 읽기 처리량을 향상시키고 전반적인 비용을 줄이기 위해 어떻게 변경할 수 있을까?
  • DAX 를 Caching layer 로 사용하는 것 이다. 따라서 DynamoDB 직전에 DynamoDB DAX 를 사용한는데, 여기에는 기본적으로 캐싱 레이어가 있다. 현재 너무 많은 읽기를 수행하고 있기 때문에 읽기는 DAX 에 캐시된다. 
  • 따라서 DynamoDB 에는 읽기 용량 단위가 많이 필요하지 않는다. 즉 더 잘 스케일링할 수 있으며,
  • 많은 읽기가 캐시되기 때문에 전체적으로 비용이 절감될 수 있으며, 이는 서버리스 방식으로 아키텍처를 지속적으로 개선할 수 있는 좋은 방법이다.
  • 캐싱을 하는 다른 방법은 API Gateway 수준에서 응답 캐싱을 시작할 수도 있다.
    -> 답변이 실제로 변경되지 않고 몇 가지 API 경로에 대한 몇 가지 응답 캐싱을 시작할 수 있다고 생각하는 경우.
  • 전반적으로 이러한 종류의 아키텍처는 서버리스가 얼마나 수행되는지, 캐싱이 나타나는 위치를 실제로 보여준다.
  • 그리고 이 아키텍처에서는 우리가 관리하는 것이 아무것도 없다. 
  • 실제로 사용량에 따라 비용을 지불하고 DB 관리에 대해서는 전혀 생각하지 않으며, 이 모든 작업은 AWS 에서 수행된다.

 

 

정리

1. HTTPS, API Gateway, Lambda, DynamoDB 를 활용하는 고전적인 서버리스 REST API 아키텍처를 살펴보았다.

2. Cognito 를 활용하여 임시 자격 증명을 생성했는데, 이를 통해 제한된 정책이 있는 S3 버킷에 액세스할 수 있다.

3. 완전히 동일한 앱 패턴을 사용할 수 있다.

4. Cognito 를 사용하면 DynamoDB 또는 Lambda 에 직접 액세스할 수 있다.

5. DAX 를 사용하여 DynamoDB 에서 읽기를 캐싱할 수 있다.

'AWS' 카테고리의 다른 글

Amazon Rekognition  (1) 2024.11.01
Amazon Databases  (3) 2024.10.31
AWS DynamoDB  (0) 2024.10.29
Amazon Lambda  (1) 2024.10.28
Amazon ECR 와 EKS  (0) 2024.10.28