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を使ったコードレビューで活発にディスカッションができたらいいな、と考えています。