Hosting

Wir verwenden verschiedene Stacks um die Verbindungen zu unseren Diensten zu verwalten. Auf dieser Seite beschreiben wir die Vorgänge für HTTP und HTTPS.

Jeder Kunde erhält separate und dynamische Gruppen von Diensten. Die unterstützen Dienste sind z.B. Webserver, Appserver, Datenbanken, Caches und Dateisysteme. Ähnliche Gruppen werden in einer Schicht zusammengefasst.

Die daraus resultierende Flexibilität erlaubt es uns auf ganz individuelle Ansprüche zu reagieren. So können wir gezielt Gruppen einzelner Schichten aufgrund von Engpässen erweitern oder für individuelle Belastungsmuster optimieren.

Wir empfehlen grundsätzlich zwei oder mehr Dienste des selben Typs um auf allen Schichten Failover und Load-Balancing bieten zu können.

Sie brauchen für unser Hosting keine spezialisierten Applikationen, die Sie auf lange Sicht von uns abhängig machen. Fangen Sie klein an und überlassen Sie uns die Skalierung. Beachten Sie unsere technischen Limitationen.

Unser Ziel ist es hohe Verfügbarkeit und gute Performance benutzerfreundlich zu kombinieren.

Klicken Sie auf eine der Schichten in der grafischen Darstellung um weitere Informationen und Links zu der von uns genutzten Software zu erhalten.

Für unsere Dienste verwenden wir ausschließlich freie Open Source Software.

Routing

Das Routing besteht aus verschiedenen Diensten um einheitliche Einstiegspunkte in unseren Cluster und Ausfallsicherheit bei Problemen (auf IP und Dienstebene) zu bieten.

Eine weitere Aufgabe dieser Schicht ist es stets gute Performance zu ermöglichen. Wir verwenden erprobte Techniken zur Lastverteilung und zum Lastausgleich gleichartiger Dienste.

Die eingesetzte Software beinhaltet unter anderem:

  • ISC Bind Nameserver verteilt in der Europäischen Union
  • HAProxy für Ausfallsicherheit, Lastverteilung und intelligentes Verwalten von Warteschlangen exzessiver Anfragen

Webserver

Konfigurieren Sie Ihre Domains ganz individuell zum ausliefern von statischen Dateien, durchreichen von Anfragen an Ihre Applikationen, zwischenspeichern dynamischer Daten und mehr.

Wir analysieren angefragte URIs und behandeln sogenannte Redirects und Rewrites sowie verschiedene Zuweisungen.

  • Auth Zuweisungen ermöglichen die Zugriffskontrolle mit eigenen Benutzern und Gruppen.
  • Statische Medien Zuweisungen ermöglichen das direkte ausliefern von Dateien aus dem Dateisystem. Wir unterstützen transparentes durchreichen von Anfragen an eine bestimmte Applikation (falls die angefrage Datei nicht vorhanden ist), setzen eigener HTTP Expires Header, sowie effiziente Downloads gesteuert durch Ihre Applikation.
  • Applikations Zuweisungen ermöglichen das Durchreichen von Anfragen an eine Applikation. Wir unterstützen alle mögliche Kombinationen um eine Applikation von mehreren Pfaden mehrerer Domains aus zuzuweisen. Applikationen mit mehreren Domains werden hierdurch einfach und effizient realisierbar. Wir unterstützen das Cachen von dynamischen Inhalten. Der Cache kann pro Zuweisung oder auch ganz genau über die HTTP Cache-Control Header gesteuert werden.

Diese Schicht wird zur Terminierung von HTTPS Anfragen genutzt. Wir kombinieren die HTTP und HTTPS Konfigurationen und geben Ihren Applikationen alle verfügbaren Verbindungsinformationen weiter.

Wir verwenden nginx aufgrund der aussergewöhnlich guten Performance.

Appserver

Falls Sie die übergeordneten Schichten korrekt konfiguriert haben sollten hier ausschließlich dynamische Anfragen ankommen. Dies entlastet Ihre Applikationen und ermöglicht schnelle Antworten.

Konfigurieren Sie den Cache für dynamische Daten, setzten Sie die passenden HTTP Cache-Control Header, und Ihre Webseite verträgt plötzlich ein vielfaches der sonst üblichen Besucherzahlen.

Wir verwalten Appserver in Form von WSGI und PHP Containern. Jeder Container kann auf mehreren Systemen installiert werden. Jede Installation hat eine konfigurierbare Anzahl an Workern, welche sich aus dem Produkt von Prozessen und Threads ergibt. Diese Flexibilität erlaut es den Container entsprechend den Engpässen der jeweiligen Applikation (IO oder CPU) zu optimieren. Exzessive Anfragen werden mithilfe einer Warteschlange abgearbeitet um die Applikation vor Überlastung zu schützen und die Nutzung externer Ressourcen so effizient wie möglich zu machen.

Wir verwenden eine abgespeckte Version von Apache mit mod_wsgi für unsere Python WSGI Container. Diese Kombination ist robust, stabil und unterstützt fast jede erdenkliche WSGI Anwendung. Die Worker werden pre-forked und Ihre Applikationen bleiben dauerhaft im Speicher geladen um Anfragen so schnell wie möglich zu verarbeiten.

Wir verwenden eine abgespeckte Version von Apache mit mod_fcgid für unsere PHP Container. Dies ermöglicht uns htaccess und somit alle bekannten PHP Anwendungen vollständig zu unterstützen. Wir verwenden PHP APC um Ihre PHP Scripte dauerhaft im Speicher zu halten und Anfragen so schnell wie möglich zu verarbeiten.

Datenbanken

Wir geben Ihnen die volle Kontrolle über Ihre Datenbanken:

  • Verwaltung von Datenbanken, Benutzern und Zugriffsrechten
  • Verwendung von gängigen Kommandozeilen-Tools zum ausgeben und laden von Daten sowie zum administrieren.
  • Verwendung von SSH Tunneln zum verbinden von außen.
  • Verwendung von phpMyAdmin oder phpPgAdmin

Diese Schicht beinhaltet folgende Dienste:

Dateisystem

Wir setzen pro Kunde ein vollständig repliziertes und somit hochverfügbares Dateisystem ein. Alle Systeme auf denen Ihre Dienste laufen haben die jeweils erforderlichen Zugriffsrechte.

Dieses Design macht unseren Hosting Cluster transparent für Ihre Applikationen. Von Caching und Sessions im Dateisystem raten wir allerdings ab. Hierfür bieten wir schnellere und effizientere Dienste, z.B. memcached oder MongoDB.

Im Produktionsmodus verwenden wir diverse Caching Mechanismen um den Zugriff auf ihre Dateien auf die Geschwindigkeit eines lokalen Dateisystems zu bringen. Domains können in einen Entwicklungsmodus versetzt werden um sämtliche Caches zu umgehen. Verwenden Sie versionierte Dateinamen um neue Inhalte sofort verfügbar zu machen ohne den Cache zu umgehen.