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
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hako...
Search
FUJIWARA Shunichiro
October 04, 2024
Technology
10
5.9k
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
YAPC::Hakodate 2024 前夜祭 rejectcon
FUJIWARA Shunichiro
October 04, 2024
Tweet
Share
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
k6による負荷試験 入門から日常的な実践まで/Re:TechTalk #01
fujiwara3
1
20
困難を「一般解」で解く
fujiwara3
10
3.4k
「隙間家具OSS」に至る道/Fujiwara Tech Conference 2025
fujiwara3
7
11k
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
870
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
10
1.3k
「最高のチューニング」をしないために / hack@delta 24.10
fujiwara3
21
4.3k
CEL(Common Expression Language)で書いた条件にマッチしたIAM Policyを見つける / iam-policy-finder
fujiwara3
2
1.7k
awslim - Goで実装された高速なAWS CLIの代替品を作った/layerx.go#1
fujiwara3
6
830
AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6
fujiwara3
7
12k
Other Decks in Technology
See All in Technology
バックエンドエンジニアによるフロントエンドテスト拡充の具体的手法
kinosuke01
1
630
Amazon Q Developer 他⽣成AIと⽐較してみた
takano0131
1
120
パスキー導入の課題と ベストプラクティス、今後の展望
ritou
7
1.2k
技術的負債を正しく理解し、正しく付き合う #phperkaigi / PHPerKaigi 2025
shogogg
7
1.7k
AIエージェント完全に理解した
segavvy
4
260
OPENLOGI Company Profile
hr01
0
61k
20250326_管理ツールの権限管理で改善したこと
sasata299
1
350
Proxmox VE超入門 〜 無料で作れるご自宅仮想化プラットフォームブックマークする
devops_vtj
0
120
ソフトウェアプロジェクトの成功率が上がらない原因-「社会価値を考える」ということ-
ytanaka5569
0
120
Agile TPIを活用した品質改善事例
tomasagi
0
290
Go製のマイグレーションツールの git-schemalex の紹介と運用方法
shinnosuke_kishida
1
400
LINEギフトのLINEミニアプリアクセシビリティ改善事例
lycorptech_jp
PRO
0
240
Featured
See All Featured
A designer walks into a library…
pauljervisheath
205
24k
[RailsConf 2023] Rails as a piece of cake
palkan
53
5.4k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
How To Stay Up To Date on Web Technology
chriscoyier
790
250k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
177
52k
Six Lessons from altMBA
skipperchong
27
3.7k
Practical Orchestrator
shlominoach
187
10k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Code Reviewing Like a Champion
maltzj
522
39k
Optimising Largest Contentful Paint
csswizardry
35
3.2k
For a Future-Friendly Web
brad_frost
176
9.6k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
Transcript
AWS LambdaͰ࣮ݱ͢Δ εέʔϥϒϧͰίετ ͳWebαʔϏεߏங YAPC::Hakodate 2024 @fujiwara ౻ݪढ़Ұ
@fujiwara ໘ന๏ਓΧϠοΫSREνʔ Ϝ ISUCON 1,2,5,11 ! ༏উ4ճ ISUCON 3,8,12ʙ14 ӡӦ(ग़)
github.com/kayac/ecspresso Amazon ECS σϓϩΠπʔϧ github.com/fujiwara/lambroll AWS Lambda σϓϩΠπʔϧ
Agenda • AWS Lambdaͷجຊ • طଘͷWebΞϓϦέʔγϣϯΛLambdaԽ͢Δ • Tonamelʹ͓͚ΔϚΠΫϩαʔϏεECS→LambdaҠߦࣄྫ • LambdaͰෳ։ൃڥαʔϏεϝογϡΛ࣮ݱ͢Δ
AWS Lambdaͷجຊ
AWS Lambdaͷجຊ FaaS = Function as a Service αʔόʔΛ͋Β͔͡Ί༻ҙͤͣɺΫϥυ্ʹσϓϩΠͨ͠ ʮؔʯΛ࣮ߦ͢ΔαʔϏε
ؔ=ʮೖྗΛड͚औͬͯ (ॲཧΛߦ͍) ग़ྗΛฦ͢ͷʯ use v5.40.0; sub sum ($a, $b) { return $a + $b; }
Lambda༻ͷ sum ؔͷྫ use v5.40.0; sub sum ($event, $context) {
my $a = $event->{a}; my $b = $event->{b}; return { sum => $a + $b }; } ͜ΕΛLambdaʹσϓϩΠ(ৄࡉུ)→ʮؔʯΛݺͼग़ͤΔ $ aws lambda invoke \ --function-name sum \ --payload '{"a":1, "b":2}' \ --cli-binary-format raw-in-base64-out \ /dev/stdout {"sum":3}
Lambdaͷ࣮ߦϞσϧ ΠϕϯτΛܖػʹϚΠΫϩVM(Firecracker1)͕ىಈ ΠϕϯτAWSͷ֤छαʔϏε͔Βൃੜ/खಈͰ࣮ߦՄೳ ՝࣮ۚߦ࣌ؒ(msec)ͱϝϞϦׂΓͯྔ(MB)ʹԠͯ͡ൃੜ ࣮ߦ͍ͯ͠ͳ͍ͱ͖՝ۚ͞Εͳ͍ 1VMಉ࣌ʹ1Πϕϯτͷॲཧ͔͠͠ͳ͍ ෳΠϕϯτ͕ಉ࣌ʹൃੜͨ͠ΒෳͷVM͕ࣗಈతʹىಈ͢Δ (εέʔϧΞτ) 1 https://github.com/firecracker-microvm/firecracker
WebΞϓϦέʔγϣϯΛLambdaԽ͢Δ WebΞϓϦέʔγϣϯαʔόʔ = ϦΫΤετΛड͚औͬͯϨεϙϯεΛฦ͢ = ʮؔʯͱಉ͡ LambdaԽ͢ΔϝϦοτ ࣮ߦ͍ͯ͠Δͱ͖͚ͩ՝ۚ ɹϦΫΤετ͕དྷͳ͍ͱ͖ʹίετθϩ ٸܹͳෛՙ૿ՃʹରԠ͍͢͠
ɹϦΫΤετ͕૿͑ͨΒࣗಈతʹεέʔϧΞτ
LambdaͰHTTPΛॲཧ͢ΔͨΊͷํ๏ 1. Amazon API Gateway 2. Application Load Balancer(ALB) 3.
Lambda Function URLs AWS͕༻ҙ͍ͯ͠ΔϚωʔδυͳͷ (ଞʹͰ͖Δ͕ޙड़)
Amazon API Gateway (2015ʙ) ϦΫΤετͷϧʔςΟϯάมɺೝূɺೝՄͳͲߴػೳ VPCʹઃஔՄɺLambdaҎ֎ͷόοΫΤϯυࢦఆͰ͖Δ Application Load Balancer(ALB) (2018ʙ)
ϩʔυόϥϯαʔͷλʔήοτͱͯ͠LambdaΛՃͰ͖Δ Path/ϔομϕʔεͰͷϧʔςΟϯά VPCʹઃஔՄɺίετଟগֻ͔Δ(ݻఆඅ༻) Lambda Function URLs (2022ʙ) Lambdaؔ/aliasʹ1:1ରԠͨ͠URLΛൃߦ(VPCෆՄ) ϧʔςΟϯάͰ͖ͳ͍ɺγϯϓϧɺίετ
LambdaͰHTTPϦΫΤετ GET /sum?a=1&b=2 HTTP/1.1 Host: example.com ↓͜ͷϦΫΤετΛLambda͕ड৴͢Δͱ͖ͷΠϕϯτ2 { "httpMethod": "GET",
"path": "/sum", "headers": {"Host": "example.com"}, "queryStringParameters": {"a": "1", "b": "2"}, } 2 (Πϝʔδ) API GW(v1,v2), ALB, Function URLͰΠϕϯτͷܗࣜඍົʹҟͳΔ
LambdaͰHTTPϨεϙϯε { "statusCode": 200, "headers": {"Content-Type": "application/json"}, "body": "{\"sum\":3}" }
↓͜ͷϨεϙϯεΛLambda͕ฦ͢ͱ HTTP/1.1 200 OK Content-Type: application/json {"sum":3}
͜ΕΛશ෦ࣗͰॲཧ͢Δͱ… sub handler ($event, $context) { my $path = $event->{path};
if ($path eq '/sum') { # pathͷϧʔςΟϯάॲཧ my $a = $event->{queryStringParameters}->{a}; my $b = $event->{queryStringParameters}->{b}; # ϨεϙϯεΛฦ͢ return { statusCode => 200, headers => {'Content-Type' => 'application/json'}, body => encode_json({ sum => $a + $b }), }; } return { statusCode => 404, headers => { 'Content-Type' => 'text/plain' }, body => 'Not Found', }; }
ϑϨʔϜϫʔΫΛ͍͍ͨ ͍·Ͳ͖ϧʔςΟϯάϨεϙϯεੜΛࣗͰॻ͖ͨ͘ͳ͍ use Kossy; get '/sum' => sub ($self, $c)
{ my $a = $c->req->param('a'); my $b = $c->req->param('b'); return $c->render_json({ sum => $a + $b }); }; ͜Ε͚ͩͰࡁΉ
طଘͷWebΞϓϦέʔγϣϯΛLambdaԽ͢Δ
HTTPϦΫΤετ/Ϩεϙϯε㱻LambdaͷΠϕϯτ ͜ͷม͕Ͱ͖ΕैདྷͷϑϨʔϜϫʔΫΛͦͷ··͑Δʂ Perlͷ߹ AWS::Lambda::PSGI Λ͑؆୯ use AWS::Lambda::PSGI; my $app =
require "$ENV{'LAMBDA_TASK_ROOT'}/app.psgi"; my $func = AWS::Lambda::PSGI->wrap($app); sub handle { return $func->(@_); }
Goͷ߹ fujiwara/ridge3 (2016ʙ) import "github.com/fujiwara/ridge" func main() { var mux
= http.NewServeMux() mux.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "Hello") } ridge.Run(":8080", "/", mux) } Goͷඪ४ net/http ͷϋϯυϥΛͦͷ··͑Δ Lambda্ͰؔɺଞͷڥͰHTTPαʔόͱͯ͠ಈ࡞ ίʔυมߋ͢Δඞཁ͕ͳ͍(=ಉ͡όΠφϦͰOK) 3 https://github.com/fujiwara/ridge
ެࣜ awslabs/aws-lambda-go-api-proxy4 (2018ʙ) import "github.com/aws/aws-lambda-go/lambda" import "github.com/awslabs/aws-lambda-go-api-proxy/httpadapter" func main() {
http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { io.WriteString(w, "Hello") }) lambda.Start(httpadapter.New(http.DefaultServeMux).ProxyWithContext) } ࣮ߦڥΛࣗಈผ͠ͳ͍ɻhttpαʔόΛىಈ͢Δʹ ࣗͰผ or main(όΠφϦ)Λ͚Δ 4 https://github.com/awslabs/aws-lambda-go-api-proxy
͏ҰͭͷΞϓϩʔν AWS Lambda Web Adapter5 (2021ʙ) LambdaؔͰextension(αΠυΧʔ)ͱͯ͠ಈ࡞ طଘͷWebΞϓϦέʔγϣϯΛී௨ͷαʔόʔͱͯ͠ىಈ LWA͕LambdaͷΠϕϯτड৴→localhostHTTPϦΫΤετ ϨεϙϯεΛLambdaͷϨεϙϯεʹมͯ͠ฦ͢
ίʔυʹखΛೖΕͣʹɺैདྷͷWebΞϓϦέʔγϣϯΛLambda ্Ͱಈ͔͢͜ͱ͕Ͱ͖Δ 5 https://github.com/awslabs/aws-lambda-web-adapter
https://aws.amazon.com/jp/builders-flash/202301/lambda-web- adapter/ ΑΓҾ༻
Tonamelʹ͓͚ΔECS→LambdaҠߦࣄྫ
Tonamel tonamel.com ΧϠοΫ͕։ൃɾӡӦ͍ͯ͠ΔeεϙʔπେձࢧԉαʔϏε
τʔφϝϯτͬͯԿʁ ී௨ͷਓ͕૾͢Δʮτʔφϝϯτʯ=ʮߕࢠԂͷ͋Εʯ ӳޠతʹʮτʔφϝϯτʯ=ʮେձʯ ࣮ଞͷʮτʔφϝϯτʯܗࣜ͋Δ
τʔφϝϯτܗࣜ - উͪΓઓ γϯάϧΠϦϛωʔγϣϯ ⭐ 6 ɹ1ճෛ͚ͨΒऴΘΓ ɹຊޠͰ୯ʹʮτʔφϝϯτʯͱݴͬͨΒେ͜Ε μϒϧΠϦϛωʔγϣϯ ⭐
ɹ2ճෛ͚ͨΒऴΘΓɺ1ճෛ͚ͨΒഊऀαΠυʹ·ΘΔ ɹΦϦϯϐοΫͷॊಓมଇμϒϧΠϦϛωʔγϣϯ εςοϓϥμʔ ϓϩٿΫϥΠϚοΫεγϦʔζͷ͋Ε 6 ⭐ TonamelͰαϙʔτ͍ͯ͠Δܗࣜ
τʔφϝϯτܗࣜ - άϧʔϓઓ ૯ͨΓઓ ɹશһ͕શһͱରઓ͢Δ ɹϓϩٿJϦʔάͷϦʔάઓ εΠευϩʔ ⭐ ɹશͯͷࢀՃऀ͕΄΅ಉ͡ࢼ߹ʹͳΔΑ͏ʹରઓ͢Δ ɹ΄΅ಉ͡ઓͷࢀՃऀಉ͕࢜ରઓ͢ΔΑ͏ʹΈ߹Θͤ(ෳ
ࡶ) TonamelΛ͏ͱෳࡶͳεΠευϩʔ؆୯ʹ։࠵Ͱ͖Δ
TonamelͷΞʔΩςΫνϟ 2017 ϦϦʔε Amazon EC2 + Perl + MySQL(Aurora) +
Redis(ElastiCache) ͍ΘΏΔී௨ͷϞϊϦγοΫWebΞϓϦέʔγϣϯ 2020 EC2 → ECS & GoͰϚΠΫϩαʔϏε ຊମͷWebΞϓϦέʔγϣϯ(Perl)ͷػೳΛ GoͰ࣮͞ΕͨϚΠΫϩαʔϏεʹҠߦ͍ͯ͘͠ ৽ػೳجຊతʹGoͰ࣮ վम͍ܰ͘͝ͷͳΒPerlͰɺେ͖͍ͷGoͰ
ݱࡏ10Ҏ্ͷϚΠΫϩαʔϏε͕Քಇத 7 ΞΧϯτ,ηογϣϯ,νϟοτ,௨ τʔφϝϯτදཧ (ECS→Lambda) େձཧ εϙϯαʔཧ ՝ۚཧ ۚϓʔϧཧ ֎෦API
webhook etc... 7 https://speakerdeck.com/mackee/the-migrating-to-microservices-in-go-from- monolith-in-perl
TonamelͷαʔϏεಛੑ ීஈͦ͜·ͰΞΫηε͕ଟ͘ͳ͍͕ େձ͕։࠵͞ΕΔͱٸܹʹϦΫΤετ͕૿Ճ τʔφϝϯτදཧαʔϏεͷAPIϦΫΤετ(2Ͱ20ഒ)
༧ଌΦʔτεέʔϧ ෛՙैͷΦʔτεέʔϧͰରԠͰ͖ͳ͍ͨΊ υϝΠϯࣝΛݩʹෛՙΛ༧ଌͯ͠ࣄલεέʔϧ͢Δ8 େձ͕։࠵͞ΕΔ࣌ɺنࣄલʹ͔Δ(DBʹ͋Δ) աڈͷσʔλ͔Βओ࠵ऀஂମผʹΛֻ͚ͯෛՙΛ༧ଌ (ਓؾͷ͋ΔஂମࢀՃऀҎ֎ͷӾཡऀଟ͍) 30͝ͱʹ࣍ͷ30ؒͷෛՙΛ༧ଌͯ͠εέʔϧΞτ 8 https://techblog.kayac.com/tonamel-spike-access
༧ଌ༧ଌͳͷͰ֎ΕΔ(͜ͱ͕͋Δ) աখʹ༧ଌ → ෛՙʹ͑ΒΕͣʹো Ұ൪ར༻ऀ͕͍͍ͨλΠϛϯάͳͷͰαʔϏεͷՁԼ աʹ༧ଌ → ༨Ϧιʔε͕ແବͳίετʹ ࣮ࡍʹ2024લͰෛՙैʹࣦഊͨ݁͠Ռ ฏۉͰ݄ʹ1ճఔͷো͕ൃੜ͍ͯͨ͠
ECS → LambdaͰղܾ? ίετݮͱෛՙैੑͷ্ͷͨΊ τʔφϝϯτදཧαʔϏεΛ ECS → LambdaʹҠߦ 20247݄ʹҠߦޙ ෛՙैʹࣦഊͨ݁͠Ռͷোͳ͠!
ίετͷେ෯ݮʹޭ !
ECS → Lambda ҠߦͰͬͨ͜ͱ net/http.Server → fujiwara/ridge αΠυΧʔͷॲཧΛ֎ʹग़͢ Fluentd: ϩάసૹ
katsubushi: IDൃߦϛυϧΣΞ ΞϓϦέʔγϣϯͷίʔυࣗମมߋͳ͠ पล෦ͷΈͷมߋͰLambdaʹҠߦͰ͖ͨ
FluentdͷҠߦ ECSͰFirelensͰFluentd→Kinesis Data Streamsʹૹ৴ ϩάॲཧج൫ͷ߹্ɺ͜ͷߏେ͖͘ม͑ͮΒ͍ ଞͷECSαʔϏεͰಈ͍͍ͯΔFluentdʹ in_http ΛՃ Internal ALBͷλʔήοτͱͯ͠ΈࠐΈ
LambdaͷϦΫΤετॲཧͷ࠷ޙʹόοϑΝͨ͠stdoutΛ FluentdʹHTTPͰૹ৴͢Δ
katsubushi ͷҠߦ github.com/kayac/go-katsubushi Int64ͷIDΛൃߦ͢ΔϛυϧΣΞ DBͷauto incrementΛΘͣʹߴʹ int64ͷҰҙͳIDΛൃߦ͢Δ memcached protocol(text/binary) HTTP,
gRPC ʹରԠ ʲࢀߟʳYAPC::Fukuokaͷൃද9,blog10 10 https://techblog.kayac.com/katsubushi-introduction.html 9 https://speakerdeck.com/fujiwara3/katsubushi
Before → After ઐ༻ECSαʔϏε࡞͍ͬͯͳ͍ (ଞͷαʔϏεͷαΠυΧʔΛڞ༻)
Ҡߦखॱ Internal ALBͷλʔήοτͱͯ͠ECSͱLambdaΛ྆ํՃ ՃॏϧʔςΟϯάͰঃʑʹτϥϑΟοΫΛҠߦ Lambda:ECS = 10:90 → 50:50 →
100:0 ண ෛՙ͕૿Ճͨ͠λΠϛϯάͰCold Start͕ൃੜ͢Δͣ ͜ͷλΠϛϯάͰϨΠςϯγ͕૿Ճ͢ΔՄೳੑ͕͋Δ͕…? ⭕ ϩάͰ1ඵҎͰىಈͰ͖͍ͯΔ ⭕ ALBܦ༝ͰͷϨΠςϯγͳ͠
None
σϓϩΠҠߦ ECS → Lambda ECSͷσϓϩΠ kayac/ecspresso11 Ͱ౷Ұ͍ͯ͠Δ ECSͷλεΫఆٛαʔϏεͷఆٛΛJSON/JsonnetͰཧ ECSͷΈΛରͱ͍ͯ͠Δ ɹଞͷϦιʔεͷཧTerraformͰ
ɹઃఆϑΝΠϧ͔ΒtfstateΛࢀরͯ͠IDͳͲΛղܾͰ͖Δ 11 github.com/kayac/ecspresso
LambdaͷσϓϩΠ LambdaͷσϓϩΠ fujiwara/lambroll12 Ͱ LambdaؔͷઃఆΛJSON/JsonnetͰཧ ɹίʔυzipԽͯ͠Ξοϓϩʔυͯ͘͠ΕΔ / Imageαϙʔτ LambdaͷΈΛର ɹଞͷϦιʔεͷཧTerraformͰ
ɹઃఆϑΝΠϧ͔ΒtfstateΛࢀরͯ͠IDͳͲΛղܾͰ͖Δ 12 github.com/fujiwara/lambroll
ecspresso & lambroll ͍উख/πʔϧ͕ཧ͢Δൣғ͕΄΅ಉ͡ ECSͱLambdaΛಉ࣌ʹѻͬͯҧײ͕ͳ͍ ͳͥͳΒ࡞ऀ͕ಉ͔ͩ͡Β… CircleCIͷσϓϩΠύΠϓϥΠϯʹlambrollΛΈࠐΈ ECSͱҰॹʹσϓϩΠ
ෳ։ൃڥαʔϏεϝογϡΛ࣮ݱ͢Δ
։ൃ/ϓϨϏϡʔڥ? ։ൃ࣌ ridge / AWS::Lambda::PSGIΛ͑ ͦͷ··ϩʔΧϧͰಈ͔ͤΔ ϓϨϏϡʔڥ ECSͰ mirage-ecs acidlemon/mirage-ecs13
ECSͰ͖ͳ͚ͩ։ൃڥΛ࡞ΕΔ ڥ͝ͱʹURLΛൃߦͯ͠ϧʔςΟϯά (proxy)ͯ͘͠ΕΔϛυϧΣΞ14 14 https://speakerdeck.com/fujiwara3/yapc-hiroshima-2024 13 github.com/acidlemon/mirage-ecs
LambdaͰϓϨϏϡʔڥ ࡞Γ·ͨ͠ fujiwara/lamux15 Lambda multiplexer URLͰaliasΛผͯ͠invoke͢Δ foo.example.com → invoke alias=foo
bar.example.com → invoke alias=bar ݺͼग़͠ઌͷؔHTTPॲཧ͢Δલఏ (ෳؔͷinvokeʹରԠ) 15 https://github.com/fujiwara/lamux
LamuxͰService Mesh lamuxextensionͱͯ͠ಈ࡞͢Δ extensionͱͯ͠ಈ࡞͢Δ߹ 1.LambdaͷΠϯελϯε্Ͱlisten 2.HTTPϦΫΤετΛड৴ͯ͠ଞͷؔ/ aliasΛInvoke foo.sv1.example.com → invoke
sv1:foo bar.sv2.example.com → invoke sv2:bar = αʔϏεϝογϡͷσʔλϓϨʔϯ ίϯτϩʔϧϓϨʔϯLambdaࣗମ
Lamux ͷ࣮ྫ perlbatross.kayac.com ΧϠοΫఏڙͷίʔυΰϧϑاը Perlbatross16 WebAppLambdaͰಈ࡞ Perl / Kossy /
AWS::Lambda::PSGI / Aurora PostgreSQL ίϯςφΠϝʔδͰLambdaʹσϓϩΠ 16 https://perlbatross.kayac.com/
ίʔυΰϧϑ=ҙίʔυ࣮ߦ WebAppͷLambdaͰ࣮ߦͨ͘͠ͳ͍ ίʔυ࣮ߦ༻ؔΛඇVPCʹஔ (֎෦ͷ௨৴શͯःஅ͓ͯ͘͠) webapp͔Βlamuxܦ༝Ͱݺͼग़͢ (HTTP) αʔϏεؒ௨৴ΛHTTPʹ͓͚ͯ͠ LambdaͰखݩͰ(ECSͰ) ಉ͡Α͏ʹಈ࡞͢Δ
࠷ޙʹ طଘͷWebΞϓϦέʔγϣϯΛLambdaԽ͢Δͷ͘͠ͳ͍ LambdaԽ͢ΔϝϦοτ - ٸܹͳෛՙ૿ՃʹରԠ͍͢͠ - ࣮ߦ͍ͯ͠ͳ͍ͱ͖ίετθϩ (ࠓճॻ͍ͯͳ͍͚Ͳ)͔ͳ͍αʔϏε͋Δ - IO(ωοτϫʔΫ)͕ͪଟ͍ͱίεύ͕ѱ͍
- ΞΫηεͷ૿ݮ͕গͳ͍αʔϏεͩͱׂߴ - ҆ఆͨ͠ϨΠςϯγ(1ܻmsec)͍͠