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
SAMUKEI
September 28, 2018
Technology
0
1.5k
老舗マッチングサービスとの付き合い方
運営実績19年目のサービスであるyoubrideでのやっていきについて話しました
SAMUKEI
September 28, 2018
Tweet
Share
More Decks by SAMUKEI
See All by SAMUKEI
PWAでここまでできる
samukei
26
17k
レガシーシステム・技術的負債とは何か Diverseの向き合い方
samukei
2
2.2k
Other Decks in Technology
See All in Technology
OWASP Top 10:2025 リリースと 少しの日本語化にまつわる裏話
okdt
PRO
3
840
コンテナセキュリティの最新事情 ~ 2026年版 ~
kyohmizu
6
1.5k
Bill One急成長の舞台裏 開発組織が直面した失敗と教訓
sansantech
PRO
2
400
Exadata Fleet Update
oracle4engineer
PRO
0
1.1k
Codex 5.3 と Opus 4.6 にコーポレートサイトを作らせてみた / Codex 5.3 vs Opus 4.6
ama_ch
0
200
インフラエンジニア必見!Kubernetesを用いたクラウドネイティブ設計ポイント大全
daitak
1
380
Agent Skils
dip_tech
PRO
0
130
We Built for Predictability; The Workloads Didn’t Care
stahnma
0
150
Ruby版 JSXのRuxが気になる
sansantech
PRO
0
170
旅先で iPad + Neovim で iOS 開発・執筆した話
zozotech
PRO
0
100
22nd ACRi Webinar - NTT Kawahara-san's slide
nao_sumikawa
0
100
CDK対応したAWS DevOps Agentを試そう_20260201
masakiokuda
1
410
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.2k
Side Projects
sachag
455
43k
More Than Pixels: Becoming A User Experience Designer
marktimemedia
3
330
Designing Powerful Visuals for Engaging Learning
tmiket
0
240
SERP Conf. Vienna - Web Accessibility: Optimizing for Inclusivity and SEO
sarafernandez
1
1.3k
How to Get Subject Matter Experts Bought In and Actively Contributing to SEO & PR Initiatives.
livdayseo
0
67
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
The Spectacular Lies of Maps
axbom
PRO
1
530
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
62
50k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.3k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
79
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
11
830
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もらえた! 属人化してないですね!
公開予定です!(公開時期未定)
おわり