web-dev-qa-db-ja.com

製品品質のコードの特徴または機能は何ですか?

フリーランスプロジェクト(webアプリ)のコードを配信するのはこれが初めてです。また、コードの配布の経験があまりないため、プログラムを展開する準備ができているかどうかを判断するのに苦労しています。

私の理解では、本番レベルのコードには次の特性が必要です。

  • フォールトトレランス:キャッチされなかった例外を生き残る能力
  • データの冗長性:ユーザーデータを失うことはありません
  • スケーラビリティ:追加の負荷を処理するためにアプリを書き直す必要はありません
  • テストカバレッジ:テストされた「まともな」量のコード

これらの特性には、プログラム自体に固有のものもあれば、環境に関連するものもあります(複数のクラスターを使用しているかどうかにかかわらず)。ただし、環境に依存する特性でさえ、プログラムの設計方法に影響を与えます。

私の質問は次のとおりです。本番用コードを本番用ではないコードと大きく異なる他の特徴は何ですか?

質問の範囲を減らすために、web appsのみに集中してください。

編集:私は自分の状況に固有の特性を尋ねることで、範囲を絞り込もうとします。私はフリーランサーとして、VPSの購入から構成、コードの記述、展開まで、すべてを担当していました。プロジェクトとそのセットアップは十分に文書化されていますが、お客様はそれを維持することができません。アプリは複雑ではありませんが、多くの外部コンポーネントに依存しているため、これらのコンポーネントが変更/消失した場合、本当に壊れる傾向があります。目標は、顧客の介入なしで可能な限り長く続くことができるサービスをセットアップすることです。

8
verybadalloc

「プロダクション品質のコード」とは、あなたではない別のユーザーが...

  1. サポートなしまたは最小限のサポートで使用できます。すべてのアクションがバグに遭遇した場合、ソフトウェアはゴミに入れられます
  2. 最小限のサポートまたはドキュメントで使用方法を理解できる。ユーザーがソフトウェアの使用方法を理解できない場合は、ゴミになってしまいます。
  3. それは価値を加えるので、喜んで使用します。あなたのソフトウェアが十分な価値を追加するなら、多分彼らはあなたにそれのためにお金を与えるでしょう。無償で提供できるほどの価値がない場合は、ソフトウェアがゴミになってしまいます。

それIS IT。

絶対的なフォールトトレランスが必要な人もいます。クラッシュが発生したときに一部のデータが失われたとしても、それほど気にしない人もいます。ハードセットの品質や要件はありません。また、テストカバレッジを気にしないお客様もいません。気になるのは、上記の3つのポイントです。テストカバレッジは、そこに到達するために使用できるツール(多くのツールの1つ)ですが、ソフトウェアの多くは手動テストのみで構築されています。

どのようなソフトウェアを構築する場合でも、要件はあなたと顧客の間であり、一般消費向けのソフトウェアを構築する場合は、1つまたはいくつかのターゲットグループを選択し、すべての人にとってすべてになることを試みないでください。ある種の一般的なカビを考え出そうとすることは、私にはばかげているように思えます。

代わりに、ソフトウェアが本番環境で使用できるようになる時期を予測または推測するのではなく、顧客と協力してみませんか?プレビューしてもらいますが、本番環境では準備ができていないことを説明します。それを自分のサーバーに公開し、使用するように依頼し、ぶらぶらして、フィードバックを提供します。彼らがあなたが彼らに与えたものに満足するまで彼らと一緒に働き続ける。つまり、本番環境での準備が整ったときに通知されます。

14
DXM