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
280
SaaS 組織概要
ryurock
1
670
ソフトウェアピープルマネジメント
ryurock
1
210
プロダクトマネジメントプロセス概要
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
ゆるSRE #11 LT
okaru
1
300
Vibe Codingの裏で、 考える力をどう取り戻すか
csekine
0
400
入門 ESlint Typegen #TSKaigi #TSKaigi2025_kataritai
bengo4com
0
2k
Web Intelligence and Visual Media Analytics
weblyzard
PRO
1
6.1k
データベースの引越しを Ora2Pg でスマートにやろう
jri_narita
0
180
キャッシュレス決済のプロダクトから決済基盤への進化
b1a9id
0
210
「伝える」を加速させるCursor術
naomix
0
160
CSSの最新トレンド Ver.2025
tonkotsuboy_com
11
3.9k
【ClickHouseMeetup】ClickHouseを活用したセキュリティログ解析AIエージェント『LogEater』とは
hssh2_bin
0
110
AIとSREの未来 / AI and SRE
ymotongpoo
2
1.8k
Cursor Meetup Tokyo
iamshunta
5
1.5k
大手企業のAIツール導入の壁を越えて:サイバーエージェントのCursor活用戦略
gunta
34
17k
Featured
See All Featured
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
2
110
For a Future-Friendly Web
brad_frost
178
9.8k
GraphQLの誤解/rethinking-graphql
sonatard
71
11k
Bash Introduction
62gerente
614
210k
Thoughts on Productivity
jonyablonski
69
4.7k
Building a Modern Day E-commerce SEO Strategy
aleyda
41
7.3k
Building Flexible Design Systems
yeseniaperezcruz
328
39k
Keith and Marios Guide to Fast Websites
keithpitt
411
22k
Optimizing for Happiness
mojombo
378
70k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.6k
Music & Morning Musume
bryan
47
6.6k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
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ࢮ͵΄Ͳ࡞ͬ ͨͷͰ࣮Ζ͏ͱࢥ͑Ͱ͖Δ
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠