[reinvent 2024] 자신의 애플리케이션을 통해 최종 사용자를 Amazon S3의 데이터에 연결합니다

Summary

Amazon S3용 스토리지 브라우저는 웹 애플리케이션에 추가하여 최종 사용자에게 Amazon S3에 저장된 데이터에 대한 간단한 인터페이스를 제공할 수 있는 오픈 소스 구성 요소입니다. 이 세션에서는 공인된 최종 사용자에게 Amazon S3에서 데이터를 탐색, 다운로드 및 업로드할 수 있는 액세스 권한을 제공하는 방법을 알아보세요. 또한 Amazon S3에서 데이터에 대한 세분화된 액세스 제어를 설정하고 S3용 스토리지 브라우저용 사용자 인터페이스를 사용자 지정하는 방법을 살펴보세요. Salesforce는 엔터프라이즈 규모에서 고객과 데이터를 연결하기 위해 스토리지 브라우저 for S3를 사용할 계획에 대해 자세히 설명합니다.


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

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: Connect end users to data in Amazon S3 through your own applications
  • Date: 2024년 12월 4일(수)
  • Venue: Mandalay Bay | Level 3 South | Jasmine F
  • Speaker:
  • Keshav Sharma(Sr. Product Manager, Salesforce)
  • Jen Boulware(Sr Software Development Manager, Amazon Web Services)
  • Louie Labrador(Product Manager, Amazon Web Services)
  • Industry: Energy & Utilities

들어가며

일반적으로 S3에 데이터를 공유한다고 생각해보면 단순히 AWS Cli 를 활용하여 객체를 업로드하고 Console에서 S3의 데이터를 확인하는 방법을 먼저 생각하게 됩니다. 세션 제목 그대로 Application에서 S3를 통해 데이터를 End User에게 제공되는 환경에 대해 생각해보지 않았던 부분이라 어떻게 이러한 부분들을 구현했는지 왜 필요했는지 이번 세션을 통해 얻을 수 있는 경험이 있을지 궁금해서 신청했습니다.

S3에 대한 소개 및 세션 소개 내용

S3 리소스를 얼마나 잘 활용하고 있으신가요? 

S3는 객체 스토리지 서비스로 뛰어난 보안성, 내구성, 가용성, 확장성을 제공합니다.
S3를 사용하다보면 S3에 저장된 데이터를 End User에 연결해야 하는 경우가 발생됩니다.

이 세션을 통해 소개해드리고자 하는 부분은 애플리케이션을 통해 고객을 S3 데이터와 연결하는 방법 입니다.

S3 서비스를 사용하는 AWS 고객과 End User에 대해

S3 서비스를 End User를 대상으로 서비스 할 때 고려해야 할 사항은 무엇이 있을까요?

많은 AWS 고객들은 S3 서비스에 익숙하지 않은 고객, 파트너, 직원 등 다양한 End user를 대상으로 서비스 하고 있습니다.   이러한 End User는 기존에 사용하던 프론트엔드 애플리케이션 사용에는 익숙합니다. Dropbox, Google Drive 등과 같은 예시로 말이죠

AWS 고객들은 S3에 저장된 대량의 데이터를 더 잘 활용할 수 있는 방안을 찾길 원했습니다.

여기서 개발자들의 어려움을 볼 수 있는데요, 기존 프론트엔드 애플리케이션에서 데이터를 연결하려면 자체 코드로 UI와 백엔드를 모두 개발해야만 했습니다. 어떠한 문제점들이 있었을까요?

1) 비용문제
이 부분에서 사용자에게 접근 제한이나 인증, 권한 관리를 구현하려면 3rd Party 소프트웨어나 라이브러리를 추가로 사용해야 했습니다.

2) 개발 복잡성 증가
개발자들은 애플리케이션의 핵심 기능에 집중해야 하지만 인증 및 권한관리 등 데이터 연결 및 제한 설정 같은 추가적인 문제를 해결하는데도 상당한 시간을 투자해야 했습니다.

3) 사용자 제한 관리의 어려움
위에서 언급되었던 인증, 권한관리로 사용자 그룹별로 데이터 접근 제한을 설정하거나 사용량을 제어하는 등의 작업은 직접 구현하기 어려운 작업입니다.

아래 사진은 이러한 문제를 직관적으로 보여주고 있습니다.

AWS Amplifier의 도입 과정 및 기능 소개

이에 AWS 고객들은 End User와 S3 데이터를 연결할 수 있는 방법을 요청했습니다. 여기서 AWS는 이러한 요청사항에 대해 어떠한 고려를 했을까요?

End User는 데이터를 쉽게 사용하기를 바라고 웹 개발자는 End User에게 이를 지원할 수 있는 간단한 방법을 원했습니다. 이 과정에서 AWS는 사용자 친화적이고 웹 개발자가 애플리케이션에 맞게 커스터마이징 할 수 있는 인터페이스가 필요하다고 생각하였고 해당 인터페이스를 오픈소스로 개발하기로 결정했습니다.

지난 몇 년간 AWS는 S3가 단순한 API 서비스가 아닌 End User에게 데이터를 쉽게 접근하고 활용할 수 있도록 도와주는 역할을 해야한다고 생각하였고 이를 위해 오픈소스 커넥터를 개발하여 AWS 고객들이 더 나은 애플리케이션 성능을 제공할 수 있도록 했습니다.

이로 인해 평균적인 비즈니스 사용자와 웹 개발자를 모두 고려하여 설계되었으며 “AWS Amplifier”를 통해 구현되었습니다.   AWS Amplify는 여러 오픈소스 UI 컴포넌트와 클라이언트 SDK 라이브러리를 제공합니다.

프론트엔드 개발자가 AWS에서 애플리케이션을 구축, 배포, 호스팅할 수 있도록 도와주는 풀스택 솔루션 입니다.

아래 사진은 통해 AWS Amplifier의 주요 기능과 이점을 보여주고 있습니다.

다양한 주요 기능과 이점이 있는데요, 여기서 제가 생각했던 주요 기능을 말씀드리겠습니다.

1)  Native Integration with AWS Service
AWS S3와 원활하게 통합되게 하며 개발자는 클라우드 자원을 별도의 복잡한 설정 없이 바로 활용할 수 있습니다.

2) Global Hosting
Amplify는 전 세계 사용자에게 애플리케이션을 빠르게 제공할 수 있도록 글로벌 호스팅을 지원합니다.

3) Pre-developer sandbox 
각 개발자별로 고유한 샌드박스 환경을 제공하여 개별 개발 및 테스트가 가능합니다.

4) UI Building 
사용자 인터페이스(UI)를 쉽게 설계하고 구현할 수 있는 도구를 제공합니다.

AWS S3 Storage Browser에 대한 소개 및 기능

이로서 AWS에서는 해당 문제를 해결하기 위해 Amplifier와 S3를 결합한 Amazon S3 Storage Browser를 만들었습니다. S3 Storage Browser는 오픈소스 React컴포넌트로 AWS 고객들이 웹 애플리케이션에서 통합하여 End user가 기존에 사용하던 애플리케이션을 통해 손쉽게 데이터를 탐색, 다운로드, 업로드 할 수 있습니다.

지금까지 설명드렸던 문제점을 해결하기 위한 매우 강력한 리소스인데요, 어떠한 기능들이 있는지 설명드리겠습니다.

Storage Browser for S3는 아래와 같이 세 가지 주요기능을 제공합니다.

1) Federated Access with S3 Access Grants
S3 Access Grants를 활용하여 End User에 대해 특정 사용자나 그룹에 대해 파일 접근 권한을 유연하게 설정할 수 있습니다. 인증 및 권한 관리를 간소화하여 보안성과 편리성을 동시에 제공합니다.

2) Customize Design and User Experience
이를 통해 조직이나 브랜드에 맞는 사용자 친화적인 인터페이스를 구현하여 End User에게 제공할 수 있습니다.

3) Take advantage of SDK optimizations
AWS SDK를 활용하여 최적화된 성능과 기능을 제공합니다.
이를 통해 Storage Browser에 최적화된 새로운 클라이언트 SDK 강력한 기능을 활용 할 수 있습니다.

Amazon S3 Storage Browser는 AWS 고객들로 부터 테스트 및 피드백을 받아 계속해서 발전하고 있다고 하는데요
어떠한 기능들을 추가했을까요?

올해 9월 Storage Browser의 알파 버전을 출시 하여 테스트 및 피드백 이후 Storage Browser의 일반 사용 가능 버전을 발표했습니다.

End User는 해당 기능을 사용하면 드래그 앤 드롭 업로드, 파일 이름 검색, 데이터 복사 및 삭제 기능이 가능하며 웹 개발자를 위해서도 End Point를 커스터마이징 하고 UI 상태 피드백을 편집할 수 있는 기능도 추가했습니다.

Storage Browser for S3는 AWS Amplify JavaScript 및 React 클라이언트 라이브러리에서 사용할 수 있으며 현재 무료로 제공됩니다.

다음으로 소개드릴 부분은 앞서 설명드렸던 Storage Browser for S3 기능들에 대해 좀 더 상세히 알아보려고 합니다. Access Grants를 통한 End User의 접근 권한을 생성할 수 있다고 말씀드렸는데요, Access Grants는 사용자 그룹을 S3의 데이터 세트(Bucket, Prefix, 또는 Object)에 매핑할 수 있도록 지원하는 기능이며 해당 기능을 통해 데이터에 대한 읽기, 쓰기 또는 읽기 및 쓰기 권한을 부여할 수 있습니다.

사용자 인터페이스(UI) 를 커스터마이징 할 수 있다고 말씀드렸 있는데요, 이는 클라이언트 측 이벤트 핸들러를 활용하여 사용자 지정 로직과 작업을 지원하는 맞춤형 액션을 구현할 수 있습니다.

마지막으로 SDK 부분이 있는데요, JavaScript로 개발된 SDK를 통해 웹 개발자의 부담을 줄이고 End User에게 다양한 최적화 기능을 제공합니다.

S3기능인 MultiPart Upload 기능을 통해 고속으로 데이터 전송을 할 수 있으며 업로드 된 데이터의 체크섬을 자동으로 계산하여 내구성 검사를 수행하고 실패한 경우 S3에 PUT 요청을 중단함으로써 확인된 데이터만 S3에 업로드 되도록 합니다.

또한 SDK 번들 크기를 대폭 줄여 애플리케이션의 로드 시간을 단축하고 End user에게 더 빠른 반응을 제공합니다.
이로 인해 웹 개발자들은 애플리케이션의 개발에 집중할 수 있는 장점이 있습니다.

그렇다면 S3 Storage Browser는 어떻게 동작할까요?
Amazon S3 Storage Browser가 어떻게 동작하는지는 아래 사진을 통해 더욱더 자세히 확인할 수 있습니다.

지금까지 말씀드렸던 부분들을 종합적으로 반영해본다면 아래와 같이 설명드릴 수 있습니다.

1) IAM Identity Center 및 S3 Access Grants 을 통해 회사 특정 End User만 제어할 수 있고 CloudTrail 데이터 이벤트를 통해 추가 확인이 가능합니다. 

2) Amazon Cognito를 통해 적응형 인증(adaptive authentication)과 같은 추가  보안 기능을 추가할 수 있으며 Storage Browser 컴포넌트를 STS 토큰과 연결하여 사용자의 세션을 인증을 할 수 있습니다.

결론

AWS 고객들은 End User에게 서비스를 제공하는것에 대해 많은 어려움이 있었습니다. 이에 AWS는 S3 Storage Browser 기능을 출시하면서 고객들의 불편사항을 해결하는데 노력했습니다. 해당 기능을 통해 웹 개발자는 애플리케이션 개발에 집중할 수 있었고 End User또한 UI를 통해 데이터를 탐색하거나 업로드 및 다운로드 기능을 자유롭게 할 수 있었습니다. 단순히 S3를 End User에게 제공한다고 생각했을 때 어떻게 해야할까? 라는 생각이 먼저 들었습니다. 웹 개발자의 어려움, End User는 어떠한 UI를 원할까? 또는 이러한 구현을 위해 어떠한 노력이 들어가야 할까 등 S3를 이토록 활용가치 있게 End User에게 활용되는 부분을 보고 단순히 객체 저장용도가 아닌 어느순간 사용자들에게 서비스로 친숙하게 다가온 부분에 대해 감명 깊었습니다.
글 │메가존클라우드, Managed & Support Center (MSC), 국지수 매니저
게시물 주소가 복사되었습니다.