ランサーズ等のサービスを開発・運用する中で得た知識やノウハウを紹介しています。

Labels:  CakePHP, PHP, SRE, イベント/登壇 投稿者:kanazawa

ランサーズ開発合宿2018 バージョンアップチーム

SREチームの金澤です。

ランサーズ開発合宿のバージョンアップチームの成果についてお話させていただきます。

ランサーズのバージョンアッププロジェクト

現在、ランサーズのバージョンアップはSREチームが主導で行っています。

バージョンアップは、以下のフェーズにわけて進行中です。

  1. CakePHP 1.3 → CakePHP 2.8
  2. PHP 5.3 → PHP 5.6
  3. CakePHP 2.8 → CakePHP 2.x最新
  4. PHP 5.6 → PHP 7 最新

そして、現在、1を進めている最中です。
コントローラー単位で移行を進めており、2018/6時点での進捗は70%でしたが、残る30%については、難易度が高いコントローラー、バッチ、管理画面などが含まれていました。

2018年度のSREチーム

2018/4から4人体制でSREチームが発足しました。
※その詳細は、「SREチームの発足」に書かせていただきました。

そして、バージョンアッププロジェクトをSREチームで担当することになりました。

現在、SREチームは

SRE
CRE
バージョンアップ

の3部門を抱えていて、それぞれがお互いの領域を跨ってカバーしている体制になっています。

※CREチームについては、また別途機会がありましたらお話ししたいと思います。

2018年度のバージョンアップ体制

ランサーズのCakePHP 1.3 → 2.8 バージョンアッププロジェクトは、当初3人でスタートしましたが、現在は、エンジニア全員での総力体制で進めています。

※この経緯については「PHPカンファレンス福岡2018に登壇しました」に書かせていただきました。

バージョンアップを専任で行っているメンバーは現在1人しかいないのですが、これまでの蓄積からある程度手順がパターン化できており、そのノウハウをGithub Wikiにまとめ、エンジニア全員で担当できる体制を整えています。

合宿の方針

総力体制とはいえ、普段の業務でバージョンアップ作業に充てられるのは、SREチームのエンジニアで30%くらい、その他のエンジニアは10%くらいという感覚です。

開発合宿は、普段の業務ではできないことを集中して行うことができる場です。
この機会に一気にバージョンアップを進めたいと思っていました。

今までの合宿では、ほぼ全員が、普段できないようなクリエイティブなテーマで取り組んでいました。
それはそれで楽しいのですが、今年の合宿は過去最大の人数で行うこともあり、確実にアウトプットを出したいと考えていました。

合宿は1泊2日で行われますが、実質的な作業時間は6時間+αくらいしかありません。
限られた時間で、できる限りのアウトプットを出すため、以下の方針で進めることにしました。

バッチのバージョンアップにリソースを集中

バッチのバージョンアップは、比較的パターンが単純で、検証もしやすいため、今回の合宿ではバッチのバージョンアップに全リソースを集中することにしました。

事前にアサイン

事前に、どのバッチを誰が担当するかを決めておきました。
バッチのバージョンアップは、ソース修正自体はそれほど難しいものではないのですが、動作確認を適切にできるかがポイントになります。
バッチを作った人が内容を一番理解しているので、基本的にはバッチを作った人に優先的にバージョンアップをアサインするようにしました。

フライング

合宿は時間が限られているので、何も準備せずに行くと、開発環境のセットアップだけで終わってしまうことにもなりかねません。
各担当者には、事前に1つ以上のバッチのバージョンアップを消化してもらい、一通りのフローを理解してから合宿に臨みました。

現地でリアルタイムリリース

原則、リリース作業は社内でしかできないようにしていますが、今回は合宿時でリリースまでしてしまうことで、確実にアウトプットを確定するようにしました。

そのために、熱海に「槍」を持ってきました。

ランサーズでは、リリース時に「槍」を持つことでリリースロックを実現しています。
古典的な方法ですが、カナリア確認時に別の人が重複リリースしてトラブルになることを防止しています。

現地到着後、リリースできる環境をSREチームが10分で構築しました。

 

結果

バッチだけで20リリースできました!

リリースすると、全社チャットにリリース通知が来るので、休日にも関わらず開発部が猛烈な勢いで進めていることをアピールでき、合宿がどれほど効果が高いイベントかをアピールできたかと思います。

バージョンアップの進捗は、72% → 80%になりました。
1年がかりで進めているプロジェクトが、わずか1日で8%進んだことになります。

この合宿をあと3回やりたい気分です。

おまけ

夕食後の1コマ。

ストIIとぷよぷよは世代関係なく遊べますね。

ランサーズではサービスを成長させてくれるエンジニア、デザイナーを募集しています!
ご興味がある方は、以下URLよりご応募ください。


【中途採用】
サービスリードエンジニア
テックリード(アーキテクト)
フロントエンドエンジニア
サーバーサイドエンジニア
業務エンジニア(社内システム基盤・基幹システム)

【インターン・学生バイト】
19新卒対象サマーインターン
エンジニアインターン

その他採用情報

関連記事

開発環境のDocker化

インフラエンジニアの金澤です。 今回、ランサーズの開発環境をDocker化しましたので、その内容を紹介いたします。 Docker移行の決断 Dockerについては、ここ1年で技術的な調査はしていましたが、決定的なメリットを見出していたわけではなく、採用に踏み切 …

【告知】BASE×Re:Build×Lancersエンジニアイベント

こんにちは! ここ最近の猛暑で洗濯機が壊れたエンジニア広報の宮田です。 本日は、そんな猛暑も吹き飛ばすイベント情報をお伝えいたします! そのイベントとは・・・ レガシーコード改革! UT/CIでWebサービスの技術的負債を解消する取り組み 日時:8月7日(火) …

PHP、CakePHPバージョンアップの決断

インフラエンジニアの金澤です。 この度、ランサーズ稼働環境(PHP + CakePHP)のバージョンアップを決断しました。 まずは私から、その経緯と計画についてお話いたします。 バージョンアップ決断の理由 ランサーズは、2008年にサービスを開始しました。 現 …