Upgrade to Pro — share decks privately, control downloads, hide ads and more …

サーバーレスアーキテクチャで作ったIoTのバックエンドシステムで遭遇したエラーと対処法

Avatar for yuji nishimura yuji nishimura
September 12, 2019

 サーバーレスアーキテクチャで作ったIoTのバックエンドシステムで遭遇したエラーと対処法

Developers.IO 2019 in Nagoyaで発表した資料です

Avatar for yuji nishimura

yuji nishimura

September 12, 2019
Tweet

More Decks by yuji nishimura

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ   2019 APN AWS Top Engineersೝఆ AWSೝఆ 2017/5

    ΫϥεϝιουJoin ౦ژ͔ΒେࡕʹUλʔϯస৬ ೖࣾ࣌͸৘γεॴଐ ೖࣾલ͸ISPͷձࣾͰӡ༻อक ܦྺ ੢ଜ ༞ೋ(28) CXࣄۀຊ෦ॴଐ େࡕΦϑΟεࡏ੶
  2. αʔόʔϨεͷಛ௃   wΫϥ΢υϕϯμʔʹΑΔɹ ϚωʔδυαʔϏε wαʔϏεͷӡ༻؅ཧ͸͢΂ͯɹ Ϋϥ΢υϕϯμʔʹ͓·͔ͤ w04΍ϛυϧ΢ΣΞͷύον͸ ࣗಈͰదԠ w׬શैྔ՝ۚ

    wΞΠυϧ࣌ؒʹ՝ۚ͞Εͳ͍ wϓϩάϥϜ͕࣮ߦ͞Εͨ࣌ؒʹର͠ ͯ՝ۚ wߴՄ༻ੑ wΫϥ΢υϕϯμʔଆͰউखʹ৑௕Խ wࣗಈతʹεέʔϧΞοϓ
  3. "84-BNCEBͷྉۚ   wϦΫΤετճ਺ʹର͢Δ՝ۚ w݄ສ݅·Ͱ͸ແྉɺສ݅͋ͨΓ ౦ژϦʔδϣϯ  w࣮ߦ࣌ؒʹର͢Δ՝ۚ ϝϞϦ(MB) ݄ͷແྉ࿮(ඵ਺)

    100ϛϦඵ୯ҐͷՁ֨(USD) 128 3,200,000 0.000000208 192 2,133,333 0.000000313 256 1,600,00 0.000000417 ... ... ... ݸਓϨϕϧͰར༻͢Δ෼ʹ͸΄΅ྉۚ͸͔͔Βͳ͍ͷͰؾܰʹར༻Ͱ͖Δ
  4. "84*P5$PSFͷྉۚͷ֓ཁ   wैྔ՝ۚɺ࠷௿ར༻ྉۚͳ͠ w઀ଓ࣌ؒɿ64% ઀ଓສ෼͋ͨΓ  wϝοηʔδɿԯ݅·Ͱ64% ສ݅͋ͨΓ 

    wϨδετϦɺσόΠεγϟυ΢ɿ64% ສ݅͋ͨΓ  wτϦΨʔϧʔϧɺ࣮ߦΞΫγϣϯɿ64%ɹɹɹɹɹɹ τϦΨʔ͞Εͨϧʔϧສ݅͋ͨΓ࣮ߦ͞ΕͨΞΫ γϣϯສ݅͋ͨΓ https://aws.amazon.com/jp/iot-core/pricing/ ※౦ژϦʔδϣϯͰͷྉۚମܥ
  5. ΞʔΩςΫνϟͷུ֓ਤͷઆ໌   AWS IoT Core IoT thing Lambda IoT

    rule Kinesis Data Streams DynamoDB Kinesis Data Firehose Amazon S3 Lambda DynamoDB IoT rule IoT rule Amazon Athena ొ࿥ॲཧ Πϕϯτอଘ ϩάอଘ σόΠεɿՈͷதʹ͋Γෳ਺ͷσόΠε͕ͭͳ͕ΔϋϒσόΠε ϓϩτίϧɿHTTPS HTTP
 protocol γεςϜɿσʔλΛ஝ੵ͢ΔγεςϜ
  6. w͜ͷॲཧͷޙ͸ɺ͜ͷॲཧͱ͍͏࿈ଓతͳϦΫΤετ ϦΫΤετ಺༰   IoT hardware AWS IoT Core DynamoDB

    Lambda API Gateway ᶄϨεϙϯε 200ok ᶃϦΫΤετ ᶅ࣮ߦϦΫΤετ ᶆॲཧ࣮ߦத ᶇϦιʔεऔಘϦΫΤετ ᶈॲཧະ׬ྃͷͨΊΤϥʔ
  7. wσόΠεଆ͕ϦτϥΠॲཧΛೖΕͯ΋Β͏ ରࡦ   IoT hardware AWS IoT Core DynamoDB

    Lambda API Gateway ᶄϨεϙϯε 200ok ᶃϦΫΤετ ᶅ࣮ߦϦΫΤετ ᶆॲཧ࣮ߦத ᶇϦιʔεऔಘϦΫΤετ ᶈॲཧະ׬ྃͷͨΊΤϥʔ ᶉϦτϥΠ
  8. ରࡦ   w"844%,ʹ͸λΠϜΞ΢τ஋ͱϦτϥΠճ਺͕ઃఆͰ͖Δ wͦΕͧΕॳظ஋͕ઃఆ͞Ε͍ͯΔ AWS SDK ࠷େࢼߦճ਺ ઀ଓλΠϜΞ΢τ ιέοτλΠϜΞ΢τ

    Python(Boto3) αʔϏεʹΑΓҟͳΔ 60ඵ 60ඵ JavaScript/Node.js αʔϏεʹΑΓҟͳΔ ֘౰ͳ͠ 120ඵ Java 3 10ඵ 50ඵ .NET 4 100ඵ 300ඵ Go 3 ֘౰ͳ͠ ֘౰ͳ͠ https://aws.amazon.com/jp/premiumsupport/knowledge-center/lambda-function-retry-timeout-sdk/ λΠϜΞ΢τ஋Λมߋ͠ద੾ʹϦτϥΠ͞ΕΔΑ͏ʹઃఆมߋ
  9. CPUPͷઃఆྫ   wDPOOFDU@UJNFPVU઀ଓΛཱ֬͢Δ·Ͱͷ଴ػ࣌ؒ wSFBE@UJNFPVUཱ֬ͨ͠઀ଓ͔ΒϨεϙϯε·Ͱͷ଴ػ࣌ؒ wNBY@BUUFNQUTϦτϥΠճ਺ import boto3 from botocore.config

    import Config config = Config(connect_timeout=5, read_timeout=5, retries={'max_attempts': 10}) DYNAMODB = boto3.resource('dynamodb', config=config) ઃఆྫʣ઀ଓλΠϜΞ΢τɺιέοτλΠϜΞ΢τɿ5ඵɹϦτϥΠճ਺ɿ10ճ
  10. -BNCEBͷݺͼग़͠   w-BNCEB͸τϦΨʔʹΑͬͯݺͼग़͠λΠϓ͕ҟͳΔ wλΠϓ wಉظݺͼग़͠ɿ"1*( σϑΥϧτಈ࡞ ɺ4%,ͳͲ͔Β-BNCEBىಈ wετϦʔϜɿ,JOFTJT%BUB4USFBNT %ZOBNP%#4USFBNT

    wϙʔϦϯάɿ424 wඇಉظݺͼग़͠ɿ4ɺ4/4ɺ$8ͳͲɻϦτϥΠ͸ࣗಈతʹճɺ஗Ԇ͋Γ wݺͼग़͠λΠϓʹΑͬͯϦτϥΠͷ࢓ํ΋ҟͳΔ