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で始めるServerlessの勘所と始め方
Search
ryurock
December 20, 2019
Technology
0
250
AWSで始めるServerlessの勘所と始め方
Serverless化を初めて最初の一歩でこれ知っておけば良かった。
ってのをまとめてみました。
ryurock
December 20, 2019
Tweet
Share
More Decks by ryurock
See All by ryurock
仕事の「速さ」とは?
ryurock
2
300
SaaS 組織概要
ryurock
1
710
ソフトウェアピープルマネジメント
ryurock
1
230
プロダクトマネジメントプロセス概要
ryurock
33
14k
SaaS アーキテクチャ概要
ryurock
75
24k
SRE を立ち上げた4ヶ月後の世界
ryurock
1
1.9k
SRE を立ち上げた時の組織の変化と現実の SLO と向き合う
ryurock
1
170
サービスの成長と技術負債について
ryurock
1
390
【DevOpsDays Tokyo 2022】レガシーなシステムをリプレースした後に起きた開発組織の変化について
ryurock
7
1k
Other Decks in Technology
See All in Technology
Tech-Verse 2025 Global CTO Session
lycorptech_jp
PRO
0
1.2k
fukabori.fm 出張版: 売上高617億円と高稼働率を陰で支えた社内ツール開発のあれこれ話 / 20250704 Yoshimasa Iwase & Tomoo Morikawa
shift_evolve
PRO
1
120
Amazon S3標準/ S3 Tables/S3 Express One Zoneを使ったログ分析
shigeruoda
5
590
GitHub Copilot の概要
tomokusaba
1
150
Witchcraft for Memory
pocke
1
660
Beyond Kaniko: Navigating Unprivileged Container Image Creation
f30
0
110
2025-06-26_Lightning_Talk_for_Lightning_Talks
_hashimo2
2
110
Liquid Glass革新とSwiftUI/UIKit進化
fumiyasac0921
0
300
強化されたAmazon Location Serviceによる新機能と開発者体験
dayjournal
3
250
Lazy application authentication with Tailscale
bluehatbrit
0
110
【5分でわかる】セーフィー エンジニア向け会社紹介
safie_recruit
0
26k
生成AIで小説を書くためにプロンプトの制約や原則について学ぶ / prompt-engineering-for-ai-fiction
nwiizo
4
3.4k
Featured
See All Featured
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
20
1.3k
A better future with KSS
kneath
239
17k
Navigating Team Friction
lara
187
15k
Documentation Writing (for coders)
carmenintech
72
4.9k
Intergalactic Javascript Robots from Outer Space
tanoku
271
27k
Designing Experiences People Love
moore
142
24k
Git: the NoSQL Database
bkeepers
PRO
430
65k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
35
2.4k
Mobile First: as difficult as doing things right
swwweet
223
9.7k
The World Runs on Bad Software
bkeepers
PRO
69
11k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
29
9.5k
Faster Mobile Websites
deanohume
307
31k
Transcript
AWSͰ࢝ΊΔServerlessͷצ ॴͱ࢝Ίํ 2019.12.19 Eversense co.ltd @ryurock
ΞδΣϯμ 4FSWFSMFTTͱʁ 4FSWFSMFTTͷྫ 4FSWFSMFTTΛ͢Δʹ͋ͨͬͯߟ͑ͳ͍͚ͯ͘ͳ͍ϨΠϠʔ 4FSWFSMFTTͷཧͱݱ࣮
ॳΊͯͷ4FSWFSMFTTͷϙΠϯτ 4FSWFSMFTTͷ࠷ॳͷҰา-BNCEB'VODUJPOT -BNCEB'VODUJPOT 8IZ-BNCEB'VODUJPOT -BNCEB'VODUJPOTΛ͏લʹ͓͖ͬͯ͘ࣄ -BNCEB'VODUJPOTߏύλʔϯ -BNCEB'VODUJPOTΛ͏ʹ͋ͨͬͯͷਆπʔϧ 4FSWFSMFTTͷ࠷ॳͷೋาΊ&$4'BSHBUF &$4'BSHBUF 'BSHBUFͰ͓֮͑ͯ͘ࣄ 'BSHBUFͷҙࣄ߲ 'BSHBUFͷ࠷ॳͷҰา 4FSWFSMFTTͷར %PDLFSࢮͳͳ͔ͬͨ ·ͱΊ
Serverlessͱʁ
Serverlessͱʁ ཚʹݴ͏ͱϏδωεʹؔ ͳ͍γεςϜతͳ੍ޚΛ୭͔ (AWS,Azure,GCP)ʹ͓ͤ ͢Δ͜ͱ
Serverlessͷྫ • େنͳॲཧͷΩϡʔΠϯάॲཧͷ εέʔϧΠϯɾΞτ • EC2ͷηΩϡϦςΟཧΛͤΔ(Ξ ϓϦέʔγϣϯϨΠϠʔҾ͖ଓ͖ ࣗݾཧͰ͢) • ͳͲ
ServerlessΛ͢Δʹ͋ͨͬͯߟ͑ͳ͍͚ͯ͘ͳ͍ϨΠϠʔ • Lambda(FaaS) • ͜ͷαʔϏε͔ΒServerless͕࢝·ͬͨͱݴͬͯաݴͰͳ͍ • ECS • ECS on
EC2 • EKS • ECS on Fargate • ͳͲ Service Layer
ServerlessΛ͢Δʹ͋ͨͬͯߟ͑ͳ͍͚ͯ͘ͳ͍ϨΠϠʔ ίϯςφɾLambdaͱʹشൃੑͷ͋ΔαʔϏεͳͷͰ(్தͰλεΫ ͕ఀࢭͨ͠߹్தܦաͷStorageσʔλجຊഁغ͞ΕΔ)Storage ͷαʔϏεΛ༻͢Δ Storage Layer • CloudWatchLogs • LambdaɾFargateͱʹσϑΥϧτͷϩάCWLogsʹ
ग़ྗ͞ΕΔ • S3 • EC2ͰFileग़ྗ͍ͨ͠߹ͦΕΛS3ʹอଘ͢Δ • ͨͩ͠ϦΞϧλΠϜIO͕͍ͷͰۤख
ServerlessΛ͢Δʹ͋ͨͬͯߟ͑ͳ͍͚ͯ͘ͳ͍ϨΠϠʔ લड़ͨ͠Storage୯ମͰద༻ͷ߹ڞʹεϧʔϓοτڐ༰͕͍ͷ ͰWEBαʔϏεେ༰ྔόονͷ߹୯ମͰ༻ͮ͠Β͍ͷ ͰσʔλΛసૹ͢ΔαʔϏεΛதؒʹஔ͘ඞཁ͕͋Δ Transform Layer • Kinesis FireHose •
ϦΞϧλΠϜ͚ϚωʔδυFluentdͱ͓΅͓͍͑ͯͯେମେৎ • Firelens • ίϯςφͷσʔλΛసૹ͢ΔͨΊͷSideCar Container • Re:event2019ͰFargateͷσϑΥϧτϩάʹՃ͞Εͨ • AWS͕ఏڙ͢ΔAWS͚ʹ࠷దԽͨ͠Fluentd
ServerlessΛ͢Δʹ͋ͨͬͯߟ͑ͳ͍͚ͯ͘ͳ͍ϨΠϠʔ େ͖͚ͯ͘ * BatchͰ࣮ߦ͢Δpullܗࣜ * σʔλ͕อଘ͞ΕͨλΠϛϯάͰىಈͤ͞ΔEventυϦϒϯܗࣜ * Ұൠతͳઆ໌Ͱͳ͍ͱࢥ͏͚ͲELBͷHTTP Request͔ΒͷEvent͕͍ͬͯΔͱߟ͑ͯྑ͍ Event
Layer • CloudWatch Events • ϦΞϧλΠϜ͚ϚωʔδυFluentdͱ͓΅͓͍͑ͯͯେମେৎ • ELB • HTTP Request͔ΒLambdaίϯςφʹΠϕϯτΛ͢ • SNS • TopicsΛൃߦ͢Δ͜ͱʹΑͬͯLambdaSQSΛൃߦͰ͖Δ
͜Μͳײ͡
Serverlessͷཧͱݱ࣮ ୯Ұ͕໌֬ͳͷͰෳࡶͳࣄΛ͠Α͏ͱ͢Δ ͱͦΕͳΓʹ৭ʑͳαʔϏεͱ࿈ܞ͠ͳͯ͘ ͳΒͳ͍ ʲॏཁʳ ϨΠϠʔΛ͑Δ࣌ʹ CloudServiceͱ͖߹͏֮ޛ͕ ඞཁ
ॳΊͯͷServerlessͷϙΠϯτ ϨΠϠʔΛ͑ͳ͍খ͞ͳͷ ͔ΒॳΊͯ࿅Λ্͍͛ͯ͘ • ϨΠϠʔ͕͑ͳ͍ͷͰখ͞ͳόονͱ͔͔Β࢝Ί Δͱྑ͍ • Lambda͔Β͕͓͢͢Ί • ྫ͕ଟ͘ൺֱతރΕ͍ͯΔ
Serverlessͷ࠷ॳͷҰา Lambda Functions
Lambda Functions ίϯςφ͏લʹLambdaͰ Ͱ͖ͳ͍͔ߟ͑Α͏ (ίϯςφઃఆ͕৭ʑ͍͠)
Why Lambda Functions? • Ұ൪ϑϧϚωʔδυServerless • ࿈ܞॲཧ(S3,CloudWatch Logs,SQS)͕ ஈʑͱ૿͍͍͑ͯͯউख͕Α͍ •
খ࢝͘͞ΊΔࣄ͕Ͱ͖Δ • eg. S3ʹImage͕Ξοϓϩʔυ͞ΕͨΒ τϦϛϯάͱ͔ • Lambda Layerͷग़ݱʹΑͬͯNative module͍͘͢ͳͬͨ
Lambda FunctionsΛ͏લʹ͓͖ͬͯ͘ࣄ VPC on Lambdaͱ Lambdaͷҧ͍
VPC on Lambda Functions? ؆୯ʹݴ͏ͱ௨ৗLambda VPCͷϦιʔεʹΞΫηεͰ͖ͳ͍ ͳͷͰ࿈ܞ͢ΔαʔϏε͕VPCͳͷ͔ͦ͏Ͱͳ͍ͷ͔Λߟྀ͢Δඞཁ͕͋Δ ྫ͑ VPC on
LambdaͰGoogle APIΛୟ͖ʹߦ͜͏ͱ͢ΔͱVPCͷ֎ʹग़Εͳ͍ͷͰҙ!! (݁ߏϋϚΔ᠘)
Lambda FunctionsΛ͏લʹ͓͖ͬͯ͘ࣄ CloudServiceͱ࿈ܞͨ͠Β ૄ௨Ͱ͖ͳ͍ͱ͔͋ΔͷͰ ͝ҙ (ಛʹRDS,EC2)
Lambda Functionsߏύλʔϯ(ྫ) • APIGateway + Lambda • ͜ͷ߹VPC on Lambdaʹ͓ͯ͘͠ͱRDSͱૄ
௨Ͱ͖Δ(HTTPAPI Gateway͕ݞΘΓͯ͘͠ ΕΔͷͰ) • ELB + Lambda • ࠷ۙͰ͖ΔΑ͏ʹͳͬͨ(API Gatewayͱಉ͡ߟ͑ ํͰOK) • API ServerҎ֎Ͱͳʹ͔͍ͨ͠߹ʹߟ͑Δ • CloudWatch logs or S3 + Lambda • ΠϕϯτυϦϒϯͰ͑Δදྫ
Lambda FunctionsΛ͏ʹ͋ͨͬͯͷਆπʔϧ Serverless Framework Boiler Template͔Βͷ࡞Deploy ͷશͯΛ͜ΕҰͭͰऩ·Δ CloudFormationॻ͚ΔͷͰશ෦Ͱ͖Δ
Serverlessͷ࠷ॳͷೋาΊ ECS Fargate
ECS Fargate • ϑϧϚωʔδυContainer • جຊԿͰͰ͖Δ • ͕Dockerͷֶशίετ͕͍ Βͳ͍Θ͚Ͱͳ͍!!(ॏཁ)
FargateͰ͓֮͑ͯ͘ࣄ • ECR (Elastic Container Registory) • DockerImageͷอଘઌ • DockerImageͷgithubͱ͓΅͑ͯΒͬͯ΄ͱΜͲͳ͍
• ECS Cluster • ContainerΛ·ͱΊΔശ • ClusterࣗମContainerΛάϧʔϓԽͯ͠ཧ͍ͯ͠Δ͚ͩ • ECS TaskDifinitions • DockerImageΛͲ͏ಈ͔͔͢ʁ(serverΛىಈ͢Δͱ͔ɻಛఆͷόο νίϚϯυ࣮ߦ͢Δͱ͔) • Ͳͷ͘Β͍ͷMemory,CPUΛͬͯTaskΛಈ͔͔͢ʁ • ఆٛ͢Δͷ • ͜Εrivisionͷ֓೦Λ͍ͬͯΔͷͰTaskఆٛͷgitͱ֮͑Εྑ͍
FargateͰ͓֮͑ͯ͘ࣄ(ͦͷ2) • ECS (Task) • TaskΛಈ͔͢(୯ମͷόονͳΒ͜ΕͰ ͳ͍) • ECS (Service)
• TaskΛىಈͬ͠ͺͳ͠ʹ͢ΔͳΒͪ͜Β (HTTP Server) • CloudWatch Event • cronͷΑ͏ʹఆظ࣮ߦͰTaskΛىಈͤͨ͞ ͍߹࿈ܞͤ͞Δ
Fargateͷҙࣄ߲ • SSH Ͱ͖ͳ͍ • ͕ཪٕϞʔυͰssm-agentΛΠϯετʔϧ͢Ε System ManagerͷSession Manager͔ΒೖΕΔ •
ίϯςφ͕ࢮΜͩ࣌ίϯςφͷStorageશͯͳ͘ ͳΔ • logσʔλFileอଘͷͷStorage Serviceʹసૹ ͠ͳ͍ͱࣦΘΕΔ(S3,RDS,Cloudwatch log) • ϩάશͯstdoutͰcloudwatch logʹอଘ͞ΕΔ • firelensͱ͍͏fluentίϯςφʹసૹ͢Δ͜ͱͰ͖ Δ
ͳΜ͔͍͠…….
Fargateͷ࠷ॳͷҰา • খ͞ͳόον͔Β࢝ΊΔ • LambdaͱҰॹ·ͣ׳ΕΔ • ҙ֎ͱ։ൃͷDockerfileͰͪΐͬͱઃఆ ม͑Δ͚ͩͰຊ൪ಈ͘Α(ຊʹ) • TaskDifnitionsͷCFͷαϯϓϧͨ͘͞
Μஔ͍ͯΔͷͰͬͯΈͯͶ • TaskDifnitions͚ͩͦ͜ΛטΈࡅ͚ ͱΓ͋͑ͣΠέΔ
ͳͥΔඞཁ͕͋Δͷ͔ʁ
Serverlessͷར • ཧ͢Δͷ͕ݮΔ • Ansible,PackerશࣺͯͯΕΔ • CloudFormationͱDockerImageҎ্!ʹͰ͖Δ • όονͳΒCPUͱ͔ؾʹ͢Δඞཁͳ͍ •
όον͕ճΓΔ͚ͩͷϝϞϦͱCPUΛઃఆ͢ΕΑ ͍ • εύΠΫͷΞϥʔϜ͖ʹ͠ͳͯ͘ྑ͍ • (RDSͱ͔ͷߟྀඞཁ͚ͩͲ • Aurora RDSʹ͢ΕΦʔτεέʔϧ͢Δ͔Β͔ ͳΓ࠷ڧ(͚ͩͲ͓͔͔ۚΔ)
Dockerࢮͳͳ͔ͬͨ • ࠷ॳ֓೦ͱֶशίετ͕ߴͯ͘ ྲྀߦΔͷ͔͜Εʁͱࢥ͚ͬͨͲ ؾ͍ͮͨΒσϑΝΫτʹ͍ۙ • GCPͱͷڝ૪ͰAWS͔ͳΓͷ ͍ͰFargate,LambdaΞοϓ σʔτͯ͘͠Δ(ઈରʹ)
·ͱΊ
Serverlessͷ࠷ॳͷҰา • Lambda,FargateͰখ͞ͳόον͔Β࢝ΊΔ • EventυϦϒϯΛҙࣝ͢Δ(S3࿈ܞ,SNS࿈ܞ ) • LambdaͰͰ͖Δ͜ͱΛߟ͑ͯͦΕ͕Ͱ͖ͳ ͍߹FargateͰContainer •
DockerImageҙ֎ͱຊ൪Ͱಈ͘ • CloudFormationͷSampleࢮ͵΄Ͳ࡞ͬ ͨͷͰ࣮Ζ͏ͱࢥ͑Ͱ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠