제21차 AWSKRUG 서버리스 소모임에서 발표한 내용입니다.
ӣకAppSync ܳ ഝਊೠܻఋ ࢲߡܻझ ইఃఫ
View Slide
ߊ ࣗѐ• 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 servicesSubscriptionData StreamingMutation Trigger
݃۽ ࢲ࠺झStream ਵ۽ࠗఠ Lambda ܻѢSubscriptionMicro servicesSubscriptionData StreamingMutation TriggerAppSync ܻఋ ইఃఫ ࠗ࠙ য়ט ߊ ೨ब
ࢲߡܻझ झܻ߁ ইఃఫ
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
ؘݽ ۽ં ইఃఫ
ؘݽ ইఃఫMicroserviceDynamoDBSubscriptionद۽ ࢎਊೡ AppSyncਊ DBMutationDynamoDB 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ʂ
٘ܳ ೠߣ ಝࠅөਃhttps://github.com/twkiiim/serverless-tutorials/tree/master/realtime-stream-with-appsync
AppSync Subscription ী ೞৈ
AppSync WebSocketsMQTT over WebSockets WebSockets (NEW)Payload Size 128Kb 240KbCloudWatch Metrics X OSelection Set Filtering X OEnhanced Connection Rates X OEnhanced Broadcast Rates X Ohttps://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 ۽ ۠Ѫب غ ঋਸө?
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!
хࢎפ