10 dinge die ich an dir hasse - stolpersteine in der webentwicklung
DESCRIPTION
TRANSCRIPT
WER BIN ICH?
• Sebastian Springer
• https://github.com/sspringer82
• @basti_springer
• Consultant, Trainer, Autor
Warum erzähle ich euch das?
• Wir schlagen uns schon länger mit Webapplikationen herum
• Wir haben es schon mal falsch gemacht, deswegen sollt ihr es nicht auch verkehrt machen
Webapplikationen?
vs
einfache Webseiten mit wenig Interaktion geocities? anyone?
Umfangreiche Webapplikationen Verhalten sich wie Applikationen
z.B. cloud9IDE
Webapplikationen• Multi-User-Systeme
• Benutzer interagiert mit der Anwendung
• Daten werden persistiert
• Browser als Laufzeitumgebung
• Logik auf Client und Server
Die schöne heile Welt?
1. Auswahl
Dieter Schütz / pixelio.de
Sprachen, Frameworks Entwicklungsumgebungen
Auswahl
• Es gibt nicht die eine richtige Sprache
• Die gewählte Technologie sollte sich für die Lösung eignen
• Erfahrung im Umgang mit der Technologie
• Evaluation
Webentwicklung, kein Glaubenskrieg
pepsprog / pixelio.de
2. Software von der Stange?
lichtkunst.73 / pixelio.de
Frameworks
!
• Nicht für jede Aufgabe das Rad neu erfinden
• Frameworks lösen die meisten Standardprobleme
• Vorteil: Bugfixes, Support, Community
• Die meisten Webframeworks sind Open Source
Frameworks und Tools
3. Ressourcen?
Kurt Michel / pixelio.de
Ressourcen?• Eine der wichtigsten Ressourcen: Bandbreite
• Die Zeiten von Modems und ISDN sind vorbei?
• Geschwindigkeitsdrosselung bei Mobilgeräten
• Kunden in Strukturschwachen Gebieten
• Rechenkapazität auf den Client-Geräten
Ressourcen
• Minifizierung von HTML, CSS, JavaScript
• CSS Sprites
• Gezippte Kommunikation zwischen Client und Server
4. Qualitätssicherung
uygar sanli / pixelio.de
Qualitätssicherung?• Qualität der Software
• Fehler möglichst früh erkennen
• Umgang mit sensiblen Daten
• Kritische Transaktionen
• Features, die Umsatz für das Unternehmen bedeuten
Qualitätssicherung• Manuelle Testpläne
• Automatisierte Tests
• Unittests
• Statische- und dynamische Codeanalyse
• Metriken
• Der richtige Grad zwischen Kosten und Nutzen
Continuous Inspection & Integration
5. Umgebung
berggeist007 / pixelio.de
Umgebung
• Die Serverkomponente ist unter unserer Kontrolle
• Die Clientkomponente nicht
• Unterschiedliche Systeme, Browser, Auflösungen
Feature Detection vs Browser Sniffing
Modernizr
• Prüft, ob ein Feature existiert
• Option, zusätzliche Dateien zu laden
• Polyfills - ersetzen natives Verhalten durch Alternativen
6. Aktualisierung der Daten
Tim Reckmann / pixelio.de
Aktualisierung der Daten
• Webapplikationen sind sehr dynamisch
• Viele Benutzer generieren Daten
• Anzeige der Daten soll möglichst aktuell sein
• HTTP als Protokoll sieht vor allem unidirektionale Kommunikation vor
Aktualisierung der Daten
• Bidirektionale Kommunikation
• Verschiedene Lösungen: Long Polling, Websockets, etc.
• Strategien zur Aktualisierung: Request for Reload, Nutzdaten übermitteln
• Sichere Verbindung über https und wss
7. Releases
Rainer Sturm / pixelio.de
Releases• Die Zeiten von Releasezyklen von einem Jahr und
mehr sind vorbei
• Neue Features/Bugfixes müssen schnell auf den Markt
• Viele Unternehmen releasen täglich oder wöchentlich
• Ein Fehler beim Kunden, der innerhalb von 5 Minuten behoben ist, ist OK
Wie machen die das denn?
Releases• Agile Entwicklung
• Feature-Toggles
• Multi-Varianten Testing
• Sehr viel messen
• Roll-Back-Strategien
8. Performance
Thomas Siepmann / pixelio.de
Performance• Benutzer warten nicht gerne
• Wenn Benutzer warten müssen, muss man ihnen das sagen
• Graceful degrade - es fällt nur das weg, was nicht geht
• Keine weißen Seiten, niemals!
Performance
• Profiling - wo geht die Performance verloren
• Priorisierte Performanceverbesserungen - die Cheap Wins zuerst
• Rückmeldungen wie Loading Indicators
• Performance ist Responsibilität - Hardware ist billig
9. Erweiterbarkeit
Bernd Kasper / pixelio.de
Erweiterbarkeit
• In den seltensten Fällen ist eine Webapplikation wirklich fertig
• Neue Features müssen integriert werden
• Erweiterung muss kostengünstig erfolgen
Nicht erweiterbar === tot
Erweiterbarkeit
• Modularer Aufbau
• Lose Kopplung
• Verwendung Schnittstellen
• Keep it Simple
10. Rewrite?
Lupo / pixelio.de
Rewrite• Lebenserwartung einer durchschnittlichen
Webapplikation: ca. 5 Jahre
• Lebenserwartung von Frameworkversionen: 2 Jahre
• Ab einem bestimmten Zeitpunkt wird der Betrieb einer Software teuer
• Rewrite oder doch lieber Modernisierung
• 96% aller Rewrite-Projekte laufen aus Time & Budget
Rewrite
• Kompletter Rewrite mit hohem Risiko
• Modulweiser Rewrite und Parallelbetrieb
• Kontinuierliche Modernisierung von Anfang an
Fragen
Angela Parszyk / pixelio.de
KONTAKT
Sebastian Springer [email protected] !Mayflower GmbH Mannhardtstr. 6 80538 München Deutschland !@basti_springer !https://github.com/sspringer82