Jeff Atwood schrieb kürzlich einen Blog-Beitrag über die Implementierung eines "Chaos Monkey" durch Netflix. Es ist ein sehr hochwertiger Artikel. Ich bin gespannt, ob jemand diese Technik tatsächlich zum Testen eines Systems implementiert hat.
Ich vermute, ich versuche wirklich zu fragen: Welche Strategien implementieren Sie, um sicherzustellen, dass Ihre Architektur einen Teil des Systemabsturzes überlebt?
c#
architecture
cloud-computing
Robotsushi
quelle
quelle
Antworten:
Isolation und würdevoller Abbau sind die allgemeinen Strategien. (Ein anderer Begriff, der der Isolation ähnelt, ist die Entkopplung , obwohl ich dies eher in kleinerem Maßstab sehe, wie in OOD / P. Das Konzept ist dasselbe.)
Sie isolieren verschiedene Teile eines Systems voneinander, sodass die anderen auf Anfragen reagieren können, wenn einer nicht verfügbar ist. Wie der Netflix-Blog sagte , wäre das Streaming immer noch in Ordnung, wenn die Suche nicht funktioniert hätte. Dies bedeutet lediglich, dass Suche und Streaming so weit voneinander entfernt waren, dass ein Engpass oder eine Unfähigkeit des einen den anderen nicht beeinträchtigten.
Wenn die beste Implementierung von etwas nicht zur Verfügung steht, können Sie bei einer angemessenen Degradierung etwas anderes eintragen. Auch in der Netflix-Veröffentlichung gibt es ein System, mit dem Sie die Dinge betrachten können, die Sie gesehen und gemocht haben, und anschließend personalisierte Empfehlungen anderer ausarbeiten können Dinge zu sehen. Wenn dieses System ausfällt, greifen sie auf Empfehlungen von Dingen zurück, die insgesamt populär sind. Der Punkt ist, einen Plan B, einen Plan C usw. zu haben, um etwas zu tun oder zu zeigen , wenn Plan A fehlschlägt, anstatt nichts oder einen Fehler anzuzeigen.
Ein gängiges clientseitiges Beispiel für eine angemessene Verschlechterung (unabhängig davon, ob die Implementierung häufig ist oder nicht) ist die Verwendung von Javascript auf Websites. Wenn das Javascript des Browsers deaktiviert oder einfach nicht verfügbar ist, sollten die Seiten der Site auch ohne erfolgreich funktionieren. Es mag nicht so schnell oder glatt sein, aber es sollte trotzdem funktionieren, anstatt unbrauchbar zu werden.
Dies sind jedoch sehr allgemeine Ideen. Nahezu jedes Projekt würde sie unterschiedlich implementieren, abhängig von den von ihnen bereitgestellten Diensten und Subsystemen und den Abhängigkeiten zwischen ihnen.
quelle