Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
ServerlessのおさらいとIronFunctionsについて
Search
youyo
December 03, 2016
Technology
0
450
ServerlessのおさらいとIronFunctionsについて
youyo
December 03, 2016
Tweet
Share
More Decks by youyo
See All by youyo
家の快適度を計測してみた
youyo
1
190
Get started AWS CDK
youyo
0
100
Tried to create a deployment pipeline of AutoML Vision.
youyo
0
74
API GatewayのWebSocket対応について
youyo
0
810
GCRと脆弱性検査
youyo
0
200
goodbye-ec2
youyo
0
660
それでも僕はzabbixと生きていく
youyo
1
470
About AWS Lambda and kintone
youyo
1
260
TerraformとWerckerとAWS Organizationsで始めるステージング・開発環境構築 / terraform-wercker-aws-organizations
youyo
1
34k
Other Decks in Technology
See All in Technology
Contract One Dev Group 紹介資料
sansan33
PRO
0
6k
Streamline Cloud-Native App Development Using CDEs
saeedzf
0
690
人とAIとの共創を夢見た2か月 #共創AIミートアップ / Co-Creation with Keito-chan
kondoyuko
1
660
テストを実施する前に考えるべきテストの話 / Thinking About Testing Before You Test
nihonbuson
PRO
13
2k
SmartHRの複数のチームにおけるMCPサーバーの活用事例と課題
yukisnow1823
2
1.1k
Devin&Cursor、それぞれの「本質」から導く最適ユースケース戦略
empitsu
8
1.4k
Roo Codeにすべてを委ねるためのルール運用
pharma_x_tech
1
210
会社紹介資料 / Sansan Company Profile
sansan33
PRO
6
360k
ローカル環境でAIを動かそう!
falken
PRO
1
160
AIオンボーディングとAIプロセスマイニング
nrryuya
5
1.3k
Oracle Database オプティマイザ・ヒントの活用
oracle4engineer
PRO
1
140
大事なのは、AIの精度だけじゃない!〜1円のズレも許されない経理領域とAI〜
jun_nemoto
10
5.1k
Featured
See All Featured
What's in a price? How to price your products and services
michaelherold
245
12k
We Have a Design System, Now What?
morganepeng
52
7.6k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.2k
It's Worth the Effort
3n
184
28k
KATA
mclloyd
29
14k
Code Reviewing Like a Champion
maltzj
523
40k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
32
2.3k
Put a Button on it: Removing Barriers to Going Fast.
kastner
60
3.9k
Gamification - CAS2011
davidbonilla
81
5.3k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
32
5.8k
Unsuck your backbone
ammeep
671
58k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
45
7.3k
Transcript
Serverlessͷ͓͞Β͍ͱ IronFunctionsʹ͍ͭͯ
࣍ • ࣗݾհ • Serverless͓͞Β͍ • IronFunctionsʹ͍ͭͯ
ࣗݾհ • ੴᖒਓ(youyo_) • ΠϯϑϥΤϯδχΞ • ੨ݝग़ઋࡏॅ • JAWS-UG੨ίΞϝϯόʔ •
גࣜձࣾϔϓλΰϯ • http://blog.youyo.info/ • ࠷ۙϋϚ͍ͬͯΔͷ • golang • GAE • ਏ͍͜ͱ • re:InventͰαʔϏε૿͑͗͢…
ձࣾհ • Πϯϑϥશൠͷӡ༻/ࢹ/อकۀ • γεςϜઃܭίετݮ͢ΔʹͲ͏ͨ͠Β͍͍ ͔తͳ૬ஊͲΜͱ͍͜ • AWSʹݶΒͣͲΜͳΫϥυͰΓ·͢ • AzureҊ݅͋Δ͚ͲGCPҊ݅·ͩͳ͍ͷͰ୭͔…
• ຊࣾ੨ݝࡾࢢ • ઋࢢʹࣄॴ͋Γ • ࣾһ3ਓ+Πϯλʔϯ1ਓ
Serverless͓͞Β͍
Serverless͓͞Β͍ • ͷͨͲ͖ͬͯͨಓͷΓΛৼΓฦΓͳ͕ΒɺվΊͯ ServerlessͱͳΜͩͬͨͷ͔͓͞Β͍͍ͯ͜͠͏ͱࢥ͍ ·͢ɻ
Serverless͓͞Β͍ͷલʹొਓհ • AWS Lambda • ίʔυΛAWS LambdaʹσϓϩΠ͢ΔͱɺԿ͔͠ΒͷΠϕϯτ ΛτϦΨʔʹͯͦ͠ͷίʔυΛ࣮ߦͯ͘͠ΕΔίϯϐϡʔςΟ ϯάαʔϏε •
࣮ߦʹ͔͔ͬͨCPU࣌ؒ୯ҐͰͷैྔ՝ۚ • node.js/Java/python/C#Λαϙʔτ • AWSͷFaaS୲ • Amazon API-GatewayͱΈ߹Θͤͯ͏έʔε͕ଟ͍
ServerlessͱݴΘΕͯ࠷ॳʹࢥͬͨ͜ͱ • αʔόʔϨεͬͯ͜ͱαʔόʔͳ͍ͷʁ
ServerlessͱݴΘΕͯ࠷ॳʹࢥͬͨ͜ͱ • αʔόʔϨεͬͯ͜ͱαʔόʔͳ͍ͷʁ • ͍ɺLambdaͩͬͯawsͷཧ͢Δαʔόʔ্Ͱಈ͍ͯΔΑͶʁ • AWS Lambda͑αʔόʔϨεͳΈ࡞ΕΔΑͬͯݴΘΕͯ αʔόʔ͋ΔΑͶʁ •
ͦΕαʔόʔϨεͬͯݴ͍͍ͬͯͷʁ ·͊ͬͪ͜Ͱӡ༻ཧ͢Δαʔό͔֬ʹͳ͍͚Ͳɻ • (ΠϯϑϥΤϯδχΞઢ)
Ͳ͏ΒੈؒͷαʔόʔϨεҧ͏Β͍͠
ServerlessͳΜ͔ͩΒαʔόʔͳ͍Αʁ • AWS LambdaͬͯFunction୯ҐͰ࣮ߦͰ͖ΔΑ͏ʹͳΔΜͩΑʁ • ࣗͰΞϓϦέʔγϣϯαʔόʔͷཧ͠ͳͯ͘Α͘ͳΔ͡ΌΜʁ • αʔόʔϨε͡ΌΜʁ
ΞϓϦέʔγϣϯΤϯδχΞͷ ઢ͜͏ͩͬͨͷ͔ʂ
ΞϓϦέʔγϣϯαʔό͔֬ʹͳ͍ • αʔόʔϨεͷαʔόʔ͕ࢦ͢ͷΞϓϦέʔγϣϯαʔόʔ ͩͬͨ • ͔֬ʹͦͷํ͕ࣗવͩ͠ೲಘ͍ͬͨ • αʔόʔϨεͱΞϓϦέʔγϣϯ࣮ߦڥͷ͜ͱͩͬͨͷ͔ • ී௨ͦ͏Ͱ͠ΐʁͱࢥ͔ͬͨ͠Εͳ͍͚Ͳɺ͖ͬͱͱಉ͡Α
͏ʹײͨ͡ΠϯϑϥΤϯδχΞͷਓগͳ͔Β͍ͣΔͣ
αʔόʔϨεΞʔΩςΫνϟͱ • Function୯ҐͰίʔυΛ࣮ߦͰ͖ΔϑϧϚωʔδυαʔϏε ʹ͔ͬΔ͜ͱͰɺΞϓϦέʔγϣϯαʔόͷཧΛෆཁʹ ͨ͠ΞϓϦέʔγϣϯ࣮ߦڥ
ͰαʔόʔϨεʹผͷଆ໘͋ΔΑͶʁ • ΞϓϦέʔγϣϯ࣮ߦڥͱͯ͠ͷଆ໘ Amazon API Gateway + AWS Lambda ͷΈ߹ΘͤͰ࣮ݱ͞
ΕΔεςʔτϨεͳΞϓϦέʔγϣϯαʔόͱͯ͠ɻ • ͰAWS Lambda࣮ߦͷτϦΨʔͱͳΔͷHTTPϦΫΤε τ͚ͩ͡Όͳ͍ • S3ͷΦϒδΣΫτஔɺDynamodbͷΠϯαʔτͳͲ ͷΠϕϯτΛτϦΨʔͱ࣮ͯ͠ߦ͢Δ͜ͱ͕Ͱ͖Δ • API-Gatewayܦ༝ͷHTTPϦΫΤετҰͭͷΠϕϯτͱߟ ͑ΒΕΔ
ΠϕϯτυϦϒϯΞʔΩςΫνϟ
ΠϕϯτυϦϒϯΞʔΩςΫνϟ • ΫϥυαʔϏε͔Βൃߦ͞ΕͨΠϕϯτΛτϦΨʔͱͯ͠ ࣍ͷॲཧΛ࣮ߦ͢Δ • ϐλΰϥεΠονతͳ • Πϕϯτ͕ൃੜ͢Δ·Ͱ࣍ͷॲཧ࣮ߦ͞Εͳ͍ • ࣮ߦॲཧ࣌ؒ୯ҐͰ՝ۚ͞ΕΔAWS
Lambdaͱ૬ੑ͍͍ • ͍ͭى͜Δ͔Θ͔Βͳ͍Πϕϯτʹରͯ͠ΠϯελϯεΛ ىಈ͠ଓ͚͍ͯͨ߹ʹൺͨΒɺѹతʹίετݮͰ ͖ΔέʔεΠϕϯτ͕ൃੜ͢Δ·Ͱ࣍ͷॲཧ࣮ߦ͞Ε ͳ͍ • AWS LambdaͷΑ͏ͳFaaSΛɺαʔϏεಉ࢜Λͭͳ͙ͷͱ ͯ͠͏
αʔόʔϨεΞʔΩςΫνϟͱ • Function୯ҐͰίʔυΛ࣮ߦͰ͖ΔϑϧϚωʔδυαʔϏε ʹ͔ͬΔ͜ͱͰɺΞϓϦέʔγϣϯαʔόͷཧΛෆཁʹ ͨ͠ΞϓϦέʔγϣϯ࣮ߦڥ • ΠϕϯτυϦϒϯʹϑϧϚωʔδυαʔϏεΛͭͳ͙͜ͱ ͰɺͦΕΒΛͭͳׂ͙Λ͍ͯͨ͠ཧαʔόΛͳͨ͘͠ (FaaSʹஔ͖͑ͨ)γεςϜΞʔΩςΫνϟ
ͳΜͱͳ͘Θ͔͖ͬͯͨ
ͬͯΈͨࣄྫ όονॲཧΛεέʔϥϒϧ/ΠϕϯτυϦϒϯͳײ͡Ͱॲཧ
ͬͯΈͨࣄྫ2 EC2ͱ͔RDSͷϝϯςφϯεΠϕϯτΛαʔόʔϨεͳײ͡Ͱ௨͍ͨ͠
ͬͯΈͨࣄྫ3 ϋοΧιϯͰΰϦΰϦͳΠϕϯτυϦϒϯΞʔΩςΫνϟ࠾༻ͯ͠࡞ͬͯΈͨ
αʔόʔϨεΞʔΩςΫνϟͬͯΈͯࢥͬͨ • ָ͍͠ʂ • ϐλΰϥεΠον͕͖ͳ͚͔ͩ • αʔόͷཧ͔Βղ͖์ͨΕͨײɺ࠷ߴ • ͳΜͨͬͯ͋ͷAmazon͞Μ͕ཧͯ͘͠ΕͯΔ҆৺ײ •
͓͔͔ۚΒͳ͍͠ • ແྉʹ༨༟Ͱऩ·Δ
ͰͦΕ͚ͩ͡Όͳ͘͜͏ײͨ͡ • AWS LambdaͷσϓϩΠͳΜ͔ΊΜͲ͍͘͞ • εςʔτϨεͳͷ͍͍͚ͲεςʔτϑϧͳͷΛѻ͏ͷ େมͦ͏ͩͳ͊ɻ͍ͯ͏͔ී௨ʹΞϓϦέʔγϣϯ࡞ͬͨ ΄͏ָ͕ͳ໘ଟ͍Μ͡Όͳ͍ʁ • ͜Εςετͱ͔Ͳ͏͢Μͷʁ
ίʔυॻ͍ͯϩʔΧϧͰ࣮ߦ Ͱ͖ͳ͘ͳ͍ʁ • AWS Lambdaʹো͋ͬͨΒ…
σϓϩΠΊΜͲ͍͘͞ • πʔϧ͕ॆ࣮͖ͯͨ͠ • Serverless framework • Apex • Lamvery
• ͢ͰʹΊΜͲ͘͘͞ͳ͘ͳ͍ͬͯͨɻٕज़ͷਐาૣ͍ɻ • ݸਓతʹAPI-Gatewayͱͷ࿈ܞ·ͰͦΕ΄Ͳඞཁͱͯ͠ ͳ͍ͷͰLamveryͬͯΔɻศརʂ
εςʔτϑϧͳΞϓϦେม͡Όͳ͍ʁ ͍ͯͳ͍Μ͡Όͳ͍ʁ • ѻ͑ͳ͍͜ͱͳ͍͚Ͳ͍ͯͳ͍ͱࢥͬͯΔ • ϑϧϚωʔδυͳσʔλϕʔεʹͰσʔλೖΕΕͲ͏ʹ ͰͳΔ͠ • Ͱrailsͱ͔ͬͯͨ΄͏ָ͕ͳ͜ͱ͋ΔΜ͡Όͳ͍ʁ •
αʔόʔϨεʹͩ͜Θͬͯແཧͯ͠͏ඞཁͳ͍Μ͡Όͳ͍ʁ
ͦͦFunction୯ҐͰࡉΕʹ͞Ε ͨΞϓϦέʔγϣϯΛ࡞Ε·͔͢ʁ
ͦͦFunction୯ҐͰࡉΕʹ͞Ε ͨΞϓϦέʔγϣϯΛ࡞Ε·͔͢ʁ • αʔόʔϨεͷগ͠લʹMicro Services͕ྲྀߦΓ·ͨ͠ΑͶʁ • ϞϊγϦοΫͳαʔϏε͡Όͳͯ͘ɺͬͱࡉ͔͍ػೳ୯ ҐͰαʔϏεΛ͚ͯɺαʔϏεؒREST APIͰૄ݁߹ʹ ͯ͠ʙ
• ͦͷྲྀΕʹ࣮ͬͯફͨ͠ਓ͕ͲΕ΄Ͳ͍Δͷ͔ • ͪΖΜͦͷޙͷγεςϜઃܭࢥʹେ͍ʹӨڹΛ༩͑ ͨͩΖ͏ • ׂ͕ͩ͢Δ΄Ͳେ͖ͳγεςϜ͡Όͳ͔ͬͨΓɺཧ͢ ͖γεςϜ͕૿͑Δ͜ͱʹΑΔίετ૿Λݒ೦ͯ͠Β ͳ͍ͱ͍͏அ͋ͬͨͣ
ͦͦFunction୯ҐͰࡉΕʹ͞Ε ͨΞϓϦέʔγϣϯΛ࡞Ε·͔͢ʁ • ҰͭͷαʔϏεΛෳͷαʔϏεʹ͚Δ͜ͱ͢Β͍͜͠ͱ ͋Δ • ·ͯͦ͠ͷαʔϏεΛϑΝϯΫγϣϯ୯ҐͰ͚ͯγεςϜ࡞ ΕΔͷ͔ʁ • MicroServicesͷͱ͖ཧ͖͢γεςϜ͕૿͑ͯਏ͘ͳͬͨ
έʔε͋ΔͷͰʁ • ࠓϑΝϯΫγϣϯ୯ҐͰͷཧ͕ٻΊΒΕΔΑ͏ʹͳΓɺ ΑΓਏ͘ͳΔέʔε͋ΔͷͰʁ • ϑϨʔϜϫʔΫʹ͔͓͍ͬͬͯͨํ͕͍͍͜ͱ͋ΔͩΖ͏
αʔόʔϨεΞʔΩςΫνϟ MicroServicesΛ࣮ݱ͢ΔͨΊͷ Ұͭͷखஈʹ͗͢ͳ͍
αʔόʔϨεΞʔΩςΫνϟMicroServices Λ࣮ݱ͢ΔͨΊͷҰͭͷखஈʹ͗͢ͳ͍ • ཻ͕ҧ͏͚ͩ • MicroServicesΑΓখ͞ͳαʔϏεΛΈ߹ΘͤͯҰͭͷ αʔϏεΛߏ • αʔόʔϨεΞʔΩςΫνϟϑΝϯΫγϣϯ୯Ґͷίϯϙʔ ωϯτΛΈ߹ΘͤͯαʔϏεΛߏ
• αʔόʔϨεΞʔΩςΫνϟͰߏ͞ΕͨαʔϏεಉ࢜ΛREST APIͰૄ݁߹ʹͭͳ͍ͩMicroServicesͳαʔϏεɺΈ͍ͨͳͷ Λߟ͑Δͱ͔Γ͍͔͢
αʔόʔϨεΞʔΩςΫνϟMicroServices Λ࣮ݱ͢ΔͨΊͷҰͭͷखஈʹ͗͢ͳ͍ • ͠ҎલʹαʔϏεͷMicroServicesԽΛݕ౼ͯ͠அ೦͍ͯ͠Δͱ ͨ͠ΒɺαʔόʔϨεΞʔΩςΫνϟϋϚΒͳ͍Մೳੑ͕͋Δ • ٕज़ϨϕϧͷͰͳ͘Ϛον͢ΔγεςϜ͔Ͳ͏͔ • εέʔϥϏϦςΟ͕ཉ͍͚ͩ͠Ͱ͋ΕɺطଘͷΞϓϦέʔγϣ ϯΛίϯςφԽͯ͠ίϯςφΫϥελϦϯάܥͷαʔϏεʹ
ͤΔ͚ͩͰेͳԸܙΛड͚ΕΔ߹͋ΔͩΖ͏ͦ͠Ε͕ϕ ετͩͬͯ͜ͱߟ͑ΒΕΔ
αʔόʔϨε·ͱΊ
αʔόʔϨεΞʔΩςΫνϟ·ͱΊ • αʔόʔϨεʹ2ͭͷଆ໘͕͋Δ • Function୯ҐͰίʔυΛ࣮ߦʹ͢Δ͜ͱͰɺΞϓϦέʔγϣϯ αʔόͷཧΛෆཁʹͨ͠ϑϧϚωʔδυͷΞϓϦέʔγϣϯ ࣮ߦڥ • ΠϕϯτυϦϒϯʹϑϧϚωʔδυαʔϏεΛͭͳ͙͜ͱͰɺ ͦΕΒΛͭͳׂ͙Λ͍ͯͨ͠ཧαʔόΛͳͨ͘͠(FaaSʹ
ஔ͖͑ͨ)γεςϜΞʔΩςΫνϟ • αʔόʔϨεΞʔΩςΫνϟʹͩ͜ΘΓ͗͢ͳ͍ • ͖ෆ͖Ͳ͏ͯ͋͠Δ • େͳͷ҆ఆͨ͠αʔϏεΛఏڙ͠ଓ͚Δ͜ͱ • ͦͷͨΊʹϕετͳγεςϜΞʔΩςΫνϟબΛ
ͬͯͨͪΌΜͱݟ͍ͯ͘ • AWS LambdaͷσϓϩΠͳΜ͔ΊΜͲ͍͘͞ • εςʔτϨεͳͷ͍͍͚ͲεςʔτϑϧͳͷΛѻ͏ͷ େมͦ͏ͩͳ͊ɻ͍ͯ͏͔ී௨ʹΞϓϦέʔγϣϯ࡞ͬͨ ΄͏ָ͕ͳ໘ଟ͍Μ͡Όͳ͍ʁ • ͜Εςετͱ͔Ͳ͏͢Μͷʁ
ίʔυॻ͍ͯϩʔΧϧͰ࣮ߦ Ͱ͖ͳ͘ͳ͍ʁ • AWS Lambdaʹো͋ͬͨΒ…
ͬͯͨͪΌΜͱݟ͍ͯ͘ • ͜Εςετͱ͔Ͳ͏͢Μͷʁ ίʔυॻ͍ͯϩʔΧϧͰ࣮ߦͰ͖ ͳ͘ͳ͍ʁ • ςετڥʹσϓϩΠ࣮ͯ͠ߦͯ͠ΈΕ͍͍͚ͩͰ͋ΔΜ ͚ͩͲɺखݩͰνϟνϟͬͱग़དྷͨํ͕خ͍͠ • AWS
Lambdaʹো͋ͬͨΒ… • ผͷΫϥυαʔϏε(CloudFunctions/AzureFunctions)͏ʁ • ࠓͷίʔυޓੑ͋Δʁ େৎʁ
None
IronFunctionsͱʁ • http://open.iron.io/ • αʔόʔϨεΞʔΩςΫνϟΛಛఆͷΫϥυϕϯμʔʹͱΒ ΘΕͣʹ࣮ߦ͢ΔͨΊͷɺΦʔϓϯιʔεͷϓϥοτϑΥʔϜ • Ͳ͜Ͱಈ͔ͤΔ • ͲΜͳݴޠͰ࣮Ͱ͖Δ
• AWS LambdaͷϑΥʔϚοταϙʔτͯ͠Δ(!)
IronFunctions͕՝ղܾͯ͘͠Εͦ͏
IronFunctions͕ͨΒ͢ͷ • ͜Εςετͱ͔Ͳ͏͢Μͷʁ ίʔυॻ͍ͯϩʔΧϧͰ࣮ߦͰ͖ ͳ͘ͳ͍ʁ • खݩʹIronFunctionsͷڥΛDockerͰ্ཱ࣮ͪ͛ͯߦ͢Ε ͍͍ • AWS
Lambdaʹো͋ͬͨΒ… • AWS Lambdaͷίʔυ͕ͦͷ··ಈ͘Μ͔ͩΒผͷΫϥυ ڥʹͰIronFunctionsڥ্ཱͪ͛ͯσϓϩΠ͢Ε͍͍ ˞ ͨͩ͠ΠϕϯτυϦϒϯͳγεςϜͲ͏͠Α͏ͳ͍ͷͰ Ұ୴ΕΔ
IronFunctions͕՝ղܾͯ͘͠Εͦ͏
IronFunctionsຊʹಈ͘ͷ͔ʁ • ͬͯΈͨΒͪΌΜͱಈ͍ͨ • FaasΛ࡞ΕΔOSS, IronFunctions৮ͬͯΈͨ http://qiita.com/youyo_/items/0b227438dcf775665e6c
IronFunctions·ͱΊ • ͍ΖΜͳݴޠ͕͑Δͷັྗత • AWS LambdaϑΥʔϚοτ͕Ͳ͜Ͱಈ͔ͤΔͱ͍͏ͷັྗత • AzureFunctionsCloudFunctionsͱͷޓੑʹظ͍ͨ͠ͱ͜Ζ • Triggerͱͯ͑͠ΔΠϕϯτͲ͏ͳΜͩΖ͏ʁ
Openstackͷ CeilometerʹରԠ͍ͯ͠ΔΈ͍ͨ • ServerlessΞʔΩςΫνϟʔͷಛͷҰͭͱͯ͠ɺΠϕϯτυϦϒϯͳ ͷΛ࡞ΕΔ͔ͱ͍͏ͷॏཁͳΣΠτΛΊΔͱࢥ͏ͷͰɺ͜ͷ ลΓʹظ͍ͨ͠ (ΠϕϯτൃߦଆԿऀʁͱ͍͏ͷஔ͍ͱ͍ͯ) • ҙͱͯ͠ࠓ·ͩα൛ͳͷͰϓϩμΫγϣϯಋೖආ͚ͨ΄͏͕Α ͦ͞͏ɻ࣮ࡍ৮ͬͯͯόά͋ͬͨ͠
·ͱΊ • αʔόʔϨε༻๏ɾ༻ྔΛक͍͍ͬͯײ͡ʹ͓͍͍ͩ͘͞