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
某サービスのリニューアルでECSを導入したよもやま話
Search
Tomohiro MITSUMUNE
May 22, 2018
Technology
1
2.6k
某サービスのリニューアルでECSを導入したよもやま話
Healthtech Meetup vol.1で発表したスライド
Tomohiro MITSUMUNE
May 22, 2018
Tweet
Share
More Decks by Tomohiro MITSUMUNE
See All by Tomohiro MITSUMUNE
Swift2 New Features
tmitz
0
130
5分でわかるAdequateRecord
tmitz
1
460
Other Decks in Technology
See All in Technology
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
0
190
watsonx.ai Dojo #5 ファインチューニングとInstructLAB
oniak3ibm
PRO
0
200
UI State設計とテスト方針
rmakiyama
3
840
サイボウズフロントエンドエキスパートチームについて / FrontendExpert Team
cybozuinsideout
PRO
5
38k
ソフトウェア開発における「パーフェクトな意思決定」/Perfect Decision-Making in Software Development
yayoi_dd
1
1.8k
サービスでLLMを採用したばっかりに振り回され続けたこの一年のあれやこれや
segavvy
2
570
2024年にチャレンジしたことを振り返るぞ
mitchan
0
150
20241220_S3 tablesの使い方を検証してみた
handy
4
710
OCI技術資料 : ファイル・ストレージ 概要
ocise
3
11k
DevFest 2024 Incheon / Songdo - Compose UI 조합 심화
wisemuji
0
160
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
240
能動的ドメイン名ライフサイクル管理のすゝめ / Practice on Active Domain Name Lifecycle Management
nttcom
0
260
Featured
See All Featured
ピンチをチャンスに:未来をつくるプロダクトロードマップ #pmconf2020
aki_iinuma
111
49k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
28
4.4k
Become a Pro
speakerdeck
PRO
26
5k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9.1k
The Power of CSS Pseudo Elements
geoffreycrofte
73
5.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
The Language of Interfaces
destraynor
155
24k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
226
22k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Faster Mobile Websites
deanohume
305
30k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Transcript
αʔϏεͷϦχϡʔΞϧͰ ECSΛಋೖͨ͠Α· Healthtech Meetup vol.1 2018/05/22 גࣜձࣾΤεɾΤϜɾΤεɹޫफ๎
ࣗݾհ • ໊લ: ޫफ ๎ (@t_mitz ) • ձࣾ: גࣜձࣾΤεɾΤϜɾΤε
ϓϩμΫτ։ ൃ෦ ٕज़ਪਐάϧʔϓ • (ϔϧεέΞΆ͍)झຯɿϚϥιϯ ! • ߦಈม༰εςʔδϞσϧҡ࣋ظ
None
גࣜձࣾΤεɾΤϜɾΤε • IT x ҩྍɾհޢɾϔϧε έΞྖҬͷύΠΦχΞ اۀ • ߴྸࣾձΛऔΓר͘ਓʑ ͕ΠΩΠΩͱੜ׆Ͱ͖
ΔΠϯϑϥͷߏங
None
͡ΊΔલʹ
࣮·ͩಋೖऴΘͬͯ·ͤΜ" • հޢαʔϏεͷΞϓϦέʔγϣϯͷվमͱฒ ߦͯ͠ECSͷߏஙΛ͢͢Ί͍ͯΔ • ຊ൪ӡ༻։࢝·Ͱʹ༻ҙ͓͚ͯ͠Α͍Օॴʹ ͍ͭͯ·ͩະணखʢAWSͷίετ੍ͳͲʣ • ࢼߦࡨޡ͍ͯͨ͠ͱ͜ΖΛੜԹ͔͍Ͱ͝ཡ͍ ͚ͨͩΔͱ͍Ͱ͢
ࠓͷΞδΣϯμ • ECSΛ࠾༻ͨ͠ཧ༝ • ߏʹ͍ͭͯ • Α·
ECSΛ࠾༻ͨ͠ཧ༝
࠾༻ཧ༝ • ϩʔΧϧڥʹDockerಋೖࡁΈͩͬͨͷͰຊ൪ ڥͰಉ͡ͷΛಈ͔ͯ͠ݕূ͍ͨ͠ • ࣗલͰίϯςφͷΦʔέετϨʔγϣϯΛඋ͢ Δͷίετ͕ߴ͍ͷͰطଘͷιϦϡʔγϣϯΛ ͍͔ͨͬͨ • ΦϯϓϨ͔ΒύϒϦοΫΫϥυҠߦͷλΠϛ
ϯάͰΞʔΩςΫνϟΛݟͤΔλΠϛϯά
Google Kubernetes Engine ? • GKEͩͱIAM͕AWS΄Ͳࡉ੍͔͘ޚͰ͖ͳ ͍ʢ࣌ʣͷͰཁ݅ΛຬͨͤΒΕͳ͔ͬͨ • ࣾͷผαʔϏε͕ઌͩͬͯAWSҠߦ͠ ͨͱ͍͏എܠ͕͋ΓɺࣾͷφϨοδ͕ஷ
·Γ͍͢Α͏ʹAWSΛબఆ
Kubernetes on AWS ? • kube-aws ͔ kops Λར༻ͯࣗ͠લͰΫϥελ Λߏங͢Δඞཁ͕͋Γॳظֶशίετߴ͍
• ࣗ1ਓͰͬͯͨͷͰͱΓ͋͑ͣαΫοͱಈ ͔ͤΔڥΛ४උ͢Δඞཁ͕͋ͬͨ • ͳΔ͘ϑϧϚωʔδυʹد͔ͤͨͬͨ
ߏ
None
CircleCI • ࠓςετͷ࣮ߦͷΈΛ͍ͬͯ·͢ • গ͠લ·ͰίίͰdocker imageΛbuild & pushͯ͠·ͨ͠ • CIʹ͔͔࣌ؒΓ͗͢ͰPRͷϚʔδʹӨڹ͋Δ
CodePipeline • CodePipelineΛར༻ͯ͠GithubͷϒϥϯνΛ ࢹͯ͠ߋ৽͕͋ΔͱECSσϓϩΠ • CodebuildͰdocker image build ͯ͠ECR push
• CodePipelineͷdeployͰECSσϓϩΠ
Deploy to ECS • Ҏલecs-deployΛ͍͕ͬͯͨɺ CodePipelineΛ͏ํ͕ߏ͕γϯϓϧʹ ͳͬͯϝϯςφϯε͍͢͠ͷͰ࠾༻ • hakoݕ౼ͯ͠Έ্͕ͨهಉ༷ʹ CodePipelineͷํ͕γϯϓϧͩͬͨ
Logging • ී௨ʹ awslogs driver Ͱ CloudWatch Logsʹ ऩूͯ͠·͢ •
ϩάΛݟΔɺͱ͍͏ࣄʹؔͯ͠ࠔ͍ͬͯ· ͤΜʢCloudWatch LogsͰ୳͠ʹ͍͘ͱ͍͏ ͷஔ͍ͱ͍ͯ
ECS • 1αʔϏε1λεΫఆٛ • 1λεΫʹ3ͭͷίϯςφΛఆٛ • h2o • rails •
shoryuken
None
Α·
ఆظతͳόονॲཧ • CloudWatch EventsΛར༻ • ࣌ؒʹΑΔఆظ࣮ߦͰ͖Δ͠ɺAWSίϯ ϙʔωϯτͷΠϕϯτhookͰ͖ͯΜΓ • ECSͷλεΫఆٛΛ༻ҙͯ͠call͢ΕOK
ߏཧ • ߏཧͯ͢CloudFormation • ChangeSets͕ΜΓ • IAMͰͷݖݶཧ͕ڧྗ • awscliʹৄ͘͠ͳΕ·͢
Terraform ʹ͠ͳ͔ͬͨཧ༝ • ϚϧνΫϥυʹ͢Δඞཁੑ͕ࠓͷͱ͜Ζͳ͔ͬͨ • HCLಡΈ͍͕͢ಠࣗDSLͬͯॴ͕ΠϚΠν • ෳਓͰߏཧ͢Δͱ͖tfstateཧΛؾʹͨ͘͠ ͳ͔ͬͨ •
࣮ߦޙʹίέͨͱ͖ͷϦΧόϦ͕cfnΑΓίετߴ
AWS::Cloudformation::Stack • AWSίϯϙʔωϯτ͝ͱʹstackϑΝΠϧΛఆ ٛͯ͠ɺͦΕΒΛϦιʔεͱͯ͠ωετͯ͠ ཧͰ͖Δͭ • খ͍͞୯ҐͰςϯϓϨʔτΛ࡞͓͚ͬͯ Έ߹ΘͤͯߏΛม͑ΒΕΔͷͰΜΓ
ൿಗใ • SSM::Parameter StoreΛར༻ • ΞϓϦʹ͢ڥม͜͜Ͱཧ • Ҏલyaml_vaultΛͬͯΞϓϦέʔγϣϯ ʹ͍͚࣋ͨͤͯͨͲɺͪ͜Βͷํ͕γϯϓϧ •
AWS Secrets Manager͜Ε͔Βݕ౼
AutoScaling • EC2 AutoScaling • CPUReservation • ECS Service AutoScaling
• ·ͩຊ൪ӡ༻Λ։͍࢝ͯ͠ͳ͍ͷͰະઃఆ • EC2ͱECSͷAutoScaling͕ผϨΠϠͰಈ͘ͷͰΠϯε λϯε૿ݮ࣌ʹλεΫͷஔΛߟྀ͠ͳ͍ͱ͍͚ͳ͍
CPUͱReservedMemory • ECSͰΊΜͲ͍͘͞ͷ͕Clusterʹඥ͚ͨEC2ͷϦιʔ εΛTaskDefinitionͰΛܭࢉ͢Δඞཁ͕͋Δ͜ͱ • σϓϩΠ࣌ɺMaxMaximumPercent & MinimumHealthyPercent ߟྀͨ͠ʹ͓͔ͯ͠ͳ ͍ͱࠔΔ͕ීஈϦιʔε͕एׯ༨͍ͬͯΔײʹͳΔ…
• ༻్ʹΑͬͯFargate͕౦ژʹ͘Δͱղܾ
·ͱΊ
·ͱΊ • CloudformationͦΜͳʹѱ͘ͳ͍ͷͰAWSͷ ΈͰด͡ΔߏͳΒ͏ͷΞϦͰ͢ • ECSEC2ϨΠϠͱίϯςφϨΠϠͷཧ͕গ ͠ʹͳΔͷͰ͕ඞཁ • Code*γϦʔζੲΑΓ͜ͳΕ͍ͯΔͷͰ͏ ͱΜΓͳγʔϯ͕ଟΊͰ͢
ΤϯδχΞืूͯ͠·͢ʂ ৄ͘͠Wantedlyͷืूͷ֓ཁΛ