1. Schreiben Sie einige Konfigurationen, die in der Eigenschaftendatei geändert werden müssen
Beispielsweise ist die Anzahl der Threads, die verwendet werden, wenn eine gleichzeitige Ausführung in der Eigenschaftsdatei nicht konfigurierbar ist. Dann kann Ihr Programm sowohl in Entwicklungen als auch in Testumgebungen reibungslos und ungehindert ausgeführt werden, aber sobald er in ProD-Daten eingesetzt wird und größere Datensätze als Multi-Thread-Programm verarbeitet werden, wird eine IOException geworfen. Der Grund kann sein, dass die Online -Umgebung sie gleichzeitig oder etwas anderes verursacht. Wenn die Anzahl der Threads in der Eigenschaftendatei konfiguriert werden kann, ist es sehr einfach, eine einzelne Thread -Anwendung zu machen. Wir müssen nicht mehr wiederholt Anwendungen bereitstellen und testen, um Probleme zu lösen. Diese Methode eignet sich auch zum Konfigurieren von URLs, Servern und Portnummern.
Es wird empfohlen, Attributdateien zu verwenden, um diese Konfigurationen zu externalisieren, und das Dateiformat ist in Ordnung mit Eigenschaften, Yaml, Hocon und JSON. Die folgende Klasse implementiert die Unterstützung der Frühlingseinspritzung für Dateien in diesen Formaten, einschließlich der Unterstützung von Platzhaltern.
https://github.com/superhj1987/awesome-libs/blob/master/src/main/java/me/rowkey/libs/spring/config/awesomePropertyPlaPlyholdholdholdaLeconfiger.java
2. Simulieren Sie die Online -Umgebung während des Tests so weit wie möglich
Ein typisches Szenario im Produktionsprozess besteht darin, nur 1 bis 3 Konten für das Testen zu verwenden, und diese Zahl sollte 1.000 bis 2.000 betragen. Bei der Durchführung von Leistungstests müssen die verwendeten Daten wahr und unangenehm sein. Leistungstests, die nicht nahe der tatsächlichen Umgebung liegen, können unvorhersehbare Leistung, Expansions- und Multithreading -Probleme bringen. Hier können wir auch die Umgebung vor der Veröffentlichung verwenden, um einige Probleme zu lösen.
3. Die Fehlertoleranzverarbeitung muss für alle externen Anrufe und internen Dienste durchgeführt werden.
Unabhängig davon, ob es sich um einen RPC-Anruf oder einen Serviceanruf von Drittanbietern handelt, können wir es nicht für selbstverständlich annehmen, dass die Verfügbarkeit 100%beträgt. Timeouts und Wiederholung von Service Call sind nicht zulässig, was sich nachteilig auf die Stabilität und Leistung der Anwendung auswirkt.
4. Das System sollte dem Prinzip der Mindestberechtigungen bei der Gestaltung eines Sicherheitssystems folgen
Webdienste sind überall, sodass Hacker es leicht für die Ablehnung von Serviceangriffen ausnutzen können. Daher müssen Sie beim Entwerfen eines Systems dem Prinzip der "Mindestberechtigungen" folgen und Whitelisting und andere Methoden annehmen.
5. Die folgenden Dokumente sind erforderlich
Schreiben Sie Unit -Testdokumentation und haben Sie eine gute Codeabdeckung.
Hochgefertigte Designzeichnung: Beschreibt alle Komponenten, Interaktionen und Strukturen.
Detaillierte Entwurfszeichnungen: Spezifisch für das Design der Codeebene und einige wichtige Logikprozesse.
Systemkompositionsdokument: Erklärt alle Kompositionsdateien, Konfigurationsdateien usw. des Systems.
Die DML- und DDL-Dokumente auf Datenbankebene, insbesondere SQL-Abfrageanweisungen, müssen DBA oder die Überprüfung der Kernentwickler durchlaufen, bevor sie gestartet werden können.
Nicht nur für traditionelle Entwicklungsprozesse, sondern auch für agile Entwicklung sind diese Dokumente von wesentlicher Bedeutung, andernfalls werden sie bei der späteren Wartung und Übergabe große Unannehmlichkeiten verursachen.
6. Machen Sie gute Arbeit bei Überwachung, Fehlerwiederherstellung, Sicherung und anderen wichtigen Funktionen des Systems
Bei einigen entscheidenden funktionellen Modulen des Systems müssen sie überwacht werden, um zu verhindern, dass sie den Betrieb des Systems beeinflussen und ungeschätzte Verluste verursachen. Versuchen Sie außerdem, nach Überwachung des Fehlers nach Möglichkeit wiederherzustellen, und senden Sie einen Alarm, wenn die Wiederherstellung fehlschlägt. Für einige sehr wichtige Datendateien sollten redundante Sicherungen durchgeführt werden, um plötzliche Fehler und Datenverlust zu verhindern.
7. Entwerfen Sie einige Spalten, die beim Entwerfen der Datenbank leicht zu verfolgen sind.
Zum Beispiel können create_time und update_time die Erstellungs- und Aktualisierungszeit des Datensatzes angeben. create_by und update_by können angeben, wer den Datensatz erstellt und aktualisiert hat.
Darüber hinaus wird das Löschen von Datensätzen manchmal nicht wirklich gelöscht. Zu diesem Zeitpunkt ist es erforderlich, eine Spalte zu entwerfen, die den Status dieses Datensatzes darstellt, z. B. die Spalte "aktiv" oder "inaktiv".
8. Machen Sie einen Projektrollback -Plan
Wenn die neue Funktion gestartet wird, kann es in Eile sein, wenn kein Rollback -Plan vorliegt, und dass Online -Dienste für einen bestimmten Zeitraum nicht verfügbar sind. Es gibt einen guten Rollback -Plan, mit dem Sie ordnungsgemäß verwandte Vorgänge ausführen und das System innerhalb einer kontrollierten Zeit in einen Laufstaat wiederherstellen können.
9. Bevor das Projekt gestartet wird, sollte eine quantitative Analyse durchgeführt werden
Quantitative Analyse sollte für Speicher, Datenbank, Dateien, Cache usw. durchgeführt werden, die im Projekt verwendet werden. Es schätzt den Raumbeschäftigung in Zukunft und liefert eine Referenz für die Zuweisung von Betriebs- und Wartungsmaschinen. Verhindern Sie, dass diese nicht genügend Speicherung durch das schnelle Wachstum des Datenvolumens verursacht wird. Dies ist sehr wichtig, ansonsten ist es einfach, Online -Dienste nicht verfügbar zu machen.
10. Entwickeln Sie einen Systembereitstellungsplan.
Die Plattform für die Systembereitstellung ist ein entscheidender Teil. Die Beschreibung der Bereitstellungsplattform kann nicht auf einen Server oder zwei Datenbanken beschränkt werden, zumindest muss sie einbezogen werden
11. Wählen Sie das am besten geeignete Werkzeug/das am besten geeignete Technologie
In vielen Fällen verwenden Entwickler eine Sprache oder ein Tool, die sie in einem Produktionssystem lernen möchten. Normalerweise ist dies nicht die beste Option. Verwenden Sie beispielsweise eine NOSQL -Datenbank für Daten, die bereits tatsächlich eine relationale Form sind. Unabhängig davon, ob es sich um eine Sprache oder ein Tool handelt, gibt es anwendbare Szenarien. Wir können keine Innovation suchen, noch können wir "Selbst" als Standard verwenden.
12. Haben Sie in einigen wichtigen technischen Bereichen ausreichende Wissensreserven.
Designmuster
JVM-Tuning Multi-Threaded "Parallelitätsproblem"
Transaktionsprobleme, einschließlich verteilter Transaktionsleistungsprobleme, einschließlich GC, Computing und anderer Caches
In diesem Artikel hoffe ich, dass Freunde, die helfen können, Java -Programme zu entwickeln, für Ihre Unterstützung für diese Website!