More than 5 years have passed since last update.
1 / 56Page 1 of 56
自己紹介
@pugiemonn といいます。
オンラインサロンプラットフォームを手掛けるシナプス株式会社で開発とマーケティングを担当しています。
今日の話
1年前にレガシー環境に参加したメンバーがレガシーな問題に対して、どのような取り組みを行ってきたかお話します。
開発チームメンバーゼロ問題 👁 :no_good:
社長1人で3年開発していた
- 1人で走るのはつらい
- 突然ユーザー数が増加しはじめピンチに
求人がんばった結果 👁 :blush:
チームメンバー10名(インターン生含む)になりました✨
バージョン管理されてない問題 👁 :no_good:
1人だったのでバージョン管理など無かった
GitとGithubを導入した結果 👁 :blush:
- まずはSourceTreeから 👁 :sparkles:
- 作業ログがわかるようになった 👁 :sparkles:
- 問題発生箇所の調査が容易に 👁 :sparkles:
作業がチケット化されていない問題 👁 :no_good:
1人だったのでチケットなど無かった
- 何のタスクかわからない 👁 :poop:
チケット管理した結果 👁 :blush:
- 何の作業かわかるようになった 👁 :sparkles:
- 現在はBacklogを使用 👁 :sparkles:
👁 :sparkles:
- Githubとの連携で調査が容易に 👁 :sparkles:
👁 :sparkles:
👁 :sparkles:
デプロイがSFTP問題 👁 :no_good:
FTPクライアントTransmitでアップロード
- ちょっときつい😓😓😓😓😓
デプロイの自動化を進めた結果 👁 :blush:
- ひとまずgit pullでデプロイするように✨
- 後にシェルを作ってデプロイ✨✨
次はElastic Beanstalkかも✨✨✨
ローカル開発環境が存在しない問題 👁 :no_good:
当時は本番環境が開発環境
- 本番のEC2のコードをそのまま修正
開発環境をVagrantで作成した結果 👁 :blush:
- ローカル開発環境が誕生✨
- 開発環境をチームで統一化✨✨
- 開発環境の自動化✨✨✨
ちょっとずつ改善されています😘
1つのEC2インスタンスに全部乗っている問題 👁 :no_good:
LAMPが1つのEC2インスタンスに全部入っている
- MySQLもストレージも全部入っている
- 10GBのHD使用率が90%越え
- HDが溢れてしょっちゅう止まる
AWSのサービスに分散 👁 :blush:
- S3を使用することで、HDが溢れて止まることがなくなる ✨✨✨
DBを手動バックアップ問題 👁 :no_good:
手動でたまにdump
- EC2インスタンスが壊れたりするとまずい
MySQLをRDSに変更 👁 :blush:
- もしものときも復帰可能に!
1人でがんばっちゃう問題 👁 :no_good:
3日くらい徹夜すればできるはず
- チーム開発経験が少ない
- 1日は72時間あるから大丈夫など迷言増加
大変なときはチームを頼ろう 👁 :blush:
- 徹夜作業の減少✨
- 負債の減少✨✨
チームに共有する文化ができてきました😘
無駄なコード多すぎ問題 👁 :no_good:
過去のチャレンジの負債
不要なものを削除したり分割中 👁 :blush:
- 不要なコード、CMSやライブラリを削除 👁 :sparkles:
- コントローラを分割 👁 :sparkles:
👁 :sparkles:
徐々に見やすくなってます😘
👁 237万行削除
命名適当すぎ問題 👁 :no_good:
読んでもわからないコード
コーディング規約を入れたり勉強会した結果 👁 :blush:
- PSR-2を導入 👁 :sparkles:
- リーダブルコードの内容を一緒に勉強 👁 :sparkles:
👁 :sparkles:
少しずつ読みやすくなっていますす😘
型が適当すぎ問題 👁 :no_good:
何でもテキストで判定
APIで返す型だけは担保 👁 :blush:
- JsonSchemaを導入 👁 :sparkles:
APIの不具合が減少😘
参考 : JSON SchemaとPHP
DB管理と設計が適当すぎ問題 👁 :no_good:
開発の度にカラムを足していた
- 1テーブルのカラム数多すぎる 👁 :poop:
- 型が適当で正規化されていないテーブル 👁 :poop:
👁 :poop:
- 必要なカラムだがぱっと見で意味不明なカラム名 👁 :poop:
👁 :poop:
👁 :poop:
正規化して型を指定 👁 :blush:
- 正規化してテーブルを分割 👁 :sparkles:
- 命名を変更、型変更や制限を追加 👁 :sparkles:
👁 :sparkles:
日々の改善でだんだんわかりやすく😘😘😘
PHPやライブラリ古すぎ問題 👁 :no_good:
バージョンが古い問題
PHPもSDKもバージョンアップ 👁 :blush:
-
array()いらずなど 👁 :sparkles:
- パフォーマンスも改善 👁 :sparkles:
👁 :sparkles:
CakePHP古すぎ問題 👁 :no_good:
CakePHP1.3系がメインだった
- 1.3 👁 :poop:
APIに切り出してCake2系に 👁 :blush:
- 既存ソースを使いたかったのでCakePHPを選択
- APIで主要機能を切り出しCakePHP2.X系に
バグ多すぎ問題 👁 :no_good:
とにかくバグ多すぎ
- 土日にSlackへ緊急対応依頼がとぶ
- 手動テストの限界?
CIでテストを実行した結果 👁 :blush:
- CircleCIを利用 👁 :sparkles:
- PHPUnitとSeleniumでカバー 👁 :sparkles:
👁 :sparkles:
休日の緊急依頼が減少 😘😘😘
色々ありました
まだまだレガシー感あります
1人で走るのは大変だったけど
チームで走ればなんとかなるかも 👁 :blush:
すこしずつ楽になっています
一緒に環境をよくしてくれる人募集しています👁 :sparkles:
シナプス株式会社 http://corp.synapse.am/recruit
👁 _DSF8486.jpg
ありがとうございました
このスライドは 第103回 PHP勉強会@東京 でLTとして発表予定のスライドです。
Register as a new user and use Qiita more conveniently
- You get articles that match your needs
- You can efficiently read back useful information
- You can use dark theme
