382
362

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

レガシー開発環境を今風の開発に近づけるために一年やってきたこと

Last updated at Posted at 2016-06-29
1 / 56

#自己紹介
@pugiemonn といいます。
オンラインサロンプラットフォームを手掛けるシナプス株式会社で開発とマーケティングを担当しています。

シナプス画面


#今日の話
1年前にレガシー環境に参加したメンバーがレガシーな問題に対して、どのような取り組みを行ってきたかお話します。


#開発チームメンバーゼロ問題 :no_good:


#社長1人で3年開発していた

  • 1人で走るのはつらい
  • 突然ユーザー数が増加しはじめピンチに

LGTM_tamuken.png


#求人がんばった結果 :blush:
チームメンバー10名(インターン生含む)になりました✨

DSC_4888.jpg


バージョン管理されてない問題 :no_good:


#1人だったのでバージョン管理など無かった

image.png


GitとGithubを導入した結果 :blush:

  • まずはSourceTreeから :sparkles:
  • 作業ログがわかるようになった :sparkles:
  • 問題発生箇所の調査が容易に :sparkles:

#作業がチケット化されていない問題 :no_good:


#1人だったのでチケットなど無かった

  • 何のタスクかわからない :poop:

image.png


チケット管理した結果 :blush:

  • 何の作業かわかるようになった :sparkles:
  • 現在はBacklogを使用 :sparkles::sparkles:
  • Githubとの連携で調査が容易に :sparkles::sparkles::sparkles:

#デプロイがSFTP問題 :no_good:


#FTPクライアントTransmitでアップロード

  • ちょっときつい😓😓😓😓😓

image.png


デプロイの自動化を進めた結果 :blush:

  • ひとまずgit pullでデプロイするように✨
  • 後にシェルを作ってデプロイ✨✨

次はElastic Beanstalkかも✨✨✨


#ローカル開発環境が存在しない問題 :no_good:


#当時は本番環境が開発環境

  • 本番のEC2のコードをそのまま修正

image.png


#開発環境をVagrantで作成した結果 :blush:

  • ローカル開発環境が誕生✨
  • 開発環境をチームで統一化✨✨
  • 開発環境の自動化✨✨✨

ちょっとずつ改善されています😘


#1つのEC2インスタンスに全部乗っている問題 :no_good:


LAMPが1つのEC2インスタンスに全部入っている

  • MySQLもストレージも全部入っている
  • 10GBのHD使用率が90%越え
  • HDが溢れてしょっちゅう止まる

image.png


#AWSのサービスに分散 :blush:

  • S3を使用することで、HDが溢れて止まることがなくなる ✨✨✨

s3.jpeg


#DBを手動バックアップ問題 :no_good:


手動でたまにdump

  • EC2インスタンスが壊れたりするとまずい

image.png


#MySQLをRDSに変更 :blush:

  • もしものときも復帰可能に!

rds.png


#1人でがんばっちゃう問題 :no_good:


#3日くらい徹夜すればできるはず

  • チーム開発経験が少ない
  • 1日は72時間あるから大丈夫など迷言増加

image.png


#大変なときはチームを頼ろう :blush:

  • 徹夜作業の減少✨
  • 負債の減少✨✨

チームに共有する文化ができてきました😘


#無駄なコード多すぎ問題 :no_good:


#過去のチャレンジの負債

  • CMSが何個もリポジトリに :poop:
  • 1つのコントローラが1万行以上 :poop::poop:

nayami_thumb.jpg


#不要なものを削除したり分割中 :blush:

  • 不要なコード、CMSやライブラリを削除 :sparkles:
  • コントローラを分割 :sparkles::sparkles:

徐々に見やすくなってます😘

237万行削除

#命名適当すぎ問題 :no_good:


読んでもわからないコード

  • stest1 のようなアクション名 :poop:
  • wpprpayment のような謎の変数名 :poop::poop:

headache.jpg


#コーディング規約を入れたり勉強会した結果 :blush:

  • PSR-2を導入 :sparkles:
  • リーダブルコードの内容を一緒に勉強 :sparkles::sparkles:

 少しずつ読みやすくなっていますす😘


#型が適当すぎ問題 :no_good:


何でもテキストで判定

  • Stringをキーにして判定 :poop:
  • Trueの代わりに1という文字列が返る :poop::poop:

image.png


#APIで返す型だけは担保 :blush:

  • JsonSchemaを導入 :sparkles:

 APIの不具合が減少😘

参考 : JSON SchemaとPHP


#DB管理と設計が適当すぎ問題 :no_good:


開発の度にカラムを足していた

  • 1テーブルのカラム数多すぎる :poop:
  • 型が適当で正規化されていないテーブル :poop::poop:
  • 必要なカラムだがぱっと見で意味不明なカラム名 :poop::poop::poop:

image.png


#正規化して型を指定 :blush:

  • 正規化してテーブルを分割 :sparkles:
  • 命名を変更、型変更や制限を追加 :sparkles::sparkles:

日々の改善でだんだんわかりやすく😘😘😘


#PHPやライブラリ古すぎ問題 :no_good:


バージョンが古い問題

  • 遅いだけでなくいろいろ大変 :poop:
  • 新しいライブラリが入れられない :poop::poop:

php.png


#PHPもSDKもバージョンアップ :blush:

  • array() いらずなど :sparkles:
  • パフォーマンスも改善 :sparkles::sparkles:

#CakePHP古すぎ問題 :no_good:


CakePHP1.3系がメインだった

  • 1.3 :poop:

cake.jpg


#APIに切り出してCake2系に :blush:

  • 既存ソースを使いたかったのでCakePHPを選択
  • APIで主要機能を切り出しCakePHP2.X系に

#バグ多すぎ問題 :no_good:


とにかくバグ多すぎ

  • 土日にSlackへ緊急対応依頼がとぶ
  • 手動テストの限界?

image.png


#CIでテストを実行した結果 :blush:

  • CircleCIを利用 :sparkles:
  • PHPUnitとSeleniumでカバー :sparkles::sparkles:

休日の緊急依頼が減少 😘😘😘


#色々ありました


#まだまだレガシー感あります


#1人で走るのは大変だったけど

IMG_2573.jpg


#チームで走ればなんとかなるかも :blush:


#すこしずつ楽になっています


一緒に環境をよくしてくれる人募集しています:sparkles:

シナプス株式会社 http://corp.synapse.am/recruit
_DSF8486.jpg


#ありがとうございました


このスライドは 第103回 PHP勉強会@東京 でLTとして発表予定のスライドです。

382
362
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
382
362

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?