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.1k
Other Decks in Technology
See All in Technology
AIエージェントで90秒の広告動画を制作!台本・音声・映像・編集をつなぐAWS最新アーキテクチャの実践
nasuvitz
3
330
EncryptedSharedPreferences が deprecated になっちゃった!どうしよう! / Oh no! EncryptedSharedPreferences has been deprecated! What should I do?
yanzm
0
480
株式会社ログラス - 会社説明資料【エンジニア】/ Loglass Engineer
loglass2019
4
65k
人工衛星のファームウェアをRustで書く理由
koba789
15
8.2k
Snowflake Intelligenceにはこうやって立ち向かう!クラシルが考えるAI Readyなデータ基盤と活用のためのDataOps
gappy50
0
270
Claude Code でアプリ開発をオートパイロットにするためのTips集 Zennの場合 / Claude Code Tips in Zenn
wadayusuke
4
380
今日から始めるAWSセキュリティ対策 3ステップでわかる実践ガイド
yoshidatakeshi1994
0
110
AWSで始める実践Dagster入門
kitagawaz
1
720
テストを軸にした生き残り術
kworkdev
PRO
0
210
Codeful Serverless / 一人運用でもやり抜く力
_kensh
7
450
エンジニアリングマネージャーの成長の道筋とキャリア / Developers Summit 2025 KANSAI
daiksy
2
620
スマートファクトリーの第一歩 〜AWSマネージドサービスで 実現する予知保全と生成AI活用まで
ganota
2
300
Featured
See All Featured
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Automating Front-end Workflow
addyosmani
1370
200k
For a Future-Friendly Web
brad_frost
180
9.9k
Side Projects
sachag
455
43k
RailsConf 2023
tenderlove
30
1.2k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Connecting the Dots Between Site Speed, User Experience & Your Business [WebExpo 2025]
tammyeverts
8
530
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
Raft: Consensus for Rubyists
vanstee
140
7.1k
Into the Great Unknown - MozCon
thekraken
40
2k
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もらえた! 属人化してないですね!
公開予定です!(公開時期未定)
おわり