「生産準備完了」を定義する


25

私はこれについてしばらく興味がありました。「生産準備完了」またはその変種とは正確には何を意味しますか?ごく最近、私はsqliteに関する情報を探していましたが、このスレッドを見つけました。多くの人がsqliteの生産準備が整っていないことを示唆しています。

開発/テストと本番の違いを知っています。私の生産の定義は、顧客に提供されるか、プログラマー以外によって使用されるものです。

ただし、生産準備完了として定義されていない多くのアイテムがあるようです。しかし、実際には、それらは完全に適している場合があり、人々はそれらに対して、例えばsqlite、python、非MS製品などのように偏見を持っているだけです。

小規模オフィスとエンタープライズのどちらですか?シングルユーザーとマルチユーザーのどちらですか?クライアント対サーバー?どこで線を引きますか?


2
「それは私のマシンで動作します。」?
ルーク

2
コードを出荷するときのコードの状態。
ギルバートルブラン

回答:


41

あなたが誰であるかによります。

「生産準備完了」のプログラマーの定義:

  • 走る
  • プロジェクトの要件を満たしている
  • その設計は熟考された
  • 安定しています
  • 保守可能です
  • スケーラブルです
  • 文書化されています

「生産準備完了」の管理の定義:

  • 走る
  • 利益になります

この古い質問を再ハッシュしてすみませんが、私はそれを偶然見つけて、抵抗できませんでした。


私がこのリストに追加する大きなことは..何かが壊れると、それを把握できる十分な情報をシステムが提供することです。
シェーン

忘れないでください、opsの人々の定義:現在の監視、十分に文書化された簡単な更新パス、リリース計画、セキュリティ、パフォーマンス、自動化、...一部はあなたのポイント「プロジェクト要件」と「保守可能」に置きます当時、opsの人々の視点が欠けています。(opsの人々を介して実行されるソフトウェアにのみ適用)
クリスチャン

6
今日これを見つけ、管理パラグラフから「実行する」部分を削除することでその答えを変更したいと思います;
Doc Brown

8

一般的に、「Xは本番環境に対応していません」とは、機能の不足、安定性、および/またはスケーラビリティに関する問題があることを意味します。


1

「生産準備完了」に使用できる定義は多数あります。

私自身の個人的なものは以下にリストされています-そしてそれらはすべていくらか実用的であり、コンテキストに非常に依存しています-いくつかのコンテキストでは同じ正確なソリューションは「生産準備完了」と見なされますが、別のコンテキストでは同じソリューションが文字通り-私の死体の上に準備ができている」。

以下の定義はすべて、「生産」には「製品の正常な稼働に依存する深刻な結果が生じる」という文脈があることを前提としています。

  • 言い換えれば、「ネバダ州で成長するのに最適なラン」無料フォーラムを実行しているソフトウェアは、AdSenseの収益で月額3ドルを稼ぎますが、Space Shuttleファームウェアはしっかりとそのコンテキストにあります。

  • 他のすべては少しグレーで(たとえば、学術研究を行っているソフトウェア-一般的な状況で中断しても、生産への明らかな影響はありませんが、数兆ドルの政治的決定は、いくつかの特定の研究に基づいて政府によって行われている)。

私が今思いつくことができる2つの定義は次のとおりです。

  1. 標準的なリスク分析の下で、物事が壊れたときに重大な損失を意味する目的に使用できます。

    これは、破損/バグがないことを保証するものではありません-ソフトウェアがそれを行うことはできません-しかし、意図した目的の安定性の合理的なレベルの確実性です。

    たとえば、このソリューションを使用する利点は、破損による潜在的な損失の大きさに、破損する確率を乗じたものよりも重要です。

    したがって、Javaの悪名高い「原子力発電所で使用することはできません」という免責条項。

  2. 同僚からデューデリジェンスに合格したことが合理的に期待できます。

    たとえば、訴訟の場合、特定の分野のN人のランダムな専門家のセットに「これらの詳細が与えられたら、この制作の準備はできていましたか?」状況下で合理的に行うことができた調査と作業の努力に基づいて準備ができています。10%を超えるテストケースを記述できなかった場合、デューデリジェンスに失敗します。gccコンパイラーの以前は不明なバグが原因でプログラムが失敗した場合、そのバグをキャッチするために必要なレベルの精査を保証する非常に重要なソフトウェアをソフトウェアが実行していない限り、おそらく失敗しませんでした。


0

SQLiteは、「必須」と見なされる多くの機能を使用せずに明示的に設計されているため、実稼働データベースには使用できません。たとえば、ロックはデータベース全体に影響し、外部キーはありません。また、SQLite3までデータ型さえありませんでした。

より一般的には、開発中のごく少数のユーザー(1〜5)で正常に動作するシステムが、より重い負荷にさらされるとクラッシュして燃えることを意味します。


これは、アプリケーションが使用される環境にも依存することを言及する必要があります。SQLiteの例に戻ると、クライアントが1つしかない場合、実稼働環境での使用に最適です。Mac OS XはCoreDataフレームワークを通じてSQLiteを幅広く使用しています-ユーザーのiTunes音楽データベースやiMailメールボックスなどを処理すると考えています。実際のクライアント/サーバーデータベースのように使用しようとしないでください。


0

質問の後半で提案しているように、「Production Ready」は必ずしもデプロイメントのサイズの定義ではなく、意図された用途と要件に適しています。たとえば、シングルユーザークライアントアプリの場合、SQLiteは本番環境で使用できます。意図する市場は、ほとんどの場合、アプリまたはシステムの使用において、アプリまたはシステムの生産準備が整っているかどうかを決定します。


0

本番環境に出荷するビルドの内部定義は非常に簡単です...

  • 未解決の重大度1の問題はありません。そして、
  • 「既知の出荷可能」とマークされていない重大度2の問題は未解決です

KSの決定は、私と他の1人によって行われます。


-2

さて、私の生産準備完了は、経営陣によって承認されました。実行、要件を満たしている、またはそのスケーラビリティなどは、pという言葉を言う前にすでに満たされています。サインオフは、管理の観点から相互に合意された出口ポイントです。追伸 sev 4バグが未解決のままで、本番用の準備ができているとは考えません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.