Bitbucket のデプロイメント ガイドライン

このページの内容

お困りですか?

アトラシアン コミュニティをご利用ください。

コミュニティに質問

開発ツールは、柔軟性を提供することで強力な機能を実現するだけでなく、チームを成功に導きます。Bitbucket Deployments は、何千人ものお客様と問題に取り組んできた Atlassian の経験を活かし、第一線のチームに役立つプラクティスを推奨および強化するために設計されています。

このページでは、Bitbucket Deployments の背後にあるいくつかの考え方について説明しています。これは、この話題についてのブログ記事の背景としてもお読みいただけます。

継続的デリバリーのために構築

Bitbucket Deployments は、継続的デリバリーを行うチーム (一般的には、週に 1 回以上 SaaS/Web 環境へのデプロイを行うチーム) 用に作られています。Atlassian では、これはソフトウェア開発の将来の姿であり、できるだけ多くのチームがこれを実現することを支援したいと考えています。

継続的デリバリーの基本的な信条は、コードを常にリリース可能な状態に保つということです。これは Bitbucket では、ブランチベースの検証を使用してフィーチャー ブランチを扱った (自動/手動テストおよびコード レビュー) した後、自動または手動でデプロイされる、リリースの準備が整ったコードを master にマージするということになります。

master を常にリリース可能にした場合、次のようになります。

  • 他のブランチでビルドされたホットフィックスを環境にデプロイするのではなく、master で問題を修正して再デプロイする必要がある。
  • 変更の影響範囲の確認作業の一部としてデプロイメントの前にテストを実行できるよう、ビルド パイプラインが十分に高速化されている必要がある。
  • 環境を通じたビルドのプロモーションが通常のプロセスの一部であった場合、それを緊急時にも実行する必要があり、標準プロセスを最適化して処理できるようにする必要がある。

もう 1 つの一般的な前提条件は、機能の切り替えまたは機能フラグを使用して、新しいコードと独立して新しい機能を利用できるようにすることです。

推奨されるワークフロー

Atlassian の開発ツールは一般的に使用される、3 つの環境を持つワークフローに焦点を当てています。正確な名前は異なる場合がありますが、次のプロセスが非常に一般的です。

  • Feature branches are merged to master once they pass code review and have been tested automatically by Pipelines
  • Pipelines deploys automatically to Test, on each commit on the master branch
  • Pipelines にはステージングにデプロイする手動ステップがあり、これは連携機能がテスト環境で手動テストされるとトリガーされる。
    • ステージング アップグレードでは、デプロイメント前のスクリプト、データベース スキーマの変更などが本番環境で正常に機能するかを検証します。
  • Pipeline には本番環境にデプロイする手動ステップがあり、これはステージング環境での検証が完了するとトリガーされる。

チームによってはこのフローのステップをスキップしたり (例: テスト/ステージング環境) 、手動ステップのいくつかを自動化する場合がありますが、ほとんどのチームがこのようなステップを基本的に実行していることを想定しています。

また、コード デプロイメントによって機能を直接リリースするのではなく、ユーザーが機能を使用する準備が整ったときに機能フラグを経由してリリースできるようにすることが重要です。

環境の数の制限について

Bitbucket Deployments は共有環境の履歴を追跡するように設計されているため、ユーザーが想定する可能性のあるいくつかの機能が除外されています。

  • 機能または開発固有の環境は、共有環境として長期的な追跡を行うことのメリットが小さいため、現在含まれません。
  • ブルーグリーンやカナリア デプロイメントなどの本番ロールアウト戦略は、Bitbucket では 2 つの異なるデプロイメントやは環境ではなく、1 つの本番環境とみなされます。Atlassian では、本番環境を、より長い時間枠でコードの変更を追跡できる 1 つの単位としてモデル化することを決定しました。これは、この方法がチームにとって最も有益と判断したためです。詳細なデプロイメント ロールアウト情報の導入は曖昧で複雑になり、ご利用のロールアウト オーケストレーション ツールが提供する情報を複製してしまう可能性があります。
  • 地域に基づいたリージョンは現在提供していませんが、将来の改善で含めることも検討しています。これを Bitbucket Deployments にうまく適合させる方法について、提案がありましたらお知らせください。

Atlassian では 3 つ以上の共有環境が最適となるユースケースを否定しているわけではありませんが、このようなモデルで運用しているほとんどのチームは複雑性に悩まされており、コードを本番環境に送る際のパイプラインが不明確になっていると考えています。4 つまたは 5 つの環境を持つモデルでの各環境のメリットと目的についてより深く理解できるまでは、このような環境の推奨は行いません。

Note: you can continue deploying code using Bitbucket Pipelines but not actually tracking deployments (i.e. don't put the deployment attribute on your step) if you have more than the three environment we provide, or your environment names do not match the ones provided.

ブランチではなくアーティファクトベースのデプロイメントを使用

Pipelines はブランチベースのデプロイメントを完全にサポートしていますが、同じアーティファクトを複数の環境へデプロイできる安全な方法として、アーティファクト プロモーションを使用した手動ステップを使用することをお勧めします。各デプロイメントのブランチを再ビルドすると、環境間でコードがわずかに異なる結果になることがあります (例: 依存関係のバージョン)。

デプロイメントのベスト プラクティスについて

pipelines-feedback@atlassian.com にアイデアや提案をお知らせください。

最終更新日: 2017 年 12 月 13 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.