Upgrade to Pro — share decks privately, control downloads, hide ads and more …

老舗マッチングサービスとの付き合い方

0ef7215f3270a621b53f790d749a619e?s=47 SAMUKEI
September 28, 2018

 老舗マッチングサービスとの付き合い方

運営実績19年目のサービスであるyoubrideでのやっていきについて話しました

0ef7215f3270a621b53f790d749a619e?s=128

SAMUKEI

September 28, 2018
Tweet

Transcript

  1. 老舗マッチングサービス との 付き合い方 @SAMUKEI

  2. who? • さむけい(藤田 雄大) • 所属はDiverse Inc.とMAEMO LLC • youbrideのサーバ・クライアントやってます •

    会社でPodcast配信してます。聴いてください! https://podcast.diverse-inc.com/ • 名刺作ったので、記念に名刺交換しましょう →→→
  3. オンライン カジュアル シリアス オフライン

  4. 突然ですが youbrideは1819年目のサービスです

  5. Perl オ ン プ レ コメントの無いコード 歴史が長いが故の問題・・・ オーパーツ化したツール 野 生

    化 し た 仕 様 肥大化したベースクラス
  6. 逃避したい現実・・・

  7. 逃避してはいられない!!!

  8. 解決したい課題 • Perlからの脱却 ◦ Rubyにすることは確定! ◦ 全部の置き換えは、コード/仕様が膨大で難しい • 野生化した仕様、複雑なコード ◦

    リニューアルというビッグワードで解決(しない) • オンプレからの脱却 ◦ ハードウェアパワーに頼る部分があるので難しい ◦ 当分オンプレのままで Ruby書き換え後に検討 • オーパーツ化したツール(開発環境) ◦ メンテナンスがされていない ◦ 機能としては、現代(2018年)でも十分通用する! (はず)
  9. 解決したい課題 • Perlからの脱却 ◦ Rubyにすることは確定! ◦ 全部の置き換えは、コード/仕様が膨大で難しい • 野生化した仕様、複雑なコード ◦

    リニューアルというビッグワードで解決(しない) • オンプレからの脱却 ◦ ハードウェアパワーに頼る部分があるので難しい ◦ 当分オンプレのままで Ruby書き換え後に検討 • オーパーツ化したツール(開発環境) ◦ メンテナンスがされていない ◦ 機能としては、現代(2018年)でも十分通用する(はず) => まずはRubyを進めるために、開発環境を整えよう!
  10. 現在の開発環境 (オーパーツ化したツール)

  11. 実際の動き ブランチからサブドメインを振った環境ができる!すごい! ※ 元々はlivedoorサービスの開発用環境を輸入したらしいです

  12. 実現している要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •

    Webフロントでの操作
  13. 課題 • メンテナーがいない • Shell & Perlの職人技で、読み解くのが難解 • youbrideに特化しているため、汎用的な利用ができない

  14. まずは要件を満たそう

  15. 要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •

    Webフロントでの操作
  16. Dokkuを使う

  17. Dokkuが満たしてくれる要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •

    Webフロントでの操作
  18. Dokkuとは • DockerをベースとしたHerokuクローン • DokkuのGitリポジトリにPushするだけでサービスがデプロイされる • もちろんオンプレで動く ※ Pivotal Cloud

    Foundryも有名だが、今回の用途では多機能すぎるため選定候補から除外
  19. Dokkuのインストール(1) $ wget https://raw.githubusercontent.com/dokku/dokku/v0.12.12/bootstrap.sh $ sudo DOKKU_TAG=v0.12.12 bash bootstrap.sh wgetしてコマンド叩くだけ

  20. Dokkuのインストール(2) $ cat ~/.ssh/id_rsa.pub | sshcommand acl-add dokku ansible dokkuに公開鍵を設定する

  21. 自前で実装する要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを振る •

    Webフロントでの操作
  22. Webフロント Ruby + Sinatraで雑に作るだけ

  23. 今回作った環境 Dokku

  24. できた!

  25. 本当に?

  26. Webフロント動かす方法は? 別のサーバでも使える? 依存関係どうするの?

  27. 本当に必要な要件 • オンプレで動く • リポジトリからブランチ一覧を取ってくる • ブランチを開発環境にデプロイ • サーバにブランチ名のサブドメインを降る •

    Webフロントでの操作 • サーバの移転に耐えられる環境構築 • ソースをバージョン管理する • 属人化せずに他人がメンテナンスできる
  28. Ansibleを使う

  29. Ansibleとは • 構成管理ツールの1つ • 同じようなツールではChef, Itamaeなどがある • シンプルな記述(yaml)が可能 • タスク毎に記述を分けられるので単純に管理可能

    • エージェントレスで動作する といった、インフラ側では有名なツールです ※ 今回はAnsible自体は詳しくは説明しませんのでググってください
  30. 依存性のインストール(抜粋) - 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で依存するパッケージを指定
  31. 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のインストールコマンドを実行
  32. 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をインストール
  33. 結果的に・・・ チーム内のメンバーからPRもらえた! 属人化してないですね!

  34. 公開予定です!(公開時期未定)

  35. おわり