Successfully reported this slideshow.

#recotech_レガシーなシステムから立て直すためにしたこと

1

Share

Upcoming SlideShare
WIZY企画の裏側
WIZY企画の裏側
Loading in …3
×
1 of 20
1 of 20

More Related Content

Related Books

Free with a 14 day trial from Scribd

See all

Related Audiobooks

Free with a 14 day trial from Scribd

See all

#recotech_レガシーなシステムから立て直すためにしたこと

  1. 1. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 レガシーなシステムから立て直すためにしたこと 株式会社レコチョク
  2. 2. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 レコチョクのエンジニア文化について 2 まだまだエンジニア文化は浅い会社 まさにこれから自分たちでエンジニア文化を根付かせていこうしている最中
  3. 3. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 レガシーシステムとは 3 時代遅れとなった古いシステムのこと ※IT用語辞典より 最近だと、テストコードが書かれていない時点でレガシーとよばれていたり、、
  4. 4. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 2014年に入社 4 • 入社してすぐ まさにレコチョクのシステムの総入れ替えの真っ最中 • その音源の配信基盤となるシステムの管理画面が完成していない! • 担当者がおらず、リリースまであと2ヶ月 • なんとかしてくれないか? じゃあ、ちょっと見てみます!!
  5. 5. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 システム構成 ちょっとだけ 5 • BtoB向けの管理画面 • オンプレミスで動作 • 言語:PHP5.4系、Java7 • フレームワーク:CakePHP • DB: PostgreSQL • その他:Apache… ロードバラン サ
  6. 6. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 おぉぉぉ 6 新しい物を開発しているはずなのに レガシーだ!!
  7. 7. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 問題点 7 • ソース管理ができていない • リリース作業複雑すぎ • 課題管理表がエクセル • テストコードがない • 環境構築複雑すぎ • 検証、本番にリリースすると動かない • リファクタリングする勇気が出ない • etc 技術的負債 継続的に開発を続けてい行くには困難な状態
  8. 8. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 技術的負債 8 イニシャルの開発では、リリース日等に追われていたりで、多忙になっていたり するので、技術的負債を抱えるということをあまり意識しないで開発を行う人が 多い。 長期的な目で見ると問題となる • 負債が更に負債を呼ぶ • 工数が増える • 障害が増える • 開発者のモチベーション低下
  9. 9. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 そんなおり・・・ 9 システム全部をAWSに移行するというPJが発足 これだ!! EC2
  10. 10. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 10 レコチョクで継続的な開発を行えるようにCI導入してみた!
  11. 11. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 コミュニケーションから変えてやろう 11 slack導入 ・コミニケーションがスムーズになる ・メールベースより楽 ・通知を受け取ることができる ・誰がデプロイして、誰がpushしたか? ・エラーの通知 ・ChatOps ・アイデア次第ではより便利に hubot, botkit これまで ・メールが主流 ・スピード感がない ・大量のメール ・気軽さがない 変えてやろう!
  12. 12. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 ソースのバージョン管理問 題 12 SVNからGitへ GitHub Flowみたいな運用フロー導入 ・高速 ・デグレの発生を抑えられる ・ブランチの切り替えによる複数機能の開発の楽さ ・タグによるスナップショット管理 これまで 変えてやろう! ・バージョン管理できていない ・デグレが大量発生 ・肥大化して超重い(Updateできない) ・利用ルールがない
  13. 13. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 継続的な開発が困難問題 13 Jenkinsの導入 • 誰が何回やっても同じ結果になるように、自動化する • それが簡単に継続的に行えるようにしておく • 10個のシステムが有り、10通りのリリース方法があった場合・・・ • ある人しかリリースできない。休めない・・・ • 手作業で工数がかかりすぎ。精神的にしんどい・・・ これまで CIサーバー導入して変えてやろう!
  14. 14. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 デプロイ自動化してみた 14 Blue-Green Deploy AWS CloudFormation AWSのアーキテクトをJson形式のテンプレートに記述しておけば、 その環境を自動で構築してくれます v1.0.0 v2.0.0 ・環境ごと切り替える blue green やってみて良かったー ロードバランサーから切り離して・・・ みたいな面倒くさいことがない
  15. 15. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 テストコードがないから書いてみた 15 受け入れテストをコード化しよう ・そもそもテストコードが書けるようなコーディングになっていない ・Fat Class, Fat Controller… ・何か機能を追加したら、今まで動いていたものが動かなくなってる可能性もある ・手動でちまちまテストするの?? ・簡単に画面のテストが自動化できる ・どのようなテストをしているか見てわかる ・リグレッションテストが自動化された これまで こんな面倒くさいの変えてやろう! やってみて良かったー♪
  16. 16. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 環境構築を自動化してみた 16 AnsibleとPackerの導入 ・サーバーのセットアップを手動 ・ある人しかセットアップできない ・時間がかかる ・頻繁にUpdateしないといけない PackerでEC2を立ち上げ、Ansibleを使ってセットアップして、AMIを生成する ・Ansible: ymlファイル(PlayBook) ・Packer: jsonファイル これまで 変えてやろう! ・サーバー構築の手順書がコード ・だれがやっても同じ結果 ・用意に変更が可能 ・簡単に書ける やってみて良かったー
  17. 17. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 他採用したもの 17 タスク管理 redmine ToDo管理 trello ドキュメント管理 Sphinx これまで ・エクセル文化 ・検索できない ・タスクを覚えられない 変えてやろう! ・作業ログがない ・いつ誰が何をしたのかわからない ・Wikiを書く文化がない
  18. 18. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 いろいろ採用したことによって 18 ・自動化したことによっての冪等性の確保 ・安定したデプロイ ・テストコードが頻繁に走ることによる品質の維持 ・コストの削減 もちろん課題も出てきます やってみて良かった! 技術的な負債は返済したとしてもまた増える可能性は常にある
  19. 19. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 さいごに 19 安定した開発と 新しいことへの挑戦へ レコチョク内でCI文化を取り入れてみて ・もちろんいきなり全社的には根付かない ・自分たちがやっていて、周りからそれを見てもらう ・ただ、何もやらないと始まらない ・チャレンジさしてくれる 少しずつですが変わりつつあります!
  20. 20. © Recochoku Co.,Ltd. Proprietary and Confidential 2016/10/06 20 ご静聴ありがとうございました

×