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

rng-apiをサーバレス化した時の話 / rng-api-Serverless

odanado
April 16, 2018

rng-apiをサーバレス化した時の話 / rng-api-Serverless

odanado

April 16, 2018
Tweet

More Decks by odanado

Other Decks in Programming

Transcript

  1. ࣗݾ঺հ • Twitter @odan3240 • Perlྺ 1೔ • ීஈ͸ϙέϞϯʹؔ͢ΔπʔϧΛݸਓ։ൃ •

    ࠓճ΋ͦΕʹؔ͢Δ΋ͷ • ࠷ۙ͸ͯͳϒοΫϚʔΫͷςΫϊϩδʔͰਓؾΤϯτϦೖΓ • poke2vec Ͱݕࡧ 2
  2. rng-api ͱ͸ • ϙέϞϯͷήʔϜ಺ͷٖࣅཚ਺ͷ ॳظγʔυΛಛఆ͢ΔREST API • ൒೥ؒͰ60ສճୟ͔ΕͨAPIΛެ։ͨ͠࿩ / rng-api

    • ݩʑ͸͘͞ΒVPSͰӡ༻ • Ұ೥൒Ͱ400ສճར༻͞Εͨ • ٖࣅཚ਺ͷॳظγʔυΛಛఆ→ཚ਺ௐ੔Λߦ͏ͨΊ • ϙέϞϯͷରઓΨν੎͸ ڧ͍ϙέϞϯΛٻΊͯཚ਺ௐ੔Λߦ͏ • ͜Ε͕౰ͨΓલͷੈք͕͋Δ 3
  3. ॳظγʔυಛఆͷ࢓૊Έ • ಛఆ͢Δͷʹඞཁͳલఏ • ٖࣅཚ਺ΞϧΰϦζϜ͸ಛఆࡁΈ (આ໌ॻʹϥΠηϯεදه) • ٖࣅཚ਺ͷॳظγʔυ͸32bit (࣮ݧతʹ໌Β͔ʹ) •

    ࿈ଓ͢Δཚ਺ྻΛ؍ଌ͢Δํ๏͸ཱ֬ࡁΈ • ཚ਺ྻΛ؍ଌ͢Δํ๏ • ήʔϜதͷϩʔσΟϯάը໘ʹ࢖༻͞ΕΔ ࣌ܭͷ਑ͷ։࢝Ґஔ͕ཚ਺ʹΑܾͬͯఆ͞Ε͍ͯΔ 4 0 1 16 ɾɾɾ
  4. ॳظγʔυಛఆͷ࢓૊Έ • ࿈ଓ͢Δ8ݸͷ਑Λ؍ଌ͢Ε͹ॳظγʔυΛಛఆՄೳ •  2 ** 32 < 17

    ** 8 • ಛఆͷͨΊʹ࣍ͷલॲཧΛߦ͏ 1. [ॳظγʔυ, ରԠ͢Δ8ݸͷ਑ྻ] Λ2**32௨Γܭࢉ 2. ↑ͷϖΞΛ ”ରԠ͢Δ8ݸͷ਑ྻ” Ͱιʔτ • ͜ΕʹΑΓɺݕࡧ࣌ʹೋ෼୳ࡧͰݕࡧՄೳ • ൺֱճ਺͸ߴʑ32ճ • ྫ • https://rng-api.odanado.com/usm/sfmt/seed? needle=9,10,7,11,12,15,7,7 • {"results": [{"seed": "c31a2f06", "encoded_needle": "0dd53f07", "step": 477}]} 5
  5. ղܾ͍ͨ͠໰୊ Read Onlyͳkey-valueͷ ૊Έ߹ΘͤΛAWS Lambda͔Β ݕࡧ͍ͨ͠ 9 ໰୊఺ • σʔλαΠζ͕32GBͱڊେ

    • S3͔Βͷసૹ͕5ඵҎ಺ʹऴΘΒͳ͍ • ࡞੒࣌ʹେྔͷWrite͕ൃੜ →DynamoDBͷ՝ۚྔ orz
  6. ࠷ऴతͳղܾࡦ • γϯϓϧ • ํ๏ • ਑ͷྻΛ਺஋ʹΤϯίʔυ • 9,10,7,11,12,15,7,7 ->

    0x0dd53f07 • Τϯίʔυͨ͠਺஋ͷmod 16 ͰϑΝΠϧ෼ׂΛ4ճߦ͏ • LinuxͰಉ࣌ʹ։͚ΔϑΝΠϧ͸100ݸ·Ͱ • ͜ΕʹΑΓ1ͭͷϑΝΠϧͷαΠζ͕ ߴʑ256KBʹͳΔ • ݕࡧ࣌͸ର৅ϑΝΠϧΛಛఆͨ͠ޙʹೋ෼୳ࡧ • ಛఆ͸ϑΝΠϧύεͰߦ͑Δ 10 32GB ͷBD (όΠφϦϑΝΠϧ) Λ 16**4౳෼ʹ෼ׂͯ͠S3ʹ഑ஔ͢Δ
  7. ·ͱΊ • ϙέϞϯͷήʔϜதͷٖࣅཚ਺ͷॳظγʔυΛ ಛఆ͢ΔAPIΛ͘͞ΒVPS͔ΒAWS LambdaʹҠߦͨ͠ • DBͷαΠζ͕ڊେ (32GB) ͳͷ͕໰୊ʹͳͬͨ •

    S3 -> Lambdaͷసૹʹ5ඵҎ্͔͔Δ • DynamoDB ʹ഑ஔ͢ΔͱDB࡞੒࣌ͷ Writeճ਺͕େྔʹൃੜ͠՝ۚࢮ • DBΛࡉ੾Εʹ͢Δ͜ͱͰసૹ࣌ؒͷ໰୊Λղܾ • 16**4ݸͷϑΝΠϧʹ෼ׂ • ϑΝΠϧύεͰର৅ϑΝΠϧΛಛఆ • ϑΝΠϧ1ͭ͸ߴʑ256KB 12