私はこれについてしばらく興味を持っていました。 「本番対応」またはそのバリアントとは正確にはどういう意味ですか?最近、私はsqliteに関する情報を探していたところ、 this thread が見つかりました。多くの人々は、sqliteが本稼働の準備ができていないことを示唆しています。
開発/テストと本番の違いを知っています。私のプロダクションの定義は、顧客に提供されるもの、またはプログラマー以外の人が使用するものです。
ただし、製品版として定義されていないアイテムが多数あるようです。しかし実際には、それらは完全に適している可能性があり、人々はそれらに対して偏見を持っています。 sqlite、python、非MS製品など.
小規模オフィス対企業?シングルユーザー対マルチユーザー?クライアント対サーバー?どこに線を引くのですか?
あなたが誰であるかに依存します。
プログラマーによる「本番対応」の定義:
経営陣による「生産準備完了」の定義:
この古い質問を再ハッシュ化して申し訳ありませんが、私はそれに遭遇し、抵抗することができませんでした。
一般的に、「Xは本番環境に対応していません」とは、機能、安定性、および/またはスケーラビリティが不足しているという問題があることを意味します。そのため、要件の厳しいシナリオでは使用できますが、大規模な展開(エンタープライズレベルおよびインターネットレベルの展開)では失敗する可能性があります。
「プロダクション対応」に使用できる定義はたくさんあります。
私自身の個人的なものを以下にリストします-それらはすべてやや実用的であり、コンテキストに大きく依存します-いくつかのコンテキストでは、同じ正確なソリューションが「本番用」であると見なすことができ、別のコンテキストでは同じソリューション-時々文字通り-「私の死体を乗り越える準備ができている」でしょう.
以下の定義はすべて、「製品」が「製品の正常な実行に依存する深刻な結果」のコンテキストを持つことを前提としています。
言い換えれば、スペースシャトルファームウェアがそのコンテキストにしっかりとある一方で、「ネバダで成長するのに最適なラン」無料フォーラムを実行しているソフトウェアはAdSenseの収益で月額3ドルを稼ぐということですが、コンテキストの範囲外です。
他のすべてはスケールで、いくつかは少し灰色です(たとえば、一部のソフトウェアは学術研究を行っています-一方で、一般的な状況で壊れた場合、明白な生産への影響はありません。一方で、数兆ドルの政治的決定はいくつかの特定の研究に基づいて政府によって作られています)。
私が今思いつくことができる2つの定義は:
物事が壊れた場合に、標準的なリスク分析のもとで重大な損失を意味する目的に使用できます。
これは、破損/バグがないことの保証を意味するのではなく、ソフトウェアがそれを実行できないことを意味します。
例えば。このソリューションを使用する利点は、破損による潜在的な損失に、破損する確率を掛けたものを上回ります。
したがって、Javaの悪名高い「原子力発電所では使用しない」という免責事項。
同僚からデューデリジェンスに合格したと合理的に期待できます。
たとえば、訴訟の際に、指定された分野のN人のランダムな専門家のセットに「これらの詳細が与えられた場合、このプロダクションは準備できましたか?」と尋ねられた場合、そのような専門家のほとんどが同意したと合理的に確信しています。状況下で合理的に行うことができる調査と作業の取り組みに基づいて準備ができています。 10%を超えるテストケースの記述に失敗すると、デューデリジェンスに失敗します。 gccコンパイラーの以前の未知のバグが原因でプログラムが失敗した場合、ソフトウェアがそのバグでさえも捕捉するために必要なレベルの精査を保証する重要な何かを実行していない限り、おそらく失敗していません。
SQLiteは、「必須」と見なされる機能の多くを使用せずに明示的に設計されているため、本番データベースには使用できません。たとえば、ロックはデータベース全体に影響し、外部キーはなく、SQLite3まではデータ型さえありませんでした。
より一般的には、開発中の非常に少数のユーザー(1〜5)で正常に動作するシステムが、より重い負荷にさらされたときにクラッシュして書き込みを行うことを意味します。
これは、アプリケーションが使用される環境にも依存することにも触れておきます。 SQLiteの例に戻ると、クライアントが1つしかない場合、本番環境での使用に最適です。 Mac OS Xは、CoreDataフレームワークを通じてSQLiteを広範囲に使用します-ユーザーのiTunes音楽データベースやiMailメールボックスなどを処理すると私は信じています。実際のクライアントサーバーデータベースのように使用しないでください。
質問の後半で提案するように、「本番稼働可能」とは、必ずしもデプロイメントのサイズの定義ではなく、意図する用途と要件に適しているということです。たとえば、シングルユーザークライアントアプリの場合、SQLiteは本番環境で使用できる可能性があります。ほとんどの場合、対象となる市場は、アプリまたはシステムを使用する際に、アプリまたはシステムが本番環境に対応しているかどうかを判断します。
プロダクションに出荷するビルドの内部定義は非常に簡単です...
KS決定は私と他の1人が行います。