Open10
プロダクトの(実行)環境戦略、つまりアプリケーションのデプロイメント環境について
ソフトウェアやシステムの実行環境について基本的なことを整理したくなったのでまとめます。
Background
- システム開発や運用保守のプロセス全体を見て何かをする仕事をすることが多い
- システム構築の最初の時点で実行環境の設計ができてないと、あとあと苦労することが多い
- 実行環境の設計に関しては標準化されたものはなく、業界や組織で培われたプラクティスが採用されていることが多い
- このあたりを多少なりとも抽象化して、会話のベースとできる情報が欲しい
Goal
- ソフトウェアやシステムの実行環境についての情報がまとまっていること。
Out of Scope
TBD
Link
Summary
- Deployment Environment (デプロイメント環境)と呼ぶよ。それを考えることを DTAP Strategy (DTAP戦略)と呼ぶよ。
- DTAP street というものがあるよ
- DTAP street は歴史のある考え方なので、よりアジャイルに本番環境にリリースするためのリリースエンジニアリング的なノウハウを組み合わせて使うよ
- まずは DTAP 構成が必要な理由や、一般的な DTAP 構成と活用方法について知ると良いよ
- アクターとシナリオから整理すると、自分の組織でなにが必要となるのかイメージしやすいよ
Links
DTAP
- DTAPサイクル - Wikipedia
- Development, testing, acceptance and production - Wikipedia
- DTAP, Test strategy for developing applications
- Professional Programming: DTAP - Part 1: What is DTAP? | php[architect]
- DTAP Strategy: Pricing and Licensing
- Introducing a DTAP Street for Our Web Application | 10 Best Practices for Quality Software Development
- Stop using separate environments for development, testing, and production (DTAP) | by Christiaan Verwijs | The Liberators | Medium
- DTAP Best practice, database copy tool - Wiki - Novulo
- The DTAP-Street : a phased approach to a development / deployment cycle – Karim Vaes
- DTAP is dead | The Art of Coding
- Working with DTAP-street
- Best practice dtap environment? : r/kubernetes
Deployment environment
Relese management
- Release management - Wikipedia
-
リリース手法多すぎワロタァ B/G、カナリア、機能フラグ、ダークローンチ、A/Bテスト、、など #QiitaEngineerFesta2022 - Qiita
現在のRelease Engineering上の課題とその解決案 - thara.dev
Other
Deployment Environment
Wikiのこれが一番わかりやすい気がする。
cf. Deployment environment - Wikipedia
Environment/Tier Name | Description |
---|---|
Local | Developer's desktop/workstation |
Development/Trunk | Development server, serving as a sandbox for developers to perform unit tests |
Integration | Target for CI builds, or for developer tests with side effects |
Test/QC/Internal Acceptance | Environment where interface testing is conducted. The quality control team ensures that new code does not affect existing functionality and tests the main functions of the system after deploying new code to the test environment. |
Staging/Model/Pre-Production/External Client Acceptance/Demo | Mirror of the production environment |
Production/Live | Serves end users/clients |
System Under Test (SUT)
Memo
- DTAP street は環境がインフラごと分離している
- 近年だと、プルリク単位にアプリケーションコンテナを起動してそのPRのテスト環境を構築したり、するので、その辺の考慮が必要になる気がする