Bridge of peace of mind from the past to the modern.
Abstract
プロローグ
かつて王道であった Web アプリケーションの書き方や仕組みが、時が経つにつれて変化する要求(ユースケース、実行環境など)についていけなくなり(あるいは現状維持に注力することで)、いつしか誰にも触れられない、触れてはいけないパンドラの箱として誕生するという話はよく耳にします。
私が籍を置くPHP製パッケージ開発チームでも、古き良きレガシーパッケージ(15年物)の将来を常々案じていました。
- PHP 3 の時代から積み重ねられてきたソースコード
- 「仕様書無し」「パッケージ創設メンバー不在」により発生したアプリケーション全体への暗幕
- 秘伝の RPM SPEC ファイルや、独自のサーバメンテツール(.sh)によるデプロイ手法
- テストコードもなく、Excel 仕様書による暖かみを持った手動テスト
そういった「 個性ある愛しい PHP レガシーシステム 」に真正面から人海戦術で立ち向かうのは、品質的にもそうですが私たちエンジニアとしても決して楽なものではないでしょう。心安らかに過ごせるとは言い難い。そんなのは嫌だ。
安らかな定時を迎えたい戦士たちが様々な障害にあいながらも挑戦し、乗り越え、達成してきた4年間。そんなお話…
本発表について
本発表では、レガシーと名を変えてしまったシステムを
- 作り直しは無し (大人の事情)
- 今ある機能はそのまま (稼動しているサービスに影響を与えずに)
といった縛りの中、再び「現代における よく聞く/よく見るシステム 」へ移行するためにチームで行ってきた戦いの中から、主に以下のトピックを紹介していこうと思います。
1. チーム態勢
移行作業の外堀を埋めていくために、チームメンバーに必要なスキル習得を狙った活動
- Before: 全員が開発、全員が運用、全員が これまでの手法をなぞってきた
- After: 「開発」「運用構築」チームにあえて明確に分裂し、各サイドのスキルアップを目指し、そして合流
2. 自動テストの導入
古い PHP や、リファクタされずにここまできたコードに依存しない(影響を受けづらい)、自動テスト周りの整備
- Before: Excel 仕様書を愛でる
- After:
- 2日 → 3時間
- PHP 製だからってテストも PHP で書く必要はないよね
- keywords:
- E2Eテスト = Capybara + Turnip,
- 高速 Container based CI = Docker + test-queue
- ご参考までに → あなたの安心を高速に守る Container-based CI
3. サーバ構築手順の見直し
独自性のない「 最近よく聞く/よく見るサービス構築手法 」に寄せていったお話
- Before:
- ググっても出てこないアプリデプロイスクリプト、Firewall 設定スクリプト(弊社職人製)、手動 RPM インストール
- サーバ構築した時用チェックリスト(メモ帳)
- After:
- 作成した .rpm ファイルの転送・適用、その他デーモン設定の自動化
- サーバのチェックもコード化できるよね
- keywords:
以上にあげたトピックは、今では既に当たり前の内容となったものもあり、「今更」感を覚えるかもしれません。 そういった当たり前に少しでも辿りつけたことに対する ふりかえり と、まだまだ続く私たちの戦いへ奮起する内容となっています。
本発表の核
今回紹介する内容は PHP に依存しない取り組み となっています。 ターゲットであるアプリケーションが PHP なので、時折 PHP に関する説明も入るとは思いますが、発表内容としては
- 当たり前のシステムに近づけるためのサーバ構築手法
- リファクタリングするための E2E テスト環境の構築
- ↑ を組合せたことにより得られた開放感からくる大胆さ
といったものなので、基本的には Perl でも Ruby でも Python でも、Web アプリケーション全般で実践できるものです。
本発表で話さないこと
- PHP コードの具体的な内容
- 各ツールの細かい使い方や設定内容
あくまでも「心安らかにリファクタリングするための外堀を埋める」というのがメインです。
自己紹介
Talk Details
| Venue | TBD |
|---|---|
| Starts On | TBD |
| Talk Category | Others |
| Language | Japanese |
| Interpretation (En→Ja) | NO |
| Slide Subtitles | Japanese |
| Talk Duration | 60 minutes |
| Material (Difficulty) Level | Beginner |
| May we take your photo? | allow |
| May we record your talk? | allow |
