Slide 1

Slide 1 text

rng-apiΛ αʔόϨεԽͨ࣌͠ͷ࿩ Gotanda.pm #17

Slide 2

Slide 2 text

஫ҙ Perlͱؔ܎ͳ͍࿩Λ͠·͢

Slide 3

Slide 3 text

ࣗݾ঺հ • Twitter @odan3240 • Perlྺ 1೔ • ීஈ͸ϙέϞϯʹؔ͢ΔπʔϧΛݸਓ։ൃ • ࠓճ΋ͦΕʹؔ͢Δ΋ͷ • ࠷ۙ͸ͯͳϒοΫϚʔΫͷςΫϊϩδʔͰਓؾΤϯτϦೖΓ • poke2vec Ͱݕࡧ 2

Slide 4

Slide 4 text

rng-api ͱ͸ • ϙέϞϯͷήʔϜ಺ͷٖࣅཚ਺ͷ ॳظγʔυΛಛఆ͢ΔREST API • ൒೥ؒͰ60ສճୟ͔ΕͨAPIΛެ։ͨ͠࿩ / rng-api • ݩʑ͸͘͞ΒVPSͰӡ༻ • Ұ೥൒Ͱ400ສճར༻͞Εͨ • ٖࣅཚ਺ͷॳظγʔυΛಛఆ→ཚ਺ௐ੔Λߦ͏ͨΊ • ϙέϞϯͷରઓΨν੎͸ ڧ͍ϙέϞϯΛٻΊͯཚ਺ௐ੔Λߦ͏ • ͜Ε͕౰ͨΓલͷੈք͕͋Δ 3

Slide 5

Slide 5 text

ॳظγʔυಛఆͷ࢓૊Έ • ಛఆ͢Δͷʹඞཁͳલఏ • ٖࣅཚ਺ΞϧΰϦζϜ͸ಛఆࡁΈ (આ໌ॻʹϥΠηϯεදه) • ٖࣅཚ਺ͷॳظγʔυ͸32bit (࣮ݧతʹ໌Β͔ʹ) • ࿈ଓ͢Δཚ਺ྻΛ؍ଌ͢Δํ๏͸ཱ֬ࡁΈ • ཚ਺ྻΛ؍ଌ͢Δํ๏ • ήʔϜதͷϩʔσΟϯάը໘ʹ࢖༻͞ΕΔ ࣌ܭͷ਑ͷ։࢝Ґஔ͕ཚ਺ʹΑܾͬͯఆ͞Ε͍ͯΔ 4 0 1 16 ɾɾɾ

Slide 6

Slide 6 text

ॳظγʔυಛఆͷ࢓૊Έ • ࿈ଓ͢Δ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

Slide 7

Slide 7 text

αʔόϨεԽͷಈػ • ͘͞ΒVPSΛղ໿͍ͨ͠ • αʔόӡ༻͢Δͷ໘౗ • ӡ༻ίετΛ཈͍͑ͨ • αʔόϨεʹṖͷಌΕ 6

Slide 8

Slide 8 text

αʔόϨεԽͰͷ໰୊఺ • DB (όΠφϦϑΝΠϧ) ͷαΠζ͕32GBͱڊେ • aws lambda͸5ඵͷ੍࣌ؒݶ͕͋Γ S3͔Βͷσʔλͷసૹ࣌ؒͰͦΕ͕ऴΘΔ • DynamoDB Ͱ΋΍͹͍ • DB࡞੒࣌ʹ 2**32ճͷ write ͕ඞཁ 7

Slide 9

Slide 9 text

͜Ε·Ͱͷ࿩Λ੔ཧ͢Δͱ…

Slide 10

Slide 10 text

ղܾ͍ͨ͠໰୊ Read Onlyͳkey-valueͷ ૊Έ߹ΘͤΛAWS Lambda͔Β ݕࡧ͍ͨ͠ 9 ໰୊఺ • σʔλαΠζ͕32GBͱڊେ • S3͔Βͷసૹ͕5ඵҎ಺ʹऴΘΒͳ͍ • ࡞੒࣌ʹେྔͷWrite͕ൃੜ →DynamoDBͷ՝ۚྔ orz

Slide 11

Slide 11 text

࠷ऴతͳղܾࡦ • γϯϓϧ • ํ๏ • ਑ͷྻΛ਺஋ʹΤϯίʔυ • 9,10,7,11,12,15,7,7 -> 0x0dd53f07 • Τϯίʔυͨ͠਺஋ͷmod 16 ͰϑΝΠϧ෼ׂΛ4ճߦ͏ • LinuxͰಉ࣌ʹ։͚ΔϑΝΠϧ͸100ݸ·Ͱ • ͜ΕʹΑΓ1ͭͷϑΝΠϧͷαΠζ͕ ߴʑ256KBʹͳΔ • ݕࡧ࣌͸ର৅ϑΝΠϧΛಛఆͨ͠ޙʹೋ෼୳ࡧ • ಛఆ͸ϑΝΠϧύεͰߦ͑Δ 10 32GB ͷBD (όΠφϦϑΝΠϧ) Λ 16**4౳෼ʹ෼ׂͯ͠S3ʹ഑ஔ͢Δ

Slide 12

Slide 12 text

͜ΕʹΑΓAWS Lambdaʹ ҠߦͰ͖ͨ Ҡߦͯ͠1ϲ݄ա͚͗ͨͲ ࠓͷͱ͜Ζ໰୊ͳ͠

Slide 13

Slide 13 text

·ͱΊ • ϙέϞϯͷήʔϜதͷٖࣅཚ਺ͷॳظγʔυΛ ಛఆ͢ΔAPIΛ͘͞ΒVPS͔ΒAWS LambdaʹҠߦͨ͠ • DBͷαΠζ͕ڊେ (32GB) ͳͷ͕໰୊ʹͳͬͨ • S3 -> Lambdaͷసૹʹ5ඵҎ্͔͔Δ • DynamoDB ʹ഑ஔ͢ΔͱDB࡞੒࣌ͷ Writeճ਺͕େྔʹൃੜ͠՝ۚࢮ • DBΛࡉ੾Εʹ͢Δ͜ͱͰసૹ࣌ؒͷ໰୊Λղܾ • 16**4ݸͷϑΝΠϧʹ෼ׂ • ϑΝΠϧύεͰର৅ϑΝΠϧΛಛఆ • ϑΝΠϧ1ͭ͸ߴʑ256KB 12