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
4.5k
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
alecthomas/kong はいいぞ / kamakura.go#7
fujiwara3
1
300
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
9
1.1k
「最高のチューニング」をしないために / hack@delta 24.10
fujiwara3
21
4k
CEL(Common Expression Language)で書いた条件にマッチしたIAM Policyを見つける / iam-policy-finder
fujiwara3
2
1.5k
awslim - Goで実装された高速なAWS CLIの代替品を作った/layerx.go#1
fujiwara3
6
760
AWS CLIの起動が重くてつらいので aws-sdk-client-go を書いた / kamakura.go#6
fujiwara3
7
10k
コードを書く隙間を見つけて生きていく技術/Findy 思考の現在地
fujiwara3
31
7.1k
fujiwara-ware OSSをひたすら紹介する/ya8-2024
fujiwara3
8
810
Amazon ECSで好きなだけ検証環境を起動できるOSSの設計・実装・運用 / YAPC::Hiroshima 2024
fujiwara3
25
8.7k
Other Decks in Technology
See All in Technology
【re:Invent 2024 アプデ】 Prompt Routing の紹介
champ
0
140
Snowflake女子会#3 Snowpipeの良さを5分で語るよ
lana2548
0
230
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
520
Amazon SageMaker Unified Studio(Preview)、Lakehouse と Amazon S3 Tables
ishikawa_satoru
0
150
20241220_S3 tablesの使い方を検証してみた
handy
3
360
10分で学ぶKubernetesコンテナセキュリティ/10min-k8s-container-sec
mochizuki875
3
330
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
DevOps視点でAWS re:invent2024の新サービス・アプデを振り返ってみた
oshanqq
0
180
生成AIのガバナンスの全体像と現実解
fnifni
1
180
権威ドキュメントで振り返る2024 #年忘れセキュリティ2024
hirotomotaguchi
2
730
LINE Developersプロダクト(LIFF/LINE Login)におけるフロントエンド開発
lycorptech_jp
PRO
0
120
Qiita埋め込み用スライド
naoki_0531
0
860
Featured
See All Featured
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Fontdeck: Realign not Redesign
paulrobertlloyd
82
5.3k
Practical Orchestrator
shlominoach
186
10k
Optimising Largest Contentful Paint
csswizardry
33
3k
A Modern Web Designer's Workflow
chriscoyier
693
190k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
232
17k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
48k
Automating Front-end Workflow
addyosmani
1366
200k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
Code Review Best Practice
trishagee
65
17k
Scaling GitHub
holman
458
140k
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)͍͠