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

Más contenido relacionado

La actualidad más candente

レコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたちレコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたちrecotech
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発recotech
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thKoichiro Sumi
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveKoichiro Sumi
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Dai Iwai
 
Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ recotech
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurbKoichiro Sumi
 
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介Hinemos
 
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)LIFULL Co., Ltd.
 
ハイブリッドクラウド活用セミナー 20141208
ハイブリッドクラウド活用セミナー 20141208ハイブリッドクラウド活用セミナー 20141208
ハイブリッドクラウド活用セミナー 20141208Osamu Kurokochi
 
JAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトークJAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトークDai Iwai
 
JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料Dai Iwai
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性LIFULL Co., Ltd.
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモrecotech
 
4 power night2014_yoshikawa
4 power night2014_yoshikawa4 power night2014_yoshikawa
4 power night2014_yoshikawaTerraSky
 
RPKIやってみませんか?
RPKIやってみませんか?RPKIやってみませんか?
RPKIやってみませんか?gree_tech
 
JANOG35_RPKIやってみませんか? 20150120
JANOG35_RPKIやってみませんか? 20150120JANOG35_RPKIやってみませんか? 20150120
JANOG35_RPKIやってみませんか? 20150120Osamu Kurokochi
 
gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏
gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏
gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏kintone papers
 

La actualidad más candente (20)

161218 cybozu SRE
161218 cybozu SRE161218 cybozu SRE
161218 cybozu SRE
 
レコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたちレコチョクのサービス群を支えるApiたち
レコチョクのサービス群を支えるApiたち
 
Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発Swaggerを利用した新規サービス開発
Swaggerを利用した新規サービス開発
 
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41thrablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
rablについてざっくりだけ調べてみた #shinjukurb 新宿rb 41th
 
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devloveプロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
プロトタイプとMVPの開発上のギャップの大きさ。リンスタ関ヶ原 東軍先鋒 #devlove
 
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
Global Azure Bootcamp 2019@Tokyo資料【ExpressRoute構築でハメられた】
 
Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ Amazon SageMaker の紹介 + デモ
Amazon SageMaker の紹介 + デモ
 
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
管理画面の作り方ディスカス 新宿.rb 36th #shinjukurb
 
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
【ITpro EXPO 2014】hinemos を活用した oss ミドルウェアの稼働分析ソリューションのご紹介
 
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
20170510 タウンwi fixlifull_スマホアプリ開発の実例 (1)
 
ハイブリッドクラウド活用セミナー 20141208
ハイブリッドクラウド活用セミナー 20141208ハイブリッドクラウド活用セミナー 20141208
ハイブリッドクラウド活用セミナー 20141208
 
JAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトークJAZUG 9周年イベント 懇親会ライトニングトーク
JAZUG 9周年イベント 懇親会ライトニングトーク
 
JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料JAZUG 8周年イベント登壇資料
JAZUG 8周年イベント登壇資料
 
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性趣味と仕事の違い、現場で求められるアプリケーションの可観測性
趣味と仕事の違い、現場で求められるアプリケーションの可観測性
 
Amazon Kinesis Streams デモ
Amazon Kinesis Streams デモAmazon Kinesis Streams デモ
Amazon Kinesis Streams デモ
 
Spring I/O 2015 報告
Spring I/O 2015 報告Spring I/O 2015 報告
Spring I/O 2015 報告
 
4 power night2014_yoshikawa
4 power night2014_yoshikawa4 power night2014_yoshikawa
4 power night2014_yoshikawa
 
RPKIやってみませんか?
RPKIやってみませんか?RPKIやってみませんか?
RPKIやってみませんか?
 
JANOG35_RPKIやってみませんか? 20150120
JANOG35_RPKIやってみませんか? 20150120JANOG35_RPKIやってみませんか? 20150120
JANOG35_RPKIやってみませんか? 20150120
 
gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏
gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏
gusukuではじめるデベロッパーフレンドリーなキントーンのアプリ管理_金春氏&どりぃ氏
 

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

SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみたSORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみたHaruka Yamashita
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?Developers Summit
 
コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~
コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~
コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~aslead
 
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介OSSラボ株式会社
 
React Nativeという技術選択
React Nativeという技術選択React Nativeという技術選択
React Nativeという技術選択Yuta Igarashi
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsTakuya Iwatsuka
 
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパーJuniper Networks (日本)
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップKoichiro Sumi
 
OpenStack Congress Deep Dive
OpenStack Congress Deep DiveOpenStack Congress Deep Dive
OpenStack Congress Deep Divemasahito12
 
企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーションOsaka University
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツTomoya Hashimoto
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)株式会社MonotaRO Tech Team
 
20161114 lazurite open
20161114 lazurite open20161114 lazurite open
20161114 lazurite openNaotaka Saito
 
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)VirtualTech Japan Inc.
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月VirtualTech Japan Inc.
 
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...Brocade
 
Hinemosで簡単にdev opsをサポート!
Hinemosで簡単にdev opsをサポート!Hinemosで簡単にdev opsをサポート!
Hinemosで簡単にdev opsをサポート!Hinemos
 

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

Spring social の基礎
Spring social の基礎Spring social の基礎
Spring social の基礎
 
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみたSORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
SORACOM Harvest + AWS Lambdaでウィンドウ処理をやってみた
 
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
【17-E-4】GitHub Enterpriseユーザ企業登壇!企業文化にイノベーションを起こすモダンなソフトウェア開発環境とは?
 
OpenStack入門 2016/06/27
OpenStack入門 2016/06/27OpenStack入門 2016/06/27
OpenStack入門 2016/06/27
 
コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~
コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~
コロナ禍の働き方のニューノーマル~NRIの数千人のテレワークを支えたサービスとは~
 
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
Site Reliability Engineering (SRE)を可能にするOpenPIEのご紹介
 
React Nativeという技術選択
React Nativeという技術選択React Nativeという技術選択
React Nativeという技術選択
 
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular SessionsSpring I/O 2016 報告 Test / Cloud / Other Popular Sessions
Spring I/O 2016 報告 Test / Cloud / Other Popular Sessions
 
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
【Interop Tokyo 2016】 リコーのサービス基盤を支えるジュニパー
 
おすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップおすすめインフラ! for スタートアップ
おすすめインフラ! for スタートアップ
 
OpenStack Congress Deep Dive
OpenStack Congress Deep DiveOpenStack Congress Deep Dive
OpenStack Congress Deep Dive
 
企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション企業組織論としてのオープンイノベーション
企業組織論としてのオープンイノベーション
 
大規模環境のOpenStack アップグレードの考え方と実施のコツ
大規模環境のOpenStackアップグレードの考え方と実施のコツ大規模環境のOpenStackアップグレードの考え方と実施のコツ
大規模環境のOpenStack アップグレードの考え方と実施のコツ
 
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
Pythonエンジニアの最適なキャリアを考える (PyCon JP 2016 ジョブフェア LT)
 
20161114 lazurite open
20161114 lazurite open20161114 lazurite open
20161114 lazurite open
 
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
CD(継続的デリバリー)手法を用いたサーバシステム構築の自動化 - OpenStack最新情報セミナー(2016年12月)
 
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
Yahoo!Japan北米DCでOCPのツボをみせてもらってきました - OpenStack最新情報セミナー 2016年5月
 
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
≪先進企業に学べ!≫大塚商会 × BROCADE 『たよれーる』のデータセンター基盤に、なぜイーサネット・ファブリックを採用したのか?~SDNへの進化のス...
 
OpenStack環境の継続的インテグレーション
OpenStack環境の継続的インテグレーションOpenStack環境の継続的インテグレーション
OpenStack環境の継続的インテグレーション
 
Hinemosで簡単にdev opsをサポート!
Hinemosで簡単にdev opsをサポート!Hinemosで簡単にdev opsをサポート!
Hinemosで簡単にdev opsをサポート!
 

Más de recotech

RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニングrecotech
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-recotech
 
業界あるある Music偏
 業界あるある Music偏 業界あるある Music偏
業界あるある Music偏recotech
 
レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能recotech
 
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行recotech
 
WIZY企画の裏側
WIZY企画の裏側WIZY企画の裏側
WIZY企画の裏側recotech
 
#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。recotech
 

Más de recotech (7)

RecoChoku tech night #09 -reinvent2018報告会- オープニング
RecoChoku tech night #09 -reinvent2018報告会-  オープニングRecoChoku tech night #09 -reinvent2018報告会-  オープニング
RecoChoku tech night #09 -reinvent2018報告会- オープニング
 
Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-Reco choku tech night #09 -reinvent2018報告会-
Reco choku tech night #09 -reinvent2018報告会-
 
業界あるある Music偏
 業界あるある Music偏 業界あるある Music偏
業界あるある Music偏
 
レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能レコチョク・ラボが考える人工知能
レコチョク・ラボが考える人工知能
 
Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行Oracle racからaurora my sqlへの移行
Oracle racからaurora my sqlへの移行
 
WIZY企画の裏側
WIZY企画の裏側WIZY企画の裏側
WIZY企画の裏側
 
#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。#recotech_AWS移行してみたけどぶっちゃけどうよ。
#recotech_AWS移行してみたけどぶっちゃけどうよ。
 

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

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