Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
あんしん大規模リプレースサポート
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
takanamito
June 15, 2016
Programming
1.8k
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
あんしん大規模リプレースサポート
takanamito
June 15, 2016
More Decks by takanamito
See All by takanamito
ActiveModel::Attributes APIとSwaggerでRailsのAPIレスポンスに型を持ち込む
takanamito
0
680
ドキュメントとテストのないプロジェクトを引き継ぐ
takanamito
2
3.6k
Siriに身の回りのお世話をしてもらう
takanamito
0
7k
PHPで運用中のサービスをRubyに切り替える
takanamito
0
5.5k
安心してフレームワークをのりかえたい
takanamito
0
1.3k
HLSでやっていく 動画ストリーミング配信
takanamito
0
2.6k
Other Decks in Programming
See All in Programming
AIに “答え“を書かせるのを やめてみた
___akari11
0
130
phperだってパンチカードでコーディングしたい
o0h
PRO
0
400
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
320
우리의 Nitro Modules는 당신의 Turbo Modules보다 아름답다
l2hyunwoo
0
190
半永久的に提供し続けられるプライベートクラウドを目指して ― 利用者の認知負荷を抑えるAPI抽象化とハードウェア世代交代の基盤設計
tomokon
0
520
R8 の設定見直しでアプリサイズ削減
andpad
0
230
npm との違いを手がかりにGo の依存管理を理解したい
optim
0
1.1k
[2026-10-14](C)Re:ゼロから始める異世界生活〜始まりの終わりと終わりの始まり〜
tosite
0
150
APNsからLive Activityを開始する話
yumnumm
0
170
Rでドレミ/Do-Re-Mi_with_R
florets1
0
130
最近”作らせてる” ローカルAIアプリの話
akit37
0
490
自作Discord音声botをLambda MicroVMsに移行した話 / Migrating My Discord Voice Bot to Lambda MicroVMs
akihisaikeda
0
150
Featured
See All Featured
Fireside Chat
paigeccino
43
4.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
890
Building Adaptive Systems
keathley
44
3.3k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
Dominate Local Search Results - an insider guide to GBP, reviews, and Local SEO
greggifford
PRO
0
380
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
810
The Invisible Side of Design
smashingmag
301
52k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
sira's awesome portfolio website redesign presentation
elsirapls
0
460
Evolving SEO for Evolving Search Engines
ryanjones
0
330
SEO Brein meetup: CTRL+C is not how to scale international SEO
lindahogenes
2
2.9k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership regardless of position
madoxten
69
67k
Transcript
͋Μ͠Μ େنϦϓϨʔεαϙʔτ
ւ֎ϝσΟΞ 2015 • ඦສPV/݄ • 2΄ͲFuelPHP͕Քಇ • 1action 100~200ߦͷcontroller͕ෳ •
ແବͳϖʔδ͕ͨ͘͞Μ
None
FuelPHP -> Ruby on Rails
ϦϓϨʔεཁ݅ • FuelPHPΛ٫͍ͨ͠ • SEOతʹΑ͘ͳ͍ͱ͜ΖΛͳ͍ͨ͘͠ • ແఀࢭͰҠߦ͍ͨ͠ • ϚελσʔλΛ৽͍ͨ͠ •
σβΠϯϦχϡʔΞϧ͍ͨ͠
͍͢͝େม
Ҿ༻5FDIOJDBM4VDDFTTFTBOE'BJMVSFTJOUIF)JTUPSZPG$PPLQBE%FWFMPQNFOU4QFBLFS%FDL IUUQTTQFBLFSEFDLDPNNJSBLVJUFDIOJDBMTVDDFTTFTBOEGBJMVSFTJOUIFIJTUPSZPGDPPLQBE EFWFMPQNFOU Cookpad Techconfʹͯ
Ҿ༻5FDIOJDBM4VDDFTTFTBOE'BJMVSFTJOUIF)JTUPSZPG$PPLQBE%FWFMPQNFOU4QFBLFS%FDL IUUQTTQFBLFSEFDLDPNNJSBLVJUFDIOJDBMTVDDFTTFTBOEGBJMVSFTJOUIFIJTUPSZPGDPPLQBE EFWFMPQNFOU
ͬͯΔ
ͦ͏ͳͷͰ νʔϜͰۓٸձٞ
• FuelPHPΛ٫͍ͨ͠ • SEOతʹΑ͘ͳ͍ͱ͜ΖΛͳ͍ͨ͘͠ • ແఀࢭͰҠߦ͍ͨ͠ • ϚελσʔλΛ৽͍ͨ͠ • σβΠϯϦχϡʔΞϧ͍ͨ͠
ϦϓϨʔεཁ݅ ूத
༷Λ࠷খݶͷείʔϓʹ ߜ࣮ͬͯ
10ສҎ্͋ΔURLͷ 301ϦμΠϨΫτ͕ා͍
301ϦμΠϨΫτ͕ා͍ • 10ສҎ্ଘࡏ͢ΔURL • ৽URLSEOධՁΛҾ͖ܧ͍͗ͨ • ϛεΔͱτϥϑΟοΫͷμϝʔδ͕Ͱ͔͍ • ςετͰͳΜͱ͔୲อͰ͖ͳ͍͔ʁ
ϦμΠϨΫτॲཧ • concernsͱservicesʹॲཧΛӅṭ • ϩδοΫͱσʔλͷςετΛ४උ
concernsͱservicesʹӅṭ class AreasController < ApplicationController include Redirectable # چURL def
area_list redirect(:area) if redirectable?(:area) end # ৽URL def show ~~ ϖʔδੜॲཧ ~~ end end
concernsͱservicesʹӅṭ concern :Redirectable do def redirectable?(controller_name) path = request.path case
controller_name when :area results = REDIRECT_PATHS.map { |target| path.include? (target) } results.include?(true) end def redirect(controller_name, request_params = nil) redirector = Redirector::Factory.create(controller_name) redirect_path = redirector.redirect_path(request_params) redirect_to(redirect_path, status: :moved_permanently) end end ϦμΠϨΫτՄ൱Λ ఆ TFSWJDFΫϥεͰ ઌͷύεΛੜ
ϦμΠϨΫτͷઃܭ • ͍ΘΏΔStrategyύλʔϯ • ServicesԼʹ֤URLʹରԠͨ͠ΫϥεΛ࣮ • ΫϩʔϥʔͳͲͷॲཧͷྲྀΕҰॹͰ தͷ࣮͕ҟͳΔ߹ʹ༗ޮ
ϦμΠϨΫτ • concernsͱservicesʹॲཧΛӅṭ -> ςετ͕ॻ͖͍͢ • ϩδοΫͱσʔλͷςετΛ४උ -> શURLςετͰྲྀͯ͠ΈΔ ->
Ϛελσʔλͷϛεൃݟ
10ສҎ্͋ΔURLͷ ςετ࿙Ε͕ා͍
ຊ൪ݕূ • γϟυϓϩΩγͰͷಈ࡞֬ೝ • nginxͷใΛՄࢹԽ
kage • γϟυϓϩΩγαʔόʔͷgem • cookpadࣾ • ຊ൪ͷτϥϑΟοΫΛෳ͠ ։ൃαʔόʔʹྲྀ͢
None
kage Kage::ProxyServer.start do |server| server.port = 8090 server.host = '0.0.0.0'
server.add_master_backend(:production, 'localhost', 80) server.add_backend(:sandbox, 'localhost', 80) server.client_timeout = 15 server.backend_timeout = 10 server.on_select_backends do |request, headers| if request[:method] == 'GET' [:production, :sandbox] else [:production] end end ~~ தུ ~~ end def compare(production_res, sandbox_res, url) # ͜ͷลͰresponseݟͯϩάग़ͨ͠Γ͢Δ end
kageͷϩά
kage • ग़ྗ͞ΕͨϩάΛோΊΔ • ҧײͷ͋ΔՕॴSTGͰݕূ • ͣͬͱ͑Δ
DatadogͰnginxͷ ϩάΛάϥϑԽ
<source> @type tail path /var/log/nginx/access.log format ltsv time_format %d/%b/%Y:%H:%M:%S %z
pos_file /tmp/fluent.log.pos tag nginx.access </source> <match nginx.access> @type copy # εςʔλεͷΧϯτ <store> @type datacounter tag status.count count_key status unit minute pattern1 2xx ^2\d\d$ pattern2 3xx ^3\d\d$ pattern3 4xx ^4\d\d$ pattern4 5xx ^5\d\d$ @label @status </store> # ϨεϙϯελΠϜຖͷׂ߹ <store> @type numeric_counter tag response_time.percentage unit minute count_key response_time pattern1 u10ms 0 0.01 pattern2 u50ms 0.01 0.05 pattern3 u100ms 0.05 0.1 pattern4 u500ms 0.1 0.5 pattern5 u1s 0.5 1 pattern6 u3s 1 3 pattern7 long 3 @label @response_time </store> # ϨεϙϯελΠϜͷύʔηϯλΠϧ <store> @type numeric_monitor tag response_time.percentile unit minute monitor_key response_time percentiles 50, 90, 95, 98 @label @percentile </store> </match>
Datadog • fluentdͰnginxͷlogΛtailͯ͠ूܭ • fluentd -> datadog-agent -> datadog •
#monitoring Ͱ৭ʑͬͯ·͢
ຊ൪ݕূ • γϟυϓϩΩγͰͷಈ࡞֬ೝ -> ຊ൪ڥͰͷΈى͖Δόάͷൃݟ • nginxͷใΛՄࢹԽ -> ҟৗࣄଶʹؾ͖͍͢ ->
ϨεϙϯελΠϜͷײ͕֮ʹͭ͘
·ͱΊ • ϦϓϨʔεͱʹ͔͘খ͘͞ • ϞδϡʔϧԽͯ͠ςετ͘͢͠ • γϟυϓϩΩγͰຊ൪τϥϑΟοΫݕূ • ࢦඪՄࢹԽͯ͠ҟৗʹؾ͖͘͢