"Continuous Delivery with Windows and .Net" (ダウンロード無料)はMatthew Skelton氏とChris O'Dell氏による短い本で、Jez Humble氏とDave Farley氏の"Continuous Delivery" の内容に対するWindowsと.Net環境向けの優れた補論と見ることができるだろう。
最初の章と最終章には継続的デリバリの論理的背景と組織構造へのインパクトについて書かれているものの、残りは継続的デリバリを成功させるツールの概要を説明している。
この本の主な強みはWindowsに馴染みやすいツールの学習のために必要な情報をすべて載せていることだろう。著者が指摘するように、"この本はJezとDaveの本の補遺であり、Windowsと.NETを使っているチームの継続的デリバリ導入を促進するためのものです"。2章から6章は多くの継続的デリバリに必要な6つのエンジニアリングの実践、つまり、バージョン管理や継続的統合、配置のパイプライン、モニタリングとインフラの自動化について書かれている。
LateRooms.comが配置パイプラインを導入することで配置のサイクルの時間が大幅に改善された事例や、JustGivingがインフラを自動化することでピークの需要に合わせられるようになった事例など、この本を通じて推奨される方法を導入した企業の実情に触れることもできる。
2章はバージョンコントロールのツールとその使い方が説明されている。Windowsの世界でもっとも一般的なツール、例えば、GitやTFSが取り上げられている。著者は長期に渡るブランチや機能トグルのような継続的統合の難点を避ける選択肢を説明している。この章の終わりではパッケージ管理についてのアドバイスをしている。パッケージ管理はLinuxに比べWindowsでは新しい仕組みだ。3章では継続的統合とビルド自動化ツールのリストを提示し、.Netプロジェクトの構造化の仕方(例えば、"コンポーネントやサービスごとにひとつのソリューションファイルを使う”)のような.Net固有のアドバイスも書いている。4章は配置パイプラインについてだ。ブルー/グリーンやカナリアといったの説明、ファイルの配置と機能の有効化の分離、データベース変更とマイグレーションの自動化について説明されている。モニタリングにも個別に章が割かれている。Windowsでもっとも一般的なメトリクス収集方法であるパフォーマンスカウンターの収集を超えて、ログの収集や開発者がメトリクスを集めるための別のモニタリングとアプリケーションパフォーマンス管理について説明する。最後にWindowsでのインフラの自動化パターンとベストプラクティスと説明する。Linuxのインフラ自動化とは別の考えとアプローチが必要だ。
InfoQはWindowsと.Net環境での継続的デリバリについて著者に話を聞いた。
InfoQ: なぜこの本を書く必要があったのでしょうか。
Chris O'Dell: 継続的デリバリはLinuxのものであり、.Netには向かないという一般的な考え方に戦いを挑みたいと思っていました。そのような時期もあったのは事実ですが、時間が経ちMicrosoftは継続的デリバリについて大きな改善を進めたのです。
Matthew Skelton: ふたつの大きな理由があります。まず、2010年にJez HumbleとDave FarleyがContinuous Deliveryという本を書きましたが、この本に紹介されているパターンの多くはWindows/.NET環境では実現しにくいものでした。その後、Windows &.NETの自動化とAPI、関連するツールは大幅に改善されました。次に、私の多くの顧客がここ数年Windows & .NETで開発をしており、いくつか共通の技術を使っているというのがわかりました。本を書くことで学習したことと得た知見を一緒にすることができたのです。
InfoQ: この本から何を学んで欲しいですか。
Chris O'Dell: Windowsと.Net環境で継続的デリバリを少しづつ進めていく方法を学んで欲しいです。
Matthew Skelton: 2016年、Windowsと.Netの継続的デリバリは可能であるだけでなく、少なくても技術サイドから見れば簡単なことだということです。
InfoQ: 長い間、継続的デリバリとDevOpsのツールとサポートという点では、Windowsと.Net環境はLinuxに遅れをとっていました。この差が縮まったのでしょうか。それとも、まだ成熟していない領域があるのでしょうか。
Chris O'Dell: The last few revisions of ASP.Netと.Net Frameworkの最新のリビジョンにはウェブアプリを簡単に配置し、パッケージを配置物に含められるようにするための設計上の変更が加えられています。.Net Coreの開発では、.NetとWindowsのバインドがなくなっているのでさらに楽になります。
Matthew Skelton: 最大の違いはコンテナのサポートです。私たちがこの本を書いた時点(2015年8月)以降、Microsoftはいくつかの大きな改善を進めました。Linux上でのSQL ServerのサポートやDockerのWindowsサポート、そしてWindows Nanoのようなものも出てきました。Windowsの世界でこのような革新がおきたのは素晴らしいことです。私たちの本では取り上げられなかったのは残念です。いつまでも本を書き続けるわけにはいかないですから。
InfoQ: 逆から見た場合、Linuxにはなく、Windowsと.Net環境にはある機能はあるでしょうか。
Chris O'Dell: 残念ながら私には答えられません。Windowsと同じ程度、Linux環境で経験を積んではいないので。
Matthew Skelton: .NETは素晴らしい実行環境であり、OSXやLinuxなど非Windowsが.NET Coreをサポートするのは素晴らしいと思います。Visual Studio Codeのマルチプラットフォームサポートも素晴らしいです。誰もがVisual Studioの素晴らしい機能を使い始めることができるのですから。
InfoQ: WindowsとLinuxでは歴史的に運用についての文化が大きく異なります。OSの思想の違いを反映しているのです。Windowsの文化では継続的デリバリを進める上で難しい点はあるのでしょうか。
Chris O'Dell: おそらくあるでしょう。しかし、私はLinuxと完全に比較できるくらいの経験はありません。
Windowsと.Net環境を使っている企業での継続的統合では、Linuxサーバを導入して監視やメトリクス、ロギングを行っているケースが多いです。Matthew Skelton: Windowsだけ(あるいはMicrosoftだけ)で構成する文化の企業もまだあります。しかし、補助的なツールの世界(ロギング、メトリクス、モニタリングなど)では特に、他の技術を試すようになっています。
InfoQ: LinuxとWindowsの両方を使っている企業では、継続的デリバリのベストプラクティスは何でしょうか。可能な限り統合したほうがよいのでしょうか。それとも、分離したほうがいいのでしょうか。
Chris O'Dell: それぞれの環境の実装を選んだ理由とそれぞれの環境が提供するサポートによって、最適なやり方を選ぶのがよいでしょう。
Matthew Skelton: どちらかの方法を‘優れている’とするのは適切ではありません。重要なのはチームがツールを試す時間を持ち、どのようなやり方が最適なのか学ぶことです。
InfoQ: 短期的/中期的な観点から、Windowsの継続的統合でもっとも面白いことは何でしょうか。長期的にはどうでしょうか。
Chris O'Dell: .Net Coreは.Netにとって大きな変化になりそうです。.Net FrameworkからWindowsが分離されるということは、.Net Frameworkに多くの新しい開発者と配置戦略を呼び込みます。私はクラウドサービスを使っていますが、Windows Nanoにも注目しています。イメージのフットプリントを小さくしプロビジョニングの時間を短縮するでしょう。
Matthew Skelton: コンテナやWindows Nanoのような軽量なホストはチームに新しい選択肢を与えます。また、Azureも引き続き革新が続くでしょう。AppVeyorやOctopusもWindows/.NET/Azureをサポートするために進化するはずです。
Rate this Article
- Editor Review
- Chief Editor Action