継続的デリバリー読書会 5 参加してきた #CDStudy 

10月14日に継続的デリバリー№5が行われましたので、参加してきました。
募集ページ
Twitterのまとめ

タイムテーブル

13:30 - 14:00 アイスブレイク & Chapter10説明(@kyon_mm)
14:00 - 15:15 Chapter10(アプリケーションをデプロイ・リリースする)
15:15 - 15:30 Chapter11説明(@kyon_mm)
15:30 - 16:45 Chapter11(基盤と環境を管理する)
16:45 - 17:00 Chapter12説明(@kyon_mm)
17:00 - 18:15 Chapter12(データを管理する)
18:15 - 18:30 クロージング
今回は、割とプログラミングというよりは、インフラに近い内容だった感じがしました。ですがとても重要な事で、開発チームとして様々な役割の人と連携しなくてはならない事もよくわかりました。

10章 アプリケーションをデプロイ・リリースする

今回は@nobusueさんと@akuraruさんと同じテーブルで議論しました。この章で印象的だったのは、 ブルー・グリーン・デプロイメントカナリアリリースです。
ブルー・グリーン・デプロイメントとは、システムを2系統以上並行稼動させて、デプロイ時に1系統にインストールし、テストを行います。新システムへの移行は、ユーザーをその系統に向かわせる様ロードバランサ等で制御するだけで可能です。。そして、もし何か起こったら、すぐロードバランサで経路を新システムでない系統に戻し、新システムで何が起こったかをじっくり確認するというわけです。絵にするとこんな感じですね。

カナリアリリースは、上記のブルー・グリーン・デプロイメントの仕組みや、アプリケーション内の制御でもいいのですが、一部のユーザーをテスト的に新システムを使用してもらい、ある程度の期間をおいて全ユーザー向けに切り替える仕組みですね。考えてみると、業務系のシステムだけでなく、多くのインストールして使うOSやツール何かも、アルファ版等でこういったやり方をやっていますね。
こういったインフラ系の話は@nobusueさんの得意とする所で、いろいろとためになるお話がありました。ブルー・グリーン・デプロイメントは私の印象では、 「金持ちの仕組み」と思ってしまったのですが、クラウドを使うと安くなるとか(AWSではロードバランサ機能がある)、企業によっては3系統以上持っているとか、実例を聞くことができました。@nobusueさんありがとうございました。

11章 基盤と環境を管理する

この章は主にアプリケーションを実行するOSやネットワーク環境などのお話でした。私たちが開発するアプリケーションは、基盤無しでは動かない物であり、その環境はすでにお客様の元にあるか、新規で準備するのか、それはアプリケーションのスコープによって違うとは思います。継続的デリバリーにおいては、こうした基盤に関する事も、スクリプト化して、バージョン管理にあげる事が書かれています。
私たちのテーブルの議論では、環境を構築する「自動化」の話がよく語られました。ここでよく出てくるツールといえば、 chefpuppetなどがよく話されますね。puppetの方が歴史が古く、資料が多く残っているが、記述する設定は多い様です。chefの方が記述量が少ない様ですが、Rubyの環境に依存する様です。こういったツールが出てくると、サーバー管理の増設が楽になりますね。また、仮想化やクラウドの話をした際、管理対象のサーバーを楽に立ち上げるツールはあっても、間のネットワークやロードバランサ等の設定スクリプトが自動化できない、もしくは機種依存が強いという話題にもなりました。

12章 データを管理する

これも大事な話ですね〜。データの移行は多くのシステムで起こることですし、私自身最近DBに触れることが多くあり、気になる内容です。
書籍の中では、「データ移行を自動化する」とか「データベースをバージョン管理し、ロールフォワードスクリプトロールバックスクリプトを作成する」などの手法が書かれています。これは特に、「止めれない仕組み」に対して有功と考えます。また、継続的デリバリーのように頻繁にデリバリーを行うなら、止められる仕組みであってもそういったスクリプトが必要だと思います。個人的には、新システムに対応したデータ書き込みトランザクション発生時に、旧データベースを更新する仕組みが一番いいと思っています。また、書籍の中ではテストデータをバージョン管理すべきともかかれていました。
議論では、変更に強いテーブル設計にするために、「間にVIEWをはさんでおく」とか、「汎用カラムを作っておく」とかの話になりました。やっぱりそういったケースは稀にあるんですねぇ。 汎用テキスト1とか。。。

まとめ

今回も楽しめました。開発のtobeモデルを少しずつ紐解いていく感じで、勉強になります。いよいよ次回が 最終回!その後、別の書籍にやるのか、報告会をやるのか、いずれにせよ楽しみにしています。何か自分の仕事と絡めていろいろ試してみたいな〜。
↓↓お楽しみなおやつ達↓↓