[reinvent 2024] AWS AppSync가 그렇게 할 수 있는지 몰랐습니다!

Summary

AWS AppSync는 개발자가 앱을 클라우드 데이터, 이벤트 및 AI 모델에 연결할 수 있는 관리형 서비스입니다. 더 이상 그래프QL API 서비스가 아닌 AWS AppSync를 통해 서버리스 웹소켓을 활용하여 실시간 이벤트 API를 생성하고, AI 게이트웨이를 구축하여 Amazon Brak에 대한 애플리케이션 액세스를 간소화하고 안전하게 보호할 수 있습니다. 이 세션에 참여하여 올해 출시된 모든 흥미로운 새로운 AWS AppSync 기능에 대해 알아보세요.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: I didn’t know AWS AppSync could do that!
  • Date: 2024년 12월 2일(월)
  • Venue: Mandalay Bay | Lower Level North | South Pacific E | Pink
  • Speaker:
  • Brice Pelle(Principal Product Manager, AWS)
  • Michael Liendo(Senior Developer Advocate, Amazon Web Services)
  • Industry: –

들어가며

AppSync는 저에게는 많이 생소한 내용입니다. 개발자에게는 많이 친숙한 내용일 수 있고 AppSync를 이미 잘 다루는 고객들도 많다고 생각합니다. 세션 내용 자체가 AppSync를 어떻게 사용하는 방법에 대한 내용으로 저처럼 사용사례가 없거나 처음 접하는 고객에게 설명하기에 도움이 되는 정보인 것 같아서 이번 기회로 경험을 쌓고 AppSync와 친숙해지기를 기대하면서 세션을 신청하였습니다.

GraphQL 소개 및 특징

GraphQL이란 무엇일까요?

GraphQL은 복잡한 데이터를 효율적으로 처리하고 필요에 따라 정확한 데이터를 요청할 수 있는 강력한 API 쿼리 언어입니다.  아래 사진을 통해 GraphQL이 API를 위한 쿼리 언어로 어떻게 활용되는지와 주요 이점을 알 수 있으며 각 기능들에 대해 설명드리겠습니다.

  1. Fully Documented API
    API 문서를 자동으로 만들어주기 때문에 개발자들이 별도의 문서를 작성하지 않아도 됩니다.
    이를 통해 API의 구조와 사용법을 쉽게 이해할 수 있습니다.

  2. Easy to onboard
    직관적이고 간단한 구조를 가지고 있어 새로운 개발자도 빠르게 적응할 수 있습니다.

  3. Strongly typed
    스키마를 기반으로 데이터의 구조와 타입을 정확히 정의합니다. 이를 통해 요청된 데이터의 유효성을 쉽게 검증할 수 있어 개발 중 오류를 줄일 수 있습니다.

  4. Get exactly what you ask for
    클라이언트가 필요한 데이터만 정확히 요청하고 받을 수 있습니다. REST API처럼 불필요한 데이터를 받아오는 일이 없음을 의미합니다.

  5. Avoid over fetching
    여러 데이터 소스를 조합해 하나의 요청으로 필요한 정보를 가져올 수 있기 때문에 과도한 데이터 로딩 문제를 방지합니다.

  6. Multiple data sources
    이 부분은 아주 중요한 부분은데요 GraphQL은 여러 데이터 소스 (DynamoDB, Aurora, Lambda)와 연동하여 복잡한 데이터 요청을 단일 API로 처리할 수 있습니다.

  7. Real-time with subscriptions
    구독 기능을 통해 데이터가 변경되면 실시간으로 클라이언트에 전송됩니다.
    이는 채팅 애플리케이션, 실시간 알림 당과 같은 기능을 구현할 때 유용합니다.

정말 많은 기능을 제공하는데요, 이토록 많은 기능을 제공하는 GraphQL의 전망은 어떨까요?

예측에 따르면 2027년까지 60% 이상의 기업이 프로덕션에서 GraphQL을 사용할 것으로 예상되며 이는 2024년의 30% 미만에서 크게 증가한 수치라고 합니다. 정말 많이 활용될 것으로 보이지 않나요?

하지만 GraphQL은 이렇게 많은 기능들을 제공하지만 직접 관리를 하려면 많은 어려움이 많다고 하는데요,

GraphQL을 직접 관리하려면 많은 작업과 비용이 필요하다고 합니다.

아래 사진은 직접 관리에 대해 어려움을 정리해주고 있으며 어떤 어려움이 있는지 설명드리겠습니다.

  1. 서버를 직접 설정, 구성, 관리 해야 하기 때문에 복잡한 인프라 관리의 어려움이 있습니다.
    특히 버전 업그레이드, 패치 적용 등도 직접 처리해야 하기 때문에 운영 관리에 복잡할 수 있습니다.

  2. 개발자들은 인증, 캐시, 고가용성 등과 같은 반복적이고 차별화 되지 않은 코드를 작성해야 합니다.
    이러한 추가 작업은 프로젝트를 더 복잡하게 만들고 개발 속도에 차질을 줍니다.

  3. API는 데이터를 외부에 노출하기 때문에 보안이 필수인데요
    동시에 높은 성능을 유지해야 하는데 이를 위해 보안과 성능을 모두 충족시켜야 하며 전문 지식과 리소스가 필요합니다.

AWS AppSync와 GraphQL

그렇다면 이러한 GraphQL의 문제점들을 해결하기 위해 어떻게 해야 할까요? 

GraphQL의 자체 관리는 복잡하고 비용이 많이 들기에  AWS AppSync를 도입했습니다. AWS AppSync는 완전히 서버리스이며 완전히 관리되는 GraphQL API를 배포할 수 있게 해주며 100% 서버리스로 복잡성이 적고 완전히 안전하며 성능이 뛰어납니다. 아래 사진을 보면 AppSync GraphQL 의 특징을 볼 수있습니다.

AppSync는 완전 관리로 아주 적은 코드로 빠르게 시작할 수 있고 API가 요구 사항을 충족하기 위해 확장될 수 있습니다.  실시간 기능과 단일 요청으로 여러 데이터 소스를 처리하는 기능은 복잡한 애플리케이션 개발을 간소화하고 빠르게 구현하는 데 큰 장점이 됩니다.

GraphQL을 사용하면 REST API를 다양한 방식으로 향상시킬 수 있으며  GraphQL은 REST와 잘 활용될 수 있는데요  아래 사진을 통해 REST API를 사용하는 방식에 따라 기존 REST API를 완전히 대체하지 않고 필요한 부분을 보완하거나 확장하여 더 나은 성능과 유연성을 제공하는 것을 볼 수 있습니다.

그렇다면 REST API와 GraphQL API를 함께 사용하며 전환하는 방법에 대한 궁금증이 생길 수 있는데요

추가로 설명드리겠습니다.

  1. 두 API를 동시에 사용하는 방법
    기존에 사용하던 REST API를 그대로 유지한체 새로 추가되거나 변경해야 할 기능만 GraphQL API로 구현할 수 있습니다.

  2.  점진적으로 전환 (Strangler 패턴)
    기존 REST API를 없애지 않고 조금씩 GraphQL로 바꿔갑니다. 이 방식은 시간이 지나면서 REST API의 역할은 줄어들고 점점더 많은 기능이 GraphQL로 이전됩니다.

  3. 프론트 엔드 전용 백엔드 (BFF)로 활용
    AppSync를 통해 GraphQL을 프론트엔드 전용 백엔드로 사용할 수 있습니다.
    프론트엔드에서 필요한 데이터를 한 번의 GraphQL 요청으로 가져오도록 설계하면 REST API에서 여러 번 요청해야 하는 복잡성을 줄일 수 있습니다. 아래 사진을 통해 AppSync GraphQL이 BFF 패턴을 어떻게 지원하는지 확인할 수 있습니다.

AppSync와 BFF 패턴을 함께 사용하면 복잡한 데이터 요구와 사용자 경험을 효과적으로 해결할 수 있음을 의미합니다.

이로서 GraphQL은 복잡한 데이터를 효율적으로 처리할 수 있는 강력한 API 쿼리 언어지만 직접관리의 어려움이 있기에  이를 보완한 AWS AppSync의 활용과 특징에 대해 알아보았습니다.

결론

GraphQL은 API 개발을 혁신적으로 간소화하며 클라이언트가 원하는 데이터만 효율적으로 요청하고 받을 수 있게 합니다. AWS AppSync는 서버리스 환경에서 GraphQL API를 쉽게 배포하고 확장할 수 있는 강력한 도구로 REST API와 공존하며 실시간 경험을 포함한 현대적인 웹 애플리케이션 기능을 지원합니다.
저에게는 생소했던 GraphQL에 대한 소개 및 어떻게 사용되는지, 장점에 대한 단점을 확인할 수 있었고 이를 보완하기 위해 AWS AppSync를 통해  같이 활용될 수 있는 부분에 대해 API를 다루는 다양한 방법에 대해 알 수 있었습니다. 아직까지도 개발 분야는 어려울 수 있지만 AWS에서 사용자 편의 및 요구사항을 위해 지속적으로 개발자들을 위해 얼마나 힘쓰고 있는지 확인할 수 있었습니다.
글 │메가존클라우드, Managed & Support Center (MSC), 국지수 매니저
게시물 주소가 복사되었습니다.