1.プロパティファイルで変更する必要がある構成をいくつか書きます
たとえば、同時実行がプロパティファイルで構成可能に設定されていない場合に使用されるスレッドの数。その後、プログラムは、開発環境とテスト環境の両方でスムーズかつ妨げられずに実行できますが、Multi-ThreadedプログラムとしてPRODおよび処理された大きなデータセットに展開すると、IOExceptionがスローされます。その理由は、オンライン環境が同時に何か他のものを引き起こしているからかもしれません。スレッドの数をプロパティファイルで構成できる場合、単一のスレッドアプリケーションにするのは非常に簡単です。問題を解決するためにアプリケーションを繰り返し展開およびテストする必要はありません。この方法は、URL、サーバー、ポート番号の構成にも適しています。
属性ファイルを使用してこれらの構成を外部化することをお勧めします。ファイル形式は、プロパティ、YAML、Hocon、およびJSONで問題ありません。次のクラスは、プレースホルダーサポートを含む、これらの形式のファイルのスプリングインジェクションサポートを実装します。
https://github.com/superhj1987/awesome-libs/blob/master/src/main/java/me/rowkekey/libs/spring/config/awsomePlopertyplaceplaceplacederconfigurer.java
2。テスト中にできるだけオンライン環境をシミュレートする
生産プロセスの典型的なシナリオは、テストに1〜3のアカウントのみを使用することであり、この数は1,000〜2,000でなければなりません。パフォーマンステストを実行する場合、使用されるデータは真であり、覆われていなければなりません。実際の環境に近いパフォーマンステストは、予測不可能なパフォーマンス、拡張、マルチスレッドの問題をもたらす可能性があります。ここでは、プレリリース環境を使用していくつかの問題を解決することもできます。
3。すべての外部呼び出しと内部サービスに対して、フォールトトレラント処理を行う必要があります。
RPCコールであろうとサードパーティのサービスコールであろうと、空室状況が100%であると当然のこととは思わない。サービスコールのタイムアウトと再試行は許可されていません。これは、アプリケーションの安定性とパフォーマンスに悪影響を及ぼします。
4.システムは、セキュリティシステムを設計するときに最小許可の原則に従う必要があります
Webサービスはどこにでもあり、ハッカーはサービス攻撃の拒否のために簡単にそれを活用できるようにします。したがって、システムを設計するときは、「最小許可」の原則に従い、ホワイトリストやその他の方法を採用する必要があります。
5.次のドキュメントが必要です
ユニットテストのドキュメントを作成し、優れたコードカバレッジがあります。
高レベルの設計図:すべてのコンポーネント、相互作用、構造について説明します。
詳細な設計図:コードレベルの設計といくつかの重要なロジックプロセスに固有。
システム構成ドキュメント:システムのすべての構成ファイル、構成ファイルなどを説明します。
データベースレベルのDMLおよびDDLドキュメント、特にSQLクエリステートメントは、DBAまたはコア開発者が起動する前にレビューを行う必要があります。
従来の開発プロセスだけでなく、アジャイル開発の場合でも、これらの文書は不可欠です。そうでなければ、その後のメンテナンスと引き渡しに大きな不便をもたらします。
6.システムの監視、エラー回復、バックアップ、その他の重要な機能に適した仕事をしてください
システムのいくつかの重要な機能的モジュールの場合、システムの動作に影響を与え、推定されていない損失を引き起こすのを防ぐために監視する必要があります。さらに、可能であれば、障害を監視した後に回復し、回復が失敗した場合はアラームを送信してください。いくつかの非常に重要なデータファイルの場合、いくつかの突然の障害とデータの損失を防ぐために、冗長なバックアップを行う必要があります。
7.データベースを設計するときに履歴を簡単に追跡し、整理することができるいくつかの列を設計します。
たとえば、create_timeとupdate_timeは、レコードの作成時間と更新時間を示すことができます。 create_byとupdate_byは、誰がレコードを作成および更新したかを示すことができます。
さらに、レコードの削除が実際に削除されない場合があります。現時点では、「アクティブ」または「非アクティブ」ステータス」列など、このレコードのステータスを表す列を設計する必要があります。
8。プロジェクトロールバック計画を作成します
新しい機能が起動すると、ロールバックプランがない場合、急いでオンラインサービスが一定期間利用できなくなる可能性があります。適切なロールバックプランがあり、関連する操作を整然とした方法で実行し、制御された時間内にシステムを実行可能な状態に戻すことができます。
9。プロジェクトが開始される前に、定量分析を行う必要があります
プロジェクトで使用されるメモリ、データベース、ファイル、キャッシュなどについて定量分析を行う必要があります。将来の宇宙職業を推定し、運用およびメンテナンスマシンの割り当てのための参照を提供します。不十分なストレージがデータ量の急速な成長によって引き起こされることを防ぐ。これは非常に重要です。さもなければ、オンラインサービスを利用できないようにするのは簡単です。
10。システム展開計画を開発します。
システムの展開のためのプラットフォームは重要な部分です。展開プラットフォームの説明は、1つのサーバーまたは2つのデータベースに制限することはできません。少なくとも含める必要があります
11.最適なツール/テクノロジーを選択します
多くの場合、開発者は生産システムで学びたい言語またはツールを使用します。通常、これは最良の選択肢ではありません。たとえば、実際には関係形式であるデータには、NOSQLデータベースを使用します。言語であろうとツールであろうと、適用可能なシナリオがあります。イノベーションを求めることも、「自己」を標準として使用することもできません。
12。いくつかの主要な技術分野に十分な知識保護区を持っています。
デザインパターン
JVMチューニングマルチスレッド「並行性問題」
GC、コンピューティング、その他のキャッシュなどの分散トランザクションパフォーマンスの問題を含むトランザクションの問題
この記事を通して、Javaプログラムの開発を支援できる友人が、このウェブサイトへのご支援に感謝します!