Projektstart
am 26.11.2007 - 11:16 Uhr in
Hallo zusammen,
ich habe in den letzten Monaten fieberhaft an der Realisierung einer social network Plattform gearbeitet. Da ich erst seit 10 Wochen dabei bin habe ich vor der Veröffentlichung noch einige Fragen an euch und noch einige Probleme die es zu lösen gilt.
Würde mich sehr freuen wenn Ihr mir dazu eure Meinung sagen würdet, da ich im Prinzip immer noch ein Anfänger auf dem Gebiet bin.
- "Hackerangriffe", Sicherheitslücken etc.:
welche Möglichkeiten habe ich mein System zu schützen? Bisher wurde "nur" das Captcha Modul für die Neuanmeldung installiert.
- Serverleistung:
bisher habe ich mit einem Webspace gearbeitet. Für die Veröffentlichung plane ich mit einem managed server mit folger Leistung: Quad Core 2,13; GB RAM; 2X250GB Festplatte; Hardware Raid 1; 2000 GB Traffic;
als Grundlage habe ich folgende Berechnung genommen:
Mitgliederzahl 15000;
pro Seite 200 kb
pro Photo 30 kb (wenn 2MB-Photos auf 30kb verkleinert werden muss ich trotzdem einen Traffic für 2MB beim hochladen einplanen, richtig?)
Speicherplatz: jeder User hat 2 Seiten á 200 kb und 30 Photos á 30kb somit in Summe 1,3 MB
Traffic: Jeder User besucht 8 mal im Monat die Seite und sieht sich dabei 50 Bilder und 80 Seiten an, sind in Summe 140 MB
auf 15000 User gerechnet sind das 19,5 GB Speicher und 2100 GB Traffic
Wieviele User später gleichzeitig Online sind wird sichelich die wichtigste und zudem am schwierigsten zu beantwortende Frage sein.
Ich gehe mal davon aus das meine Berechnungen nicht ganz unrealistisch sind und denke das der Server soetwas leisten kann.
Was passiert mit dem System (Drupal, Server) wenn es aufeinmal 80.000 User sind?
- Traffic:
gibt es Möglichkeiten den Traffic möglichst gering zu halten, Stichwort Browsercache?
- Module:
um einen kleinen Überblick über die Möglichkeiten der Plattform zu geben zähle ich die installierten Module auf:
- autologout
- buddylist
- captcha
- cck
- extlink
- guestbook
- imagecache
- imagefiled
- invite
- og
- privatemsg
- profileplus
- thickbox
- views
+ Standardmodule und evtl. habe ich noch das ein oder andere übersehen...
Viele schlagen sicherlich die Hände über dem Kopf zusammen, soviele Module?!?! Sind es wirklich zuviele und wie sehr wirken diese sich negativ auf die Performance aus? Was kann man dagegen tun....? leider habe ich nicht die Möglichkeiten vieles selbst zu entwickeln da mir persönlich das Know How fehlt und zudem das wohl nötige Kleingeld um hierfür jemanden zu beauftragen.
-Performance:
welche Möglichkeiten gibt es diese zu steigern?
-Serverstandort:
ab welchen Dimensionen ist die Maßnahme der Lastverteilung (2. Server an einem anderen Standort) unumgänglich?
-Statistik:
was haltet ihr von "google analytics", ist es ein gutes Tool und empfehlenswert für ein social network?
- Datenbank, Datenspeicher:
wenn ich überlege das Userphotos einfach unter Files/Pictures mit der entsprechenden User-ID abgespeichert werden, ist das bei einer ziemlich hohen Userzahl nicht schwierig zu pflegen? Schwieriger noch beim hochladen von Bildern, wo kann ich genau nachvollziehen wer welches Bild hochgeladen hat? Falls illegale Inhalte auf der Seite veröffentlicht werden oder jemand seinen Account gelöscht haben möchte und ich alle Daten vernichten will. Ist das so überhaupt praktikabel oder gibt´s da andere Möglichkeiten die Daten speziell den Usern zuzuordenen? Oder sind diese in der Datenbank sowieso dementsprechend
sortiert abgelegt?
Welche Fragen muss ich mir zudem stellen, was habe ich in meinen Überlegungen übersehen? Welche Probleme können bzw. werden auftreten? Hat jemand Erfahrung mit einer großen social network Plattform, wie ist es da mit der Performance des Systems, was für Server stecken dahinter?
Vielen Dank für Eure Geduld beim durchlesen!! Würde mich über jegliche Kommentare freuen, wie sich die Mitgliederzahl entwickelt ist im ersten Moment nicht entscheidend ich möchte nur das ich auf eventuelle Erhöhungen vorbereitet bin und im vorhinein schon weiß wie realistisch mein Vorhaben rein technisch überhaupt ist.
Gruß, der Jenzen!!
- Anmelden oder Registrieren um Kommentare zu schreiben
Jenzen wrote: -
am 26.11.2007 - 12:33 Uhr
- "Hackerangriffe", Sicherheitslücken etc.:
welche Möglichkeiten habe ich mein System zu schützen? Bisher wurde "nur" das Captcha Modul für die Neuanmeldung installiert.
Auf dem Server alle nicht benötigten Dienste abschalten, die vorhanden Dienste sorgfältig konfigurieren, ggf. nur lokal benötigte Dienste per Firewall schützen, alles was nicht nach außen kommunizieren muss, entsprechend konfigurieren. Eine tendenziell sicherere Distro (z.B. Debian) benutzen und natürlich jemanden die Karre adminsitrieren lassen, der sein Handwerk versteht.
Zusätzlich kann man natürlich gezielt sicherere Services einsetzen (z.B. dovecot anstatt courier als MDA).
Dann gibt es natürlich noch diverse Konfigurationsoptionen. PHP besser per FCGI, anstatt mod_php, Einsatz und Konfiguration von modsecurity2, suexex, Suhosin, usw. usf.
- Serverleistung:
bisher habe ich mit einem Webspace gearbeitet. Für die Veröffentlichung plane ich mit einem managed server mit folger Leistung: Quad Core 2,13; GB RAM; 2X250GB Festplatte; Hardware Raid 1; 2000 GB Traffic;
Wieviel RAM? Was ist mit Datensicherung? Wer managed die Karre?
Managed Server heißt ja in der Regel, dass sich der Anbieter selbst drum kümmert. Problem ist, dass diese auch gewisse Standards auf ihren Managed Servern fahren und man als Kunde gar nicht die Möglichkeit hat großartig auf die Konfiguration einzelner Services oder gar deren Auswahl einzugreifen. Da sperren die meisten Anbieter, weil sich das für die nicht mehr rechnet. Besser du suchst dir einen, der einen Root-Server für dich und in deinem Sinne managed - der dürfte aber auch mehr kosten als der übliche Managed Server Aufschlag von 40-100% ...
als Grundlage habe ich folgende Berechnung genommen:
Mitgliederzahl 15000;
pro Seite 200 kb
pro Photo 30 kb (wenn 2MB-Photos auf 30kb verkleinert werden muss ich trotzdem einen Traffic für 2MB beim hochladen einplanen, richtig?)
Speicherplatz: jeder User hat 2 Seiten á 200 kb und 30 Photos á 30kb somit in Summe 1,3 MB
Traffic: Jeder User besucht 8 mal im Monat die Seite und sieht sich dabei 50 Bilder und 80 Seiten an, sind in Summe 140 MB
auf 15000 User gerechnet sind das 19,5 GB Speicher und 2100 GB Traffic
OK, das könnte ein mögliches Worst-Case-Senario sein. In der Praxis verhalten sich User stark unterschiedlich und ob die Userzahl zustande kommt, weiß man auch nicht. Dann kann man noch komprimieren lassen, die Browser cachen, man kann den Code optimieren, etc. Wichtig ist aus Kostensicht, dass dein Anbieter dich nciht einfach über die Freitraffic-Klinge springen lässt und dann abkassiert, sondern dir die Möglichkeit bietet vorher benachrichtigt zu werden und ggf. zu sperren oder dergleichen.
Wieviele User später gleichzeitig Online sind wird sichelich die wichtigste und zudem am schwierigsten zu beantwortende Frage sein.
Ich gehe mal davon aus das meine Berechnungen nicht ganz unrealistisch sind und denke das der Server soetwas leisten kann.
Was passiert mit dem System (Drupal, Server) wenn es aufeinmal 80.000 User sind?
Du redest nicht von 80.000 gleichzeitig, oder? ;)
Wenn du 80.000 halbwegs aktive Mitglieder hast, kannst du vermutlich genug Werbeeinnahmen realisieren, um dir noch drei Server dazu zu holen (1xDB, 2xWeb, 1x Load-Balancer) ;)
- Traffic:
gibt es Möglichkeiten den Traffic möglichst gering zu halten, Stichwort Browsercache?
Halte die zu übertragenden Dateien (HTML, CSS, JavaScript, Bilder) möglichst klein. Cachen tut der Browser von sich aus (CSS-, JS-, Image-Dateien) und bei dynamischen Inhalten (HTML) ist eh nichts zu holen.
Viele schlagen sicherlich die Hände über dem Kopf zusammen, soviele Module?!?! Sind es wirklich zuviele und wie sehr wirken diese sich negativ auf die Performance aus? Was kann man dagegen tun....? leider habe ich nicht die Möglichkeiten vieles selbst zu entwickeln da mir persönlich das Know How fehlt und zudem das wohl nötige Kleingeld um hierfür jemanden zu beauftragen.
Wenn du diese Module alle brauchst, ist das nunmal als gegeben hinzunehmen. Da du die Möglichkeit eder Eigenentwicklung nicht hast, ist da auch nichts dran zu drehen. Da du also keine Optionen hast, ist es müßig hier rumzuorakeln und sich Gedanken zu machen.
-Performance:
welche Möglichkeiten gibt es diese zu steigern?
Optimierten Kernel benutzen, Apache, PHP und MySQL auf die Hardware deines Servers hin optimiert konfigurieren, Memcache einsetzen, einen PHP Cache á la APC einsetzen, ...
-Serverstandort:
ab welchen Dimensionen ist die Maßnahme der Lastverteilung (2. Server an einem anderen Standort) unumgänglich?
Wenn ein Großteil deiner Benutzer vom anderen Ende der Welt zugreift und diese sich dann durch irgendwelche Nadelöhre zwängen müssen. Das 2.-Server-woanders-Szenario ist aber in erster eher eines für Dateiserver. Vorher macht der jetzige Server wegen Überlastung die Grätsche. Da der Server bestenfalls mit einer 1 GBit Karte ausgestattet ist (was emist Makulatur ist, da die Netzwerke in der Regel allesamt nur 100er sind), ist nicht die Anbindung des Hosters das Problem (Hetzner hat z.B. ein halbes Dutzend Anbindungen mit insgesamt 45 GBit).
-Statistik:
was haltet ihr von "google analytics", ist es ein gutes Tool und empfehlenswert für ein social network?
Kann man uneingeschränkt für jede Form von Website benutzen.
- Datenbank, Datenspeicher:
wenn ich überlege das Userphotos einfach unter Files/Pictures mit der entsprechenden User-ID abgespeichert werden, ist das bei einer ziemlich hohen Userzahl nicht schwierig zu pflegen? Schwieriger noch beim hochladen von Bildern, wo kann ich genau nachvollziehen wer welches Bild hochgeladen hat? Falls illegale Inhalte auf der Seite veröffentlicht werden oder jemand seinen Account gelöscht haben möchte und ich alle Daten vernichten will. Ist das so überhaupt praktikabel oder gibt´s da andere Möglichkeiten die Daten speziell den Usern zuzuordenen? Oder sind diese in der Datenbank sowieso dementsprechend
sortiert abgelegt?
Nachovllziehen kannst du das über die Datenbank. So macht es Drupal ja auch. Vor dem Fragen vielleicht auch einfach mal selbst einen Blick in die DB werfen, die beißt ja nicht ;)
Welche Fragen muss ich mir zudem stellen, was habe ich in meinen Überlegungen übersehen? Welche Probleme können bzw. werden auftreten? Hat jemand Erfahrung mit einer großen social network Plattform, wie ist es da mit der Performance des Systems, was für Server stecken dahinter?
Die Antworten würden dir zunächst wenig bringen. Ein Ferrari ist im Stau so schnell wie ein Käfer. Zu betrachten ist das Gesamtsystem und das Verhalten der User. Alles in allem eine recht individuelle Geschichte. Die beste Hardwar bringt nichts, wenn das System (von der Partitionierung, über Konfiguration der Dienste bis hin zur Programmierung) von vorne bis hinten Bottlenecks hat.
Gedanken solltest du dir über folgende Dinge machen:
- Wenn die Karre abraucht / gehackt wird, wie gehe ich dann vor und in welcher Zeit und zu welchem Aufwand kann ich alles wieder am Laufen haben?
- Wenn der Server überlastet ist, wie kann ich schnell das Gesamtsystem erweitern und so die Lastspitzen abfedern? (Zeit? Aufwand?)
- Die Frage der Fragen: Wer ist für dich da wenn es brennt, berät und unterstützt dich in den Bereichen, die du selbst nicht abdecken kannst?
"I invented the term Object-Oriented, and I can tell you I did not have C++ in mind." -Alan Kay
Suchmaschinenoptimierung (SEO) & Drupal
Danke!
am 26.11.2007 - 12:46 Uhr
Hallo, erstmal besten Dank für deine ausführlichen Antworten!!
Werde mir den Text nochmal in aller Ruhe angucken und ggf. nochmal nachfragen.
Wieviel RAM? Was ist mit Datensicherung? Wer managed die Karre?
Sorry..... 4GB RAM,
Datensicherung läuft seitens des Hosters,
bei WebhostOne
Du redest nicht von 80.000 gleichzeitig, oder? ;)
:-)) nein, 80.000 User insgesamt meinte ich!
Nachovllziehen kannst du das über die Datenbank. So macht es Drupal ja auch. Vor dem Fragen vielleicht auch einfach mal selbst einen Blick in die DB werfen, die beißt ja nicht ;)
Wenn sie nicht beißt werde ich das mal tun :-)
Also, besten Dank nochmal!!
Gruß, der Jenzen!!