앱 백엔드 구성 관련한 내용으로 진행하면서 고민했던 내용들이다.


웹 / 앱 백엔드를 구성할 때 차이점이 있나?

  • 제일 헷갈렸던 부분. 웹 백엔드 같은 경우는 직접 해봐서 어떤 느낌인지 아는데 앱 개발 관련해선 해본적이 없다..
  • 사실 상 크게 다른 건 없는 것 같다.
  • 단, 모바일(앱)의 경우 프론트 자체에서 많은 기능을 수행한다. 백엔드가 사용되는 경우는 주로 미디어 업로드, 데이터 전송 및 동기화 등 인데 이는 API 기반 동작이 대부분이다.
  • 이번에 다룰 내용은 그래서 모바일 백엔드 구성이지만, API 서버 구축 느낌에 가까울 것 같다.

기본적인 백엔드 서버

  • ELB + EC2 / ECS / EKS 의 경우, 더 많은 제어가 필요할 때(서버가 있는 완전 기본적인 백엔드)
  • API Gateway + Lambda의 경우, 서버리스 백엔드로 운영 포인트를 최대한 줄일 수 있음
  • 위는 진짜 간단하게 사용하는 느낌이고, 사실상 저기에 서비스들을 더 추가하면서 만들어 나가야함..

서버리스 백엔드

  • 각 기능마다 AWS 서비스를 매칭 해보자.

  • AWS에서 제공하는 아키텍처

https://docs.aws.amazon.com/ko_kr/whitepapers/latest/serverless-multi-tier-architectures-api-gateway-lambda/mobile-backend.html

  • 이런 식으로 사용하게 되는데, 보통 데이터를 가져오는 api가 주가 될 것이다. 이를 "api gateway + lambda + rds / dynamoDB" 가 한다고 생각하면 된다.
  • 여기서 의문점이 든건 Cognito의 역할이다. 왜 API Gateway에 연결되서 User Pool로 보호를 시킬까?

Cognito + API Gateway

  • Cognito: AWS에서 제공하는 모바일 인증 및 보안을 위한 서비스
  • API Gateway: API를 관리할 수 있음

https://mydeveloperplanet.com/2022/01/25/how-to-secure-aws-api-gateway-with-cognito-user-pool/

1. client가 cognito를 통해 로그인

2. 로그인에 성공하면 cognito가 id_token을 가지고 client로 돌아감

3. client는 id_token을 가지고 API Gateway에 요청 보냄

4. API Gateway는 cognito에서 id_token이 유효한지 확인

5. cognito는 id_token이 유효하면 API Gateway에게 허락으로 응답

6. API Gateway는 요청을 Lambda에 전달

7. Lambda 함수는 실행 후 API Gateway에게 응답

8. API Gateway는 Client에게 응답

  • 위와 같은 절차를 밟게 된다. 꼭 Cognito를 사용하지 않아도, IAM 역할 및 정책, Lambda 권한 부여자(사용자 지정 권한 부여자)를 사용해도 괜찮다..
  • 하지만 Cognito를 사용하는 추세인듯? 결국, API Gateway를 보호하고자 하는 느낌이다.
  • API Gateway 보안: IAM Permissions / Lambda Authorizer / Cognito User Pools

 

 

'Cloud > AWS' 카테고리의 다른 글

[AWS] ECS 개념 + 실습 -1(Docker image push)  (2) 2022.09.14
[AWS] ECS에 HTTP API 구축  (0) 2022.09.13
[AWS] AWS Amplify -1(Amplify Studio)  (0) 2022.09.07
[AWS] Lambda와 RDS 연동(+ API Gateway)  (0) 2022.09.06
[AWS] CloudFront 사용 이유  (0) 2022.08.29

+ Recent posts