앱 백엔드 구성 관련한 내용으로 진행하면서 고민했던 내용들이다.
웹 / 앱 백엔드를 구성할 때 차이점이 있나?
- 제일 헷갈렸던 부분. 웹 백엔드 같은 경우는 직접 해봐서 어떤 느낌인지 아는데 앱 개발 관련해선 해본적이 없다..
- 사실 상 크게 다른 건 없는 것 같다.
- 단, 모바일(앱)의 경우 프론트 자체에서 많은 기능을 수행한다. 백엔드가 사용되는 경우는 주로 미디어 업로드, 데이터 전송 및 동기화 등 인데 이는 API 기반 동작이 대부분이다.
- 이번에 다룰 내용은 그래서 모바일 백엔드 구성이지만, API 서버 구축 느낌에 가까울 것 같다.
기본적인 백엔드 서버
- ELB + EC2 / ECS / EKS 의 경우, 더 많은 제어가 필요할 때(서버가 있는 완전 기본적인 백엔드)
- API Gateway + Lambda의 경우, 서버리스 백엔드로 운영 포인트를 최대한 줄일 수 있음
- 위는 진짜 간단하게 사용하는 느낌이고, 사실상 저기에 서비스들을 더 추가하면서 만들어 나가야함..
서버리스 백엔드
- 각 기능마다 AWS 서비스를 매칭 해보자.
- AWS에서 제공하는 아키텍처
- 이런 식으로 사용하게 되는데, 보통 데이터를 가져오는 api가 주가 될 것이다. 이를 "api gateway + lambda + rds / dynamoDB" 가 한다고 생각하면 된다.
- 여기서 의문점이 든건 Cognito의 역할이다. 왜 API Gateway에 연결되서 User Pool로 보호를 시킬까?
Cognito + API Gateway
- Cognito: AWS에서 제공하는 모바일 인증 및 보안을 위한 서비스
- API Gateway: API를 관리할 수 있음
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 |