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
Lancersをコンテナへ本番移行する取り組み
Search
adachin0817
June 29, 2022
Programming
1
3.3k
Lancersをコンテナへ本番移行する取り組み
https://lancersrecruit.connpass.com/event/248522/
adachin0817
June 29, 2022
Tweet
Share
More Decks by adachin0817
See All by adachin0817
TechBull Membersの開発進捗どうですか!?
rvirus0817
0
900
クラウド脆弱性の傾向とShisho Cloudの活用
rvirus0817
0
180
TechBullエンジニアコミュニティの取り組みについて
rvirus0817
0
1k
横断SREの立ち上げと、AWSセキュリティへの取り組みの軌跡
rvirus0817
3
10k
ゼロから創る横断SREチーム ~挑戦と進化~
rvirus0817
3
4.7k
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
rvirus0817
11
12k
メンティー同士で輪読会を始めたら学びしかなかった
rvirus0817
1
1.1k
~CircleCIでTerraformリリースのサーバーレス化~ インフラの独自リリースを継続的リリースへ
rvirus0817
0
5.3k
Terraform v0.12.29 → v1.0.5にバージョンアップする上で気をつけること
rvirus0817
0
4.3k
Other Decks in Programming
See All in Programming
AIエージェントはこう育てる - GitHub Copilot Agentとチームの共進化サイクル
koboriakira
0
600
AIと”コードの評価関数”を共有する / Share the "code evaluation function" with AI
euglena1215
1
170
ペアプロ × 生成AI 現場での実践と課題について / generative-ai-in-pair-programming
codmoninc
2
19k
Result型で“失敗”を型にするPHPコードの書き方
kajitack
5
930
状態遷移図を書こう / Sequence Chart vs State Diagram
orgachem
PRO
1
130
MDN Web Docs に日本語翻訳でコントリビュートしたくなる
ohmori_yusuke
1
130
PostgreSQLのRow Level SecurityをPHPのORMで扱う Eloquent vs Doctrine #phpcon #track2
77web
2
540
システム成長を止めない!本番無停止テーブル移行の全貌
sakawe_ee
1
210
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
120
すべてのコンテキストを、 ユーザー価値に変える
applism118
3
1.4k
効率的な開発手段として VRTを活用する
ishkawa
0
150
猫と暮らす Google Nest Cam生活🐈 / WebRTC with Google Nest Cam
yutailang0119
0
160
Featured
See All Featured
GraphQLとの向き合い方2022年版
quramy
49
14k
RailsConf 2023
tenderlove
30
1.1k
Optimizing for Happiness
mojombo
379
70k
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
507
140k
Faster Mobile Websites
deanohume
307
31k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
8
830
StorybookのUI Testing Handbookを読んだ
zakiyama
30
5.9k
Docker and Python
trallard
44
3.5k
Designing Experiences People Love
moore
142
24k
Testing 201, or: Great Expectations
jmmastey
43
7.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
Agile that works and the tools we love
rasmusluckow
329
21k
Transcript
ϥϯαʔζגࣜձࣾ ϓϩμΫτ։ൃ෦/ٕज़ج൫ SRE ҆ୡ ྋ ʲLancers x dipʳEngineer Meetup #1
LancersΛίϯςφຊ൪Ҡߦ͢ΔऔΓΈ
ࣗݾհ • ҆ୡ ྋ(adachin) • Lancers/SRE 2018/5~ • @adachin0817
• RVIRUS0817 • blog.adachin.me • wiki.adachin.me • ݸਓαʔϏε։ൃத(ਐḿѱ) ʲLancers x dipʳEngineer Meetup #1
ࠓճ͓͍ͨ͜͠ͱ • 2018ͷγεςϜ • TerraformԽਪਐ • Amazon Linux2Խ • ϩάαʔόʔͷഇࢭ
• ։ൃڥͷվળ • ϑϩϯτΤϯυͷվળ • چ։ൃڥɺEC2Ͱͷӡ༻՝ • Batch/AppΛίϯςφ • ࣗલσϓϩΠγεςϜΛഇࢭ • ෛՙରࡦͱϨεϙϯε • ·ͱΊ ʲLancers x dipʳEngineer Meetup #1
ฐࣾʹ͍ͭͯ ʲLancers x dipʳEngineer Meetup #1
άϧʔϓձࣾECS/FargateʹҠߦࡁΈ ʲLancers x dipʳEngineer Meetup #1
Ҏલొஃ͍ͯͨ͠εϥΠυͪ͜Β ʲLancers x dipʳEngineer Meetup #1
ʲLancers x dipʳEngineer Meetup #1
2018ϥϯαʔζͷαʔόʔߏ ʲLancers x dipʳEngineer Meetup #1
2021ϥϯαʔζͷαʔόʔߏ ʲLancers x dipʳEngineer Meetup #1
2021/10~(࣮ࢪ) ʲLancers x dipʳEngineer Meetup #1
TerraformԽ ʲLancers x dipʳEngineer Meetup #1
Ұ෦TerraformԽΛ͍ͯ͠Δ͕શͰͳ͍ • άϧʔϓձࣾશͯTerraformԽ • ຊՈҰ෦͔͠TerraformԽ͞Ε͍ͯͳ͍ ɾηΩϡϦςΟʔάϧʔϓIDͳͲΛͦͷ··ࢦఆ ɾEC2ͰͷߏஙಠࣗͷAWS CLIͰࣗಈԽ
ɾͦΕҎ֎खಈͰઃఆ • શͯΛterraform importΛ͢Δʹݫ͍͠ ɾϑΣʔζ͝ͱʹऔΓΉ͜ͱʹ ʲLancers x dipʳEngineer Meetup #1
Terraform Phase 1 • VPC ɾαϒωοτ ɾϧʔτςʔϒϧ
ɾΠϯλʔωοτήʔτΣΠ ɾNatήʔτΣΠ ɾΤϯυϙΠϯτ ɾηΩϡϦςΟάϧʔϓ • ELB ɾλʔήοτάϧʔϓ ɾϦεφʔϧʔϧ ʲLancers x dipʳEngineer Meetup #1 • EC2 • RDS • ACM • εςʔδϯάͱຊ൪ڥ߹Θͤͯ ɾ1ϲ݄ ɾͦΕҎ֎ࠓظରԠ
Terraform ։ൃڥͱCI/CD ʲLancers x dipʳEngineer Meetup #1
Amazon Linux 2Խ ʲLancers x dipʳEngineer Meetup #1
EC2ΛAmazon Linux 2Խ • Amazon Linux1Ͱӡ༻ ɾAppɺཧը໘(Admin)ɺBatchαʔόʔ ɾ20206݄3ʹηΩϡϦςΟΞοϓσʔτͷఏڙ͕ऴྃ
• άϧʔϓձࣾͷҠߦ͕ॏͳΓରԠͰ͖ͣ • ͞ΒʹArm͕ରԠ͞ΕͯύϑΥʔϚϯε্͕ঢͱίετݮ • άϧʔϓձࣾͷίϯςφͷϊϋ͕ߴ·ΓҠߦΛܾҙ ɾಉ࣌ʹMySQL8ԽऔΓΉ͜ͱʹ ʲLancers x dipʳEngineer Meetup #1
ϩάαʔόʔͷഇࢭ ʲLancers x dipʳEngineer Meetup #1
ϩάαʔόʔ͕୯Ұো • ੳج൫(Digdag/Embulk/BigQuery/Redash)Λӡ༻ ɾϩάج൫(Fluentd) ɾApp(ΞΫηεϩά/ΞϓϦέʔγϣϯϩά) ɹɾS3ʹू •
ਖ਼ৗʹಈ࡞͍ͯ͠ͳ͍ঢ়ଶ͕ʑݟड͚ΒΕ ɾϒϥοΫϘοΫεԽͱͷ՝ʹ… • td-agentͷόʔδϣϯΞοϓΛࢼΈ͕ͨ ɾ͏·͍͔͓ͣ͘ख্͛ঢ়ଶ ʲLancers x dipʳEngineer Meetup #1
Amazon KinesisʹҠߦ • CloudWatch Logs(awslogs)Λ࠾༻ ɾ։ൃϝϯόʔͰௐࠪͰ͖ΔΑ͏ʹ ɾൺֱతֶशίετ͕͍awslogsΛબ •
ϩάϙϦγʔΛݟ͢ ɾΞΫηεϩάS3ʹूͷ·· ɾΞϓϦϩάੳ༻్ͱͯ͠ར༻͠ͳ͍ • Datadog LogsͰKinesisͷ࿈ܞ ɾΞϓϦνʔϜॠ࣌ʹରԠՄೳ ɾՄ؍ଌੑΛߴΊΒΕΔΑ͏ʹ • ίϯςφʹҠߦ͢Δ४උ͕ͬͨ ʲLancers x dipʳEngineer Meetup #1
։ൃڥͷमਖ਼ ʲLancers x dipʳEngineer Meetup #1
։ൃڥͷमਖ਼ • ։ൃڥຊ൪ಉΛ࠶ݱ ɾAnsibleίϯςφ ɹɾύοέʔδΠϯετʔϧ • มߋ
ɾDocker Imageamazonlinux2 ɾsupervisorͰϓϩηεཧ ɾෆཁͳύοέʔδΛચ͍ग़͠আ ɾamazon-linux-extrasʹΑΔPHPΠϯετʔϧ ɾtd-agentͷআͱawslogsͷΠϯετʔϧ • ཧը໘ECS/FargateʹҠߦ͢ΔͨΊ ɾDocker fi leΛҰ͔Βbuild͢ΔΑ͏ʹ ʲLancers x dipʳEngineer Meetup #1
2022/03~(Ҡߦ) ʲLancers x dipʳEngineer Meetup #1
Ҡߦ͢Δʹ͋ͨͬͯ • ཧը໘(Admin)ECS/FargateʹҠߦ ɾCakePHP2EC2 ɾCakePHP4ECS/FargateͰಈ࡞ • BatchArmʹҠߦ •
AppArmʹҠߦͰ͖ͣintelͰӡ༻ ɾDatadog ɹɾdd-trace-php͕ArmΛαϙʔτ❌ ʲLancers x dipʳEngineer Meetup #1
ʲLancers x dipʳEngineer Meetup #1
͜͜Ͱٙʹࢥ͏ํ ͍ΔͷͰ ʲLancers x dipʳEngineer Meetup #1
Appίϯςφʹ Ҡߦ͠ͳ͍ͷ͔ʁ ʲLancers x dipʳEngineer Meetup #1
ϑϩϯτΤϯυͷ ՝ ʲLancers x dipʳEngineer Meetup #1
ϑϩϯτΤϯυͷωοΫͱվળ • ιʔείʔυ͕5GBҎ্ ɾyarn installͰ30Ҏ্͔͔Δ ɾίϯςφσϓϩΠͰ͕࣌ؒେʹ͔͔Δ • ϑϩϯτΤϯυΛׂ͔ͯ͠ΒҠߦ
ɾιʔεߏ্ɺύεʹΑΔॲཧׂ͕ࠔͰ͕͔͔Δ • ༧ΊϩʔΧϧͰϏϧυͯ͠ੜ͞ΕͨϑΝΠϧΛGitཧ͢Δӡ༻ ɾyarn installෆཁʹͳΓɺCI͕࣌ؒେ෯ʹॖ ɾAppαʔόʔͷίϯςφҠߦͰ͖Δ͕݅ͬͨ ʲLancers x dipʳEngineer Meetup #1
2022/04(࣮ࢪ) ʲLancers x dipʳEngineer Meetup #1
چ։ൃڥɺEC2Ͱͷ ӡ༻՝ ʲLancers x dipʳEngineer Meetup #1
SREͷӡ༻՝ • AnsibleίϯςφʹΑΔ։ൃڥͷ౷ҰʹΑΓ͕͔͔Δ ɾAppίϯςφΛECRͰڞ༻͢Δඞཁ͕͋Δ ɾύοέʔδͷߋ৽ͳͲίϯςφΛ࡞Γͯ͠ECRʹpush • Φʔτεέʔϧͷ࠶ઃఆͰAppαʔόʔΛ࡞Γ͞ͳ͚ΕͳΒͳ͍
ɾAMIΛखಈͰ࡞Γ͢ͱ͍͏τΠϧ͕ͬͨ·· • ࣗલͷσϓϩΠγεςϜ͕ଐਓԽ ɾෆ۩߹ͷରԠʹ͕͔͔Δ ʲLancers x dipʳEngineer Meetup #1
։ൃڥͷվળ ʲLancers x dipʳEngineer Meetup #1
৽։ൃڥ • Docker fi leʹΑΔҰൠతͳӡ༻ • ผϦϙδτϦ(playbook) ɾLancersຊମͷϦϙδτϦʹ౷Ұ •
Ansibleίϯςφഇࢭ • ϩάج൫Ͱར༻ ɾEC2ͱಉ༷awslogsΛΠϯετʔϧ ʲLancers x dipʳEngineer Meetup #1
BatchΛίϯςφ ʲLancers x dipʳEngineer Meetup #1
BatchαʔόʔECS Scheduled TaskʹҠߦ • όον100ݸҎ্ ɾԽͤͣEC2 1ͷΈͰӡ༻ ɾαʔόʔμϯAZো͕ى͖Δͱ
ɹɾαʔϏεʹӨڹ͕ग़ͯ͠·͏ঢ়گ • CakePHP4 ɾ80ݸͷΈҠߦ ɾ։ൃϝϯόʔ͕TerraformͰཧͰ͖ΔΑ͏ʹ • CloudWatch LogsɺSNSɺLambdaͰΤϥʔ௨ • CakePHP2ͷόονQAνʔϜ͕Ҡߦத ʲLancers x dipʳEngineer Meetup #1
ࣗલσϓϩΠγεςϜ ʹ͍ͭͯ ʲLancers x dipʳEngineer Meetup #1
ʮDeploy-Sanʯ • 2015~ ɾRuby on RailsͱJenkins ɾಠࣗγΣϧͰrsync •
Φʔτεέʔϧ࣌ ɾDeploy-san͔Β࠷৽ͷίʔυΛऔಘ ɾ୯Ұো • ϦϦʔε࣌ؒ ɾࠩߋ৽Ͱ1Ҏ ʲLancers x dipʳEngineer Meetup #1
CircleCIʹҠߦ ʲLancers x dipʳEngineer Meetup #1
CI/CDΛCircleCIʹҠߦ • MasterϚʔδ:ຊ൪ APIܦ༝:εςʔδϯά/ΧφϦΞ • ίϯςφσϓϩΠߴԽ ɾ.dockerignoreʹΑΔෆཁͳϑΝΠϧল͘
ɾDocker fi leͰෆཁͳύοέʔδͷ୨Է͠ ɾCircleCIͷcheckout_shallowΛར༻ ɹɾ࠷ޙͷίϛοτͷΈcheckout ɾremote-docker-layer-cachingΛ༗ޮԽ • 5Ҏ·ͰॖΊΔ͜ͱ͕Ͱ͖ͨ ʲLancers x dipʳEngineer Meetup #1
ΧφϦΞڥͷσϓϩΠΛ੍ݶ • ຊ൪DBΛࢀর ɾΧφϦΞڥʹ୭ͰϦϦʔεͰ͖ͯ͠·͏ • CircleCI ɾcontext
ɹɾSecurity Group ɹɾGitHub Teamsͷݖݶ͋ΔਓͷΈঝೝ • https://wiki.adachin.me/archives/1313/ ʲLancers x dipʳEngineer Meetup #1
ෛՙରࡦͱϨεϙϯε ʲLancers x dipʳEngineer Meetup #1
ෛՙରࡦ • EC2࣌ ɾc5ܥΠϯελϯε ɾECSͩͱCPUબͰ͖ͳ͍ • Fargate Spot
ɾطଘͷ3Fargate ɾΦʔτεέʔϧFargate Spot(ίετݮ) • Φʔτεέʔϧ ɾ࠷খͰ3ɺ࠷େͰ20 ɾCPU 20%Ͱ૿Ճ 10%Ͱݮগ • php-fpmνϡʔχϯάͨ͠͠ ʲLancers x dipʳEngineer Meetup #1
2022/06(Ҡߦ) ʲLancers x dipʳEngineer Meetup #1
ʲLancers x dipʳEngineer Meetup #1
ҠߦޙͷϨεϙϯεʹ͍ͭͯ • ϥϯαʔζதʹෛՙ͕ϐʔΫ • αʔόʔϨεϙϯεेmsఔ • ݱࡏ ɾCPU 60%Ͱ૿Ճ
40%Ͱݮগ ɾΦʔτεέʔϧ7 ʲLancers x dipʳEngineer Meetup #1
Ҡߦޙͷίετ ʲLancers x dipʳEngineer Meetup #1
·ͱΊ ʲLancers x dipʳEngineer Meetup #1
·ͱΊ • 1ͰΓ͖Δ͜ͱ͕Ͱ͖ͨ ɾάϧʔϓձࣾͰͷϊϋΛ׆͔ͤͨ • ੜ࢈ੑ্͕ظ ɾSREͷτΠϧݮ
ɾ։ൃ෦શମͷϦϦʔεϑϩʔվળ • ࠓޙ ɾϑϩϯτΤϯυͷϞμϯԽ ɾPHP8.1/CakePHPͷόʔδϣϯΞοϓ ʲLancers x dipʳEngineer Meetup #1
ΤϯδχΞϒϩάॻ͍ͯ·͢ ʲLancers x dipʳEngineer Meetup #1
͝ਗ਼ௌ͋Γ͕ͱ͏ ͍͟͝·ͨ͠ ʲLancers x dipʳEngineer Meetup #1