#2:[11초]
안녕하세요 AWS 프로토타이핑 엔지니어 백재현 입니다.
지금부터 AWS Amplify를 통한 서버리스 애플리케이션 개발을 주제로 발표를 시작하겠습니다.
#4:[22초]
이 세션에서는 AWS Amplify를 통한 서버리스 애플리케이션 개발을 다루기 위해 다음의 내용을 살펴볼 예정입니다.
애플리케이션을 현대화 하기 위한 기술 중 서버리스 기술은 무엇인지 살펴보고
서버리스 애플리케이션 개발을 위한 프레임워크인 AWS Amplify를 통한 개발, 배포, 호스팅 과정에 대해 살펴보도록 하겠습니다.
#6:[55초]
시장은 어느때 보다 빠르게 진화하고 있습니다.
그 안에서 우리는 단순히 혁신 하는 것이 아니라, 신속하게 혁신 해야 한다는 사실은 누구나 알고 계실 겁니다.
혁신을 가속화하기 위해 실험을 하고, 사용자 피드백을 듣고, 다시 실험합니다. 이를 이노베이션 플라이휠이라고 합니다. 이 플라이휠을 빠르게 진행하려면 서비스를 출시하고, 피드백을 수집하고, 서비스를 보완해서 다시 출시하고, 다시 피드백을 수집하고 또 다시 서비스를 보완해서 출시 할 수 있는, 이러한 시스템이 필요 합니다.
아이디어가 유저에게 도달하는 시간을 단축해야 하구요
이러한 시스템은 혁신을 기반으로 구축 및 운영돼야 합니다.
성공을 거두고 있는 기업들은,
이를 가능하게 하는 혁신 문화를 위하여 애플리케이션 설계, 구축 및 관리 방법을 지속적으로 업데이트 합니다.
이를 현대적 애플리케이션 개발, 즉 모던 애플리케이션 개발이라고 합니다.
#7:[57초]
모던 애플리케이션의 요구 사항에 맞춰 컴퓨팅 패러다임은 진화되어 왔습니다.
전통적인 컴퓨팅 패러다임에서 시스템 관리자는, 애플리케이션 실행을 위한 서버의 OS 보안 패치를 적용하는 등의 단순하고 반복적인 작업을 수행하는 데 시간을 할애해야 합니다.
또한 가용성 등을 고려 하며 신중하게 서버를 사전에 프로비저닝 해야 합니다.
이때 초과로 프로비저닝된 인프라에 대해 추가 비용을 지불하기도 합니다.
오토스케일링 등의 서비스를 통하여 기존 VM 기반 인프라에서 이러한 부담을 줄일 수 있지만,
애초에 서버리스 기반으로 시스템을 구축하면, 서버를 프로비저닝 하고 관리할 필요가 없습니다.
높은 확장성과 가용성을 제공하고, 장애 복원력이 있으며, 실행 시간 만큼만 과금하기 때문에 비용을 절약 할 수 있습니다.
인프라에 대한 관리가 불필요 하기 때문에, 서버리스 기술을 통하여 고객은 고객의 비지니스 로직에만 집중 할 수 있게 됩니다.
#8:[37초]
서버리스 애플리케이션을 구축하려는 경우 AWS에서 제공하는 다양한 서버리스 서비스를 사용 할 수 있습니다.
대부분 ‘서버리스’ 하면 AWS 람다 서비스만 떠올리시곤 하는데요, 서버리스 컴퓨팅 서비스인 람다 외에도 스토리지 서비스인 Amazon S3, 키-밸류 DB인 Amazon DynamoDB 등이 있구요
서비스들 간의 통합을 위한 Amazon SQS, AWS Step Functions 등 다양한 서비스들이 존재 합니다.
AWS Step Functions의 경우 다음 세션에서 더욱 심도 있게 다룰 예정이니 참고하시기 바랍니다.
#9:[25초]
서버리스 서비스들을 조합하여 만들어 낼 수 있는 어플리케이션의 수는 정말 무궁무진한데요,
우선 가장 기본적인 아키텍쳐를 구성해 보았습니다.
유저의 리퀘스트를 Amazon API Gateway에서 받아서, AWS Lambda를 통해 DynamoDB의 데이터를 읽고 쓰는 간단한 CRUD용 아키텍쳐 입니다.
이 서비스를 구성하는 모습을 데모로 한번 보여드리도록 하겠습니다.
#11:[41초]
여러분은 방금 서버리스 서비스만을 사용하여 데이터베이스로 부터 값을 읽어 와서 리턴 해주는 API 서버를 만드는 데모를 보셨습니다.
Url을 통하여 API Gateway에 접근 후 람다를 통해 DynamoDB의 데이터를 읽어와서 값을 리턴 했습니다.
이 과정에 저는 필요한 서비스를 생성하고, 비지니스 로직을 작성 했을 뿐, 가상 서버를 프로비저닝 하거나 높은 확장성 및 가용성을 제공하기 위한 특별한 조치를 취하지 않았습니다.
그저 서버리스 서비스들을 사용하여 아키텍쳐를 구성했을 뿐이지만 이로 인하여 확장성 및 가용성이 높고 인프라에 대한 관리 및 운영이 불필요한 모던 아키텍쳐가 구성 되었습니다.
#12:[23초]
서버리스 서비스 들을 사용하여 서버리스 기반의 마이크로 서비스를 구축 하실 수도 있습니다.
AWS의 Auth 및 사용자 관리 서비스인 Amazon Cognito를 Amazon API Gateway결합하여 인증 및 인가 로직을 처리 할 수 있으며
앱 및 웹의 리퀘스트에 대해 Amazon API Gateway를 통하여 여러 서비스들로 분산함으로써
서버리스 기반의 마이크로 서비스를 구축 할 수 있습니다.
#13:[28초]
웹 사이트를 호스팅 하고 AWS의 여러 서버리스 리소스들을 프로비저닝 하기 위해 AWS Amplify Framework을 사용 할 수도 있습니다.
Amplify Framework은 오픈소스 클라이언트 프레임웍으로써
모바일 및 웹이 클라우드와 쉽게 통합 할 수 있도록 돕고, 개발 부터 배포까지의 라이프 사이클을 관리 하는 등
서버리스를 통한 모던 애플리케이션 개발에 도움을 주고 있습니다.
이에 저는 AWS Amplify를 소개하고자 합니다.
#15:[38초]
Amplify 라고 하면 흔히 Amplify Framework을 말하는 것이구요
Amplify Framework은 오픈소스로 공개돼있는 클라이언트용 프레임웤 입니다.
오픈소스기 때문에 고객분들께서도 컨트리뷰트를 통해 직접 개발에 참여 하실 수 있습니다.
Amplify Framework는 각 플랫폼별 라이브러리, CLI 툴체인 그리고 UI 구성요소를 포함하는 개념입니다.
제공하는 CLI 툴체인을 통해서 Amazon Cognito, AWS AppSync 및 Amazon Pinpoint 등의 여러 AWS 서비스를 쉽게 통합 하실 수 있구요
개발자 도구를 제공하고 있어서 프론트 및 백엔드를 포함한 전체 앱을 빌드, 테스트, 배포 심지어 호스팅까지 제공하고 있습니다.
이러한 Ampilfy Framework은 널리 사용되는 OS 플랫폼 및 프레임워크를 지원하는 멀티 플랫폼 프레임워크 입니다.
이번 세션에서는 애플리케이션 현대화의 관점에서 서버리스 애플리케이션의 개발 배포 및 호스팅을 위해 AWS Amplify 를 사용해 보고자 합니다.
#16:[16초]
Amplify를 사용하는 과정은 매우 간단 합니다.
지원하고자 하는 플랫폼을 선택하신 후, Amplify CLI를 통하여 서비스를 구성합니다.
이후 Amplify Lib를 이용하여 App과 연결 하시면 됩니다.
#17:[28초]
Amplify는 Usecase 중심으로 다양한 서비스를 제공하고 있으며
Auth, Storage, API, Analytics 등 웹 및 앱 서비스에서 필요한 다양한 카테고리를 제공 합니다.
Auth 및 회원 관리를 원할 경우 Auth 카테고리, 데이터 저장을 위해선 Storage 카테고리를 선택하여
Amplify CLI를 통해 프로비저닝 하고
Amplify Lib를 통해 앱 및 웹과 결합하여 사용 하시면 됩니다.
#18:[31초]
Amplify CLI를 통하여 위와 같이 여러 AWS 서비스들을 프로비저닝 할 수 있습니다.
Amplify add api 명령을 통해 Serverless GraphQL API 서비스를 제공하는 AWS AppSync 및 REST API 를 제공하는 Amazon API Gateway를 프로비저닝 할 수 있으며
Add storage, add predictions 등과 같이 유즈케이스 중심으로 AWS 서비스들을 프로비저닝 하는 것을 확인 하실 수 있습니다.
#19:[1분 30초]
여기서 다음 데모를 보여드리기 전에 많은 분들에게 아직 익숙치 않을 수 있는 GraphQL API에 대한 설명을 간략하게 드리도록 하겠습니다.
REST API는 많은 분들께 익숙할 텐데요, REST API는 모든 리소스를 각각의 엔드포인트에 연결하고, 각 엔드포인트에서는 해당 리소스에 대한 내용을 관리 합니다.
이미 많은 곳에서 사용되고 우리에게 매우 익숙한 방식 입니다. 하지만 새로운 기능이 추가되어야 할 경우 리소스 접근을 위해 새로운 api를 만들어주어야 하는 불편함이 있습니다.
반면 그래프큐엘은 정해진 문법을 통해 하나의 엔드포인트에서 원하는 정보만 쿼리를 해오는 방식입니다.
즉, 기존의 rest 가 url을 사용했다면 GraphQL은 쿼리 문법을 통해 자원에 접근하는 방식입니다.
REST API를 사용 하는 경우, 요청하려는 데이터베이스 테이블의 필드가 달라질 경우 백엔드의 어플리케이션을 수정해야 합니다.
하지만 GraphQL API를 사용 하는 경우, 요청하려는 데이터베이스 테이블의 필드가 달라지더라도, GraphQL에 정의된 스키마만 변경하면 되기 때문에
백엔드 어플리케이션의 비지니스 로직을 수정 할 필요 없습니다.
그에 따라 개발 속도가 빨라지고 관리가 편리해 지기 때문에, GraphQL은 최근 들어 매우 주목 받고 있습니다.
AWS에서는 REST API는 Amazon API Gateway를 통해, GraphQL API는 AWS AppSync를 통해 서버리스 서비스를 제공하고 있습니다.
#20:[13초]
GraphQL에 대해 좀 더 살펴 보겠습니다.
쿼리를 날려야 하기 때문에 데이터에 대한 스키마가 필요하구요
이 스키마에 대한 정보는 AWS AppSync 서비스가 갖고 있게 됩니다.
#21:[13초]
앱 및 웹에서 쿼리를 통해 필요한 값을 가져 옵니다.
스키마에는 id와 name과 price가 있지만, 쿼리에서는 id와 name만 지정하여 요청하는 예시를 볼 수 있습니다.
#22:[8초]
이후 쿼리 문법에서 요청한 값을 리턴받아
이를 그대로 앱 및 웹에서 사용 할 수 있습니다.
#23:[14초]
이번에는 Amplify와 React를 이용하여 간단한 Todo 앱을 개발 하고 배포하는 데모를 보여드리도록 하겠습니다.
React를 잘 모르시는 분들도 이해 할 수 있도록 정말 간단한 기능만을 사용할 예정 입니다.
#25:[23초]
데모를 잘 보셨는지요?
Amplify를 통한 모던 애플리케이션 개발은 크게 어려운 기술이 아니며, 개발 관리에 드는 비용을 크게 줄여 줍니다.
AWS의 서버리스 기술을 통하여
관리/운영에 대한 비용을 줄이고
높은 확장성 및 가용성을 제공받으며
비지니스 로직에만 집중하면서 신속한 혁신을 이룰 수 있기를 바랍니다.
#26:[6초]
Amplify에 대한 더욱 자세한 정보는 amplify docs에서 확인 하실 수 있습니다.
#27:Suggested speaker notes:
We hope you found this session helpful. If you would like to learn more building modern applications, visit our resource hub to get access to the newly created resources. Innovate and scale with increased agility and lower cost on AWS today!
#29:Suggested speaker notes:
Your modern application development journey starts with AWS Training and Certification. Visit the link to find out the courses available to build your cloud skills and innovate faster using AWS.