web-dev-qa-db-ja.com

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

私はこれについてしばらく興味を持っていました。 「本番対応」またはそのバリアントとは正確にはどういう意味ですか?最近、私はsqliteに関する情報を探していたところ、 this thread が見つかりました。多くの人々は、sqliteが本稼働の準備ができていないことを示唆しています。

開発/テストと本番の違いを知っています。私のプロダクションの定義は、顧客に提供されるもの、またはプログラマー以外の人が使用するものです。

ただし、製品版として定義されていないアイテムが多数あるようです。しかし実際には、それらは完全に適している可能性があり、人々はそれらに対して偏見を持っています。 sqlite、python、非MS製品など.

小規模オフィス対企業?シングルユーザー対マルチユーザー?クライアント対サーバー?どこに線を引くのですか?

27
crystalattice

あなたが誰であるかに依存します。

プログラマーによる「本番対応」の定義:

  • 走る
  • プロジェクトの要件を満たしている
  • そのデザインはよく考え抜かれた
  • 安定しています
  • それは維持可能です
  • それはスケーラブルです
  • 文書化されています

経営陣による「生産準備完了」の定義:

  • 走る
  • それは利益になります

この古い質問を再ハッシュ化して申し訳ありませんが、私はそれに遭遇し、抵抗することができませんでした。

42
Jeff

一般的に、「Xは本番環境に対応していません」とは、機能、安定性、および/またはスケーラビリティが不足しているという問題があることを意味します。そのため、要件の厳しいシナリオでは使用できますが、大規模な展開(エンタープライズレベルおよびインターネットレベルの展開)では失敗する可能性があります。

8
Brad Wilson

「プロダクション対応」に使用できる定義はたくさんあります。

私自身の個人的なものを以下にリストします-それらはすべてやや実用的であり、コンテキストに大きく依存します-いくつかのコンテキストでは、同じ正確なソリューションが「本番用」であると見なすことができ、別のコンテキストでは同じソリューション-時々文字通り-「私の死体を乗り越える準備ができている」でしょう.

以下の定義はすべて、「製品」が「製品の正常な実行に依存する深刻な結果」のコンテキストを持つことを前提としています。

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

  • 他のすべてはスケールで、いくつかは少し灰色です(たとえば、一部のソフトウェアは学術研究を行っています-一方で、一般的な状況で壊れた場合、明白な生産への影響はありません。一方で、数兆ドルの政治的決定はいくつかの特定の研究に基づいて政府によって作られています)。

私が今思いつくことができる2つの定義は:

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

    これは、破損/バグがないことの保証を意味するのではなく、ソフトウェアがそれを実行できないことを意味します。

    例えば。このソリューションを使用する利点は、破損による潜在的な損失に、破損する確率を掛けたものを上回ります。

    したがって、Javaの悪名高い「原子力発電所では使用しない」という免責事項。

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

    たとえば、訴訟の際に、指定された分野のN人のランダムな専門家のセットに「これらの詳細が与えられた場合、このプロダクションは準備できましたか?」と尋ねられた場合、そのような専門家のほとんどが同意したと合理的に確信しています。状況下で合理的に行うことができる調査と作業の取り組みに基づいて準備ができています。 10%を超えるテストケースの記述に失敗すると、デューデリジェンスに失敗します。 gccコンパイラーの以前の未知のバグが原因でプログラムが失敗した場合、ソフトウェアがそのバグでさえも捕捉するために必要なレベルの精査を保証する重要な何かを実行していない限り、おそらく失敗していません。

1
DVK

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

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


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

0
John Millikin

質問の後半で提案するように、「本番稼働可能」とは、必ずしもデプロイメントのサイズの定義ではなく、意図する用途と要件に適しているということです。たとえば、シングルユーザークライアントアプリの場合、SQLiteは本番環境で使用できる可能性があります。ほとんどの場合、対象となる市場は、アプリまたはシステムを使用する際に、アプリまたはシステムが本番環境に対応しているかどうかを判断します。

0
Turnkey

プロダクションに出荷するビルドの内部定義は非常に簡単です...

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

KS決定は私と他の1人が行います。

0
JP Alioto