Galera Cluster – Tips für die Praxis

Galera Cluster für MySQL ist mal ein “einfacher” Cluster für MySQL und seit MariaDB Version 10.1 standardmäßig mit an Board. Dadurch erhält man mit ein paar Zeilen Konfiguration einen produktionsfähigen Cluster, um den man sich wenig kümmern muss. In der Praxis allerdings, bieten sich genügend Fallstricke, die es zu meistern gilt.

Die Terminologie

  • Joiner: Neues Member welches dem Cluster hinzugefügt wird
  • Donor: Meldet sich ein Joiner stellt der Cluster einen Lieferanten bereit welcher die Daten auf den Joiner überträgt
  • SST: Snapshot State Transfer – Ist Lücke zum aktuellen Stand zu groß, werden der komplette Stand übertragen
  • IST: Incremental State Transfer – Im laufenden Betrieb werden Änderungen direkt übertragen. Die Änderung ist am Cluster erst verfügbar wenn alle Mitglieder diesen Stand empfangen haben

Tipps

1. SST Vermeiden

Einen kompletten Stand der Daten zu übertragen ist keine gute Idee. Ein Cluster, welcher 1 TB Nutzdaten verwaltet, ist auch nach drei Tagen nicht fertig. Dadurch können stabile Member ihre Integrität verlieren und der Cluster wird instabil. Hat man eine solche Situation erreicht empfiehlt es sich, den kompletten Cluster manuell zu syncen (MySQL Daten löschen und per rsync kopieren – Aber bitte keine Binlogs!).

2. SST Method

Galera bietet verschiedene Methoden um einen SST durchzuführen. Laut Statistik ist SSH die schnellste Methode – D’Accord – Aber der dadurch entstehende Donor ist für Anfragen gelockt und fällt aus dem Cluster. Dadurch wären wir bei Punkt 1 angelangt. Der beste trade-off ist hier xtrabackup-v2. Dadurch wird ein Donor am wenigsten blockiert. Bitte dabei den Benutzer zur MySQL Authentifizierung nicht vergessen – Sonst geht gar nichts!

3. SST Konfiguration

SST und das ausführen auf dem Joiner kann maßgeblich verbessert werden mit folgender MySQL Konfiguration:

[sst]
inno-apply-opts="--use-memory=20G"
compressor="pigz"
decompressor="pigz -d"

Dadurch geben wir dem innobackupex Script, welches auf dem Joiner ausgeführt mehr Speicher um Daten aus den Logs (–apply-log) auszuführen. Weiterhin parallelisieren wir den Vorgang um Daten auf dem Donor zu komprimieren und – guess what – auf dem Joiner zu dekomprimieren.
Um die Transaktionen weiter zu parallelisieren erhöhen wir die Einstellung wsrep_slave_threads auf eine dem System angepasste Anzahl (Anzahl Cores und Auslastung).

4. Dedizierten Donor

Bei großen Datenmengen empfiehlt es sich einen eigenständigen Donor bereitzustellen welcher keine Anfragen entgegen nimmt.

[mysqld]
 wsrep_sst_donor = node-donor

Eventuell sollte man auch Queries mit der Einstellung wsrep_sst_donor_rejects_queries verbieten

5. Locking Queries

Galera ist maximal transparent für Applikationen. Einzig, LOCKING wird nicht akzeptiert. Falls es von der Applikation benötigt wird könnte man mit der Einstellung wsrep_convert_LOCK_to_trx die Queries in Transaktionen kapseln.

6. Provider Cache

Standardmäßig auf 128M eingestellt, enthält dieser Ringpuffer die zu Verfügung stehen write-sets für einen IST. Die Größe sollte man entsprechend hoch wählen. So kann auch bei größeren Lücken immer noch ein IST durchgeführt werden:

[mysqld]
wsrep_provider_options="gcache.size=1G"

Bei entsprechend Arbeitsspeicher oder SSD Storage ist es durchaus eine gute Idee die Datei auf das schnellste Storage zu legen oder eine Lastaufteilung vorzunehmen:

[mysqld]
wsrep_provider_options="gcache.size = 8G; gcache.name = /var/cache/ssd/galera.cache"
7. HAProxy verwenden

Der stabilste Cluster bringt einem gar nichts wenn man nur einen Knoten abfragt. Eine der Stärken von Galera ist es, von allen Knoten zu lesen. Hier sollte man sich Gedanken zur Aufteilung machen:

  • Die schnellsten Knoten zum lesen und in den HAProxy
  • Donor exkludieren
  • Backup members bereitstellen (hot-standby)

Eine Konfiguration können z.B. folgendermaßen aussehen:

backend mysql_pool   mode tcp
  balance roundrobin   option mysql-check user haproxy   option tcpka # keep-alive!   server galera-donor1   192.168.17.20:3306 check inter 12000 disabled   server galera-standby1 192.168.17.21:3306 check inter 12000 disabled   server galera-node3    192.168.17.22:3306 check inter 12000
  server galera-node4    192.168.17.23:3306 check inter 12000
  server galera-node5    192.168.17.24:3306 check inter 12000

Dadurch erhalten wir einen Donor, einen hot-standby und drei read-heads. Durch die HAProxy API kann man das auch je nach Zustand des Cluster zu oder abschalten. Auch wäre eine standortübergreifende Verteilung möglich. Man stelle sich verschiedene Pools in verschiedenen Ländern vor. Je nach Ursprung und Applikation können dann die Anfragen zu den schnellsten read-heads weitergeleitet werden. Dann sollte man sich aber überlegen, z.B.  wsrep_dirty_reads an den Standorten zu verwenden.

8. Bin Logs

Ein richtiger Klassiker der Cluster Pitfalls, die Binary Logs von MySQL. Man würde sie für Galera nicht unbedingt benötigen aber sie bieten Sicherheit beim Crash und helfen einen SST im Falle zu vermeiden. In großen Umgebungen muss man folgendes bedenken:

  • Speicherplatz begrenzen
  • Vorhaltezeit verkürzen
  • An das verfügbare Storage anpassen

Ansonsten dauert ein FLUSH LOGS gerne auch mal 3 Tage und blockiert einen unseren Knoten – Beim Donor besonders schlecht!

Fazit

Für mich ein fantastisches Cluster System für MySQL! Es gibt noch viele gute Tips da draussen und noch viel mehr Möglichkeiten (und auch schmerzen) mit InnoDB / MySQL Konfiguration. Es funktioniert auch leider beim Galera Cluster nichts ohne vorher die eigene Rübe einzuschalten 😉

Links

 

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Mac Firewall – Little Snitch

littlesnitch_320Die Firewall im Mac ist jetzt nicht unbedingt die bequemste. Die Oberfläche lässt einem wenig Spielraum, seine Sicherheitsbedürfnisse anzupassen – z.B. Verbindungen von innen heraus zu beschränken.
Manchmal möchte man allerdings bestimmte Aktionen von Programmen unterbinden oder genau wissen was gerade auf der Leitung brennt – und warum. Wireshark wäre eine Möglichkeit. Allerdings fehlt mir hier der Bezug zur Applikation und bei großen Datenmengen wird es dann etwas unübersichtlich.
Seit Ende letzten Jahres Bereits seit 2003 (danke Igor ;-)) gibt es für den Mac die Firewall Little Snitch. Diese erlaubt es Verbindungen von innen heraus zu beschränken und zu überwachen – Und das mit beachtlicher Granularität. Little Snitch unterstützt verschiedene Modi. Alles zu verbieten, zu erlauben oder durch ein Regelwerk zu begrenzen. Letzterer Modus lässt sich eine jede Verbindung durch einen Popup bestätigen. Und hier liegt auch etwas der Hund begraben. Nämlich dass man nicht durch Faulheit eine jede Verbindung blind bestätigt. Ich für meinen Teil habe mittlerweile genau aus diesem Grund alle Verbindungen erlaubt und verwende die Firewall zum Debuggen von Programmen, was diese an Traffic durch die Welt posaunen.
Zu erwähnen bleibt noch, dass der Regeleditor sehr gut durchdacht ist. So lassen sich Regeln temporär hinzufügen und Regeln in Ihrer Anwendung breiter oder enger ziehen (in dem man Portbereiche, Protokolle oder Subdomains verändert) und wird informiert wenn man überschneidende Regeln oder unsinnige Regeln konfiguriert hat – Sogar mit automatischen Lösungsvorschlag.
Die Lizenz ist leider proprietär. Jedoch ist die Software durch einen offen gestalteten Demomodus gut zum Debuggen zu verwenden.
Mein Fazit: Tolles Tool, stellt gesprächige Programme ruhig und ich behalte den Überblick!
 

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

CPAN Minus

CpanPerl ist ein etablierter Kanndidat wenn es darum geht, mit kleiner Software Probleme zu lösen. Zum Beispiel ist die nahtlose Integration von Textverarbeitung in Kombination mit regulären Ausdrücken ein unschlagbares Feature.
Perl erweitert seine Funktionalität mit Modulen welche im Comprehensive Perl Archive Network zu Verfügung gestellt werden, kurz CPAN genannt. Unglücklicherweise ist die Nutzung von CPAN immer mit schmerzhaften Erfahrungen verbunden. Builden, Testen, fehlende Abhängigkeiten und megabyteweise Ausgaben führen oft zu einem Fehlschlag und rütteln an der Akzeptanz des Tools.
Seit einiger Zeit wird CPAN Minus immer populärer. Ein Grund ist vermutlich die einfache Arbeitsweise. So kann man ohne Konfiguration und Kommandozeilenschlachten, Module und deren Abhängigkeiten installieren. Na bitte, so geht es also auch.
Beispiele:
Installation unter Ubuntu / Debian:
$ apt-get install build-essential perl # Abhängigkeiten
$ apt-get install cpanminus

Alternativ kann das Skript auch einfach mit Curl oder Wget runter laden:
$ curl -L http://cpanmin.us > cpanm
$ chmod +x cpanm

Die Installation von Modulen kann jetzt auf zwei Arten erfolgen. Entweder installiert man ein einzelnes Modul:
$ sudo cpanm --installdeps Date::Holidays

Oder eine Gruppe von Modulen wird in einer Datei bereitgestellt:
$ head -n3 cpanfile
# Core
requires 'Apache::Session', '1.53';
requires 'CGI', '3.38';
$ cpanm --installdeps .

Alles übrige wird im Hintergrund erledigt.
Nach Jahren der Selbstkasteiung ist das mal ein gutes Tool!

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

NETWAYS Gebäudeautomation

fhemiconManuelle Schaltungsaufgaben sind einfach nervig und kosten Energie. Vor allem in Büros. Denn nicht jeder denkt an das Abschalten von Kaffeemaschine, Dashboards oder Licht im Allgemeinen. In größeren Gebäuden oder verteilten Räumen ist es auch nicht gleich ersichtlich, dass hier noch eine Heizung abgeregelt werden muss oder das Licht noch brennt.
Besser funktioniert es, wenn Heizungen automatisch geregelt werden oder Verbraucher zentral und zeitlich gesteuert werden. Um die Prozesse bei uns zu vereinfachen setzen wir mittlerweile Komponenten von Homematic in Kombination mit FHEM ein. Homematic kommuniziert bidirektional und verschlüsselt über Funk. Die Möglichkeit zur Sabotage werden damit gering gehalten und die Geräte senden sogar Schaltzustände und Statusinformationen wie Batteriekapazität an die Zentrale zurück. Als Oberfläche und Schnittstelle kommt bei uns FHEM zum Einsatz – ein OpenSource Perl Daemon welcher eine Reihe von Schnittstellen unterstützt (KNX, 1-Wire, FS20, Samsung, usw.) und einen Baukasten zur Gruppierung von Komponenten und zeitlichen Abfolgen bereitstellt.
logo_homematicMittlerweile steuern wir damit unsere Dashboards und Heizkörper (über MAX! Cube Lan-Gateway). Der Taster am Eingang kann sogar dazu genutzt werden um eingehende Essensbestellungen über einen Jabber Bot benachrichtigen zu lassen. Im Moment befindet sich noch alles in den Kinderschuhen aber es bietet Raum für mehr: Füllstand des Briefkastens, Heizungssteuerung per Anwesenheit, Luftgüte in den Büroräumen und vieles mehr. Aber auch für unser Monitoring ergeben sich einige sinnvolle Parameter: Temperaturen, geöffnete Türen und Fenster.
 
 

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Mac: Install binary packages with Cask

Unter Mac OS X sind die Anwendungen ziemlich gut organisiert. Alles ist an einem Fleck und die Vielfalt ist groß. Installiert man sich allerdings viele Anwendungen ohne die Verwendung des App Stores verliert man schnell die Übersicht. Mit Cask wird eine CLI zu Verfügung gestellt, welche genau diese Lücke schließt:
 

$ brew cask search sublime
==> Partial matches
sublime-text	  sublime-text-dev  sublime-text3
$ brew cask install sublime-text3
==> Caveats
Cask sublime-text3 installs files under "/usr/local".  The presence of such
files can cause warnings when running "brew doctor", which is considered
to be a bug in homebrew-cask.
==> Downloading http://c758482.r82.cf2.rackcdn.com/Sublime%20Text%20Build%203083.dmg
######################################################################## 100.0%
==> Symlinking App 'Sublime Text.app' to '/Users/mhein/Applications/Sublime Text.app'
==> Symlinking Binary 'subl' to '/usr/local/bin/subl'
?  sublime-text3 staged at '/opt/homebrew-cask/Caskroom/sublime-text3/Build 3083' (106 files, 26M)
$ ls Applications/ | grep Sublime.*
Sublime Text.app

Okay, das haut jetzt den Geek mit samt seinem Lötkolben nicht unbedingt vom Hocker. Die Anwendung wird in den Benutzer-Application Verzeichnis installiert. Man spart sich allerdings viel Zeit beim aktualisieren und warten: Was ist installiert, in welchen Versionen und kann ich es upgraden.
Cask ist eine Erweiterung von Homebrew und befindet sich auf Github.

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Android, aber welches?

AndroidWarum in aller Welt muss denn jeder Hersteller seine eigenen Applikationen für Android bauen? Die Auswirkungen treffen jeden Android Nutzer, der nicht bereit ist, 500 Steine für das neue Nexus von Google durch den Abfluss zu spülen: Lange Updatezyklen, geänderte (meist zum Negativen hin) UX/UI und Bloatware. Von der Zeit die einem gestohlen wird, um einen Bootloader zu öffnen und Root zu flashen, möchte ich gar nicht erst anfangen (so einfach kann es sein). Kurzum – sehr unbefriedigend, verwendet man doch eigentlich gerne Android.
Aber es gibt Abhilfe: Hersteller springen mittlerweile auf den “Stock Image” Zug auf und die Tools zum Flashen werden immer besser und verhindern schlechte Laune durch teure Bricks. Somit finden immer mehr User den Zugang zur Smartphone-Autonomie. Die Vorreiter sind unbestritten die Macher des Cyanogen Mod, die ein Open Source Android System Image massentauglich gemacht haben. Leider verfallen aber auch altgediente Dinosaurier in den Wahn, mit Apps die Welt ein Stückchen besser machen zu müssen. Und (klingeling), hier betreten die Nischen ROMs die Bühne. Einen dieser zurückhaltenden Vertreter möchte ich heute kurz vorstellen: “CyanideL”.
Kurzbeschreibung: Ursprünglich basierend auf CM orientiert sich CyanideL mittlerweile mehr zu AOSP (Android Open Source Project) und wartet mit großartiger Anpassungsfähigkeit auf. App Drawer und Launcher übernimmt Nova (wunderschönes Teil). Neben vielen App und Circle Bars sticht dann besonders noch der OmniSwitch hervor – eine App aus dem OmniROM zum swappen, killen und starten von Apps und Activities.
Irgendjemand müsste dann aber doch mal einen Designer bei den ganzen XDA Entwicklern vorbei schicken. Die Foren und Ressourcen ähneln so manchen Warez oder Astalavista-Klonen aus den 90ern und man ist sich trotz MD5 Summen nicht immer sicher, ob man sich jetzt das aktuelle ROM oder doch eher die (natürlich) beste App für Erwachsenenunterhaltung und (die besten) Viren eingefangen hat.
Herzlichen Dank and die Bauer, Supporter, Kompilatoren und Tester: Das ist wirklich sau gut geworden!
Ressourcen: CyanideL, Nova Launcher, OmniSwitch, Google Apps – welche, GAPPS – Download
Wer bis jetzt kein Ohrenbluten vom XDA Slang bekommen hat wird mit der Gallerie belohnt, gratuliere!
 

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Gulp und Bower: Automate Webdevelopment

NETWAYS DevelopmentDas Entwickeln von HTML Templates ist normalerweise ein sehr statisches unterfangen. Man braucht nicht viel mehr als einen Texteditor und einen Browser um ein Design zu entwerfen. Integriert man allerdings Gedanken zur Produktion bereits in der Designphase, steigt der Aufwand wesentlich. Denn folgende Dinge gilt es zu bedenken:

  • Kompilieren von Stylesheets wenn in LESS oder SASS geschrieben
  • Aufteilen von Inline-Styles und nachladbare Styles
  • Verwenden von JavaScript Frameworks
  • Optimiertes laden von JavaScript Code
  • Komprimieren von Bildern
  • Komprimieren von Styles oder Scripts

Die Liste ist lässt sich entsprechend fortführen. Um beim Release nichts zu vergessen, etablierten sich in den letzten Jahren einige Tools um einen Buildprozess für clientseitige Webanwendungen bereitzustellen und zu vereinfachen. Zwei davon möchte ich gerne vorstellen:

Bower

Bower
Bower ist ein Open Source Paketverwaltungstool für Webapplikationen. Dadurch können für eine Website oder eine SPA (Single Page Application) softwaretechnische Abhängigkeiten definiert werden. Vorraussetzung zur Installation ist Node.js. Dann bietet Bower allerdings die Möglichkeit, Frameworks auch einfache Art und Weise in der benötigten Version zu installieren. Bekannte Vertreter dieser Art sind z.B. jQuery, AngualarJS oder HTML5 Boilerplate.
Ein einfaches bower.json sieht folgendermaßen aus:

{
  "name": "Website",
  "version": "0.0.9",
  "authors": [
    "Eduart Zimmermann <ez@website.foo.bar>"
  ],
  "description": "Our website",
  "keywords": [
    "website"
  ],
  "license": "GPLv2+",
  "homepage": "https://website.foo.bar",
  "ignore": [
    "**/.*",
    "node_modules",
    "bower_components",
    "test",
    "tests"
  ],
  "directory": "./src/scripts/vendor",
  "dependencies": {
    "jquery": "latest",
    "uikit": "latest",
    "modernizr": "2.8.x"
  },
  "devDependencies": {
    "html5-boilerplate": "latest"
  }
}

Sind die Abhängigkeiten definiert, werden sie mit diesem Aufruf in der Applikation installiert:

# bower install

Gulp

GulpGulp Logo ist nun das eigentlich Build Tool und wird ebenfalls mit Node.js (npm) installiert. Gulp selbst führt dabei nur weitere Tasks aus.
 
Diese Tasks übernehmen dann spezielle Aufgaben, z.B.:

  • Kompilieren, komprimieren, unleserlich machen von Javascript oder Stylesheet
  • Ausführen von Tasks, wenn sich Dateien geändert haben
  • Erstellen von Scripts und Styles aus verschiedenen Dateien
  • Ausführen von Tests

Die Tasks werden in einem gulpfile.js definiert und können ganze Gruppen ausführen (z.B. wie GNU Make) um Tarballs zu erstellen oder die Applikation allgemein für den Produktivbetrieb vorzubereiten. Das alleine haut uns nun nicht wirklich aus den Socken, aber: In Kombination mit Node.js und Verwendung aller hier genannten Techniken bauen wir uns mit 1-2 Anweisungen die komplette Entwicklungsumgebung auf:

  • Node Package Abhängigkeiten installieren
  • Bower Abhängigkeiten installieren
  • Webserver starten
  • Styles und JavaScript nur kompilieren nur wenn sich Dateien verändert haben
  • Per LifeReload im Browser die Seite neu laden wenn Code geändert worden ist

Damit kommt die Kiste dann richtig in Fahrt und Webentwicklung wird wieder zu einer spannenden und dynamischen Geschichte.
Weitere Informationen:

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Ein Knopf für alle Fälle

Wer hat nicht schon mal von einem Knopf geträumt der nach Betätigung einem die Probleme vom Hals schafft? Zugegeben, so einen Knopf zu bekommen ist ziemlich schwierig. Einen Hersteller gibt es allerdings, der besonders weit ist: The Button Corporation Oy.
Der Bttn ist ein internet fähiger Knopf mit Wlan Unterstützung. Ist kein Wlan in der Nähe kann man auch eine Sim Karte einlegen. Betrieben wird er mit vier Mignon Batterien und steht damit ca. 12 Monate dem drückenden zu Verfügung. Alternativ kann auch über einen USB Port Spannung zugeführt werden. Die Schnittstellen sind durchaus mannigfaltig und so stehen dem Anwender Dienste wie HTTP, RSS, IFTTT, SmartThings, Twitter, Facebook, E-Mail und SMS zur Auslösung zu verfügung. Nach einem Druck gibt der Button visuelles Feedback dass die Dinge nun so laufen wie sie sollen.
bttn_how
Der Kreativität sind keine Grenzen gesetzt. Von der Hausautomation über Software Steuerung lässt sich alles realisieren – Und genau da wo man eben so einen tollen Button braucht. Am Schreibtisch, im Auto oder auf der Toilette, z.B. um bei einem Drogerie Anbieter das Lieblings-Toilettenpapier per Expressversand zu bestellen. Jetzt muss man sich nur noch 6 Stunden entspannen 😉

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Entwicklung zum Zuhören

Hört eigentlich wer noch Podcasts?developer
In den letzten Jahren hat sich das deutsche Podcastangebot erheblich verbessert und immer mehr professionelle Produktionen drängen auf die Portale. Das Angebot ist sehr vielfältig: Vom Hobby-Philosoph über die Tagesschau bis zum Radio Tatort ist thematisch alles dabei. Ebenso aber auch der langweilige Einzelschwafler bis hin zur professionellen Hörspielproduktion.
Was gibts zum Thema Technik?
Jede Menge. Oft geht es allerdings “nur” um Platformen, Gerätetechnologien oder Spiele. Hier folgt man meist stundenlangen Ergüssen eines undynamischen Duos und nimmt am Ende doch so gar nichts mit. Außer der Tatsache, dass man die Nacht über tief und fest schlief und sich nicht mit dem Kopfhörer erdrosselt hat.
Zum Glück gibt es da sowas wie den Heise Developer Blog – Einen Podcast zum Thema Softwarentwicklung. Bekannte Softwareentwickler erzählen über ihre Erfahrungen und Probleme. Die erste Episode startete im April 2009 und die Veröffentlichungsrate ist mit sieben Produktionen im Jahr ganz gut für so ein Nieschenthema. Was ich ziemlich spannend fand:

Barrierefreiheit

Hier erzählt Artur Ortega, ein blinder Diplom-Informatiker der über seine Erfahrungen mit Architekturen und Mythen.
Bei Interesse kann man einfach mal reinhören: http://www.heise.de/developer/podcast/
– Und Gute Nacht 😉
 

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.

Driving Your Waze

Normalerweise ist alltägliches fahren langweilig. Gerade wenn täglich mittlere Strecken zurückgelegt werden müssen, läuft dies normalerweise sehr routiniert ab. Jeden Tag die gleichen Baustellen, Staus. Hier und da auch mal ein Blitzer. Das Israelische Startup Unternehmen Waze Ltd. bringt seit 2008 ordentlich Abwechslung in die Tristesse. Es entwickelte eine GPS basierte Navigationssoftware für Community-Based Driving, welche als App auf den meisten Smartphones funktioniert.
Wie funktioniert es:
Man meint sich in einem Computerspiel zu befinden. So werden über eine kurz gehaltene Bedienoberfläche vom Fahrer streckenrelevante Ereignisse Dokumentiert und Bewertet. Das können Staus in verschiedenen Schweregraden sein, aber auch Baustellen, Straßensperren oder eine Gruppe von Herren mit grünen Mützen, welche am Straßenrand mit Laserpistolen hantiert. Durch das sammeln von Kilometern und Bewertungen erhält man Punkte und steigt in der Rangliste auf. Dadurch erhält man mehr Rechte zum editieren von Karten oder eintragen von Kraftstoffpreisen. Auch liegen hin und wieder Zusatzpunkte auf der Straße welche durch überfahren aufgenommen werden. Was allerdings passiert wenn man vorbei fährt, hab ich noch nicht ausprobiert.
Das hört sich jetzt vielleicht wie ein Witz an, funktioniert in der Realität wirklich sehr gut. Waze verwendet die Daten anderer Benutzer (Crowdsourcing) und lässt diese in den Routing-Algorithmus einfließen. Dabei kombiniert der Algorithmus Echtzeit-Geschwindigkeiten mit historischen Daten und bricht diese in Teile auf. Die Teile sind dann entweder bestimmte Zeitabschnitte (10-15 Minuten) oder Abschnitte bis zur nächsten Abzweigung. Bezogen auf die gesamte Route werden die Straßen bevorzugt wo die höhere Durchschnittsgeschwindigkeit gefahren wird. Das schließt alle Zeitverluste auf der Strecke mit ein: Ampeln, Verzögerungen bei Abbiegemanövern, Stoppschilder und einiges mehr. Das Endergebnis ist die optimale Route, die sich auch mal über eine Zeitlang durch Nebenstraßen windet oder kurze Schnellstraßenabschnitte nicht scheut.
Aber:
Natürlich birgt das System auch Nachteile. So geben Sicherheitsexperten zu bedenken, dass durch die Fülle von Informationen die Unfallgefahr ansteigt. Und man legt in dem System seine Daten offen mit denen präzise Bewegungsprofile erzeugt werden können. Weiterhin wurde das Unternehmen im zweiten Quartal 2013 von Google für schlappe 966 Millionen US Dollar aufgekauft – Das hat jetzt Vorteile – allerdings werden jedem die Nachteile ebenfalls klar sein.
Trotzdem:
Für mich überwiegen eindeutig die Vorteile: Die Wege sind wirklich genial und die Meldungen präzise. Manchmal entdecke ich sogar meine Stadt neu oder werde über unmögliche Wege geleitet die sich dann als geradezu brillant herausstellen. Die Fahrt wird kurzweilig und nach dem ich nach den ersten 2000km noch nirgendwo dagegen gedonnert bin halte ich das Sicherheitsrisiko für erträglich. Das einzige was ich mir wünsche: Mehr Leute in Nürnberg und Fürth für qualitative Daten!
In diesem Sinne: Waze On!

Marius Hein
Marius Hein
Head of Development

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert, dann als Application Developer gearbeitet und ist nun Leiter der Softwareentwicklung. Ausserdem ist er Mitglied im Icinga Team und verantwortet dort das Icinga Web.