記事からなる連載「万人のためのオートメーション」を書いています。彼は、継続的デリバリーとクラウドを利用して、高品質のソフトウェアをより短時間に、より頻繁に提供することに熱意を持っています。彼のブログを読んでください。参考文献コメントこの連載について開発部門は、運用部門から多くのことを学べます。運用部門も開発部門から多くのことを学べます。この連載では、運用部門の考え方と開発部門の考え方を相互に適用し、ソフトウェア製品をこれまでよりも迅速かつ頻繁に提供可能な総体的要素として捉える場合の実用性を探ることに話題を絞ります。あらゆるものをバージョン管理するとは、その言葉どおり、インフラストラクチャーから、構成、アプリケーション・コード、そしてデータベースに至るまでのすべてを管理するということです。つの総体的な単位としてとらえることができるようになります。チームがすべてのものをバージョン管理すれば、始終アプリケーション・コードのどのバージョンがどのデータベースに対応しているのかを調べたり、ソフトウェア・アプリケーションのどのバージョンがどの環境で動作するのかを調べたりすることはありません。そのようなチームは、ソフトウェア・システムを構成するソース・ファイルを共有サーバー上に置くことも、ラップトップ上のフォルダー内に隠すことも、バージョン管理されていないデータベースに組み込むこともしません。ソフトウェア・システムのどのバージョンでも再現することができます。使用して、ソフトウェア・システム全体を作成することができます。私の経験では、すべてのものをバージョン管理するという概念を理解するのは簡単ですが、この概念が完全に適用されている例を目にすることはほとんどありません。アプリケーション・コードや、構成の一部、そしておそらくデータについては、バージョン管理が行われているのを目にするでしょう。使用しているチームもあれば、共有ドライブとバージョン管理システムの組み合わせを使用しているチームもあります。パッケージ・リポジトリーのコンポーネント)、そしてデータベースとそのデータベースを構成するデータを作成するために必要なスクリプトのすべてをバージョン管理している企業を見かけることはあまりありません。完全なソフトウェア・システムを再現できるかどうか?」を考えてみてください。これができなければ、すべてのものをバージョン管理していることにはなりません。複数のリポジトリー然るべき理由から、バージョン管理対象のデータベースに保管されている構成アイテムを、複数のソース・リポジトリーまたは依存関係管理リポジトリーを使用して保守しなければならないこともあります。この場合に有効な手法は、これらの複数のリポジトリーに論理バージョンを適用し、ソフトウェア・システムの各リビジョンを識別するために使用できる「構成アイテム一覧」を生成することです。すべてのものをバージョン管理する際に重要となる前提条件は、すべてのソース成果物をスクリプトの形にすることです。このことは、インフラストラクチャー、データ、構成、アプリケーション・コードに当てはまります。スクリプト化する必要はありませんが、すべてのソース成果物がスクリプト化されていれば、これらの成果物を簡単にバージョン管理することができます。この記事では、各種のソフトウェア成果物をコードに記述する方法と、これらのコードを効果的に利用する方法を説明します。記事に記載するコードは、各コンポーネントをスクリプトとして実行およびバージョン管理できるように定義する方法を例示するものであり、コンポーネント・タイプごとのスクリプトを作成および実行する方法を説明するものではありません。DevOps」および連載「万人のためのオートメーション」の記事にさらに詳しい例が記載されています。アプリケーション・コードアプリケーション・コードは、ソフトウェア・システムの構成要素のなかでも、バージョン管理しなければならないものとして、おそらく最も明白な要素です。バージョン管理リポジトリーにコミットする方法を示します。リポジトリーにコミットおよびプッシュするコマンドソフトウェア・アプリケーションを作成するために必要なアプリケーション・コードはすべて、バージョン管理リポジトリーにコミットしてください。これと同じプロセスを使用します。インフラストラクチャーの自動化」を参照)。したがって、インフラストラクチャーもバージョン管理システムでバージョン管理することができます。インフラストラクチャーのスクリプトにはマニフェスト、モジュール、クックブックなどが指定される場合もありますが、いずれにしても、環境を作成するために実行できるテキスト・ベースのスクリプトであることに変わりはありません。インフラストラクチャーをコードに定義することがベスト・プラクティスであるとしたら、人々は一般にどのような手法を採っているのでしょうか?それは、環境を毎回手作業で構成する「作品」を寄せ集めるという手法か、手作業による手順と自動スクリプトの実行を組み合わせるという手法です。いずれにしても、エンジニアが毎回その一連のステップを実行しなければならないことから、どちらの手法もボトルネックとなります。ひとつのステップを入念に記述しようとする人もいるかもしれませんが、問題は、説明書に誤りやステップの記述漏れがある場合や、一連のステップを実行するオペレーターが正確に手順に従わない場合もあることです。つのコマンドで実行できるコードにインフラストラクチャーを完全に記述することが、唯一の解決策となります。データベースをインストールする手順をコードに記述しています。サーバーから実行することもできます。}...このマニフェストは単独で、サーバーのダウンロードから、インストール、実行までを行います。他のマニフェストを追加することによって、環境全体をスクリプトに記述することができます。これらのスクリプトをバージョン管理リポジトリーにチェックインすれば、インフラストラクチャーのすべてのリビジョンを追跡できるようになるため、より効果的な変更管理が実現します。上に戻る構成構成は、環境によって異なる情報を定義します。環境を作成する際に実行されるスクリプトでは、この構成情報を使用して、ビルド、デプロイメント、そしてテストを実行します。すべて動的に取得できるため、この構成でハード・コーディングする部分はまったくありません。構成のすべてを動的にすることは不可能な場合でも、クラウドを使用すれば、ほとんどのソフトウェア・デリバリー・システムの悩みの種となりがちな、ハード・コーディングされた構成の部分を大幅に減らすことができます。上に戻るデータスクリプト化とバージョン管理に伴う作業を多いととらえるべきか?私が最近、データベース、データ、変更をスクリプト化する概念を説明したときに、「あまりにも大量の作業になりそうだ」という意見がありました。私はそれに対して、本当の状態がわからないデータベースを保守するほうが、遥かに作業量が多く、危険であると答えました。記憶を頼りにデータベースを稼働状態に維持することになります。スクリプトで定義することができます。スクリプトには、データベース、テーブル、プロシージャーなど、データを除くあらゆるものを作成するためのスクリプトが含まれます。ステートメントが含まれます。スクリプトの一部を抜粋します。スクリプトの抜粋を記載します。&lt;/changeSet&gt;...このようにデータベースの作成、データ、そしてデータベースの変更は、スクリプトに定義することができます。これらのスクリプトはビルド・プロセスの一貫として実行され、バージョン管理リポジトリーで完全にバージョン管理されます。つのディストリビューションにパッケージ化します。ファイルなどのバイナリーになるのがほとんどです。ビルドでインフラストラクチャー・スクリプトを実行して、環境を作成することもできます。作成される環境を仮想インスタンス、またはインスタンスを定義可能なイメージにすることも可能です。ビルドでは、データベース・スクリプトからデータベースを生成することもできます。ビルドで使用するのは、構成ファイルまたはデータベースに定義された構成です。ビルド・スクリプトの一部を抜粋します。&lt;/plugins&gt;&lt;/build&gt;...いわゆる「デプロイメント自動化ツール」と呼ばれるツールを提供しているベンダーはいくつかありますが、その呼び名には多少誤りがあります。それは、これらのツールが行うのはデプロイメントの自動化ではなく、オーケストレーションだからです。これらのツールでデプロイメントのステップと順序を記述することはできても、実際のデプロイメントは一連のスクリプトや手動のプロセスによって行われます。デプロイメント成果物とワークフローのバージョン管理をサポートするツールというものには、めったにお目にかかれません。これらのツールのなかには内部でバージョン管理を行うものもありますが、そのツールを常に使用しているのでない限り、ソフトウェア・システムの特定のリビジョンを探す場合にはほとんど役に立ちません。ツールを常に使用するとしても、デプロイメントのバージョン管理とその他のソース成果物のバージョン管理は切り分けられています。このようなベンダーのツールを使用している場合でも、デプロイメントのバージョン管理を他と切り分ける必要はありません。つのコマンドを実行するだけで完全なデプロイメントを実行することができます。自動化されたデプロイメントに自動テストを組み合わせて、オーケストレーション・ツールでそのデプロイメント・スクリプトを実行してください。使用すると、複数のノードおよび環境の役割にまたがるデプロイメントに対し、サーバーの停止、ファイルのコピー、ワークフローの適用などのタスクを定義することができます。スクリプトの抜粋を記載します。使用するのが効果的な方法です。使用してデプロイメントのすべてのステップをスクリプトにすれば、これらのスクリプトは独自仕様のツールと密接に結合されないため、継続的デリバリー・パイプラインを実施しているチームにぴったりの方法となります。デプロイメントをスクリプトとして定義した後は、デリバリー・パイプラインの他のすべてのコンポーネントと同じようにデプロイメントをバージョン管理することができます。上に戻るシステム進歩的なチームの間では、インフラストラクチャー、構成、データ、およびアプリケーション・コードをバージョン管理することが望ましいという意見が大多数を占めるようになってきていますが、バージョン管理できるコンポーネントはこれらのほかにもあります。ソフトウェア・デリバリー・システムの各部を作成するために使用している環境が機能しなくなったとしたら、ソフトウェア・システムがどうなるかを考えてみてください。した場合に備えて、ソフトウェア・システムの環境を完全にスクリプト化した後に、インフラストラクチャー自動化ツールを使用して、ソフトウェア・デリバリー・システムを作成するための環境を完全にスクリプト化することができます。バージョン管理されます。サーバーとジョブ構成をバージョン管理する例を記載します。pushソフトウェア・システムの他のあらゆる構成部分と同様に、このスクリプトをバージョン管理リポジトリーでバージョン管理することができます。ゾーンでは、皆さん個人、あるいは皆さんの組織がアジャイル開発の原則に基づく基礎を固めるために役立つニュース、ディスカッション、トレーニングを提供しています。今回の記事では、任意の時点でソフトウェアをリリースすることを可能にする継続的デリバリー・プラットフォームを開発チームと運用チームが協力して作成するときには、すべてのものがバージョン管理の対象となること、そしてすべてのものがバージョン管理されることを説明しました。インフラストラクチャー、データ、アプリケーション・リソースのすべてがバージョン管理されていれば、ソフトウェア・システムを提供するシステムを構成するコンポーネントもバージョン管理することができます。ユーザーのために開発するソフトウェア・システム、そしてこれらのソフトウェア・システムをユーザーに提供する際に使用する内部システムのすべてのリソースをスクリプト化することで、あらゆるもののバージョン管理が可能になります。次回の記事では、動的構成管理について説明します。この手法では、静的な環境固有のプロパティーを構成に使用することがなくなります。記事からわかるように、さまざまなタイプのバージョン管理ソフトウェアを利用できます。利用してデータベースの変更を管理してください。クラウド・インフラストラクチャーで、デリバリー・パイプラインのプロパティーを動的に構成できます。使用して、自動化されたデプロイメントを定義して実行することができます。使用して、インフラストラクチャーをコードとして定義できます。テクニカル・イベントで最新情報を入手してください。業界の動向についての情報を迅速に把握してください。フォローしてください。初心者向けの製品のインストールとセットアップから、熟練開発者向けの高度な機能に至るまで、さまざまに揃ったデモを見てください。高度なバージョン管理、ワークスペース管理、並行開発のサポート、そしてビルド監査により、生産性を向上させます。物理サーバー、仮想サーバー、ソフトウェア、ストレージ、およびネットワークを自動化して、動的なインフラストラクチャーを実現します。サービスの高可用性および自動化を実現します。製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。コミュニティーに参加してください。調べることができます。コミュニティーでは、組織がアジャイル開発の原則に基づく基礎を固めるために役立つニュース、ディスカッション、トレーニングを提供しています。サイン・イン必須フィールドは(*)で示されます。サインインしたままにしてください。ご使用条件に同意したことになります。サインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。送信されたすべての情報は安全です。サインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。投稿するコンテンツと一緒に表示されます。コミュニティーでユニークである必要があります。プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。必須フィールドは(*)で示されます。ご使用条件に同意したことになります。送信されたすべての情報は安全です。(Brasil)Español。