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
少数組織で開発する大規模サービス
Search
TVer Inc.
PRO
July 21, 2022
Technology
4
4.8k
少数組織で開発する大規模サービス
2022/07/21
Developers Summit 2022 Summer
イベントURL :
https://event.shoeisha.jp/devsumi/20220721
TVer Inc.
PRO
July 21, 2022
Tweet
Share
More Decks by TVer Inc.
See All by TVer Inc.
20240710_HR SUCCESS SUMMIT 2024_テーマセッション「エンジニア採用2.0」登壇資料(株式会社TVer_香坂)
techtver
PRO
0
41
採用応募者の個人情報保護の取扱いについて_株式会社TVer
techtver
PRO
0
290
月間4.5億回再生を超える大規模サービス TVer iOSアプリのリアーキテクチャ戦略 - iOSDC2024
techtver
PRO
1
6.3k
成長し続けるTVerサービスを支える オブザーバビリティとカスタマーサポート
techtver
PRO
4
5.2k
Change Tracking でデプロイを記録してパフォーマンスへの影響を分析しやすくしよう
techtver
PRO
1
190
採用人事の立場で行う採用広報・技術広報の裏側 〜TVerがエンジニア採用を本格化するために継続し続けたこと〜
techtver
PRO
2
640
株式会社TVer 会社紹介資料
techtver
PRO
9
70k
採用人事の立場から、採用広報の立ち上げや技術広報の促進をしている話
techtver
PRO
0
1k
バックエンドで頑張るSEO/OGP対策
techtver
PRO
0
1.9k
Other Decks in Technology
See All in Technology
開発組織を進化させる!AWSで実践するチームトポロジー
iwamot
1
170
MIMEと文字コードの闇
hirachan
2
1.4k
RemoveだらけのPHPUnit 12に備えよう
cocoeyes02
0
260
入門 PEAK Threat Hunting @SECCON
odorusatoshi
0
140
分解して理解する Aspire
nenonaninu
2
1k
(機械学習システムでも) SLO から始める信頼性構築 - ゆる SRE#9 2025/02/21
daigo0927
0
260
サイト信頼性エンジニアリングとAmazon Web Services / SRE and AWS
ymotongpoo
7
1.4k
アジャイルな開発チームでテスト戦略の話は誰がする? / Who Talks About Test Strategy?
ak1210
1
460
1行のコードから社会課題の解決へ: EMの探究、事業・技術・組織を紡ぐ実践知 / EM Conf 2025
9ma3r
8
3.5k
4th place solution Eedi - Mining Misconceptions in Mathematics
rist
0
140
OCI Success Journey OCIの何が評価されてる?疑問に答える事例セミナー(2025年2月実施)
oracle4engineer
PRO
2
120
ウォンテッドリーのデータパイプラインを支える ETL のための analytics, rds-exporter / analytics, rds-exporter for ETL to support Wantedly's data pipeline
unblee
0
120
Featured
See All Featured
Navigating Team Friction
lara
183
15k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
59k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
27
1.9k
We Have a Design System, Now What?
morganepeng
51
7.4k
Done Done
chrislema
182
16k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
120k
Bootstrapping a Software Product
garrettdimon
PRO
306
110k
Building Flexible Design Systems
yeseniaperezcruz
328
38k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
30
4.6k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
A designer walks into a library…
pauljervisheath
205
24k
Designing Experiences People Love
moore
140
23k
Transcript
গ৫Ͱ։ൃ͢ΔେنαʔϏε גࣜձࣾ TVer / Ճզ وࢤ (SRE) גࣜձࣾ TVer /
ւ ܙհ (Backend) 2022/07/21 Developers Summit 2022 Summer
͜ͷηογϣϯʹ͍ͭͯ ຊ͓͢Δ͜ͱ • TVerϦχϡʔΞϧʹ͓͚ΔϞχλϦϯάվળ • গਓͰ։ൃͱվળΛߦ͏ͨΊͷ New Relic׆༻ํ๏
ࣗݾհ ɾՃզ وࢤ (@TAKA_0411) ɾגࣜձࣾTVer ɹαʔϏεࣄۀຊ෦ SRE ɾझຯαφͱήʔϜͱVTuber ɾϗʔϜαφߔޱԹઘ تָཬ
ΞδΣϯμ • TVerͷհ • αʔϏεϦχϡʔΞϧʹ͍ͭͯ • ϦϦʔε४උฤ • ϦϦʔεޙͷվળ •
·ͱΊ
ΞδΣϯμ • TVerͷհ • αʔϏεϦχϡʔΞϧʹ͍ͭͯ • ϦϦʔε४උฤ • ϦϦʔεޙͷվળ •
·ͱΊ
TVerͷհ
TVerͷհ [TVer] 2022 3 ݄ͷಈը࠶ੜ͕ 2 ԯ 5 ઍສճ/݄Λಥഁ!
https://tver.co.jp/news/20220426-1.html
TVerͷհ TVerͷ ٕज़ελοΫ
TVerͷٕज़ελοΫ ※ϑϩϯτΤϯυɺTVΞϓϦɺϞόΠϧΞϓϦέʔγϣϯ ֎෦ͷڠྗձࣾͷ͓ੈʹͳ͓ͬͯΓ·͢
TVerͷհ TVerͷ ΠϯϑϥετϥΫνϟ
TVerͷΠϯϑϥετϥΫνϟ WebαʔϏεͱͯ͠ͷTVer ൪࿈ಈγεςϜͰ Քಇ͍ͯ͠ΔϚΠΫϩαʔϏε
TVer (WebαʔϏε) ͷΠϯϑϥετϥΫνϟ
ΞδΣϯμ • TVerͷհ • αʔϏεϦχϡʔΞϧʹ͍ͭͯ • ϦϦʔε४උฤ • ϦϦʔεޙͷվળ •
·ͱΊ
αʔϏεϦχϡʔΞϧʹ͍ͭͯ
αʔϏεϦχϡʔΞϧʹ͍ͭͯ [TVer] ςϨϏίϯςϯπͷࢹௌମݧࠂମݧͷ্Λࢦ͢ ʮTVer IDʯͷఏڙΛ։࢝ https://tver.co.jp/news/20220404-1.html
αʔϏεϦχϡʔΞϧʹ͍ͭͯ γεςϜͷมߋ • ΠϯϑϥͷԽ • όοΫΤϯυͷ৽ • ϞχλϦϯάͷ৽
αʔϏεϦχϡʔΞϧʹ͍ͭͯ γεςϜͷมߋ • ΠϯϑϥͷԽ • όοΫΤϯυͷ৽ • ϞχλϦϯάͷ৽ɹ←ࠓճ͜͜ͷ ϦχϡʔΞϧΛػʹ New
Relic OneΛϑϧ׆༻
ϞχλϦϯάͷ৽ ϞχλϦϯάͷ৽ • ͷཧ • ಋೖ͢Δػೳͷऔࣺબ • μογϡϘʔυͱσʔλͷ׆༻
ϞχλϦϯάͷ৽ ϞχλϦϯάͷ৽ • ͷཧ • ಋೖ͢Δػೳͷऔࣺબ • μογϡϘʔυͱσʔλͷ׆༻
ϞχλϦϯάͷ৽ Before (ʙ202112݄) ʮNew RelicΛ ยखؒ ͰݟΔͷ͕ͭΒ͍ʂʯ Backend γε Πϯϑϥ
New Relic पΓͷରԠ New Relic पΓͷରԠ New Relic पΓͷରԠ APIͷ։ൃ Fargateݕূ ෛՙςετ ΞΧϯτ ઃܭͱඋ ίετࢼࢉ ͓Αͼܖ ֤෦ॺ͔Β ͷ͍߹Θ ͤରԠ νϡʔχϯά CI/CDඋ ཁ݅ཧ ΞϓϦϑϩ ϯτΤϯυͱ ͷௐ Πϯϑϥߏங ͱCDKपΓͷ උ
After (20221݄ʙ) ϞχλϦϯάͷ৽ SRE (ࢲ) New RelicपΓͷλεΫ ·Δ͝ͱҾ͖ड͚·͢Ͷ ΈΜͳ ͡Ό͋ϦʔυΑΖ͘͠ʂ
ଞͷλεΫਐΊΔͶ
࠷ۙ ϞχλϦϯάͷ৽ Backend SRE μογϡϘʔυͰ ͜ΜͳϝτϦΫε͕ݟ ͍ͨΜ͚ͩͲʙ ͜ͷ߹ʹΞϥʔτ ඈͯ͠ཉ͍͠ΑͶ
Γ͍ͨࣄΛԕྀͤͣʹ૬ஊɾ࣮ݱͰ͖Δମ੍ ◦◦ͱ͍͏ΛΩʔʹ͠ ͯΤϥʔΛௐ͍ࠪͨ͠ ͱࢥͬͯΔΘ͚Α Γ·͢
ϞχλϦϯάͷ৽ ϞχλϦϯάͷ৽ • ͷཧ • ಋೖ͢Δػೳͷऔࣺબ • μογϡϘʔυͱσʔλͷ׆༻
ϞχλϦϯάͷ৽ NRU101 New Relic One ೖ https://newrelic.com/jp/resources/presentations/nru101_20211027
ϞχλϦϯάͷ৽ ࣗͷཧ • MELTΛશͯຬ͍ͨͨ͠ ◦ Metrics, Events, Logs, Traces •
ΤϥʔௐࠪͷͨΊʹ Traces(APM)Λಋೖ͍ͨ͠
ϞχλϦϯάͷ৽ ݱ࣮ • New RelicͷGo Agent(APM)ͷ ಋೖ͕एׯ໘ • APMͷΦʔόʔϔου͕ෆ҆ •
pprofͰྑ͘ͳ͍ʁ • ͍ͬͯ͏͔ࠓඞཁͳΜ͚ͩͬʁ ϦϦʔε·Ͱ͋ͱ2ϲ݄ɾɾɾ
ϞχλϦϯάͷ৽ ͱΓ͋͑ͣ New Relic Go Agent Λ ඞཁ࠷খݶͷՕॴʹ͚ͩಋೖͨ͠
ϞχλϦϯάͷ৽
ϞχλϦϯάͷ৽ Dev (Backend)ɹɹOps (SRE) ಋೖ݁Ռ • EchoͷIntegrationΛઃఆ͢Δͩ ͚Ͱେ෯ʹՄࢹԽͰ͖ͨ • Τϥʔൃੜ࣌ͷτϦΞʔδ͕
Մೳʹͳͬͨ • ࠷খݶͷ࿑ྗͰ࠷େͷޮՌΛಘ Δ͜ͱ͕Ͱ͖ͨ
ϞχλϦϯάͷ৽ গ৫ × New Relic One • ػೳ͕๛ͰΦʔϧΠϯϫϯ • ಋೖͷϋʔυϧ͕͍
• υΩϡϝϯτɾαϙʔτɾίϛϡχςΟ͕ॆ࣮ • ͱΓ͋͑ͣಋೖ͢Δ͚ͩͰେ෯ʹՄࢹԽͰ͖Δ ಋೖɾӡ༻ͷίετ͕࠷খݶͰࡁΜͩ
ϞχλϦϯάͷ৽ ϞχλϦϯάͷ৽ • ͷׂ • ಋೖ͢Δػೳͷऔࣺબ • μογϡϘʔυͱσʔλͷ׆༻
ϞχλϦϯάͷ৽ ΫϥΠΞϯτͷಉ࣌ଓΫϥογϡͷϝτϦΫε
ϞχλϦϯάͷ৽ ि1ͰϞόΠϧΞϓϦͷΫϥογϡωοτϫʔΫΤϥʔΛௐࠪ͠ɺࣾ͘ʹڞ༗
ϞχλϦϯάͷ৽ μογϡϘʔυͱσʔλͷ׆༻ • ඞཁͳϝτϦΫεͰμογϡϘʔυΛඋ • ϑϩϯτΤϯυ͔ΒόοΫΤϯυ·ͰΧόʔ • ΤϥʔΛௐࠪͯࣾ͠ʹڞ༗ • APIͷվળʹAPMΛ׆༻
ࣗݾհ ɾւ ܙհ (@voidofglans) ɾגࣜձࣾTVer αʔϏεࣄۀຊ෦ ɹϦʔυ ΤϯδχΞ ɾ͖ͳͷ:ՐͰম͍ͨϗϧϞϯ ɾಸྑࡏॅͷԕִۈத
ɾNFCຒΊࠐΜͩΓ͢Δͷ͕͖
ΞδΣϯμ • TVerͷհ • αʔϏεϦχϡʔΞϧʹ͍ͭͯ • ϦϦʔε४උฤ • ϦϦʔεޙͷվળ •
·ͱΊ
ϦϦʔε४උฤ • ϑΣʔζʹΑͬͯNew Relicͷ͍͚ • গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ • ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
ϦϦʔε४උฤ • ϑΣʔζʹΑͬͯNew Relicͷ͍͚ • গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ • ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
ϑΣʔζʹΑͬͯNew Relicͷ͍͚ APMಋೖޙͷϦϦʔε·ͰͷϑΣʔζ • 2ϲ݄લ • 1ϲ݄લ • 2िؒલ
ϑΣʔζʹΑͬͯNew Relicͷ͍͚(2ϲ݄લ • Δ͖͜ͱόά௵͠ • ओʹར༻ͨ͠ػೳ ◦ Errors Inbox ◦
Errors ◦ NRQL • 4xx/5xxܥΤϥʔͷ༰Λੳ ◦ 4xx: ΫϥΠΞϯτ͕ఆ͍ͯ͠ͳ͍ύϥϝʔλ͕ͳ͍͔ ◦ 5xx: ఆ͍ͯ͠ͳ͍ॲཧλΠϜΞτ͕ͳ͍͔
ϑΣʔζʹΑͬͯNew Relicͷ͍͚(1ϲ݄લ • Δ͖͜ͱෛՙࢼݧʹΑΔϘτϧωοΫௐࠪ • ओʹར༻ͨ͠ػೳ ◦ Transactions ◦ Go
Runtime ◦ CloudWatch Metrics • ߴෛՙ࣌ͷΞϓϦέʔγϣϯશମͷڍಈΛੳ ◦ TransactionsͰͷSlowest95percentileͳͲΛࢦඪʹ ◦ ϝϞϦϦʔΫɺ์ஔ͞Εͨgoroutineͷଘࡏ ◦ GC AllocationʹΑΔஅଓతͳੑೳྼԽ
ϑΣʔζʹΑͬͯNew Relicͷ͍͚(2िؒલ • Δ͖͜ͱཁٻੑೳͷୡ • ओʹར༻ͨ͠ػೳ ◦ Transactions ◦ CloudWatch
Metrics • શମΛ௨ͨ͠ෛՙࢼݧͰͷ҆ఆύϑΥʔϚϯε ◦ 10msҎ্͔͔ΔAPI ◦ ֤ϛυϧΣΞͷΫΤϦଓͷ ◦ ॻ͖ࠐΈܥAPIͰͷLock,Waitͷ
ϦϦʔε४උฤ • ϑΣʔζʹΑͬͯNew Relicͷ͍͚ • গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ • ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ ૣ͘ߦ͖͚ͨΕɺͻͱΓͰߦ͚ɻ ԕ͘·Ͱߦ͖͚ͨΕɺΈΜͳͰߦ͚ɻ If you want to go fast, go
alone. If you want to go far, go together.
গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ ͓͚ͬʂ ͡Ό͋ͪΐͬͱ1ਓͰߦͬͯ͘Δʂ
গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ ϦϦʔε·Ͱʹ ΈΜͳݱू߹Ͱʂ
• ͦΕͧΕ͕ͦΕͧΕͷ࠷Ͱతʹ • ͷ໌֬ͳղ • ໌֬ͳతͷڞ༗ গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ
• ίέͳ͍͜ͱ͕ॏཁ • Backend/Infra/SREͦΕͧΕ͕ઐੑΛ࣋ͬͯಠཱ͠ ͨϝϯόʔ • ίϛϡχέʔγϣϯίετ͕࠷ݶʹ͑ΒΕͨ গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ
গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ • ൫ͬͨ • ࣍ΈΜͳͰԕ͘ߦ͜͏
ϦϦʔε४උฤ • ϑΣʔζʹΑͬͯNew Relicͷ͍͚ • গਓͰεϐʔυײΛམͱ͞ͳ͍ͨΊʹ • ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
• Α͋͘ΔಥൃతͳεύΠΫ ◦ ্࿈ಈ์ૹΕʹΑΔྲྀೖ ▪ 1minޙ͖ͬ͞·Ͱͷ10ഒҎ্ͷϦΫΤετ ▪ ૿͑Δಉ࣌ଓ ◦ ΞΠυϧࣄॴλϨϯτ༷ग़ԋ൪
◦ ϦΞϧλΠϜ৴൪ऴྃ࣌ ▪ Ϣʔβʔ͕Ұ੪ʹβοϐϯά ▪ ಉظͷͱΕͨສʙेສͷϢʔβʔΞΫγϣϯ ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
• ϦϦʔεલʹSRE͕͔ͬ͠Γઐͯ͘͠Εͨ ◦ New RelicΛݟ͓͚ͯҰൠతͳࢦඪશ෦ݟΕΔ ◦ ఆ͞ΕΔΞΫηεύλʔϯʹ͓͚ΔMetricsͷมԽΛࣄ લʹೝࣝ͢Δ ◦ ෛՙࢼݧ/ରࡦʹूத͢Δ͜ͱ͕Ͱ͖ͨ
ύϑΥʔϚϯεɾνϡʔχϯά/ෛՙରࡦ
ΞδΣϯμ • TVerͷհ • αʔϏεϦχϡʔΞϧʹ͍ͭͯ • ϦϦʔε४උฤ • ϦϦʔεޙͷվળ •
·ͱΊ
ϦϦʔεޙͷվળ • ԣஅతʹՄࢹԽ͞ΕͨMetricsͷԸܙ • ఆظతʹ࣮ࢪ͢ΔμογϡϘʔυோΊΔձ • ͷʹΑΔରԠͷ୲อ
ԣஅతʹՄࢹԽ͞ΕͨMetricsͷԸܙ • ҆ఆՔಇ͍ͯ͠Δ͜ͱ͕ԕͰΘ͔Δ҆৺ײ
ԣஅతʹՄࢹԽ͞ΕͨMetricsͷԸܙ • σόΠε͝ͱͷ࣮ʹΑΔࠩҟͷݕ ◦ σόΠεछผΛCustomAttributeʹ֨ೲ͢Δ ◦ ϦΫΤετΤϥʔͷѲ ▪ iOSΞϓϦ͚ͩಛఆͷϖʔδͰͷAPIϦΫΤετ͕ҟৗʹଟ͍ ⿌
ϦετදࣔͰཁૉ͝ͱʹAPIΛݺͼग़͍ͯͨ͠ ⿌ 30minΒͣͰݪҼಛఆˠ։ൃϕϯμʔͷڞ༗ ⿌ 3ޙͷϦϦʔεʹแؚ͠ɺແࣄղফ🎉
ԣஅతʹՄࢹԽ͞ΕͨMetricsͷԸܙ • ։ൃॳఆ͞Ε͍ͯͳ͍ϢʔβʔγφϦΦ ◦ ࢥͬͨͷͷ3ഒ͘Β͍ݕࡧػೳ͕ΘΕ͍ͯΔʂʂ ◦ ࢥͬͨΑΓxxͷػೳ͕ΘΕͯͳ͍ʂʂ ఆͱӡ༻ဃ͢Δͷ
• աͳϦιʔε͕͙͢Θ͔Δ ◦ ϦϦʔεॳظ҆৺ΛۚͰങ͍ͬͯͨͷͰ५ͳϦιʔε Λ༻ҙ͍ͯͨ͠ ◦ ίετΠϯύΫτΛ࣠ʹॱ࣍Ϧιʔεͷ࠷దԽΛߦ͑ͨ ▪ ͪΖΜ͜ΕՄࢹԽ͞Ε͍ͯΔͷͰμϝͳ߹ͷݕਝ ԣஅతʹՄࢹԽ͞ΕͨMetricsͷԸܙ
• ࡢࠓؾʹͳͬͨࢦඪΛμογϡϘʔυʹՃ • Metricsͷҧײʹؾͮ͘ᄿ֮ͷ܇࿅ • োޙτϥϒϧൃੜ࣌ͷݟͷूੵ ఆظతʹ࣮ࢪ͢ΔμογϡϘʔυோΊΔձ
ͷʹΑΔରԠͷ୲อ • ਖ਼͘͠ઐʹͤΔ ◦ த్ʹ͍݉ͯ͠ΔͱɺԱଌओ؍͕ೖͬͯ͠·͍͕ ͪ ◦ ໌֬ͳͷ ▪ SREࣄ࣮ͱϩάΛ͢ͱ͜Ζʹઐ೦
ΞδΣϯμ • TVerͷհ • αʔϏεϦχϡʔΞϧʹ͍ͭͯ • ϦϦʔε४උฤ • ϦϦʔεޙͷվળ •
·ͱΊ
·ͱΊ • 1ਓͰ๊͑ࠐΉͷΑ͘ͳ͍ • ૣ͘ΔͨΊʹΛ໌֬ʹղ͢Δඞཁ͕͋Δ • ͰͬͺΓΈΜͳͰૣ͘ԕ͘ߦ͖͍ͨʂʂ
·ͱΊ • ແࣄϦϦʔεˍ҆ఆӡ༻͕࢝·ͬͨ🎉 • NewRelicΛ։ൃڥͰ׆༻ ◦ ։ൃ࣌ͷόάτϥοΩϯά ◦ ՝ཧͱͷ࿈ܞ ◦
QAνʔϜʹΑΔNewRelicͰͷࣄ࣮ڞ༗ • ։ൃ৫ͷϦϑΝΫλϦϯάΛ࢝Ί͍͖ͯ·͢ ◦ ࠓ·Ͱͷ୲ΛਓνʔϜͰ୲ ◦ ઐνʔϜʹΑΔεϧʔϓοτΛ୲อͨ͠։ൃ৫
None
None