$30 off During Our Annual Pro Sale. View Details »

AppSync를 활용한 리얼타임 서버리스 아키텍쳐

Taewoo Kim
February 13, 2020

AppSync를 활용한 리얼타임 서버리스 아키텍쳐

제21차 AWSKRUG 서버리스 소모임에서 발표한 내용입니다.

Taewoo Kim

February 13, 2020
Tweet

More Decks by Taewoo Kim

Other Decks in Programming

Transcript

  1. ӣక਋
    AppSync ܳ ഝਊೠ
    ܻ঴ఋ੐ ࢲߡܻझ ইఃఫ୛

    View Slide

  2. ߊ಴੗ ࣗѐ
    • 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/
    ೠҴয & ੌࠄয ӝࣿ࠶۽Ӓ

    View Slide

  3. ࢲߡܻझ ইఃఫ୛੄ ౠ૚ী ؀೧
    рױ൤ غ૝যࠇद׮

    View Slide

  4. ࢲߡܻझ ইఃఫ୛੄ ౠ૚
    • ҙܻೡ ࢲߡо হ׮ (NoOps)

    • ೙ਃೡ ٸ݃׮ ೙ਃೠ ࠗ࠙݅ ೙ਃೠ ݅ఀ ࢎਊೡ ࣻ ੓׮

    • ஹೊ౴ ܻࣗझח Lambda (഑਷ Fargate)

    • Lambda ੄ ҃਋ ੗୓੸ਵ۽ connection ਸ ਬ૑ೡ ࣻ হ׮

    View Slide

  5. Ӓۢ ࢲߡܻझ ইఃఫ୛۽ח
    ܻ঴ఋ੐ ӝמ ޅ ݅٘աਃ?

    View Slide

  6. ٜ݅ ࣻ ੓ભ!

    View Slide

  7. How?
    API Gateway ীࢲ ਢࣗ௄ ૑ਗ
    API Gateway websocket

    View Slide

  8. How?
    PubSub
    ழ֏࣌ ӝ߈੄ ࣛܖ࣌਷ ইפ૑݅ PubSub ࣛܖ࣌ب (ੌױ਷) оמ

    View Slide

  9. It’s possible, but …
    • ೐ۿ౟ূ٘৬ ߔূ٘ р੄ ాनਸ ਤೠ Data structure ܳ ੿੄೧ঠೞҊ

    • ׼োೞ૑݅ ؘ੉ఠܳ ઱Ҋ ߉ਸ ٸ੄ Validation ب ೙ਃೞҊ

    • ׼োೞ૑݅ ߔূ٘৬ ೐ۿ౟ূ٘ নஏীࢲ ѐߊ੉ ੉ܖযઉঠೞҊ

    • ౠ൤ ߔূ٘ ஏ੄ ֢۱੉ (࢚׼൤) ݆੉ ٜযцפ׮

    High Availability .. Reliability .. Scalability ..

    View Slide

  10. AppSync ܳ ࢎਊೞݶ
    ੉ ݽٚѪ੉ рױ೧૘פ׮!!

    View Slide

  11. AWS AppSync
    • Strong typing ਵ۽ ੋ೧ Validation ௏٘ (Ѣ੄) ࢤۚ оמ

    (GraphQL ੄ ౠ૚)

    • ܻ঴ఋ੐ ాनਸ ਤ೧ࢲ ߔূ٘ীࢲ ೧ঠೡ Ѫ਷ Subscription ਸ झః݃ী
    ࢶ঱೧ فח Ѫ ߆ী হ਺

    • ೐ۿ౟ূ٘ ஏীࢲח AppSync SDK ա Amplify ܳ ࢎਊೞݶ рױ൤ Subscription
    оמ

    View Slide

  12. ܻ঴ఋ੐ ؘ੉ఠ ాनਸ ਤೠ
    AppSync ইఃఫ୛

    View Slide

  13. AppSync ܻ঴ఋ੐ ইఃఫ୛
    Micro services
    Subscription
    Data Streaming
    Mutation Trigger

    View Slide

  14. ݃੉௼۽ ࢲ࠺झ
    Stream ਵ۽ࠗఠ Lambda ౟ܻѢ
    Subscription
    Micro services
    Subscription
    Data Streaming
    Mutation Trigger
    AppSync ܻ঴ఋ੐ ইఃఫ୛
    ੉ ࠗ࠙੉ য়ט ߊ಴੄ ೨ब

    View Slide

  15. ࢲߡܻझ झ౟ܻ߁ ইఃఫ୛

    View Slide

  16. DynamoDB Streams → Lambda

    View Slide

  17. DynamoDB Streams → Lambda
    • ੹ഋ੸ੋ ࢲߡܻझ ؘ੉ఠ झ౟ܻ߁ ಁఢ ઺ ೞա

    • Eventual Consistency ഑਷ Event-driven processing ١ਸ ୊ܻೞӝী ੸೤

    • ScalableɾReliableɾCost Effective

    • ߽۳بо ݒ਋ ֫਷ ੘সী ؀೧ࢲח पदрࢿਸ ࠁ੢ೞ૑ ঋਵ޲۽ Kinesis DS о જ਺

    View Slide

  18. RDS → DMS → Kinesis → Lambda

    View Slide

  19. RDS → DMS → Kinesis → Lambda
    • RDS ܳ ࢎਊೠ ҃਋ীب झ౟ܻ߁ ୊ܻо оמೣ

    • Kinesis Data Streams ח ࢥ٘ܳ ੸੺൤ ஶ౟܀ ೡ ࣻ ੓যঠ ೣ

    • Kinesis Data Streams ীࢲ Ҷ੉ Lambda ۽ ো҅ೡ ೙ਃח হ਺

    • Ӓ۞ա ࠄ ߊ಴੄ ݾ੸ (AppSync ো҅) ਸ ਤೠ ਊب۽ח Lambda ۽ ୽࠙

    • DB (MySQL, PostgreSQL ١) ਵ۽ ࠗఠ ૒੽ Lambda ܳ प೯दఃח ߑߨب ઓ੤

    View Slide

  20. ӝఋ ੉߮౟ ࣗझ

    View Slide

  21. • SQS ীࢲ Lambda ۽ ো҅غח ಁఢ

    • Kinesis ীࢲ Lambda ۽ ো҅غח ಁఢ

    • API Gateway ীࢲ Lambda ۽ ো҅غח ಁఢ

    • CloudWatch Alarms ীࢲ Lambda ۽ ো҅غח ಁఢ

    • CloudWatch Events ীࢲ Lambda ۽ ো҅غח ಁఢ

    • Ӓ ৻ীب ޖࣻ൤ ݆਺
    ӝఋ ੉߮౟ ࣗझ

    View Slide

  22. Lambda ۽ ؘ੉ఠܳ ߉ই৳ਵݶ
    ׮਺਷ рױೞભ!

    View Slide

  23. Lambda → AppSync

    View Slide

  24. ؘݽ ೐۽ં౟ ইఃఫ୛

    View Slide

  25. ؘݽ ইఃఫ୛
    Microservice
    DynamoDB
    Subscription
    ੐द۽ ࢎਊೡ AppSyncਊ DB
    Mutation
    DynamoDB Streams

    View Slide

  26. Microservice
    • API Gateway → Lambda → DynamoDB ҳࢿ

    • о੢ ݆੉ ॳ੉ח ࢲߡܻझ ইఃఫ୛ API ߔূ٘ ಁఢ

    • рױೠ ੑ۱ ಬਸ ୊ܻೞח ࢲ࠺झܳ ৘۽ ٜয ؘݽ௏٘ ੘ࢿ

    View Slide

  27. AWS AppSync
    • AppSync ҳ୷दীח Serverless Framework ܳ ୶ୌ

    • Subscription ܳ झః݃ী ୶оೞח Ѫ݅ਵ۽ ௿ۄ੉঱౟ ஏীࢲ Subscription ੉ оמ 

    ( ߔূ٘ ੘সߊࢤ X )

    • ೙ਃೠ ӝמ਷ Mutation җ Subscription ࡺ੉૑݅, Query ܳ झః݃ী ١۾ೞ૑ ঋਵݶ
    GraphQL झః݃ ী۞о غ޲۽ рױೠ ௪ܻ ೞաܳ ୶о೧ঠೣ (getOrder ੘ࢿ)

    • Mutation ೞӝ ਤ೧ࢲ੄ DynamoDB ܳ ؘ੉ఠ ࣗझ۽ࢲ ࢤࢿೞҊ, TTL (Time-To-Live)
    ܳ ࢸ੿ೠ׮. (expiresAt ܳ AWSTimestamp ఋੑਵ۽ ࢶ঱ೠ׮)

    View Slide

  28. DynamoDB Streams → Lambda
    • DynamoDB Streams ח ୭؀ 24 दр੄ ؘ੉ఠ ࠁઓ, ؘ੉ఠ ߸҃੄ ࣽߣ੉ ࠁૐоמೠ
    ࢲ࠺झ

    • Ӓ۞ա ܻ঴ఋ੐ ࢲ࠺झীࢲח ୭؀ 24दр੄ ؘ੉ఠ ࠁઓ਷ ߹ ੄޷о হӟ ೤פ׮.

    • ߽۳بܳ ֫੉۰ݶ ߓ஖ ࢎ੉ૉܳ ઑ੺ೞݶ ؽ

    View Slide

  29. Lambda → AppSync
    • पࢲ࠺झਊਵ۽ ܾܻૉػ AppSync Client SDK ח javascript ߡ੹ ࡺ (Amplify ܳ ӂ੢)

    • AppSync Client SDK ܳ Lambda ࢚ীࢲ ز੘दఃӝ ਤ೧ࢲח ݻо૑ ઱੄੼੉ ੓਺

    • ismorphic-fetch ܳ ੐ನ౟ ೧ঠೣ

    • disableOffline ܳ true ۽ ߸҃೧ঠೣ

    View Slide

  30. DEMO TIMEʂ

    View Slide

  31. View Slide

  32. ૒੽ ௏٘ܳ ೠߣ ࢓ಝࠅөਃ
    https://github.com/twkiiim/serverless-tutorials/tree/master/realtime-stream-with-appsync

    View Slide

  33. AppSync Subscription ী ؀ೞৈ

    View Slide

  34. 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/

    View Slide

  35. re:Invent 2019 Builders Fair ীࢲ
    ࣗѐػ Smart Chair

    View Slide

  36. 42

    View Slide

  37. AppSync ী ؀೧ ؊ ঌҊ र׮ݶ?

    View Slide

  38. AppSync ҙ۲ ࠶۽Ӓ
    • AWS ੤ੑޙ ࠶۽Ӓ – AppSync ಞ (ೠҴয)

    https://dev.classmethod.jp/cloud/aws/aws-appsync-re-introduction-2019-korean-ver/

    View Slide

  39. AppSync ҙ۲ ࠶۽Ӓ
    • [AppSync ѐ֛੿ܻ] AWS AppSync ߂ Resolver Mapping Template ী ؀೧ ѐ֛ਸ ੿ܻ೧ࠇद׮!

    https://dev.classmethod.jp/cloud/appsync-resolver-vtl-tutorial-ko/

    View Slide

  40. AppSync ҙ۲ ࠶۽Ӓ
    • [AWS AppSync] ΤοδσόΠεͷσʔλΛ AWS IoTܦ༝Ͱऔಘͯ͠GraphQLΛߋ৽ͯ͠Έ·ͨ͠ɻ

    https://dev.classmethod.jp/cloud/aws-appsync-with-awsiot/

    View Slide

  41. AppSync ҙ۲ ࠶۽Ӓ
    • [AWS AppSync] ΤοδσόΠεͷσʔλΛ AWS IoTܦ༝Ͱऔಘͯ͠GraphQLΛߋ৽ͯ͠Έ·ͨ͠ɻ

    https://dev.classmethod.jp/cloud/aws-appsync-with-awsiot/

    View Slide

  42. AppSync ۽ ੉۠Ѫب غ૑ ঋਸө?

    View Slide

  43. State Management by AppSync
    • ࢲߡܻझ ইఃఫ୛ ಁఢীࢲח Rich Client ܳ ૑ೱ

    • Ӓ۞ա ೐ۿ౟ূ٘੄ ௏٘ ࠂ੟بо ૑ա஖ѱ ૐоೞחѪ਷ જ૑ ঋ਺

    • ೐ۿ౟ূ٘੄ ௏٘ ࠂ੟ب੄ ࢚׼ࠗ࠙ী ӝৈೞח State Management

    • State Management ܳ بੑೞӝ ਤೠ ௏٘੄ ࠂ੟بܳ AppSync Subscription ী ੄ઓ
    ೧ࢲ ೧Ѿೡ ࣻب ੓૑ ঋਸө?

    • ֎౟ਕ௼੄ ࣘب/উ੿ࢿ ١ী ੄ઓࢿ੉ ࢤӣ.

    • Ӓ۞ա 5G द؀ীח ௾ ޙઁח হ૑ ঋਸө?

    View Slide

  44. State Management by AppSync
    • ࢲߡܻझ ইఃఫ୛ ಁఢীࢲח Rich Client ܳ ૑ೱ

    • Ӓ۞ա ೐ۿ౟ূ٘੄ ௏٘ ࠂ੟بо ૑ա஖ѱ ૐоೞחѪ਷ જ૑ ঋ਺

    • ೐ۿ౟ূ٘੄ ௏٘ ࠂ੟ب੄ ࢚׼ࠗ࠙ী ӝৈೞח State Management

    • State Management ܳ بੑೞӝ ਤೠ ௏٘੄ ࠂ੟بܳ AppSync Subscription ী ੄ઓ
    ೧ࢲ ೧Ѿೡ ࣻب ੓૑ ঋਸө?

    • ֎౟ਕ௼੄ ࣘب/উ੿ࢿ ١ী ੄ઓࢿ੉ ࢤӣ.

    • Ӓ۞ա 5G द؀ীח ௾ ޙઁח হ૑ ঋਸө?
    Let’s discuss together!

    View Slide

  45. хࢎ೤פ׮

    View Slide