レガシーコード改善の記録

komagataさんの レガシーPHP改善日記 シーズン2 エピソード1 - komagata に触発されて、書いてみました。

最近のPHP、とても開発しやすくなりましたよね。「理想の環境」を拝見しましたが、誰が見ても魅力的な環境だと思います!

私の場合はJava→Pythonですが、こんな感じでした。

改善前(2013年7月) 改善後(2015年2月現在)
言語 Java6 Python2.7
フレームワーク SAStruts Django1.6
データベース MySQL MySQL
データベースバックアップ mysqldumpでダンプを取ってrsync bakthatでAmazon S3に転送
本番環境 さくらのVPS(CentOS) さくらのVPS(Ubuntu) + Amazon S3(静的ファイルのみ)
ステージング環境 さくらのVPS(CentOS) さくらのVPS(Ubuntu) + AmazonS3(静的ファイルのみ)
開発マシン Windows7 Mac OSX
ソースコード管理 Gitolite(ステージング環境にリポジトリを作っている) Bitbucket
タスク管理 なし Bitbucket Issue, Trello
デプロイ SSHでステージング環境・本番環境に繋いでgit pullする Fabric
コーディング規約 なし pep8(autopep8で自動整形した上で、pyflakes-vimで確認している)
コードレビュー なし BitbucketのPull requestを使ってレビュー(Webデザイナーの更新を取り込むときのみ)
自動テスト なし Bitbucketにpushされるたびに、Djangoのテスト機能をJenkinsで自動実行させている
サーバー監視 なし NewRelic
エラー監視 なし Sentry
サーバー構築 手順書もシェルスクリプトもなし chef-solo
チャット Skype Skype + Slack(他サービスからの自動通知にのみに使っている)

前述の「SAStrus」がベースにしているフレームワーク「Struts1」がEOLになったということで、一から作りなおすことになりました。

私のキャリア上ではJavaが一番経験がある言語だったのですが、個人的にPythonが好きということでPythonにさせてもらいました。

元々外部の業者にまるっとお任せしていたらしく、ドキュメントがほとんどなく、仕様を把握するのに苦労しました。また、元のデータベーステーブル設計が非常に 独特なアレ だったので、そのまま使うのは早々に諦めました。

ただ、別のシステムで旧テーブルを参照しているため、完全に捨てることもできませんでした。別システムも同時にリニューアルということになるとリリースが遅れてしまうので、旧テーブルを残しつつ、新たに作ったテーブルとMySQLトリガーで同期を取るようにしました。

これは飽くまで暫定的な措置のつもりで、いずれは別システムの参照先も新テーブルに変更する予定だったのですが、なかなかそこまで手が回っていません。

また、今のところ開発の体制はWebデザイナー1名 + Webエンジニア1名(私)のみですが、もっと人が増えてPull requestを使ったコードレビューで活発にディスカッションができたらいいな、と考えています。

Python  Java  MySQL 
comments powered by Disqus