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
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
Search
adachi.ryo
July 11, 2024
Programming
19k
11
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
入社1ヶ月でここまでやった!Findy Toolsインフラ支援の最適化
https://findy.connpass.com/event/323099/
【増枠】Embedded SRE 現場に寄り添うアプローチの資料です。
adachi.ryo
July 11, 2024
More Decks by adachi.ryo
See All by adachi.ryo
横断SREがSRE社内留学制度 / Enablingになぜ踏み切ったのか
rvirus0817
0
620
SREチームをどう作り、どう育てるか ― Findy横断SREのマネジメント
rvirus0817
0
5k
ファインディの横断SREがTakumi byGMOと取り組む、セキュリティと開発スピードの両立
rvirus0817
1
5.7k
Findy Team+のSOC2取得までの道のり
rvirus0817
0
5.2k
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
5.7k
技術的負債で信頼性が限界だったWordPress運用をShifterで完全復活させた話
rvirus0817
2
8.7k
Amazon Security Lakeを活用したセキュリティログの集約とAIによる可視化の最前線
rvirus0817
0
540
TechBull Membersの開発進捗どうですか!?
rvirus0817
0
2k
クラウド脆弱性の傾向とShisho Cloudの活用
rvirus0817
0
320
Other Decks in Programming
See All in Programming
2年かけて Deno に DOMMatrix を実装した話 / How I implemented DOMMatrix in Deno over two years
petamoriken
0
220
書籍「プロフェッショナルAI駆動開発」紹介スライド
juntaromatsumoto
0
340
in-process GraphQL のすすめ #ginzajs
izumin5210
4
1.5k
Jindong: Introducing Declarative Haptics in Compose Multiplatform
l2hyunwoo
0
130
S3 を使うアプリケーションをローカル完結で動かすことに全力を注いでみた / Running S3 Apps Offline
contour_gara
0
580
ソフトウェアエンジニアにとっての生成AI - 特性を知って使い倒す / generative ai for software enginner
kishida
7
2.1k
freeeにおけるEvalsの実践例の紹介
freee
PRO
0
140
ここ半年くらいでAIに作らせたR用ツール
eitsupi
0
400
KotlinConf Extended South Korea 2026 Keynote
l2hyunwoo
0
120
為什麼你並不需要ViewModel / No, you don't need a ViewModel
lovee
1
510
コンパウンドプロダクト開発のためのローカルプロセスマネージャー再発明 #layerxgo
izumin5210
0
190
VibeCodingからAgenticWorkflowへ
starfish719
0
790
Featured
See All Featured
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.8k
Building an army of robots
kneath
306
46k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
730
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
500
The State of eCommerce SEO: How to Win in Today's Products SERPs - #SEOweek
aleyda
2
11k
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
2.1k
Winning Ecommerce Organic Search in an AI Era - #searchnstuff2025
aleyda
1
2.1k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
10k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
2.5k
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
900
Done Done
chrislema
186
16k
Transcript
ೖࣾ1ϲ݄Ͱ͜͜·Ͱͬͨʂ Findy ToolsΠϯϑϥࢧԉͷ࠷దԽ ʮ2024/7/11 Findy TechBrew in ౦ژEmbedded SRE ݱʹدΓఴ͏Ξϓϩʔνʯ
ϑΝΠϯσΟגࣜձࣾ ϓϩμΫτ։ൃ෦/SRE ҆ୡ ྋ(adachin0817)
ࣗݾհ
3 ࣗݾհ ҆ୡ ྋ(@adachin0817) ɾϑΝΠϯσΟ(ג) / ϓϩμΫτ։ൃ෦/Senior SRE ɾBlog: blog.adachin.me/wiki.adachin.me
ɾTechBull(ٕज़ίϛϡχςΟ) techbull.cloud ɹɾʮSRE/ۦ͚ग़͠ΤϯδχΞͷϝϯλϦϯά ྦྷܭ300໊↑ʯ ɾ͔ͭͯOSS൛VulsͷίϯτϦϏϡʔλʔΠϕϯτओ࠵ͳͲ ɾ89ੜ·Εɺ౦ژཱ۠ग़Ͱ࡛ۄݝय़෦ࢢ͕ݩ ɾ࠺ͱϑϨϯνϒϧυοάͷࣂ͍ओͰ͋Δ
XͰݟ͔͚ͨਓʂ 🤚
ೖࣾͯ͠·ͩ1ϲ݄ʂʂ φχϞϫΧϥφΠ
SREνʔϜൃʹ͍ͭͯ
SREνʔϜൃʹ͍ͭͯ • όοΫΤϯυνʔϜ͕SREతͳ׆ಈΛ͍ͯͨ͠ ◦ ͔͠͠ɺόοΫΤϯυνʔϜ͕ΠϯϑϥରԠͱͳΔͱϦιʔεෆ ◦ αʔϏε͕૿͑ଓ͚ΔҰํɺSREతվળ͕ͳ͔ͳ͔Ͱ͖͍ͯͳ͔ͬͨ • ڈ͔Β࠾༻Λ࢝ΊͯɺSREνʔϜݱࡏ3໊Ͱ׆ಈ ◦
GitHubͷΧϯόϯํࣜͰλεΫཧ͓ͯ͠Γɺேձ15Ͱ݁ 7
Findy Tools͔Βࢧԉ͍ͯ͜͠͏ʂ
Findy Toolsͱ
Findy Toolsͱ • ։ൃπʔϧʹಛԽͨ͠ϨϏϡʔαΠτ ◦ πʔϧબఆʹؔ͢Δෆ҆Λղফ ◦ ಋೖݕ౼ʹඞཁͳใΛఏڙ • ݱͰΑ͋͘Δ͓Έ
◦ ϝϦοτɾσϝϦοτ͕͔Βͳ͍ ◦ ใऩूʹ͕͔͔࣌ؒΔ ◦ πʔϧબఆͷܾఆଧ ◦ ಋೖޙʹൃੜ͢Δ՝ • ͓͔͛͞·Ͱͨ͘͞Μͷʂ ◦ ձ༷ࣾʹࣥච͍͍͓ͨͩͯΓ·͢ʂ 10
Findy Toolsͷٕज़ελοΫ
Findy Toolsͷٕज़ελοΫ • Ruby on Rails • Next.js • Docker
• AWS ◦ ECS/Fargate ▪ Front Container ▪ Rails Container ▪ Nginx Container • ALB ◦ CloudFront ◦ Aurora/MySQL8 ◦ WAF • GitHub Actions(CI/CD) • Terraform(Module) • Datadog/Sentry 12
औΓΜͩ͜ͱ (Aurora όʔδϣϯΞοϓ) ͦͷᶃ
Aurora όʔδϣϯΞοϓ • RDS SSL/TLSূ໌ॻͷߋ৽ ◦ ଞʹӨڹ͕ͳ͍Α͏ʹrds-ca-2019ͱಉ͡ΞϧΰϦζϜͷRSA2048Λ༻͍ͯ͠Δ ◦ rds-ca-rsa2048-g1ʹมߋ ◦
࠶ىಈμϯλΠϜͳ͍ͷͰαΫοͱྃ • Aurora MySQLϚΠφʔόʔδϣϯΞοϓ ◦ 8.0.mysql_aurora.3.04.0→8.0.mysql_aurora.3.07.0 ▪ μϯλΠϜ͋Δ͔ʹ͍ͭͯݒ೦ ▪ ·ͣ։ൃڥ(Docker)͔ΒόʔδϣϯΞοϓͱಈ࡞֬ೝ ◦ ͜ͷػձʹAmazon Aurora Blue/Green DeploymentsΛݕূ ▪ ͔͠͠1࣌ؒҎ্͔͔ΔͨΊɺStgͰͦͷ··όʔδϣϯΞοϓ(10) ◦ ࠶ىಈμϯλΠϜͳ͔ͬͨͷͰɺதʹରԠͯ͠ຊ൪ྃ 14 ʮೖࣾͯ͠Θ͔ͣ3ͰରԠʂʯ
औΓΜͩ͜ͱ (ࢹ/ΦϒβʔόϏϦςΟ) ͦͷᶄ
ࢹ/ΦϒβʔόϏϦςΟ • ࢹ/ΦϒβʔόϏϦςΟपΓ ◦ ࠓ·ͰSentryͰΤϥʔτϥοΩϯάͱAPMͷΈ͚ͩ ◦ Մ؍ଌੑେࣄͳͷͰ͍͖ͬͯ • ։ൃϝϯόʔ3໊ ◦
ϝϯόʔͱग़ࣾ࣌ʹ1on1 ▪ ձ͍ͯ͘͠தͰDatadogͰ౷Ұ͢Δ͜ͱʹͳͬͨ ▪ ΤϥʔτϥοΩϯάSentryͷํ͕͍҆ͨΊܧଓ ▪ APMDatadogʹҠߦ • Πϯϑϥ/ΞϓϦέʔγϣϯϦιʔε ◦ ECS(CPU,Memory) ◦ ֎ܗࢹ(Response Time,Status Code) ◦ CloudFront(5xx,Error Rate) ◦ APM(Error,Latency) ◦ RDS(CPU,Memory,DeadLock,Network,Connection,Select Latency) ◦ Πϕϯτϩά(Error,Fail) ◦ ΞϥʔτશͯTerraformԽɺμογϡϘʔυखಈͰཧ 16
ࢹ/ΦϒβʔόϏϦςΟ 17 ʮීஈݟ͍͑ͯͳ͔ͬͨ෦͕ɺΦϒβʔόϏϦςΟͷ ্ʹΑͬͯՄࢹԽ͞Εͨʂʯ
औΓΜͩ͜ͱ (SLI/SLO) ͦͷᶅ
SLI/SLO • SLI/SLOͷࡦఆ ◦ SLI/SLOͷӡ༻γϯϓϧͳߏͰ࣮ݧ͍ͯ͘͠ ▪ τοϓϖʔδͷͦͷଞͷϖʔδͷද͕ࣔ࣌ؒ2ඵҎͰ͋Δׂ߹͕99%Ҏ্ ▪ τοϓϖʔδͦͷଞͷϖʔδͷϦΫΤετॲཧޭ͕99%Ҏ্ •
HTTPεςʔλείʔυ 4xxҎ֎ ▪ ΤϥʔόδΣοτ • 30ؒʹ0.1%ͷμϯλΠϜ͕100%ফඅ͞Εͨ߹ ▪ όʔϯϨʔτ • 30ؒʹ6͓࣌ؒΑͼաڈ30ؒͰ6ഒҎ্ͷ߹ ▪ আ֎ • ΠϯϑϥϦιʔε ◦ CPUɺMemoryɺωοτϫʔΫɺσΟεΫ ◦ සൟʹΞϥʔτ͕ग़ΔͨΊαʔϏεͷӨڹʹͳΒͳ͍ ▪ ৼΓฦΓ • ִिͰSLOͷݟ͠Λߦ͏ 19
SLI/SLO 20 ʮࠓޙ։ൃϝϯόʔ͕ӡ༻Ͱ͖ΔΑ͏ʹSRE͕ ϑΥϩʔ͍ͯ͘͠ʂʯ
औΓΜͩ͜ͱ (։ൃڥͷվળ) ͦͷᶆ
։ൃڥͷվળ • ։ൃڥΛJustfileԽͯࣗ͠ಈߏங ◦ ։ൃڥ ▪ rails server ▪ Node.js(npm
run) ▪ MySQL8(docker-compose) ◦ ࠓ·ͰखॱॻΛݟͳ͕Βߏங͍ͯͨ͠ ▪ खॱ͕ଟ͍ͨΊ࿙Ε͕ൃੜͯ͠͠·͏ ◦ Justfile(Task Runner Tool) ▪ https://github.com/casey/just ▪ Makefileͱൺֱ͢Δͱ • γϯϓϧͰײతͳߏจ • γΣϧεΫϦϓτʹࣅͯΔ • ґଘؔͷཧ͕؆୯ • ֶशίετ͕͍ 22
։ൃڥͷվળ(justfile) 23 ʮ։ൃϝϯόʔ͕εϐʔσΟʔʹߏஙͰ͖ΔΑ͏ʹʂʯ
·ͱΊ/ࠓޙΓ͍ͨ͜ͱ
·ͱΊ/ࠓޙΓ͍ͨ͜ͱ • ৴པੑͱจԽͮ͘ΓձͰ͢ ◦ ີʹؔΘΓͳ͕Βࢧԉ͍ͯ͘͠ • Findy ToolsͰ࣮ݧతʹߦ͍ͬͯΔࢹपΓ ◦ ৫ԣஅʹΑΔϊϋΛڞ༗
▪ Findy ▪ Findy Freelance ▪ Findy Team+ • AWSηΩϡϦςΟपΓ্ • AWSίετݮ • ։ൃϝϯόʔͷੜ࢈ੑ্ ◦ ։ൃڥ શDockerԽ ◦ ECS ArmҠߦ ◦ Stgෳڥ ࣗಈߏங ◦ σϓϩΠߴԽ 25
࠷ޙʹʂ
গ͠ͰϑΝΠϯσΟͰಇ͘͜ͱʹ͝ڵຯ͋Εɺؾܰʹ͝࿈བྷ͍ͩ͘͞ʂ Ͳ͕͜దਖ਼͔Θ͔Βͳ͍ͱ͍͏ํؚΊͯɺΦʔϓϯϙδγϣϯ(ॻྨબߟ໘ஊ࣌ʹϙδγϣϯ͢Γ߹Θͤ)ΧδϡΞϧ໘ஊͷਃࠐΈΛߦ͍ͬͯ·͢ʂ 27 ※ืूঢ়گʹΑͬͯมಈ͠·͢ ։ൃνʔϜɾσβΠφʔ • CTOީิ • EM •
ϑϩϯτΤϯυ • ػցֶशΤϯδχΞ • όοΫΤϯυ •σʔλΤϯδχΞ • SRE • UIσβΠφʔ Findy Career • ࣄۀ෦ީิ • ϚʔέςΟϯά • ࣄΞγελϯτ • PdM • ΧελϚʔαΫηε ◦ Ϧʔμʔީิ / ϝϯόʔ • ϢʔβʔαΫηε ◦ Ϧʔμʔީิ / ϝϯόʔ Findy Team+ • ৽نࣄۀ։ൃ • ηʔϧε • ΧελϚʔαΫηε • PdM ւ֎ਪਐ • ্ཱͪ͛ϝϯόʔ ◦ ϢʔβʔରԠ ◦ اըରԠ ࣾࣨ • ࣾࣨީิ • ࠾༻৫ਓࣄϦʔμʔ • ใ୲ ίʔϙϨʔτଞ • CFOީิ • ܦӦاը • ๏ • ্४උ୲ • ࣄۀاը • ܦཧ ืूதͷϙδγϣϯ
SREΛେืूதʂ🥹 ઈࢍϩʔυϚοϓΛ࡞தͰ͢ʂʂ ڵຯ͋Δํʂͥͻͱ͓͠·͠ΐ͏ʂʂ🤝 (δϡχΞҭ͠·͢ʂ) \ ಛ ʹ ʂ/
͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ