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
SAMUKEI
September 28, 2018
Technology
1.6k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
老舗マッチングサービスとの付き合い方
運営実績19年目のサービスであるyoubrideでのやっていきについて話しました
SAMUKEI
September 28, 2018
More Decks by SAMUKEI
See All by SAMUKEI
PWAでここまでできる
samukei
26
17k
レガシーシステム・技術的負債とは何か Diverseの向き合い方
samukei
2
2.3k
Other Decks in Technology
See All in Technology
ストレスなくAIと付き合いたい!こんなときどうしてる?
namiki64
3
490
20261017福岡devIO 「AIは"良いダッシュボード"を作れるか?
jtakeda
0
140
今さら理解するウェブフォントver.2026
takanorip
3
770
『SAR衛星データ解析入門』のご紹介とその応用
syuchimu
0
120
SAENM ~Jupyterで残すPoCの試行錯誤、未来の自分と仲間を助ける記録!~
terapyon
0
110
M5Stackで作る BLEマウス GPSログの世界
tomokusaba
0
420
USB PDを使ってスマホを労わりたい
raspython3
0
180
UniFi(ユニファイ)AIカメラの現場活用
ludicmind
1
440
AI コーディングと人間の認知スループット / CTO Night & Day 2026 Morning Session / AI Coding and Human Cognitive Throughput
prog893
4
1k
Claude Code本は、どのように執筆チームで書かれたか
oikon48
1
380
パスキーの自動テストはどこまでいけるのか
teamlab
PRO
0
200
初海外で注意すべきこと12選!!!安全快適なre:invent生活にするために
yuuuuuuu168
1
160
Featured
See All Featured
Producing Creativity
orderedlist
PRO
348
41k
Mind Mapping
helmedeiros
1
400
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
230
23k
A Soul's Torment
seathinner
8
3.8k
Designing Experiences People Love
moore
143
24k
Evolving SEO for Evolving Search Engines
ryanjones
0
330
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
Crafting Experiences
bethany
1
380
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
20k
brightonSEO & MeasureFest 2025 - Winning Strategies for Black Friday CRO & PPC - Christian Goodrich
cargoodrich
3
870
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
254
22k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
Transcript
老舗マッチングサービス との 付き合い方 @SAMUKEI
who? • さむけい(藤田 雄大) • 所属はDiverse Inc.とMAEMO LLC • youbrideのサーバ・クライアントやってます •
会社でPodcast配信してます。聴いてください! https://podcast.diverse-inc.com/ • 名刺作ったので、記念に名刺交換しましょう →→→
オンライン カジュアル シリアス オフライン
突然ですが youbrideは1819年目のサービスです
Perl オ ン プ レ コメントの無いコード 歴史が長いが故の問題・・・ オーパーツ化したツール 野 生
化 し た 仕 様 肥大化したベースクラス
逃避したい現実・・・
逃避してはいられない!!!
解決したい課題 • Perlからの脱却 ◦ Rubyにすることは確定! ◦ 全部の置き換えは、コード/仕様が膨大で難しい • 野生化した仕様、複雑なコード ◦
リニューアルというビッグワードで解決(しない) • オンプレからの脱却 ◦ ハードウェアパワーに頼る部分があるので難しい ◦ 当分オンプレのままで Ruby書き換え後に検討 • オーパーツ化したツール(開発環境) ◦ メンテナンスがされていない ◦ 機能としては、現代(2018年)でも十分通用する! (はず)
解決したい課題 • Perlからの脱却 ◦ Rubyにすることは確定! ◦ 全部の置き換えは、コード/仕様が膨大で難しい • 野生化した仕様、複雑なコード ◦
リニューアルというビッグワードで解決(しない) • オンプレからの脱却 ◦ ハードウェアパワーに頼る部分があるので難しい ◦ 当分オンプレのままで Ruby書き換え後に検討 • オーパーツ化したツール(開発環境) ◦ メンテナンスがされていない ◦ 機能としては、現代(2018年)でも十分通用する(はず) => まずはRubyを進めるために、開発環境を整えよう!
現在の開発環境 (オーパーツ化したツール)
実際の動き ブランチからサブドメインを振った環境ができる!すごい! ※ 元々はlivedoorサービスの開発用環境を輸入したらしいです
実現している要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •
Webフロントでの操作
課題 • メンテナーがいない • Shell & Perlの職人技で、読み解くのが難解 • youbrideに特化しているため、汎用的な利用ができない
まずは要件を満たそう
要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •
Webフロントでの操作
Dokkuを使う
Dokkuが満たしてくれる要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •
Webフロントでの操作
Dokkuとは • DockerをベースとしたHerokuクローン • DokkuのGitリポジトリにPushするだけでサービスがデプロイされる • もちろんオンプレで動く ※ Pivotal Cloud
Foundryも有名だが、今回の用途では多機能すぎるため選定候補から除外
Dokkuのインストール(1) $ wget https://raw.githubusercontent.com/dokku/dokku/v0.12.12/bootstrap.sh $ sudo DOKKU_TAG=v0.12.12 bash bootstrap.sh wgetしてコマンド叩くだけ
Dokkuのインストール(2) $ cat ~/.ssh/id_rsa.pub | sshcommand acl-add dokku ansible dokkuに公開鍵を設定する
自前で実装する要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •
Webフロントでの操作
Webフロント Ruby + Sinatraで雑に作るだけ
今回作った環境 Dokku
できた!
本当に?
Webフロント動かす方法は? 別のサーバでも使える? 依存関係どうするの?
本当に必要な要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを降る •
Webフロントでの操作 • サーバの移転に耐えられる環境構築 • ソースをバージョン管理する • 属人化せずに他人がメンテナンスできる
Ansibleを使う
Ansibleとは • 構成管理ツールの1つ • 同じようなツールではChef, Itamaeなどがある • シンプルな記述(yaml)が可能 • タスク毎に記述を分けられるので単純に管理可能
• エージェントレスで動作する といった、インフラ側では有名なツールです ※ 今回はAnsible自体は詳しくは説明しませんのでググってください
依存性のインストール(抜粋) - name: install yum repos yum: name: "{{ item
}}" state: present with_items: - epel-release - https://centos7.iuscommunity.org/ius-release.rpm - name: install dependencies yum: name: "{{ item }}" state: latest with_items: - redis - nss - nss-util - nspr - make yumで依存するパッケージを指定
Dokkuのインストール(抜粋) - name: get dokku bootstrap get_url: url: "https://raw.githubusercontent.com/dokku/dokku/v{{ dokku_version
}}/bootstrap.sh" dest: /tmp - name: bootstrap dokku shell: "DOKKU_TAG=v{{ dokku_version }} bash /tmp/bootstrap.sh" Dokkuのインストールコマンドを実行
Webフロントのインストール(抜粋) - name: install yarn npm: name: yarn global: yes
- name: install bundler become_user: "{{ ansible_ssh_user }}" gem: name: bundler user_install: no executable: ~/.rbenv/shims/gem yarnとbundlerをインストール
結果的に・・・ チーム内のメンバーからPRもらえた! 属人化してないですね!
公開予定です!(公開時期未定)
おわり