Amazon Web Services 한국 블로그
AWS Amplify Flutter 정식 출시 – 멀티 플랫폼 앱 개발 도구
AWS Amplify는 보안 기능과 확장성이 뛰어난 모바일 및 웹 애플리케이션을 빌드할 때 사용할 수 있는 도구 및 서비스 세트입니다. 현재 Amplify는 iOS, Android 및 JavaScript(웹 및 React Native)를 지원하며 AWS(Amazon Web Services)를 기반으로 애플리케이션을 빌드하는 가장 빠르고 쉬운 방법입니다.
Flutter는 단일 코드 베이스에서 컴파일되는 모바일, 웹 및 데스크톱 애플리케이션을 빌드하기 위한 Google의 UI 툴킷이며 가장 빠르게 성장하는 모바일 프레임워크 중 하나입니다.
AWS Amplify와 Fluter를 통합된 Amplify Flutter는 Flutter 생태계에 투자한 고객 중 AWS의 강력한 기능을 활용하려는 고객을 위해 설계되었습니다.
2020년 8월, AWS에서는 Amplify Flutter 개발자 평가판을 출시하고 피드백을 수집했습니다. 반응은 매우 긍정적이었습니다. 여러 달에 동안 서비스를 개선한 결과, 오늘 AWS에서는 Amplify Flutter의 정식 버전을 발표하게 되었습니다.
신규 Amplify Flutter 기능
GA 릴리스는 다음과 같은 세 가지 새로운 기능을 추가하여 강력한 Flutter 앱을 더 쉽게 빌드할 수 있게 해줍니다.
첫째, 최근에 AWS AppSync 기반의 GraphQL API와 Amazon API Gateway 및 AWS Lambda 기반의 REST API 및 핸들러를 추가했습니다.
둘째, Amplify DataStore는 오프라인 및 온라인 시나리오에 대한 추가 코드를 작성하지 않고도 공유 및 분산 데이터를 활용할 수 있는 프로그래밍 모델을 제공하므로 분산된 사용자 간 데이터 작업을 로컬 전용 데이터 작업만큼 간단하게 수행할 수 있습니다.
마지막으로, 인증을 구현하는 좋은 방법이며, Amazon Cognito 및 Facebook, Google, Amazon 등의 다른 소셜 ID 공급자와 함께 작동하는 호스팅 UI가 있습니다. 호스팅 UI는 Cognito용 SDK 또는 소셜 공급자를 애플리케이션에 포함하지 않고도 로그인 화면을 시작할 수 있게 해주는 사용자 지정 가능한 OAuth 2.0 흐름입니다.
Amplify DataStore 심층 활용
제가 Amplify Fluter를 사용하여 지난 2주 동안 앱을 빌드해 오면서 가장 마음에 들었던 기능은 Amplify DataStore입니다. 이 도구가 많은 시간을 절약해 주었기 때문입니다.
Amplify에서는 REST 및 GraphQL API를 원활하게 사용할 수 있습니다. 그러나 모바일 앱을 만들 때, 모바일 디바이스 연결이 안정적이지 않아 API 엔드포인트에 연결할 수 없는 경우 어떻게 될지에 대해 생각하게 됩니다. 데이터를 로컬에 저장하고 클라우드로 다시 동기화하는 것은 매우 복잡해질 수 있습니다. Amplify DataStore는 오프라인 또는 온라인 시나리오를 처리하는 영구 온디바이스 데이터 저장소를 제공하여 이 문제를 해결합니다.
저는 앱 개발을 시작했을 때 DataStore를 독립 실행형 로컬 데이터베이스로 사용했습니다. 그러나 DataStore를 클라우드 백엔드에 연결했을 때 그 성능은 분명해졌습니다. DataStore는 네트워크 연결을 사용할 수 있을 때 AWS AppSync API를 사용하여 데이터를 동기화합니다. 앱이 오프라인 상태이면 연결을 사용할 수 있게 될 때까지 로컬에 저장합니다.
Amplify DataStore는 클라우드에서 AppSync를 사용하여 자동으로 데이터 버전을 관리하고 충돌 탐지 및 해결 기능을 구현합니다. 또한 이 도구 체인은 개발자가 제공하는 GraphQL 스키마를 기반으로 Dart에 대한 객체 정의를 생성합니다.
Amplify DataStore에 데이터 쓰기
DataStore에 데이터를 쓰는 것은 간단합니다. 설명서 사이트는 블로그 사이트의 스키마를 사용하여 직접 시도해 볼 수 있는 예를 보여 줍니다.
Post newPost = Post(
title: 'New Post being saved', rating: 15, status: PostStatus.DRAFT);
await Amplify.DataStore.save(newPost);
Amplify DataStore에서 데이터 읽기
DataStore에서 읽으려면 지정된 모델 유형의 모든 레코드를 쿼리할 수 있습니다.
try {
List<Post> posts = await Amplify.DataStore.query(Post.classType);
} catch (e) {
print("Query failed: " + e);
}
Amplify DataStore 동기화
데이터 동기화를 활성화하면 클라이언트 간에 서로 다른 버전의 객체가 존재할 수 있으며 여러 클라이언트가 서로 다른 객체 사본을 업데이트하게 될 수 있습니다. DataStore는 충돌 감지 및 해결 전략을 적용하여 서로 다른 객체 버전을 병합합니다. 기본 해결 방법으로는 자동 병합이라는 방법이 사용되지만 낙관적 동시성 제어 및 사용자 지정 Lambda 함수와 같은 다른 전략도 있습니다.
추가 Amplify Flutter 기능
Amplify Fluter를 사용하면 다음과 같은 세 가지 추가 방법으로 AWS를 사용할 수 있습니다.
- 인증. Amplify Flutter는 사용자 인증을 위한 인터페이스를 제공하며 가입, 로그인 및 다단계 인증과 같은 사용 사례를 지원합니다. 백그라운드에서는 다른 Amplify 범주에 필수 권한을 제공합니다. Cognito 사용자 풀 및 자격 증명 풀에 대한 지원 기능이 내장되어 있습니다.
- 스토리지. Amplify Flutter는 퍼블릭, 보호 또는 프라이빗 스토리지 버킷에서 앱의 사용자 콘텐츠를 관리하기 위한 인터페이스를 제공합니다. 또한 객체 업로드, 다운로드 및 삭제와 같은 사용 사례를 지원하며 기본적으로 Amazon Simple Storage Service(S3)에 대한 지원 기능이 내장되어 있습니다.
- 분석. Amplify Fluter를 사용하면 Amazon Pinpoint에서 인증된 사용자 또는 인증되지 않은 사용자에 대한 추적 데이터를 수집할 수 있습니다. 이벤트를 쉽게 기록하고 필요에 따라 사용자 지정 지표 또는 속성에 대한 기본 기능을 확장할 수 있습니다.
정식 출시
Amplify Fluter는 이제 AWS Amplify를 지원하는 모든 리전에서 GA 로 제공됩니다. Amplify Flutter사용에 대한 추가 비용은 없으며 애플리케이션에서 프리 티어 이상으로 사용하는 백엔드 서비스에 대해서만 비용을 지불하면 됩니다. 자세한 내용은 요금 페이지를 참조하세요.
시작하는 방법과 자세한 내용은 Amplify Flutter 설명서를 참조하세요. 즐거운 코딩 되시기 바랍니다.