Was ist Fair Use, bzw. was soll ich darunter verstehen? Wie programmiere ich meine Abfragen, um dem Fair-Use-Gedanken zu entsprechen?
Unter Fair Use versteht man allgemein die faire Nutzung von Bandbreiten und Ressourcen, die von einem Anbieter wie der GET AG für Kunden bereitgestellt werden. Dies ermöglicht es, keine Beschränkungen in Sachen Traffic, Abfrage-Limits und dergleichen auferlegen zu müssen. Es bedingt aber auch einen fairen Umgang von Seiten des Kunden mit unseren Ressourcen.
Die GET AG bietet mit Ihren Webservices aus dem Energiemarkt eine geteilte Plattform für eine Vielzahl von Kunden an. Alle Kunden teilen sich die Ressourcen auf dieser Plattform. Hier sind es im speziellem Rechenleistung auf unseren Servern(Datenbanken, Load-Balancern, Application-Servern, Firewalls usw.) und Bandbreite unserer Internetleitungen.
Wenn nur ein Kunde diese Plattform massiv parallel abfragt, um seine Anfragen so schnell wie möglich beantwortet zu bekommen, und die Webservices auslastet, schadet dieser Kunde allen Kunden der Plattform. Es kommt zu einem "Stau" in der Abarbeitung der Requests und die Plattform wird insgesamt erheblich langsamer (für alle Kunden gleichermaßen).
Auch ist die GET AG dadurch gezwungen, in mehr Hardware zu investieren, was sich mittelfristig auf die Preise der Webservices auswirkt.
Tipps zum Abfragen nach dem Fair-Use-Prinzip:
- Öffnen und schließen sie die Connection bei jedem Request. Warum erklärt dieser Artikel.
- Benutzen sie Komprimierung. Warum erklärt dieser Artikel.
- Versuchen sie nicht, das maximal Mögliche an Parallelität aus der Plattform heraus zu holen. Bei vielen Batch-Läufen kommt es auf die Dauer des Batches gar nicht an. Entzerren sie massive Batch-Läufe mit Waits, so dass die Req/Sek sinken.
- Verzichten sie auf das ständige Abfragen der WSDL, diese ändert sich nicht. Cachen sie diese lieber lokal auf Ihrem Server.
- Entwickeln sie nicht gegen die produktiven Webservices. Fehler können passieren und gefährden die Plattform insgesamt. Benutzen sie die Test-Webservices, welche von den produktiven Webservices abgekoppelt sind.