it-swarm.com.de

Wie entwerfe ich skalierbare Anwendungen?

Wie entwerfen/architekten Sie eine skalierbare Anwendung? Jeder Vorschlag von Büchern oder Websites, der helfen kann, Anwendungen zu skalieren?

Vielen Dank

57
Martin

Im letzten Jahr musste ich diese Frage für ein Projekt, an dem mein Unternehmen arbeitet, auf den neuesten Stand bringen und fand diese Ressourcen äußerst hilfreich: Todd Hoffs highscalability.com ; Skalierbare Internet-Architekturen von Theo Schlossnagle; und Skalierbare Websites erstellen , von Cal Henderson. Insbesondere Highscalability.com weist Sie auf viele gute Präsentationen, Tutorials, Bücher und Papiere hin und ist ein großartiger Ausgangspunkt. Alle Ratschläge sind praktisch und basieren auf Erfahrungen mit Websites wie Flickr, Twitter und Google.

Übrigens, Skalierbarkeit ist keine Leistung. Ein perfekt skalierbares System ist ein System mit festen Grenzkosten, um zusätzliche Benutzer oder Kapazitäten hinzuzufügen. 

45
Jim Ferrans

Dies ist eine nette Lektüre im Livejournal und wie sie ihre Anwendung im Laufe der Zeit skaliert haben.

danga.com/words/2004_mysqlcon/mysql-slides.pdf [PDF]

Es ist vielleicht nicht das, wonach Sie suchen, aber es ist eines der besseren Übersichten über das Skalieren.

4
JensenDied
  • Ich neige dazu zu denken, dass die Skalierbarkeit eng mit der Wartbarkeit zusammenhängt. Und es scheint oft übersehen zu werden, dass die Leute nur eine kurze Zeit mit Entwicklungs Anwendungen und die restliche Zeit aufrechterhalten damit verbringen.

  • Skalieren hat auch fast sicher mit Daten zu tun (was agiler ist als Code - also möchten Sie immer mehr davon), weshalb Ihre Speicherzugriffskosten zwischen O(1) und O(n) bleiben sollten.

  • Die perfekt skalierbare Anwendung ist für mich eine, die ich aus einer Umgebung in eine andere (ähnliche) Umgebung kopieren, einige Werte konfigurieren und ausführen kann, um den Ausführungsbereich der gesamten Anwendung zu erweitern.

3
miku

Hier gibt es bereits einige großartige Antworten. In einigen Büchern und Links finden Sie einige gängige Denkmuster.

  • Schreiben Sie so wenig Code wie möglich

  • Verwenden Sie den Code so oft wie möglich

  • Nicht vorbei oder unter abstrahieren Sie Ihr Design

  • Teilen Sie die Dinge in modulare Bereiche auf, die auf separaten oder mehreren Systemen ausgeführt werden können. Starke Verarbeitung sollte einem separaten System überlassen werden.

3
Jas Panesar

Bevor Sie mit der Technik beginnen, sollten Sie den Anwendungsbereich genau kennen. Was erwartet der Kunde/Geschäftsbereich in Bezug auf die Leistung und was sind die kritischen Fehlerbereiche? Scott Hanselman hatte eine großartige Podcast in Bezug auf das Thema.

Einige der angebotenen Leckerbissen: Verwenden Sie kein Caching, es sei denn, Sie müssen; Das Bereitstellen von Dateien ist schneller als das Zusammenstellen von Fragmenten aus einer Datenbank. wissen, wie man mit Peek-Server-Zeiten umgeht; weiß, was deine Spitzen sein werden.

Informieren Sie sich erneut zuerst über den Umfang der Verwendung, um festzustellen, ob Sie skalieren sollten .

1
David Robbins

Was auch immer Sie tun, Sie können das System nicht von Anfang an so entwerfen, dass es für alle Ihre Anforderungen skalierbar ist. Wenn Ihr System einmal läuft, werden Sie häufig Engpässe finden, wo Sie sie am wenigsten erwarten (z. B. lokale Netzwerkbandbreite). Wie auch immer, mein Rat ist auf jeden Fall auch Highscalability.com :)

1
Zubair

Ich würde dieses Buch dafür vorschlagen:

http://www.Amazon.com/Scalable-Internet-Architectures-Developers-Library/dp/067232699X/ref=sr_1_1?ie=UTF8&s=books&qid=1243267630&sr=8-1

Obwohl dies in erster Linie ein PHP - Buch ist, sind die Ideen für jeden Web-Stack gleich.

0
Tommy Hui

Diese ist genau das, was Sie brauchen! Das Application Architecture Guide wurde vom Microsoft Patterns and Practices-Team erstellt, um Architekten dabei zu helfen, ...

0
Pavel Nikolov

Dies ist eine gute Einführung in das Thema: IBM developerWorks enthielt einige interessante Anleitungen zur Verwendung von Architekturmustern für Anwendungen, die skaliert wurden: hier und hier .

0
ivo