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で始めるServerlessの勘所と始め方
Search
ryurock
December 20, 2019
Technology
300
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
AWSで始めるServerlessの勘所と始め方
Serverless化を初めて最初の一歩でこれ知っておけば良かった。
ってのをまとめてみました。
ryurock
December 20, 2019
More Decks by ryurock
See All by ryurock
仕事の「速さ」とは?
ryurock
2
460
SaaS 組織概要
ryurock
1
1.2k
ソフトウェアピープルマネジメント
ryurock
1
330
プロダクトマネジメントプロセス概要
ryurock
33
14k
SaaS アーキテクチャ概要
ryurock
77
26k
SRE を立ち上げた4ヶ月後の世界
ryurock
1
2.2k
SRE を立ち上げた時の組織の変化と現実の SLO と向き合う
ryurock
1
240
サービスの成長と技術負債について
ryurock
1
480
【DevOpsDays Tokyo 2022】レガシーなシステムをリプレースした後に起きた開発組織の変化について
ryurock
7
1.1k
Other Decks in Technology
See All in Technology
現場で役立つ技術負債の効果的な返済方法
masuda220
PRO
8
4.1k
10Xに技術的負債をもたらした「2つの境界の歪み」その構造と解消への営み
10xinc
0
1.9k
2026-09-18 gotanda.sre Terraformで複数環境作ったり、複数Stateに分割したりそれとTerragrunt / Terraform multi envs and multi states
masasuzu
0
110
アプリをもっと"iOSアプリっぽく"する小さな工夫 / Small Touches That Make Your App Feel More Like an iOS App
matsuji
1
890
AIネイティブプロダクトで顧客価値を最大化するプロダクトエンジニアとFDEの協働
righttouch
PRO
0
310
Screen Lens - 今見てる画面を翻訳する
komagata
0
300
MCPをつなげて作る組織横断のAIエージェント基盤(の開発工程)
tsubakimoto_s
0
130
HHKBエバンジェリストになる方法
941
0
100
俺の仕事は AIに奪われないし、たぶんその BIも要らない
hikaruri
0
470
作品が生態系になった ─ Mini Tokyo 3D から世界へ
nagix
0
190
空間オーディオで過去の 自分(ゴースト)と競うランニング 〜HealthKitのルートを足音に変える実装〜
nao_randd
0
220
20260912_スクフェス三河
kgnkhkr
0
380
Featured
See All Featured
Accessibility Awareness
sabderemane
1
210
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
31
3.4k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.3k
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
910
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
450
Building Adaptive Systems
keathley
44
3.2k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
330
Making the Leap to Tech Lead
cromwellryan
135
10k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
560
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
6
1.2k
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
840
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
2
1.6k
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ࢮ͵΄Ͳ࡞ͬ ͨͷͰ࣮Ζ͏ͱࢥ͑Ͱ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠