Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hako...
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
FUJIWARA Shunichiro
October 04, 2024
Technology
7.9k
10
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWS Lambdaで実現するスケーラブルで低コストなWebサービス構築/YAPC::Hakodate2024
YAPC::Hakodate 2024 前夜祭 rejectcon
FUJIWARA Shunichiro
October 04, 2024
More Decks by FUJIWARA Shunichiro
See All by FUJIWARA Shunichiro
多摩川(.dev)ランニング入門 / Tamagawa.dev#3
fujiwara3
3
460
クラウドを使う側から、作る側へ / 大吉祥寺.pm 2026前夜祭
fujiwara3
8
2.1k
作るべきものと向き合う - ecspresso 8年間の開発史から学ぶ技術選定 / 技術選定con findy 2026
fujiwara3
9
6k
さくらのクラウドでのシークレット管理を考える/tamachi.sre#2
fujiwara3
2
400
Amazon ECS デプロイツール ecspresso の開発を支える「正しい抽象化」の探求 / YAPC::Fukuoka 2025
fujiwara3
13
14k
パフォーマンスチューニングのために普段からできること/Performance Tuning: Daily Practices
fujiwara3
9
6.9k
alecthomas/kong はいいぞ
fujiwara3
7
2.6k
ecspressoの設計思想に至る道 / sekkeinight2025
fujiwara3
12
3.8k
さくらのIaaS基盤のモニタリングとOpenTelemetry/OSC Hokkaido 2025
fujiwara3
4
5.4k
Other Decks in Technology
See All in Technology
module Synths; end
asonas
1
130
AIで仕事のやり方を変える
matsu7874
3
1k
AIに丸投げしないトイル削減 / Eliminating Toil Without Leaving It All to AI
kohbis
4
1.1k
作り直せるコードは迅速に 作り直せないDBは慎重に - AI時代のプロダクトエンジニアが「判断の不可逆性」で開発速度を変える話
kinosuke01
0
310
Amazon S3 Tablesに全部任せてみた結果——コンパクション/スナップショット管理は本当に手放せるか
shigeruoda
1
470
2026/09/10 Spring Bootから Jakarta EE/MicroProfileへの移行
megascus
0
310
日経電子版を支えていく Kasane Design System/fec_fukuoka
nikkei_engineer_recruiting
0
730
あるけみー式LTスライド作成術
alchemy1115
1
170
Adaptive Warehouse を今すぐ導入すべき理由と迷ったときの判断基準
__allllllllez__
0
170
Screen Lens - 今見てる画面を翻訳する
komagata
0
240
家のリアーキテクト・リファクタリング
suguruooki
0
110
Multica × 長期記憶:40個のミニプロジェクト管理
eiei114
1
240
Featured
See All Featured
Building AI with AI
inesmontani
PRO
1
1.2k
A Modern Web Designer's Workflow
chriscoyier
699
190k
Mozcon NYC 2025: Stop Losing SEO Traffic
samtorres
1
520
Building Adaptive Systems
keathley
44
3.2k
コードの90%をAIが書く世界で何が待っているのか / What awaits us in a world where 90% of the code is written by AI
rkaga
63
45k
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
730
Marketing to machines
jonoalderson
1
5.8k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Making the Leap to Tech Lead
cromwellryan
135
10k
Embracing the Ebb and Flow
colly
88
5.2k
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)͍͠