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.4k
老舗マッチングサービスとの付き合い方
運営実績19年目のサービスであるyoubrideでのやっていきについて話しました
SAMUKEI
September 28, 2018
Tweet
Share
More Decks by SAMUKEI
See All by SAMUKEI
PWAでここまでできる
samukei
27
17k
レガシーシステム・技術的負債とは何か Diverseの向き合い方
samukei
2
2k
Other Decks in Technology
See All in Technology
TypeScript、上達の瞬間
sadnessojisan
46
13k
TypeScriptの次なる大進化なるか!? 条件型を返り値とする関数の型推論
uhyo
2
1.7k
CDCL による厳密解法を採用した MILP ソルバー
imai448
3
180
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
Adopting Jetpack Compose in Your Existing Project - GDG DevFest Bangkok 2024
akexorcist
0
110
SREが投資するAIOps ~ペアーズにおけるLLM for Developerへの取り組み~
takumiogawa
2
470
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
880
AGIについてChatGPTに聞いてみた
blueb
0
130
New Relicを活用したSREの最初のステップ / NRUG OKINAWA VOL.3
isaoshimizu
3
640
LINEヤフーにおけるPrerender技術の導入とその効果
narirou
1
110
Terraform Stacks入門 #HashiTalks
msato
0
360
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
37
12k
Featured
See All Featured
Unsuck your backbone
ammeep
668
57k
Six Lessons from altMBA
skipperchong
27
3.5k
Done Done
chrislema
181
16k
The Cult of Friendly URLs
andyhume
78
6k
10 Git Anti Patterns You Should be Aware of
lemiorhan
655
59k
It's Worth the Effort
3n
183
27k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5k
Typedesign – Prime Four
hannesfritz
40
2.4k
GitHub's CSS Performance
jonrohan
1030
460k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Facilitating Awesome Meetings
lara
50
6.1k
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もらえた! 属人化してないですね!
公開予定です!(公開時期未定)
おわり