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
サービス基盤におけるRuby~JSOX編~ / speee_pepabo_ruby
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Ryo Takaishi
January 18, 2017
Technology
5k
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
サービス基盤におけるRuby~JSOX編~ / speee_pepabo_ruby
Ryo Takaishi
January 18, 2017
More Decks by Ryo Takaishi
See All by Ryo Takaishi
通知再考 ~ 最高のアラート通知を今改めて考える ~
takaishi
0
520
2025 年私の Terraform に関するふりかえり / ゆるSRE勉強会 #14
takaishi
0
460
スロークエリとの戦いの軌跡2024 / ゆるSRE勉強会 #10
takaishi
1
900
AWSを使ったカンファレンスの 配信アーキテクチャ - 吉祥寺.pm37
takaishi
2
630
どうやればインシデント対応能力を鍛えられるのか? / SRE Kaigi 2025
takaishi
13
13k
Podcastを3年半続ける技術と得た物 / ya8-2024
takaishi
5
2.1k
入門!ClusterAPI 〜 k8s クラスターも k8s API で管理したい 〜 / k8s_meetup_31
takaishi
3
4.8k
CloudNativeへの道 リーダーシップとフォロワーシップ / 201911-cndjp13
takaishi
2
1k
ClusterAPI v1alpha1 → v1alpha2 / k8s_meetup_23
takaishi
1
1.7k
Other Decks in Technology
See All in Technology
最適な自走を最小限の支援で — M&Aで拡大する組織で少人数SREが挑んだ1年 / SRE NEXT 2026
genda
0
930
そのタスクオンスケですか?
poropinai1966
0
150
勉強会企画をアプリで構造化してみた 〜そこで見えた、AIとの付き合い方〜 / I've structured a study group plan using an app.
pauli
0
340
cccccc
moznion
0
1.9k
Baseline対応のDOMの型定義を作った
uhyo
3
730
AI時代の EM への処方箋
staka121
PRO
0
120
AI時代のエンジニアキャリアについて今一度考える
sakamoto_582
2
1.5k
[2026-07-15] AI Ready なはずだったアーキテクチャと、見えてきた課題・次に目指す状態
wxyzzz
4
2.3k
Control Planeで育てるBtoB SaaSの認証基盤 - SRE NEXT 2026
pokohide
1
2.2k
Claude Code 珍プレー好プレー
shinyasaita
0
310
ruby.wasmとPicoRuby.wasmに対応した仮想DOMライブラリを作ってる話 #kaigieffect_kaigi
sue445
PRO
0
130
ADDF - ループエンジニアリングするフレームワークを作ったら/I Didn't Set Out to Build Loop Engineering, But ADDF Did
fruitriin
0
110
Featured
See All Featured
brightonSEO & MeasureFest 2025 - Christian Goodrich - Winning strategies for Black Friday CRO & PPC
cargoodrich
3
750
Darren the Foodie - Storyboard
khoart
PRO
3
3.4k
Principles of Awesome APIs and How to Build Them.
keavy
128
18k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
A Tale of Four Properties
chriscoyier
163
24k
My Coaching Mixtape
mlcsv
0
170
Testing 201, or: Great Expectations
jmmastey
46
8.2k
Designing for Performance
lara
611
70k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.9k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.5k
Side Projects
sachag
455
43k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
210
Transcript
ʙ+409ฤʙ ∁ੴྒ(.01FQBCP *OD 3VCZΤϯδχΞ͕ޠΔɺͷৼΓฦΓͱ͜Ε͔Β αʔϏεج൫ʹ͓͚Δ3VCZ
ιϑτΣΞΤϯδχΞ ∁ੴྒ!S@UBLBJTIJ (.01FQBCP *ODNJOOFج൫νʔϜ
ΩʔϘʔυপ w ڈɿࣗΩʔϘʔυϦϓϨʔε͍ͨ͠ʜ w ڈ݄ɿ&SHP%PY&; w ڈ݄ɿ)BQQZ)BDLJOH,FZCPBSE1SP+1 w ڈ݄ɿ,JOFTJT'SFF4UZMF w
ࠓ݄ɿ)BQQZ)BDLJOH,FZCPBSE1SPࠓ͜͜ w ࠓޙɿࣗ࡞͔ʜʂʁ
None
ࠓͷ
ఆظδϣϒͷϩάΛ 4MBDLʹఴ͢Δ
ͳͥͬͨͷ͔
ͳͥͬͨͷ͔ w +409ͷࠪͰඞཁʹͳͬͨ w +409 w ࣾΛͪΌΜͱίϯτϩʔϧ͠·͠ΐ͏ɺͱ͍͏͜ͱ ࡶ
w ͨͱ͑ʜ w ݖݶΛ࣋ͭϢʔβͷΈγεςϜʹΞΫηεͰ͖Δ͔ʁ w γεςϜมߋͷཤྺ͕ཧ͞Ε͍ͯΔ͔ʁ
ͱ͍͑ w ࠪʹؔͳ͓ͬͯ͘͘ͱศར w αʔϏε্Ͱಈ͘ఆظδϣϒͷ࣋ͭ՝ ͪΌΜͱఆظతʹಈ͍͍ͯΔͷ͔ͳʁ ϩάͲ͜ʹ͋ΔΜͩΖ͏ʁ ͦͷϩάɺͲͷδϣϒͷͷͩΖ͏ʁ
ղܾࡦɿՄࢹԽ ͪΌΜͱఆظతʹಈ͍͍ͯΔͷ͔ͳʁ w ಈ͍͍ͯΔͷ͕ݟ͑Δ͜ͱ ϩάͲ͜ʹ͋ΔΜͩΖ͏ʁ w ࣦഊͨ࣌͠ɺ͙͢ʹΘ͔Δ͜ͱ ͦͷϩάɺͲͷδϣϒͷͷͩΖ͏ʁ w ϩάͱδϣϒ͕ؔ࿈͚ͮΒΕ͍ͯΔ͜ͱ
+409ؔͳ͘ศར
Ͳ͏ՄࢹԽ͢Δ͔
Ͳ͔͜Λݟʹ͍͘ͷ ݁ߏΊΜͲ͏ʜ
ීஈ͔Β͍Δॴ͕͍͍
ීஈ͔Β͍Δॴʜ
ͩʂ
4MBDLʹͦ͏
λεΫ͕ࣦഊͨ࣌͠0,
Ͳ͏Δ͔
Ͳ͏Δ͔ Batch Tempfile ǎǽǬῘƵ๙ᆩ ㊗ǎǽǬປਔƵ๙ᆩ ၂ℭǫƷƺȁƎℼŰ䴘Ƣ ǎǽǬƑȃdžƵเڱ ǎǽǬƵ⻎ྛ
Ͳ͏Δ͔
Ͳ͏Δ͔ ࣮ߦલޙʹ4MBDLʹ௨ ࣮ࡁΈ䠼ʢNJ[P3SBLF@OPUJpDBUJPOʣ ࣮ߦޙʹ4MBDLʹϩάΛఴ ະ࣮䠼 ͜ΕΛ࣮ݱ͢Εཁ݅Λຬͨ͢ʂ
λεΫͷϩάΛ 4MBDLʹఴ͢Δ
λεΫͷϩάΛ4MBDLʹఴ͢Δ λεΫͷϩάɾඪ४ग़ྗΛऔಘ औಘͨ͠ϩάΛ4MBDLʹఴ
λεΫͷϩάɾඪ४ग़ྗ Λऔಘ͢Δ
λεΫͷϩάɾඪ४ग़ྗΛऔಘ͢Δ w ϩάɾඪ४ग़ྗͷ͖ઌΛҰ࣌ϑΝΠϧʹ͢Δ w ϩάɿ"DUJWF4VQQPSU-PHHFSCSPBEDBTU w ඪ४ग़ྗɿ.VMUJ*0
"DUJWF4VQQPSU-PHHFSCSPBEDBTU
"DUJWF4VQQPSU-PHHFSCSPBEDBTU w ϩάΛෳͷ-PHHFSʹૹΔͨΊͷϝιου w ྫʣඪ४ग़ྗ ϑΝΠϧ w ྫʣϑΝΠϧ ϑΝΠϧ new_logger
= ActiveSupport::Logger.new(logdev) multiple_loggers = ActiveSupport::Logger.broadcast(new_logger) @logger.extend(multiple_loggers)
.VMUJ*0
.VMUJ*0 w ෳͷ*0ʹର͠ॲཧΛߦ͏ͨΊͷΫϥε w TUEPVUDMBTT*0 w ྫʣ45%065 ϑΝΠϧ class MultiIO
# @param [Array<IO>] io_list def initialize(io_list) @io_list = io_list end [snip] def write(str) @io_list.each do |io| io.write(str) io.flush end end [snip] end
ϩάΛ4MBDLʹఴ͢Δ
ϩάΛ4MBDLʹఴ͢Δ w "1*Λͬͯ4MBDLʹϑΝΠϧΛఴͰ͖Δ pMFTVQMPBE w XSBQQFSMJCSBSZΛ༻ MJOZPXTCSFBDBO def send_log_slack(task,
tmplog) Breacan.access_token = '#{SLACK_ACCESS_TOKEN}' arg = { channels: ENV['RAKE_NOTIFY_TO'] || '#minne_dev', file: Faraday::UploadIO.new(tmplog.path, 'text/plain'), filename: "#{File.basename(task.name)}_#{Time.now.strftime('%Y%m%d%H%M%S')}.log" } Breacan.files_upload(arg) end
pMFTVQMPBEͷ᠘ w ௨ৗͷߘ༻"1*ͩͱΞΠίϯ໊લΛมߋͰ͖Δ w pMFTVQMPBEෆՄ w ʮͱΓ͋͑ͣࣗͷτʔΫϯΛ͠Β͘͏ʯͱ͔Δͱʜ
pMFTVQMPBEͷ᠘ w ௨ৗͷߘ༻"1*ͩͱΞΠίϯ໊લΛมߋͰ͖Δ w pMFTVQMPBEෆՄ w ʮͱΓ͋͑ͣࣗͷτʔΫϯΛ͠Β͘͏ʯͱ͔Δͱʜ
͓ΘΓʹ
͓ΘΓʹ w 3BLFλεΫͷ࣮ߦલޙͰ4MBDLʹ௨ʢ࣮ࡁΈʣ w 3BLFλεΫ࣮ߦޙɺϩάΛ4MBDLʹఴʢ࣮ࡁΈʣ
Ͳ͏Δ͔
͓ΘΓʹ wϩά͕4MBDLʹ͋Δ wˠδϣϒ͕ࣦഊ͙ͨ࣌͢͠ݟΒΕΔʂศརʂ wج൫νʔϜͰɺ3VCZͰαʔϏεΛΑ͍ͯͧ͘͘͠
܅ϖύϘͰಇ͔ͳ͍͔ʁ ࠷৽ͷ࠾༻ใΛνΣοΫˠ !QC@SFDSVJU