Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
AppSync를 활용한 리얼타임 서버리스 아키텍쳐
Search
Taewoo Kim
February 13, 2020
Programming
0
4.5k
AppSync를 활용한 리얼타임 서버리스 아키텍쳐
제21차 AWSKRUG 서버리스 소모임에서 발표한 내용입니다.
Taewoo Kim
February 13, 2020
Tweet
Share
More Decks by Taewoo Kim
See All by Taewoo Kim
AWS Lambda 내부동작 파헤치기
twkiiim
1
2.8k
Amazon VPC Deep Dive: ENI 를 알면 VPC 가 보인다
twkiiim
2
5.6k
온라인 주문 서비스를 서버리스 아키텍쳐로 구축하기
twkiiim
0
420
Amplify Meetup #01
twkiiim
1
6.5k
Amazon EventBridge vs Amazon SNS
twkiiim
0
2.4k
活用パターンで学ぶGraphQL
twkiiim
0
1.4k
AWS 기반 서버리스 아키텍쳐 톺아보기
twkiiim
0
2.1k
AWS 기반 서버리스 아키텍쳐 톺아보기
twkiiim
1
3.2k
[LINE API × Tech API Vol. 2 Powered by AWS] サーバーレスでの分散トランザクション
twkiiim
0
2.4k
Other Decks in Programming
See All in Programming
ポスターセッション: 「まっすぐ行って、右!」って言ってラズパイカーを動かしたい 〜生成AI × Raspberry Pi Pico × Gradioの試作メモ〜
komofr
0
950
プログラミングどうやる? ~テスト駆動開発から学ぶ達人の型~
a_okui
0
190
Playwrightはどのようにクロスブラウザをサポートしているのか
yotahada3
7
2.3k
実践AIチャットボットUI実装入門
syumai
7
2.5k
Чего вы не знали о строках в Python – Василий Рябов, PythoNN
sobolevn
0
160
Back to the Future: Let me tell you about the ACP protocol
terhechte
0
130
monorepo の Go テストをはやくした〜い!~最小の依存解決への道のり~ / faster-testing-of-monorepos
convto
2
390
Advance Your Career with Open Source
ivargrimstad
0
330
育てるアーキテクチャ:戦い抜くPythonマイクロサービスの設計と進化戦略
fujidomoe
1
150
Model Pollution
hschwentner
1
180
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
930
iOS 17で追加されたSubscriptionStoreView を利用して5分でサブスク実装チャレンジ
natmark
0
590
Featured
See All Featured
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Designing for humans not robots
tammielis
254
25k
Automating Front-end Workflow
addyosmani
1371
200k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
114
20k
Reflections from 52 weeks, 52 projects
jeffersonlam
352
21k
Become a Pro
speakerdeck
PRO
29
5.5k
How to Create Impact in a Changing Tech Landscape [PerfNow 2023]
tammyeverts
54
3k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
32
1.6k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.2k
Java REST API Framework Comparison - PWX 2021
mraible
33
8.8k
Why You Should Never Use an ORM
jnunemaker
PRO
59
9.6k
Testing 201, or: Great Expectations
jmmastey
45
7.7k
Transcript
ӣక AppSync ܳ ഝਊೠ ܻఋ ࢲߡܻझ ইఃఫ
ߊ ࣗѐ • Solutions Architect, Classmethod (ੌࠄ) • Front-end, Back-end,
Android, iOS, Machine Learning, Computer Vision, etc • ୭Ӕ 1֙р AWS ࠙ঠীࢲ ޙࢿਸ ऺӝਤ೧ Ҋҵ࠙ై • Serverless on AWS, ؊ աইоࢲ Builder on AWS ܳ ೱೞݴ ழܻযܳ ऺח • য়ט ੑפ!!!! AWSKRUG ٜ࠙җ ݆݆ ҮܨೞҊ रणפ!!!!ƃƃ https://dev.classmethod.jp/author/kim-taewoo/ ೠҴয & ੌࠄয ӝࣿ࠶۽Ӓ
ࢲߡܻझ ইఃఫ ౠী ೧ рױ غযࠇद
ࢲߡܻझ ইఃఫ ౠ • ҙܻೡ ࢲߡо হ (NoOps) • ਃೡ
ٸ݃ ਃೠ ࠗ࠙݅ ਃೠ ݅ఀ ࢎਊೡ ࣻ • ஹೊ ܻࣗझח Lambda ( Fargate) • Lambda ҃ ਵ۽ connection ਸ ਬೡ ࣻ হ
Ӓۢ ࢲߡܻझ ইఃఫ۽ח ܻఋ ӝמ ޅ ݅٘աਃ?
ٜ݅ ࣻ ભ!
How? API Gateway ীࢲ ਢࣗ ਗ API Gateway websocket
How? PubSub ழ֏࣌ ӝ߈ ࣛܖ࣌ ইפ݅ PubSub ࣛܖ࣌ب (ੌױ) оמ
It’s possible, but … • ۿূ٘৬ ߔূ٘ р ాनਸ ਤೠ
Data structure ܳ ೧ঠೞҊ • োೞ݅ ؘఠܳ Ҋ ߉ਸ ٸ Validation ب ਃೞҊ • োೞ݅ ߔূ٘৬ ۿূ٘ নஏীࢲ ѐߊ ܖযઉঠೞҊ • ౠ ߔূ٘ ஏ ֢۱ (࢚) ݆ ٜযцפ High Availability .. Reliability .. Scalability ..
AppSync ܳ ࢎਊೞݶ ݽٚѪ рױ೧פ!!
AWS AppSync • Strong typing ਵ۽ ੋ೧ Validation ٘ (Ѣ)
ࢤۚ оמ (GraphQL ౠ) • ܻఋ ాनਸ ਤ೧ࢲ ߔূ٘ীࢲ ೧ঠೡ Ѫ Subscription ਸ झః݃ী ࢶ೧ فח Ѫ ߆ী হ • ۿূ٘ ஏীࢲח AppSync SDK ա Amplify ܳ ࢎਊೞݶ рױ Subscription оמ
ܻఋ ؘఠ ాनਸ ਤೠ AppSync ইఃఫ
AppSync ܻఋ ইఃఫ Micro services Subscription Data Streaming Mutation Trigger
݃۽ ࢲ࠺झ Stream ਵ۽ࠗఠ Lambda ܻѢ Subscription Micro services Subscription
Data Streaming Mutation Trigger AppSync ܻఋ ইఃఫ ࠗ࠙ য়ט ߊ ೨ब
ࢲߡܻझ झܻ߁ ইఃఫ
DynamoDB Streams → Lambda
DynamoDB Streams → Lambda • ഋੋ ࢲߡܻझ ؘఠ झܻ߁ ಁఢ
ೞա • Eventual Consistency Event-driven processing ١ਸ ܻೞӝী • ScalableɾReliableɾCost Effective • ߽۳بо ݒ ֫ সী ೧ࢲח पदрࢿਸ ࠁೞ ঋਵ۽ Kinesis DS о જ
RDS → DMS → Kinesis → Lambda
RDS → DMS → Kinesis → Lambda • RDS ܳ
ࢎਊೠ ҃ীب झܻ߁ ܻо оמೣ • Kinesis Data Streams ח ࢥ٘ܳ ஶ܀ ೡ ࣻ যঠ ೣ • Kinesis Data Streams ীࢲ Ҷ Lambda ۽ ো҅ೡ ਃח হ • Ӓ۞ա ࠄ ߊ ݾ (AppSync ো҅) ਸ ਤೠ ਊب۽ח Lambda ۽ ࠙ • DB (MySQL, PostgreSQL ١) ਵ۽ ࠗఠ Lambda ܳ प೯दఃח ߑߨب ઓ
ӝఋ ߮ ࣗझ
• SQS ীࢲ Lambda ۽ ো҅غח ಁఢ • Kinesis ীࢲ
Lambda ۽ ো҅غח ಁఢ • API Gateway ীࢲ Lambda ۽ ো҅غח ಁఢ • CloudWatch Alarms ীࢲ Lambda ۽ ো҅غח ಁఢ • CloudWatch Events ীࢲ Lambda ۽ ো҅غח ಁఢ • Ӓ ৻ীب ޖࣻ ݆ ӝఋ ߮ ࣗझ
Lambda ۽ ؘఠܳ ߉ই৳ਵݶ рױೞભ!
Lambda → AppSync
ؘݽ ۽ં ইఃఫ
ؘݽ ইఃఫ Microservice DynamoDB Subscription द۽ ࢎਊೡ AppSyncਊ DB Mutation
DynamoDB Streams
Microservice • API Gateway → Lambda → DynamoDB ҳࢿ •
о ݆ ॳח ࢲߡܻझ ইఃఫ API ߔূ٘ ಁఢ • рױೠ ੑ۱ ಬਸ ܻೞח ࢲ࠺झܳ ۽ ٜয ؘݽ٘ ࢿ
AWS AppSync • AppSync ҳ୷दীח Serverless Framework ܳ ୶ୌ •
Subscription ܳ झః݃ী ୶оೞח Ѫ݅ਵ۽ ۄ ஏীࢲ Subscription оמ ( ߔূ٘ সߊࢤ X ) • ਃೠ ӝמ Mutation җ Subscription ࡺ݅, Query ܳ झః݃ী ١۾ೞ ঋਵݶ GraphQL झః݃ ী۞о غ۽ рױೠ ௪ܻ ೞաܳ ୶о೧ঠೣ (getOrder ࢿ) • Mutation ೞӝ ਤ೧ࢲ DynamoDB ܳ ؘఠ ࣗझ۽ࢲ ࢤࢿೞҊ, TTL (Time-To-Live) ܳ ࢸೠ. (expiresAt ܳ AWSTimestamp ఋੑਵ۽ ࢶೠ)
DynamoDB Streams → Lambda • DynamoDB Streams ח ୭ 24
दр ؘఠ ࠁઓ, ؘఠ ߸҃ ࣽߣ ࠁૐоמೠ ࢲ࠺झ • Ӓ۞ա ܻఋ ࢲ࠺झীࢲח ୭ 24दр ؘఠ ࠁઓ ߹ о হӟ פ. • ߽۳بܳ ֫۰ݶ ߓ ࢎૉܳ ઑೞݶ ؽ
Lambda → AppSync • पࢲ࠺झਊਵ۽ ܾܻૉػ AppSync Client SDK ח
javascript ߡ ࡺ (Amplify ܳ ӂ) • AppSync Client SDK ܳ Lambda ࢚ীࢲ زदఃӝ ਤ೧ࢲח ݻо • ismorphic-fetch ܳ ನ ೧ঠೣ • disableOffline ܳ true ۽ ߸҃೧ঠೣ
DEMO TIMEʂ
None
٘ܳ ೠߣ ಝࠅөਃ https://github.com/twkiiim/serverless-tutorials/tree/master/realtime-stream-with-appsync
AppSync Subscription ী ೞৈ
AppSync WebSockets MQTT over WebSockets WebSockets (NEW) Payload Size 128Kb
240Kb CloudWatch Metrics X O Selection Set Filtering X O Enhanced Connection Rates X O Enhanced Broadcast Rates X O https://aws.amazon.com/jp/blogs/mobile/appsync-realtime/
re:Invent 2019 Builders Fair ীࢲ ࣗѐػ Smart Chair
42
AppSync ী ೧ ؊ ঌҊ रݶ?
AppSync ҙ۲ ࠶۽Ӓ • AWS ੑޙ ࠶۽Ӓ – AppSync ಞ
(ೠҴয) https://dev.classmethod.jp/cloud/aws/aws-appsync-re-introduction-2019-korean-ver/
AppSync ҙ۲ ࠶۽Ӓ • [AppSync ѐ֛ܻ] AWS AppSync ߂ Resolver
Mapping Template ী ೧ ѐ֛ਸ ܻ೧ࠇद! https://dev.classmethod.jp/cloud/appsync-resolver-vtl-tutorial-ko/
AppSync ҙ۲ ࠶۽Ӓ • [AWS AppSync] ΤοδσόΠεͷσʔλΛ AWS IoTܦ༝Ͱऔಘͯ͠GraphQLΛߋ৽ͯ͠Έ·ͨ͠ɻ https://dev.classmethod.jp/cloud/aws-appsync-with-awsiot/
AppSync ҙ۲ ࠶۽Ӓ • [AWS AppSync] ΤοδσόΠεͷσʔλΛ AWS IoTܦ༝Ͱऔಘͯ͠GraphQLΛߋ৽ͯ͠Έ·ͨ͠ɻ https://dev.classmethod.jp/cloud/aws-appsync-with-awsiot/
AppSync ۽ ۠Ѫب غ ঋਸө?
State Management by AppSync • ࢲߡܻझ ইఃఫ ಁఢীࢲח Rich Client
ܳ ೱ • Ӓ۞ա ۿূ٘ ٘ ࠂبо աѱ ૐоೞחѪ જ ঋ • ۿূ٘ ٘ ࠂب ࢚ࠗ࠙ী ӝৈೞח State Management • State Management ܳ بੑೞӝ ਤೠ ٘ ࠂبܳ AppSync Subscription ী ઓ ೧ࢲ ೧Ѿೡ ࣻب ঋਸө? • ֎ਕ ࣘب/উࢿ ١ী ઓࢿ ࢤӣ. • Ӓ۞ա 5G दীח ޙઁח হ ঋਸө?
State Management by AppSync • ࢲߡܻझ ইఃఫ ಁఢীࢲח Rich Client
ܳ ೱ • Ӓ۞ա ۿূ٘ ٘ ࠂبо աѱ ૐоೞחѪ જ ঋ • ۿূ٘ ٘ ࠂب ࢚ࠗ࠙ী ӝৈೞח State Management • State Management ܳ بੑೞӝ ਤೠ ٘ ࠂبܳ AppSync Subscription ী ઓ ೧ࢲ ೧Ѿೡ ࣻب ঋਸө? • ֎ਕ ࣘب/উࢿ ١ী ઓࢿ ࢤӣ. • Ӓ۞ա 5G दীח ޙઁח হ ঋਸө? Let’s discuss together!
хࢎפ