이번에 컨설팅 할 고객 측에서 Firebase를 사용 중이고 이를 Amplify와 같은 서비스를 활용해서 AWS로 마이그레이션이 가능한지에 대한 정보를 원했다...

해당 사항과 관련한 내용을 정리해보고자 한다!


일단 마이그레이션이 가능하긴 하다.. 단지 공수가 많이 들어갈 뿐이다;;

 

먼저 Firebase, Amplify 두 서비스 모두 Backend 개발에 도움을 주는 느낌이다.

 

Firebase

  • 모바일 애플리케이션 개발 플랫폼

https://velog.io/@realryankim/FireBase란

 

 

Firebase - Amplify 기능 매치

Firebase Amplify
Firebase Authentication Cognito
Firebase Hosting Amplify Console
Cloud Functions Lambda Function
Cloud Firestore DynamoDB
Realtime Database AppSync(GraphQL)
Cloud Storage S3
Google ML kit SageMaker, ML Services
Crashlytics X
Performance Monitoring X
Test Lab, A/B Testing Amplify Admin UI
Google Analytics Pinpoint, Kinesis
Remote Config Amplify Admin UI
Predictions X
Cloud Messaging Pinpoint

(참고: https://bejamas.io/compare/aws-amplify-vs-firebase/#continuous-deployment)

 

[차이점]

  • Google UI Toolkit Flutter의 경우 아무래도 같은 Google 생태계라 Firebase에 유리
    • 물론 Amplify에도 Flutter 있음
  • CI/CD의 경우 Amplify가 유리
    • Firebase의 경우 delivery → deployment 과정에서 개입이 필요함(실제 배포의 경우)
    • Amplify는 알아서 실제 배포까지 적용 시켜줌
  • 비용의 경우 Amplify가 조금 더 비쌀 수 있음...(계산 필수)

 

[관련 workshop]

https://catalog.us-east-1.prod.workshops.aws/workshops/c2c0b179-6b4e-4133-8ea7-989fd2ba71a1/en-US/prepare

결국엔 다 코드 단 작업이 필수적으로 들어가게 됨.. 공수가 많이 든다.

Google의 SDK와 AWS SDK는 다르기 때문에 이 점도 생각 해봐야한다...😅


해당 과정을 간단히 정리해보자.

 

마이그레이션 과정

  • Firebase Auth → Cognito
    • Cognito의 사용자 마이그레이션 기능 사용
    • 사용자가 Cognito로 처음 로그인 시도할 때 Lambda를 사용해 사용자를 대신해 Firebase 인증으로 로그인 하는 방식
      • Firebase에 성공적으로 로그인하면 사용자의 자격 증명이 Cognito에 복사된다.
  • Data Layer: DB, Storage를 Cloud Firestore와 동기화 상태로 유지
    • Firestore Data → DynamoDB
      • 데모용으로 작은 문서 지향 스키마를 마이그레이션 해볼 것
      • 실제 상황의 경우
        • Step Functions를 사용해 인프라 배포 중 자동으로 수행되게..
        • Lambda 함수를 오케스트레이션하여 Firestore 데이터를 일괄적으로 읽고 SQS를 사용해 대기열을 통해 DynamoDB에 대한 쓰기를 하게끔
    • Google Cloud Storage → S3
      • Google Cloud SDK를 사용해 S3에 동기화
    • Firestore listener service
      • 변경사항을 DynamoDB에 전파 및 AppSync no-op 변형을 트리거 해 연결된 클라이언트에 업데이트 푸시
    • 동기화, 리스너의 경우 Docker를 사용해 컨테이너화 후 Fargate를 활용해 실행할 것
  • App Tier
    • AppSync는 GraphQL을 통한 실시간 구독 지원 → Firestore Listener 사용하던 곳에 AppSync 구독

 

 

결론적으론, 마이그레이션은 가능하지만 생각보다 귀찮은 과정이 필요하다.

Amplify와 Firebase에 익숙치 않다면 각각의 서비스 공부 과정도 필요하다.

 내가 걱정되는 부분은 Data Migration 과정에서 데이터 양이 많다면... 시간과 복잡도가 증가할 듯

(중간 중간 체크 과정이 필요하며 신중하게 진행할 것)

또, Amplify API 및 SDK로의 코드 변경이 필수.. 해당 과정 공수가 많이 들 듯?

 

 

❗ 그냥 Amplify에서 새로 구축하는 것도 하나의 방법일 듯 싶다...ㅎㅎ ❗

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

[AWS] AWS IoT Greengrass V2 실습 -2  (0) 2023.01.26
[AWS] AWS IoT Greengrass V2 실습  (0) 2023.01.26
[AWS] re:Invent 2022 정리  (0) 2022.12.19
[AWS] Windows Server RDP 접속  (0) 2022.12.09
[AWS] Serverless Service - DynamoDB 편(4)  (0) 2022.12.08

오늘은  Amplify 다! iOS 앱 구축을 AWS에서 하는 방법을 찾아보다가.. Amplify 만 주구장창 나오길래 일단 조져본다.

(현재 mac이 없는 관계로 다른 언어로 먼저 테스트 해보고 나중에 mac OS 클라우드로 해봐야지!)


AWS Amplify?

확장 가능한 풀 스택 웹 및 모바일 앱을 더 빠르게 구축 한다.
  • 도구: Amplify Studio / Amplify Hosting / Amplify Library / Amplify CLI
  • 기능: https://aws.amazon.com/ko/amplify/features/?nc=sn&loc=3&dn=5 

도구 하나씩 알아보자~!

 

Amplify Studio

  • 풀스택 웹 및 모바일 앱을 구축하기 위한 시각적 개발 환경 제공
  • 기존의 Amplify의 백엔드 구축 기능을 기반으로 UI 개발 까지 빠르게 가능

관련한 간단한 실습

https://sandbox.amplifyapp.com/getting-started : 실습 링크

  • Sandbox 버전(결국 배포하려면 AWS 계정 필요함)

나는 To-do list를 React로 만들어 볼거다.

먼저 Data modeling 과정 진행한다.

이와 같은 화면을 볼 수 있는데 차례로 명령어 수행하면 된다..(난 Windows cmd에서 진행할 예정)

그냥 자기 환경에서 잘 실행하면 될 듯...?

2단계 Install Amplify Library and initialize Amplify 에서 index.js 고치라고 되어있는데 이는 myapp/src 폴더 안에 있다.

이와 같이 상단에 추가해주면 됨! (최상단에 넣으면 오류나니까 react import 뒤 쪽으로 넣어주자!)

❗이것도 맞게 한건지 모르겠음...ㅋㅋㅋㅋㅋ

Amplify DataStore CRUD APIs 테스트 해보라는데... 뭐라는거지? (얘는 잘 모르겠다..)

 

일단 배포부터 해보자.

위는 amplify console 상의 내가 배포한 앱이다. Studio 시작을 눌러보자.

위와 같이 Studio를 확인할 수 있다.. 그럼 이어서 일단 진행해보자!

나는 코드 잘 모르니까.. 콘솔에서 진행하련다!

자동 생성으로 5개 정도 집어넣었다.(귀찮)

유저 관리 느낌인데, 원하는대로 설정해보자!(종류 보면 기존의 Cognito도 가져올 수 있는듯?)

가입 구성도 마음대로 정할 수 있다.

배포를 누르면 진행되는데,

이 과정은 "authentication → amplify → cognito(user pool) → cognito(identity pool) → deploy" 순이다.

배포가 완료되면 해당 명령어를 수행하고 본인 환경대로 선택해서 진행하면 된다.(Visual Studio Code → javascript react)

로컬 폴더에 알아서 추가가 되긴 하는데.. 일단 이런 느낌이다만 오늘 알고 가는걸로 하려고 한다.

(사실 주어진 코드를 어디에 집어 넣어야할지 모르겠... 더 찾아보고 다시 해봐야지!)

이와 같이 할 수 있는 기능도 다양하다.. 언젠간 하나씩 다 보는걸로ㅠㅠ

 

❗ 오늘 시간 관계상 Amplify Hosting은 다음에 알아보자.. 2에서 만나요~ ❗

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

[AWS] ECS에 HTTP API 구축  (0) 2022.09.13
[AWS] Mobile Backend 구성  (1) 2022.09.08
[AWS] Lambda와 RDS 연동(+ API Gateway)  (0) 2022.09.06
[AWS] CloudFront 사용 이유  (0) 2022.08.29
[AWS] CloudFront와 Route 53 연결  (0) 2022.08.29

+ Recent posts