Amazon Web Services 한국 블로그

Amazon AppSync 출시 – 실시간 및 오프라인 기능을 갖춘 데이터 기반 앱 개발 서비스

요즘과 같은 시대에는 우리의 삶을 더욱 편안하게 만들어주는 모바일 디바이스와 애플리케이션 없이 산다는 게 불가능에 가깝습니다. 점점 휴대폰에 의존하고, 모바일 애플리케이션 시장은 수백만 개의 앱이 나올 정도의 규모로 급성장했습니다. 모바일 개발자에게 이러한 현상은 앱 사용자가 원하는 품질과 실시간 경험을 제공하는 애플리케이션을 빌드해야 함을 의미합니다. 따라서 다중 사용자 데이터 동기화, 오프라인 네트워크 지원 및 데이터 검색과 같은 기능을 포함하여 모바일 애플리케이션을 개발하는 것은 기본이 되었습니다.

최근에 InfoQ, DZone 및 모바일 개발 블로그인 AlleviateTech에 올라온 모바일 개발 트렌드에 관한 글들을 읽어보았는데, 이들에 따르면 앞서 언급한 기능을 제공하는 데 있어 핵심 요소 중 하나가 클라우드 기반 모바일 애플리케이션이라는 것입니다.  모바일 데이터 동기화 및 데이터 스토리지와 관련이 있는 만큼 이는 정말로 사실인 듯합니다.

그렇기 때문에 클라우드상의 데이터 집약적 서비스를 기반으로 하는 혁신적인 모바일 애플리케이션 빌드를 위한 새로운 서비스를 소개하기에 최적의 타이밍이라고 생각합니다. 바로 AWS AppSync입니다.

AWS AppSync는 실시간 데이터 쿼리, 동기화, 통신 및 오프라인 프로그래밍 기능을 위한 종합 관리형 서버리스 GraphQL 서비스입니다. 익숙하지 않은 분들을 위해 개방형 GraphQL 사양에 관한 몇 가지 정보를 간략하게 공유하고자 합니다. GraphQL은 실시간 데이터 검색과 동적 쿼리 실행을 가능케 하는 응답형 데이터 쿼리 언어이자 데이터 원본 쿼리용 서버 측 런타임입니다. GraphQL을 사용하여, 클라이언트 애플리케이션을 빌드할 때 사용할 응답형 API를 빌드할 수 있습니다. GraphQL은 애플리케이션 계층에서 작동하여 스키마 정의를 위한 유형 시스템을 제공합니다.

이러한 스키마는 작업이 데이터에서 어떻게 수행되고 데이터가 검색 시 어떻게 구성되는지를 정의하는 사양 역할을 합니다. 추가로 GraphQL에는 선언적 코딩 모델이 있는데, React, React Native, iOS 및 Android를 포함한 여러 클라이언트 라이브러리와 프레임워크가 이를 지원합니다.

이제 GraphQL 개방형 표준 쿼리 언어의 기능은 다음을 통한 풍부한 관리형 서비스에서 확보할 수 있습니다. AWS AppSync를 통해 개발자는 여러 데이터 원본 전체의 데이터 검색 및 조작을 손쉽게 간소화하여 빠르게 프로토타입을 만들고, 강력한 협업 다중 사용자 애플리케이션을 개발 및 생성할 수 있습니다. AppSync는 디바이스 연결 시 데이터 업데이트를 유지합니다. 그러면서도 개발자가 연결이 가능할 때 데이터를 로컬로 캐싱하고 로컬 데이터를 동기화함으로써 오프라인에서 작동하는 솔루션을 만들 수 있도록 합니다.

AWS AppSync의 핵심 개념 몇 가지와 이 서비스가 어떻게 작동하는지 살펴보겠습니다.

AppSync 개념

  • AWS AppSync 클라이언트: 작업을 정의하고, 요청의 권한 부여 세부 정보를 래핑하고, 오프라인 비즈니스 로직를 관리하는 서비스 클라이언트
  • 데이터 원본: 데이터 스토리지 시스템 또는 데이터 저장 트리거
  • 자격 증명: GraphQL 프록시에 대한 요청과 함께 제공되는 권한을 지닌 자격 증명 세트와 식별 컨텍스트
  • GraphQL 프록시: 요청 처리 및 매핑, 충돌 해결 처리 및 세분화된 액세스 제어 관리를 위한 GraphQL 엔진 구성 요소
  • 작업: AppSync에서 지원되는 세 가지 GraphQL 작업 중 하나

    • 쿼리: 데이터에 대한 읽기 전용 가져오기 호출
    • 변형: 가져오기 이후 발생한 데이터 쓰기
    • 구독: 이벤트에 대응하여 데이터를 수신하는 장시간 연결
  • 조치: GraphQL 구독으로부터 연결된 구독자로 보내는 알림.
  • 리졸버: 요청 및 응답 매핑 템플릿을 사용하여 데이터 원본에 대한 페이로드를 변환 및 실행하는 기능

사용 방법

스키마가 생성되어 원하는 GraphQL API의 유형 및 기능을 정의하고 리졸버 기능과 연결됩니다.  스키마는 기존 데이터 원본을 미러링하여 생성될 수 있습니다. 또는 AWS AppSync가 스키마 정의를 기반으로 자동적으로 테이블을 생성할 수 있습니다. 개발자는 또한 백엔드 데이터 원본에 관한 지식을 보유하지 않고도 GraphQL의 데이터 검색 기능을 사용할 수 있습니다. 스키마 정의가 수립된 후, AWS AppSync 클라이언트는 쿼리 작업과 같은 작업 요청과 함께 구성될 수 있습니다. 클라이언트는 식별 컨텍스트 및 자격 증명과 함께 작업 요청을 GraphQL 프록시에 제출합니다. GraphQL 프록시가 이 요청을 리졸버로 전달하면, 리졸버가 Amazon DynamaoDB 테이블, AWS Lambda 함수 또는 Amazon Elasticsearch를 사용한 검색 기능과 같은 사전 정의된 AWS 데이터 서비스에 대한 요청 페이로드를 매핑하고 실행합니다. 리졸버는 단일 네트워크 내에서 하나 또는 전체 서비스에 대한 호출을 실행하여 CPU 주기 및 대역폭 수요를 최소화하고, 클라이언트에게 응답을 반환합니다. 추가로 클라이언트 애플리케이션은 온디맨드 코드의 데이터 요구 사항을 변경할 수 있고, AppSync GraphQL API는 그에 따라 동적으로 데이터에 대한 요청을 매핑하여 프로토타입 생성과 더욱 빠른 개발이 가능하도록 합니다.

서비스를 간단하게 살펴보기 위해 Amazon AppSync 콘솔로 이동하겠습니다. [Create API] 버튼을 클릭하여 시작하겠습니다.

[Create new API] 화면이 열리면 새 API에 TarasTestApp이라는 이름을 지정하겠습니다. 그리고 지금은 새 서비스를 살펴보는 것이기 때문에 [Sample schema] 옵션을 선택하겠습니다.  화면에 표시된 정보 대화 상자에서 샘플 스키마를 사용하여 AWS AppSync가 자동적으로 DynamoDB 테이블과 IAM 역할을 생성할 것임을 알려줍니다. 또한 저를 대신해서 TarasTestApp API 또한 배포할 것입니다.  콘솔에서 제공된 샘플 스키마를 검토하고 나면 [Create] 버튼을 클릭하여 테스트 API를 생성하겠습니다.

TaraTestApp API가 생성되고 저를 대신하여 프로비저닝된 AWS 리소스와 연결된 후에는 스키마, 데이터 원본 또는 리졸버에 대한 제 데이터 원본 연결을 업데이트할 수 있습니다. 또한 GitHub에서 샘플 리포지토리를 복제하고 그에 따른 GraphQL 스키마를 다운로드함으로써 제 GraphQL API를 iOS, Android, Web 또는 React Native 애플리케이션에 통합할 수 있습니다.  이러한 애플리케이션 샘플은 시작하는 데 있어서 큰 도움이 되고, 오프라인 시나리오에서 기능하도록 사전 구성되어 있습니다.

콘솔의 메뉴 옵션에서 [Schema]를 선택한다면 TarasTestApp GraphQL API 스키마를 업데이트하고 볼 수 있습니다.


추가로 콘솔의 메뉴 옵션에서 [Data Sources]를 선택한다면 존재하는 데이터 원본을 볼 수 있습니다.  이 화면 안에서 저는 원하는 대로 데이터 원본을 업데이트, 삭제 또는 추가할 수 있습니다.

다음으로 메뉴 옵션에서 [Query]를 선택하면 쿼리를 쓰고 테스팅하는 콘솔 도구로 이동합니다. 지금은 샘플 스키마를 선택했고, AWS AppSync 서비스가 저를 위해 대부분의 복잡한 작업을 처리했기 때문에 새로운 GraphQL API에 대한 쿼리를 시도해 보겠습니다.

변형을 사용하여 제 스키마의 이벤트 유형에 대한 데이터를 추가하겠습니다. 이것은 변형이고, 우선 데이터를 쓴 다음 데이터를 읽기 때문에 저는 쿼리가 이름과 위치에 대한 값을 반환하길 원합니다.

스키마의 이벤트 유형에 대해 생성된 DynamoDB 테이블로 이동하면 테이블에 성공적으로 쓰여진 제 쿼리로부터의 값을 볼 수 있습니다. 데이터 원본에서 GraphQL API 스키마를 기반으로 데이터를 쓰고 검색하는 것은 굉장히 간단한 작업이었습니다.


요약

AWS AppSync미리 보기로 사용 가능하며, iOS, Android 및 JavaScript 애플리케이션 개발을 지원합니다.   AppSync 제품 페이지에서 서비스에 대한 자세한 내용을 검토하거나 서비스 관련 AWS 설명서를 읽어보면서 자세히 알아보십시오.

Tara;

이 글은 AWS re:Invent 2017 신규 서비스 소식으로 Introducing AWS AppSync – Build data-driven apps with real-time and off-line capabilities의 한국어 번역입니다.