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
500
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
ServerlessのおさらいとIronFunctionsについて
youyo
December 03, 2016
More Decks by youyo
See All by youyo
家の快適度を計測してみた
youyo
1
240
Get started AWS CDK
youyo
0
160
Tried to create a deployment pipeline of AutoML Vision.
youyo
0
120
API GatewayのWebSocket対応について
youyo
0
1k
GCRと脆弱性検査
youyo
0
250
goodbye-ec2
youyo
0
870
それでも僕はzabbixと生きていく
youyo
1
510
About AWS Lambda and kintone
youyo
1
310
TerraformとWerckerとAWS Organizationsで始めるステージング・開発環境構築 / terraform-wercker-aws-organizations
youyo
1
34k
Other Decks in Technology
See All in Technology
ファミコンでPHPを動かす / PHP on the Famicom
tomzoh
2
450
Playwright × AI Agent でE2Eテストはどう変わるか AI駆動テストの可能性と実用検証の結果
taiga7543
1
440
壊して学ぶAWS CDK: そのcdk deployで消えるもの、残るもの
k_adachi_01
1
420
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
1.5k
AI時代の闇と光
tatsuya1970
0
110
AICoEでAIネイティブ組織への進化
yukiogawa
0
200
DatabricksにおけるMCPソリューション
taka_aki
1
280
知らん間に、回ってる
ming_ayami
0
730
型は壁、Rustでもバグを直すな、表現できなくせよ
nwiizo
14
2.1k
Compose 新機能総まとめ / What's New in Jetpack Compose
yanzm
0
320
Kaggleで成長するために意識したこと
prgckwb
2
420
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
150
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
23k
How to train your dragon (web standard)
notwaldorf
97
6.7k
BBQ
matthewcrist
89
10k
Making the Leap to Tech Lead
cromwellryan
135
10k
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
9.1k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
420
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Mind Mapping
helmedeiros
PRO
1
280
The Mindset for Success: Future Career Progression
greggifford
PRO
0
420
Navigating the moral maze — ethical principles for Al-driven product design
skipperchong
2
420
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
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ΞʔΩςΫνϟʔͷಛͷҰͭͱͯ͠ɺΠϕϯτυϦϒϯͳ ͷΛ࡞ΕΔ͔ͱ͍͏ͷॏཁͳΣΠτΛΊΔͱࢥ͏ͷͰɺ͜ͷ ลΓʹظ͍ͨ͠ (ΠϕϯτൃߦଆԿऀʁͱ͍͏ͷஔ͍ͱ͍ͯ) • ҙͱͯ͠ࠓ·ͩα൛ͳͷͰϓϩμΫγϣϯಋೖආ͚ͨ΄͏͕Α ͦ͞͏ɻ࣮ࡍ৮ͬͯͯόά͋ͬͨ͠
·ͱΊ • αʔόʔϨε༻๏ɾ༻ྔΛक͍͍ͬͯײ͡ʹ͓͍͍ͩ͘͞