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
460
ServerlessのおさらいとIronFunctionsについて
youyo
December 03, 2016
Tweet
Share
More Decks by youyo
See All by youyo
家の快適度を計測してみた
youyo
1
210
Get started AWS CDK
youyo
0
120
Tried to create a deployment pipeline of AutoML Vision.
youyo
0
89
API GatewayのWebSocket対応について
youyo
0
860
GCRと脆弱性検査
youyo
0
220
goodbye-ec2
youyo
0
730
それでも僕はzabbixと生きていく
youyo
1
490
About AWS Lambda and kintone
youyo
1
280
TerraformとWerckerとAWS Organizationsで始めるステージング・開発環境構築 / terraform-wercker-aws-organizations
youyo
1
34k
Other Decks in Technology
See All in Technology
Introduction to Sansan Meishi Maker Development Engineer
sansan33
PRO
0
310
Linux カーネルが支えるコンテナの仕組み / LF Japan Community Days 2025 Osaka
tenforward
1
120
物体検出モデルでシイタケの収穫時期を自動判定してみた。 #devio2025
lamaglama39
0
270
Oracle Base Database Service 技術詳細
oracle4engineer
PRO
12
81k
クラウドとリアルの融合により、製造業はどう変わるのか?〜クラスメソッドの製造業への取組と共に〜
hamadakoji
0
360
コンパウンド組織のCRE #cre_meetup
layerx
PRO
0
230
だいたい分かった気になる 『SREの知識地図』 / introduction-to-sre-knowledge-map-book
katsuhisa91
PRO
3
1.3k
Copilot Studio ハンズオン - 生成オーケストレーションモード
tomoyasasakimskk
0
200
それでも私が品質保証プロセスを作り続ける理由 #テストラジオ / Why I still continue to create QA process
pineapplecandy
0
170
Introdução a Service Mesh usando o Istio
aeciopires
1
280
事業開発におけるDify活用事例
kentarofujii
5
1.3k
「改善」ってこれでいいんだっけ?
ukigmo_hiro
0
410
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
269
13k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
53k
How to train your dragon (web standard)
notwaldorf
97
6.3k
Mobile First: as difficult as doing things right
swwweet
225
10k
Automating Front-end Workflow
addyosmani
1371
200k
GraphQLとの向き合い方2022年版
quramy
49
14k
Optimising Largest Contentful Paint
csswizardry
37
3.5k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
10
610
Facilitating Awesome Meetings
lara
57
6.6k
Git: the NoSQL Database
bkeepers
PRO
431
66k
The Invisible Side of Design
smashingmag
302
51k
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ΞʔΩςΫνϟʔͷಛͷҰͭͱͯ͠ɺΠϕϯτυϦϒϯͳ ͷΛ࡞ΕΔ͔ͱ͍͏ͷॏཁͳΣΠτΛΊΔͱࢥ͏ͷͰɺ͜ͷ ลΓʹظ͍ͨ͠ (ΠϕϯτൃߦଆԿऀʁͱ͍͏ͷஔ͍ͱ͍ͯ) • ҙͱͯ͠ࠓ·ͩα൛ͳͷͰϓϩμΫγϣϯಋೖආ͚ͨ΄͏͕Α ͦ͞͏ɻ࣮ࡍ৮ͬͯͯόά͋ͬͨ͠
·ͱΊ • αʔόʔϨε༻๏ɾ༻ྔΛक͍͍ͬͯײ͡ʹ͓͍͍ͩ͘͞