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
430
ServerlessのおさらいとIronFunctionsについて
youyo
December 03, 2016
Tweet
Share
More Decks by youyo
See All by youyo
家の快適度を計測してみた
youyo
1
180
Get started AWS CDK
youyo
0
91
Tried to create a deployment pipeline of AutoML Vision.
youyo
0
58
API GatewayのWebSocket対応について
youyo
0
690
GCRと脆弱性検査
youyo
0
180
goodbye-ec2
youyo
0
570
それでも僕はzabbixと生きていく
youyo
1
450
About AWS Lambda and kintone
youyo
1
240
TerraformとWerckerとAWS Organizationsで始めるステージング・開発環境構築 / terraform-wercker-aws-organizations
youyo
1
34k
Other Decks in Technology
See All in Technology
初心者向けAWS Securityの勉強会mini Security-JAWSを9ヶ月ぐらい実施してきての近況
cmusudakeisuke
0
130
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
220
Engineer Career Talk
lycorp_recruit_jp
0
190
日経電子版のStoreKit2フルリニューアル
shimastripe
1
150
iOSチームとAndroidチームでブランチ運用が違ったので整理してます
sansantech
PRO
0
150
生成AIが変えるデータ分析の全体像
ishikawa_satoru
0
170
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
アジャイルでの品質の進化 Agile in Motion vol.1/20241118 Hiroyuki Sato
shift_evolve
0
180
これまでの計測・開発・デプロイ方法全部見せます! / Findy ISUCON 2024-11-14
tohutohu
3
370
マルチプロダクトな開発組織で 「開発生産性」に向き合うために試みたこと / Improving Multi-Product Dev Productivity
sugamasao
1
310
【令和最新版】AWS Direct Connectと愉快なGWたちのおさらい
minorun365
PRO
5
760
OCI Vault 概要
oracle4engineer
PRO
0
9.7k
Featured
See All Featured
Designing the Hi-DPI Web
ddemaree
280
34k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
4
380
Why Our Code Smells
bkeepers
PRO
334
57k
Embracing the Ebb and Flow
colly
84
4.5k
GraphQLとの向き合い方2022年版
quramy
43
13k
Producing Creativity
orderedlist
PRO
341
39k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Speed Design
sergeychernyshev
25
620
What's new in Ruby 2.0
geeforr
343
31k
We Have a Design System, Now What?
morganepeng
50
7.2k
How to Think Like a Performance Engineer
csswizardry
20
1.1k
Git: the NoSQL Database
bkeepers
PRO
427
64k
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ΞʔΩςΫνϟʔͷಛͷҰͭͱͯ͠ɺΠϕϯτυϦϒϯͳ ͷΛ࡞ΕΔ͔ͱ͍͏ͷॏཁͳΣΠτΛΊΔͱࢥ͏ͷͰɺ͜ͷ ลΓʹظ͍ͨ͠ (ΠϕϯτൃߦଆԿऀʁͱ͍͏ͷஔ͍ͱ͍ͯ) • ҙͱͯ͠ࠓ·ͩα൛ͳͷͰϓϩμΫγϣϯಋೖආ͚ͨ΄͏͕Α ͦ͞͏ɻ࣮ࡍ৮ͬͯͯόά͋ͬͨ͠
·ͱΊ • αʔόʔϨε༻๏ɾ༻ྔΛक͍͍ͬͯײ͡ʹ͓͍͍ͩ͘͞