Die Zeit ist reif!


Viele unserer Trainer werden sich bald in den verdienten Sommerurlaub verabschieden und auch unser Schulungsprogramm pausiert in den heißen Sommermonaten. Im September starten wir dann wieder voll durch mit neuen Trainings, noch mehr Wissen und viel Raum und Zeit zum Lernen und Ausprobieren. Mit der Erfahrung aus über 300 Open Source Projekten, wissen wir genau, worauf es ankommt und freuen uns darauf, dieses Wissen mit Ihnen zu teilen. Sichern Sie sich jetzt Ihren Platz und planen Sie sich im Herbst ein wenig Abwechslung und neuen Input ein! Die Zeit ist reif!
Alle Schulungen im Überblick finden Sie hier.

Das bietet unser Schulungsprogramm im Herbst:

 

  1. Elastic Stack | 2 Tage | 12.09. – 13.09.2018

Sie erhalten eine detaillierte Einführung in die, auf Open Source basierenden Logmanagement Tools Elasticsearch, Logstash und Kibana. Darüber hinaus werden Techniken der Logübertragung, -auswertung und -analyse vermittelt.

  1. Icinga 2 Advanced | 3 Tage | 18.09. – 20.09.2018

In diesem Lehrgang für Fortgeschrittene erfahren Sie alles, was für den Betrieb von größeren und komplexeren Umgebungen notwendig ist: über das Icinga 2 Setup, distributed Monitoring und Hochverfügbarkeit, Performancegraphing und vieles mehr.

  1. GitLab | 2 Tage | 18.09. – 19.09.2018

GitLab ist mittlerweile das Tool zur verteilten Versionsverwaltung und erfreut sich immer größerer Beliebtheit, nicht nur unter Entwicklern, auch in der DevOps-Bewegung. In unserer Schulung erfahren Sie, wie Git und GitLab die tägliche Arbeit erleichtern.

  1. Advanced Puppet | 3 Tage | 25.09. – 27.09.2018

Lernen Sie den Umgang mit systemübergreifender Konfiguration mit Puppet, Module um Komponenten zu erweitern und die Qualität ihrer Module mit Tests zu verbessern. Außerdem im Programm: Module-Design und Troubleshooting.

  1. Graphite + Grafana | 2 Tage | 25.09. – 26.09.2018

Ihre Schulung für erfolgreiches Performance-Monitoring, vom Sammeln und Auswerten von Werten mit Graphite, bis zum Darstellen und Analysieren mit Grafana und weiteren Tools für den Aufbau eines individuellen, integrierbaren Stacks.

  1. Icinga 2 Fundamentals | 4 Tage | 09.10. – 12.10.2018

In diesem Training erhalten Sie Basiswissen zur Installation von Icinga 2 und Icinga Web 2 garniert mit Praxisbeispielen und Best Practices für Icinga 2 Konfiguration, Integration von Remote Clients und PNP4Nagios und weiteren nützlichen Inhalten.

  1. Fundamentals for Puppet | 3 Tage | 16.10 – 18.10.2018

Lernen Sie die grundsätzliche Funktionsweise hinter der Abstraktionsschicht von Puppet kennen, den Aufbau von Puppet-Modulen und deren Entwicklung vom lokalen Prototyp zum Deployment auf dem Puppet-Master.

  1. Ansible | 2 Tage | 23.10. – 24.10.2018

Nebst Installation und Umgang mit Ansible geht das Training auf die Konfiguration von Linux/Unix Systemen, den Umgang mit Playbooks und Rollen ein und gibt Hinweise zur Erstellung eigener Module.
9. Ansible AWX (Tower) | 1 Tag | 25.10.2018
Ansible AWX und Ansible Tower begleiten Unternehmen bei der Automatisierung. In diesem Kurs geben wir Ihnen einen umfassenden Überblick über deren Einsatzmöglichkeiten.
10. Jenkins | 1 Tag | 25.10.2018
Erfahren Sie alles über Jenkins, ein erweiterbares, webbasiertes Continuous Integration System zur Automatisierung von Integration, Tests und Paketbau.
 
Die NETWAYS Schulungen bestehen aus einer Kombination von Vortrag und praktischen Übungen. Unsere kompetenten Trainer arbeiten – wie Sie – als Praktiker tagtäglich mit den entsprechenden Open Source Anwendungen. Im Preis enthalten sind umfangreiche Schulungsunterlagen und volle Verpflegung. Notebooks und Wifi stellen wir.
Alle hier gelisteten Schulungen finden im NETWAYS Headquarter in Nürnberg statt, Deutschherrnstraße 15-19. Gerne sind wir Ihnen bei der Buchung eines Hotels behilflich. Melden Sie sich einfach bei uns.
Weitere Infos und Anmeldung unter: netways.de/schulungen

Julia Hornung
Julia Hornung
Marketing Manager

Julia ist seit Juni 2018 Mitglied der NETWAYS Family. Vor ihrer Zeit in unserem Marketing Team hat sie als Journalistin und in der freien Theaterszene gearbeitet. Ihre Leidenschaft gilt gutem Storytelling, klarer Sprache und ausgefeilten Texten. Privat widmet sie sich dem Klettern und ihrer Ausbildung zur Yogalehrerin.

Zeiterfassung mit Rachota


Neulich musste ich mich nach Jahren wieder einmal nach einer Lösung für die tägliche Zeiterfassung umsehen, da ich mittlerweile während des Tages öfter wie zuvor Tasks für unterschiedliche Kunden, bzw. auch Änderungen an unserer internen Infrastruktur zu erledigen habe.
Bei der Recherche ist mir sofort das TimeTracking Tool Rachota aufgefallen, das zunächst als Java Anwendung einfach plattformübergreifend ist und somit auch ohne Umgewöhnung auf diversen Betriebssystemen in meinen VMs oder auch auf dem Netbook läuft.
Nebenbei bemerkt sogar auf einem USB Stick, sehr gut falls jemand oft an unterschiedlichen Arbeitsplätzen ohne Notebook etc. arbeitet.
Das Interface sieht auf den ersten Blick sehr schlicht aus, bietet aber nach etwas Einarbeitung und Anpassung der Default Konfiguration alle Funktionen, die ich brauche. Wichtig war mir in dem Fall, dass man eine beliebige Anzahl einzelner Projekte anlegen und priorisieren kann, und auch wiederkehrende Aufgaben definiert werden können.
Weniger ging es darum die tägliche Gesamt-Arbeitszeit auf die Sekunde genau erfassen zu können, was aber durchaus mit entsprechendem Aufwand auch ein Ziel der Anwendung sein kann wenn man möchte.
Dem interessierten Anwender liefert es z.B. auch eine „Analytics“ Funktion, mit der man seinen Arbeitsablauf optimieren kann.
Die erstellten Reports lassen sich sowohl im HTML und Textformat, als auch zur Weiterverarbeitung als CSV ausgeben.
In der kurzen Zeit konnte ich sicherlich nicht alles was die Software bietet perfekt ausnutzen, aber mir hat die tägliche Arbeit damit jedenfalls bisher gut gefallen, einen Blick ist das Programm auf jeden Fall wert.

Stefan Gundel
Stefan Gundel
Senior Systems Engineer

Stefan ist ein Urgestein bei NETWAYS und arbeitet im Managed Services Team. Der internationale Durchbruch gelang Stefan als Fotomodel für den K+K Warenkorb. Nachdem er einige Jahre exklusiv für unseren Kunden StayFriends gearbeitet hat, darf er nun endlich auch wieder in anderen Projekten mitarbeiten.

Monthly Snap July – Sommermeeting & Grillfeier | Icinga Releases | Neuerungen, Updates, #lifeatnetways


Während der Monat Juli zu Ende geht, klettern die Temperaturen auf ihren diesjährigen Höchststand: Dienstag, 31. Juli | 36 Grad! Jeder geht mit der Hitze ja anders um. In einem solchen Monat lernt man seine Kollegen nochmal ganz anders kennen – und schätzen! Mit Nicole und Markus etwa werden Stieleis-Kindheitsträume wahr 😉
Sommer, Sonne, Sommermeeting

Highlight des Monats ist der 20. Juli: Sommermeeting und Grillfeier! Vormittags versammelt sich die gesamte NETWAYS Familie im Kesselhaus, wo die Teamleads das Abteilungsgeschehen präsentieren und CEO Bernd eine motivierende Rede hält, wie sie nur Bernd halten kann und einen Ausblick auf große Veränderungen gibt: Wir werden umziehen – physisch in neue Räumlichkeiten, virtuell auf eine neue Webseite. Das muss natürlich gefeiert werden: Am späten Nachmittag ziehen immer mehr Kollegen auf die Dachterrasse zu BBQ, DJ Alexander und Gin&Tonic-Bar.
Gefeiert hat die NETWAYS Familie im Juli so einiges  – auch den #SysadminDay, zu dem es ein großes Frühstücksbuffet gab.
Neuerungen und Updates
Aber wir waren auch abseits der Tanzfläche fleißig! Eine ganze Reihe NWS | Neuerungen und Updates stellt Marius in seinem Blogpost vor. Alexander hat SSL geknackt! Naja, fast. Markus sieht sich ReaR mal anders an und Georg erklärt, wie man einen verschlüsselten File-Container mittels cryptsetup und LUKS erstellen kann. Consultant Markus verrät, wie wir dienstlich Reisen. Marius hat einen anderen Ansatz gefunden: Let’s Encrypt HTTP Proxy: Another approach und Webinar-Meister Christian präsentiert die NETWAYS Webinare: Icinga 2 Serie.
Überhaupt Icinga! Hier hagelts Releases
Mitte Juli präsentieren die Icinga Entwickler ihr Icinga 2.9.0 Release! 2.9.0 bringt Neuerungen wie Elasticsearch 6-Unterstützung, eine einfachere Client-Installation und Bugfixes in punkto Windows-Reload, Speicherprobleme, geplante Downtimes und Benachrichtigungsreihenfolge. Kurz darauf folgt das Release von Icinga Web 2 2.6.0 mit zusätzlichen Dashboard-Widgets, einer neuen Hostgruppen-Übersicht und erweitertem Audit-Logging. Dank aufmerksamer Community Mitglieder, die einen weiteren Bug melden, kann die Icinga Crew letzte Woche gleich noch eins drauf setzen: Icinga 2.9.1.
Auch unsere Buchautoren Lennart und Thomas setzen eins drauf: Icinga 2 Buch, 2nd Edition. Dank Gunnar gibt es in unserem Blog einen Überblick über den Icinga Config Compiler. (Und dank @noledge eine lustige Icinga-Integration. ;))
Let it grow!
Am 1. August wird der erste von 7 (!) neuen Azubis in diesem Jahr kommen. Ja, auch deswegen werden wir umziehen: Wir wachsen! Unsere derzeitigen Auszubildenden kennt ihr ja schon. Afeef hat sich im Juli aber noch einmal genauer vorgestellt (Serie: NETWAYS stellt sich vor). Und worüber zerbrechen sich die anderen so den Kopf? Philipp beschäftigt sich mit der i-doit API, Killian mit AI – Artificial Intelligence (Was ist das? Ist das Gefährlich?) und Nicole gibt einen Einblick in ihre Projektwoche in der Berufsschule.
Und sonst so?
Nach dem einen Event, ist vor dem anderen: Von der OSDC gibt es Fotos, Slides und Videos im Archiv, für die OSBConf steht das Programm. Check it out! Niemals zuvor hatten wir so vielen Anfragen von Menschen, die unser Kesselhaus mieten wollen. Nie zuvor so früh im Jahr so viele Anmeldungen für die OSMC und so viele neue Speaker. Freut euch auf den Herbst! Dann gibt’s auch wieder viele interessante und lehrreiche Schulungen. Guckt doch mal in unseren Kalender: Die Zeit ist reif!
In diesem Sinne: Schönen Sommer!

Julia Hornung
Julia Hornung
Marketing Manager

Julia ist seit Juni 2018 Mitglied der NETWAYS Family. Vor ihrer Zeit in unserem Marketing Team hat sie als Journalistin und in der freien Theaterszene gearbeitet. Ihre Leidenschaft gilt gutem Storytelling, klarer Sprache und ausgefeilten Texten. Privat widmet sie sich dem Klettern und ihrer Ausbildung zur Yogalehrerin.

NETWAYS Cloud: Schnell & einfach Netzwerke erstellen mit SDN

SDN heißt Software Defined Networking – so weit, so klar. Die meisten setzen irgendeine Art SDN bereits bei sich im Unternehmen ein. Und in der Cloud? Normalerweise bieten dies nur die großen Anbieter und es ist relativ aufwendig zu betreiben. Die NETWAYS Cloud bietet mit dem OpenStack SDN die Möglichkeit, eigene Netzwerke frei zu gestalten – und dies komplett selbständig über unser OpenStack-Backend.

Das Design des Netzwerks läuft wie gewohnt – Webserver sind von außen erreichbar (ggf. noch mit Loadbalancer) und greifen nur auf intern erreichbare Datenbankserver zu. Die Imageserver stellen die entsprechenden Bilder zur Verfügung und das Wiki mit den Arbeitsanweisungen ist nur per VPN erreichbar. Dies ist alles mit “virtuellen Netzwerkkabeln” über das OpenStack SDN mit wenigen Klicks erstellbar. Und das alles ohne neue Netzwerkhardware, neue Kabel, Netzwerkadmins und viel Zeit. Alles wird per Self-Service aufgebaut und zur Verfügung gestellt.

Der Mehrwert?
Die Hauptvorteile liegen in der schnellen Bereitstellung von Netzwerkressourcen und im freien Design der Netzwerkarchitektur.

Zielgruppe
Kunden mit größeren Hosting-Projekten und der Anforderung nach logischer Netzwerktrennung – perfekt also für Webagenturen, Hostingdienstleister ohne eigenes Rechenzentrum und Anbieter von SaaS-Lösungen, die eine Trennung von Kundennetzwerken benötigen.

Bekomme ich das alleine hin?
Klar! Und wenn wir eine Einführung machen dürfen oder gleich die komplette Erstellung des eigenen Netzwerks, dann stehen unsere Kollegen als persönlicher MyEngineer zur Verfügung.

Martin Krodel
Martin Krodel
Head of Sales

Der studierte Volljurist leitet bei NETWAYS die Sales Abteilung und berät unsere Kunden bei ihren Monitoring- und Hosting-Projekten. Privat reist er gerne durch die Weltgeschichte und widmet sich seinem ständig wachsenden Fuhrpark an Apple Hardware.

Über Physik, Erdnuss-Snacks und Schlangenöl aka Datenbanken

Achtung ein Hinweis in eigener Sache, dieser Artike kann Spuren von Polemik und rant enthalten!

Neal Stephenson hat in seinem wunderbaren Roman Cryptonomicon eine kleine Randgeschichte über eine Bandsäge eingebaut. Der für mich schönste Satz darin ist:

Anecdotes about accidents involving the bandsaw were told in hushed voices and not usually commingled with other industrial-accident anecdotes.

An diesen Satz muss ich immer denken, wenn es auf PostgreSQL-Konferenzen in den abendlichen War-Story-Runden zu Geschichten über MySQL oder MariaDB kommt, zugegeben hauptsächlichen deren Migration zu PostgreSQL.
Bei Entity–Attribute–Value (EAV) Schemas, nicht getesteten Backups, Prozeduren, die nicht maskierte Benutzereingaben als Tabellennamen für dynamisches SQL hernehmen etc. kann man sagen sie hätten es wissen können bzw. müssen. (Halt die üblichen Katastrophen, die man sich in gemütlicher Runde so erzählt, Datenbanker sind halt schon ein komischer Haufen.)

Das ist bei MySQL wie auch diversen anderen Datenbanken irgendwie anders, und ich frage mich immer wieder, warum ist das so?

Es hat evtl. etwas mit einer grundsätzlichen Bereitschaft zu tun, über physikalische Gegebenheiten nachzudenken.

Wenn jemand eine PostgreSQL-Mailingliste anschreibt und erklärt, dass Oracle eine Anfrage in 0,009 ms beantwortet, für die PostgreSQL über zwei Minuten benötigt, dann ist diese Frage erst einmal legitim.

Wenn dann aber nach und nach herauskommt, dass es um eine Tabelle mit 9.649.110 Zeilen und rund 3,5GB geht, die mittels SELECT * FROM table1; komplett gelesen wird, müsste einem doch sofort klar sein, das Ersteres nicht sein kann? Das brandneue DDR5-RAM schafft gerade mal 5,2 GT/s (Megatransfer), und da ist noch keine Netzwerkverbindung im Spiel. In 0,000009 Sekunden schafft selbst Licht “nur” rund 2,7km.

Wie können solche offensichtlichen Mess- oder Denkfehler nicht sofort auffallen? Die 2,7 km muss man ja nicht parat haben, aber dass 0,000009 Sekunden ein sehr kurzer Zeitraum sind, um 3,5GB Daten zu übertragen, liegt doch eigentlich für ITler nah?

Was mich zum Thema MM (Multi-Master-Replication) oder politisch korrekt Multi-Primary, Write-Anywhere etc. bringt…

PostgreSQL-Umsteiger von MySQL, MariaD, CockroachDB, Oracle,… fragen immer wieder (z.B. im Telegram-/Slack-Channel, den Mailinglisten, Seminaren), wie man denn einen MM-Cluster aufbaut.

Der Dialog läuft üblicherweise so ab:
Q: “Ich komme von und habe dort einen Multimaster-Cluster. Wie baue ich dasselbe mit PostgreSQL auf?”
A: “Gar nicht. Wahrscheinlich willst du das aber auch gar nicht.”
Q: “Doch, doch. Ich brauche die Hochverfügbarkeit und die Performance (ein Knoten allein schafft meine Schreiblast nicht)!”
A: “MM kostet Performance und verbessert deine Verfügbarkeit nicht wirklich. Benutze einfach eine klassische Replikation, ggfs. mit Lese-Lastverteilung.”

Verdeutlichen wir uns kurz, was es für eine Datenbank bedeutet, auf mehr als einem Clusterknoten schreibenden Zugriff zu erlauben:

  • Sequenzen (für Primärschlüssel bzw. “auto-increment/identity” Spalten) müssen synchronisiert werden, damit keine IDs doppelt vergeben werden
  • es muss sichergestellt werden, dass bei z.B. DELETE-Statements die referentielle Integrität erhalten bleibt; es muss also die Möglichkeit geben,
    clusterweit Datensätze oder sogar ganze Tabellen zu LOCKen
  • wenn auf mehreren Knoten derselbe Datensatz verändert wird, muss eine Konfliktbehandlung erfolgen. Wenn die nicht dem Zufall, sprich dem Replikations-Lag überlassen werden soll, werden clusterweite Transaktions-IDs benötigt
  • und zum Thema Schreiblast: Ziel ist es ja weiterhin, einen einheitlichen und konsistenten Datenbestand zu haben, die Schreiblast pro Knoten bleibt also unverändert!

Je mehr Knoten beteiligt sind, desto mehr Koordination ist erforderlich. Und jede dieser Aktivitäten benötigt Zeit, mindestens 1-2 Netzwerk-Roundtrips.

Je weiter meine Knoten voneinander entfernt sind, desto mehr Zeit und damit Performance geht allein schon durch pure Physik verloren!

Für PostgreSQL gibt bzw. gab es einige FOSS-Varianten, die MM beherrschen (Postgres-XC, Postgres-XL, BDR). Und 2ndQuadrant, deren derzeitiger Maintainer, sagt sinngemäß:

Die Einschränkungen und zusätzlichen Maßnahmen, die MM mit sich bringt bzw. erfordert, sind so eklatant, dass MM wahrscheinlich nie Einzug in den PostgreSQL-Core kommen wird. Und so ein Cluster ist explizit nicht für Hochverfügbarkeit gedacht, sondern um z.B. logisch weitgehend voneinander getrennte Datenbestände, z.B. Verkäufe und Lagerbestände in verschiedenen Ländern, in den jeweils anderen Standorten verfügbar zu machen.

Der Aufwand ist also durchaus erheblich, und mit ein klein wenig Nachdenken sollten sich die Zusammenhänge und Gründe auch jedem Interessenten erschließen.

Oder man macht sich einfach keine Gedanken und setzt bidirektionale Replikation auf, “was soll schon passieren” und “war ganz einfach, mit diesem Tutorial aus dem Netz”…

Multimaster-Clustering ist ein wenig wie im Dunkeln, bei Regen, mit 250 km/h über die Autobahn zu fahren. Als Beifahrer…

  1. Man wünscht sich auf jeden Fall, dass die Person am Steuer nicht nachtblind (sprich: “has RTFM”) ist
  2. das Auto und seine Grenzen sehr genau kennt (pun intended!)
  3. ein oder besser mehrere Fahrsicherheitstrainings hinter sich hat.

Und trotzdem ist man letztlich Faktoren überlassen, auf die man keinen Einfluss hat. Meist geht es ja auch gut…

Hier schließt sich der Kreis zur Bandsäge von oben, denn gewisse DBMS (Datenbank Management Systeme) stehen ja schon ohne bidirektionale Replikation nicht unbedingt im Ruf, Datenintegrität besonders hoch zu bewerten (https://bugs.mysql.com/bug.php?id=11472).

Zur Performance:

Ich erinnere mich, dass Oracle seinerzeit für ihr RAC angegeben hat, dass jeder neue Knoten 90% der Leistung des vorherigen Knotens bringt*. Was ein sensationell guter Wert wäre, aber eben alles andere als lineare Skalierung (linear steigt lediglich der Preis…):


WITH perf AS (
SELECT nodes, 0.9^(nodes-1) AS nextnodes_performance
FROM generate_series(1,8) AS nodes
)
SELECT *
,avg(nextnodes_performance) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS average_performance
,nodes * avg(nextnodes_performance) OVER (ROWS BETWEEN UNBOUNDED PRECEDING AND CURRENT ROW)
AS overall_performance
FROM perf;
┌───────┬───────────────────────┬────────────────────────┬────────────────────────┐
│ nodes │ nextnodes_performance │ average_performance │ overall_performance │
├───────┼───────────────────────┼────────────────────────┼────────────────────────┤
│ 1 │ 1.0000000000000000 │ 1.00000000000000000000 │ 1.00000000000000000000 │
│ 2 │ 0.9000000000000000 │ 0.95000000000000000000 │ 1.90000000000000000000 │
│ 3 │ 0.8100000000000000 │ 0.90333333333333333333 │ 2.70999999999999999999 │
│ 4 │ 0.7290000000000000 │ 0.85975000000000000000 │ 3.43900000000000000000 │
│ 5 │ 0.6561000000000000 │ 0.81902000000000000000 │ 4.09510000000000000000 │
│ 6 │ 0.5904900000000000 │ 0.78093166666666666667 │ 4.68559000000000000002 │
│ 7 │ 0.5314410000000000 │ 0.74529014285714285714 │ 5.21703099999999999998 │
│ 8 │ 0.4782969000000000 │ 0.71191598750000000000 │ 5.69532790000000000000 │
└───────┴───────────────────────┴────────────────────────┴────────────────────────┘

* vielleich waren es auch 80% oder 95% oder die Aussage war einfach kompletter Humbug?

Zur Verfügbarkeit:

Ein anderes gerne vorgebrachtes Argument, z.B. auf galeracluster.com ist “Transparent to Applications: Required no or minimal changes to the application”.

Ich habe mich immer gefragt, wie Oracle beim RAC das TCP-Protokoll aushebelt, eine Netzwerkverbindung bricht nun einmal ab, wenn der Host offline geht. Bis mir mal jemand gesteckt hat, dass man auf ein RAC mit einer anderen Client-Bibliothek zugreift. Mit anderen Worten: der Verbindungsabbruch wird nicht an das Programm durchgereicht, sondern das Statement (bzw. die Transaktion?) wird auf einer neuen Verbindung wiederholt. Ich unterstelle einfach mal, dass Galera etc. ähnlich arbeiten.

Können das die modernen Connection-Pools, ORMs etc. nicht auch alle schon mehr oder weniger selbsttätig oder mit “minimal changes”? Eine Applikation sollte es auf jeden Fall können. Aber gut, es sollte auch keine Applikationen mehr geben, die mehr als ein Statement außerhalb einer Transaktion durchführen…!

Auf jeden Fall rücken solche Aussagen die entsprechenden Produkte m. E. in die Nähe eines Worts, das im Titel dieses Beitrags steht…

Der klassische Ansatz:

Der Vollständigkeit halber sei noch kurz umrissen, wie eine hochverfügbare Cluster-Lösung mit PostgreSQL oder auch anderen DBMS aussehen kann.

  • ein Knoten (“Primary” oder non-PC “master”, P) erlaubt lesende und schreibende Zugriffe (R/W)
  • n andere Knoten (“Secondaries” oder “slaves”, S1,…,Sn) erhalten die Änderungen von P und erlauben lesende Zugriffe (RO)
  • zusätzlich landen alle Änderungen in einem Archiv, aus dem jeder beliebige Zeitpunkt wieder hergestellt werden kann (PITR)
  • Sn können synchron oder asynchron replizieren (bei synchroner Replikation sollte n > 1 sein!)

Der Zugriff auf den Knoten P kann auf verschiedene Arten erfolgen:

  • Clients erhalten die IPs aller Knoten und können selbst festlegen, ob sie Schreib-Lesezugriff benötigen
  • P hat eine zusätzliche virtuelle IP-Adresse, unter der er angesprochen wird (gerne zusammen mit P in einer Resource-Group der eingesetzten HA-Lösung)
  • ein vorgeschaltetes Tool, z.B. HAProxy weiß, welcher Knoten gerade P ist

Zusätzlich können Clients entscheiden, ob ihre jeweilige Aktivität nur lesend oder schreibend ist und sich entsprechend mit P oder einem Sn unterhalten, um die Gesamt-Performance zu verbessern.

Manche Pooler, z.B. PGPool-II können diese Unterscheidung sogar selber mehr oder weniger gut treffen. Vorsicht aber mit z.B. schreibenden Triggern!

Dass eine Client-Software eine halbwegs funktionale Fehlerbehandlung haben sollte, vielleicht sogar mit ein wenig Wartezeit vor’m retry, versteht sich von selbst.

Multi-Master-Datenbankcluster bringen einige Aspekte mit, die zu wenig oder zumindest selten beachtet werden. Manche sind ausgesprochen gefährlich!

Eine klassische Replikationslösung bietet annähernd dieselbe Verfügbarkeit, i.A. deutlich bessere Performance und bereitet auf Dauer wesentlich weniger Kopfschmerzen.

Wie man ein solches Cluster aufbaut, lernt man in unserem Kurs PostgreSQL Fundamentals.

Gunnar “Nick” Bluth hat seine Liebe zu relationalen Datenbanken Ende des letzten Jahrtausends entdeckt. Über MS Access und MySQL 3.x landete er sehr schnell bei PostgreSQL und hat nie zurückgeschaut, zumindest nie ohne Schmerzen. Er verdient seine Brötchen seit beinahe 20 Jahren mit FOSS (Administration, Schulungen, Linux, PostgreSQL). Gelegentlich taucht er auch tiefer in die Programmierung ein, so als SQL-Programmierer bei der Commerzbank oder in App-Nebenprojekten.

Azubiprojektwoche 2019

Wie jedes Jahr findet bei NETWAYS eine Azubiprojektwoche statt. In dieser sollen alle Azubis abteilungsübergreifend ein Projekt umsetzen. Dieses Jahr waren wir zu neunt und wenn man der Resonanz der Kollegen glauben schenken darf, dann war das Projekt ein voller Erfolg.

Alles begann am Morgen mit einem Brainwriting bei dem auch ordentlich Ideen gesammelt worden sind. Wer weiß, vielleicht gibt es die ein oder andere in den nächsten Jahren ja noch zu sehen.


Die Entscheidung fiel dann auf ein Projekt das sich um einen 3D-Drucker herum entwickeln soll. Ziel der Projektwoche ist immerhin, sowohl Spaß zu haben, als auch mal etwas Anderes zu machen als man sonst machen würde. Dazu kommt noch, dass man bestenfalls etwas kreiert was für NETWAYS einen Nutzen hat und nicht nur das uns gegebene Budget restlos aufbraucht. Bestimmt wird eines Tages mit dem 3D-Drucker ein Ersatzteil für unsere Kaffee-Maschine gedruckt und bis dahin könnten damit Goodies für unsere Schulungen oder ähnliches gedruckt werden. Vorwand – Check

Damit war auch schonmal ein Aufgabenbereich geschaffen, ein Team das sich mit dem Drucker auseinandersetzt, der dazugehörigen Software und bestenfalls auch selbst einige Dinge modelliert. (Wir haben dazu Blender genutzt)

Natürlich wäre Hallo wir haben einen 3D-Drucker gekauft und uns zu neunt damit beschäftigt ein etwas einfacher Weg sich aus der Affäre zu ziehen, deswegen gab es gleichzeitig noch einen Teil mit persönlicheren Beweggründen für alle Nerds und die es werden wollen.

Ein Gaming-Table, also ein Tisch der für mitunter für Tabletop-Games genutzt werden kann, aber natürlich war auch hier der Zukunftsgedanke gegeben.
Das ein odere andere Meeting-Thema mag sich anbieten an solch einen Tisch zu führen. Außerdem ist es sehr angenehm, dass sich nicht ein jeder zu einer Leinwand oder einem Fernseher wenden muss und nicht in den leeren Raum gesprochen wird.

Dadurch wurde natürlich ein zweites Squad geboren, weil der Fernseher lässt sich nicht von alleine in die MDF-Platte, die Tischbeine schrauben sich nicht von Selbst an, die Stichsäge schneidet nicht von alleine und der Überzug kommt auch nicht von irgendwo.

Wir haben uns in jeden Fall nicht zu wenig vorgenommen für fünf Tage und das ganze hat auch nur so gut funktioniert, weil jeder an einem Strang gezogen hat und man sich gegenseitig geholfen hat. Unsere Arbeitsstruktur hat sichergestellt das jeder über den Stand des jeweils anderen Bescheid wusste und entsprechend helfen konnte wenn eine Gruppen hinter den Zeitplan fällt. Am letzten Tag, dann noch ein paar Mal gemeinsam Proben, damit die Triple-Moderation nicht in die Hose geht, kurz bevor die Präsentation ansteht und natürlich ging alles gut.

Ein paar von uns werden bis zum nächsten Azubiprojekt keine Azubis mehr sein, sondern ausgelernt, während Andere versuchen werden das diesjährige Projekt zu toppen. Wir freuen uns drauf.

Alexander Stoll
Alexander Stoll
Junior Consultant

Alexander ist ein Organisationstalent und außerdem seit Kurzem Azubi im Professional Services. Wenn er nicht bei NETWAYS ist, sieht sein Tagesablauf so aus: Montag, Dienstag, Mittwoch Sport - Donnerstag Pen and Paper und ein Wochenende ohne Pläne. Den Sportteil lässt er gern auch mal ausfallen.

Selbstsignierte Zertifikate oder semantische Korinthen in der IT


Heute ergreife ich mal die Chance etwas Definitionsreiterei zu betreiben, da ich im Umfeld feststellte, dass nicht klar ist, was ein selbstsigniertes Zertifikat ist und was sprachlich gesehen überhaupt ein Zertifikat ist.

Ein Zertifikat ist der beglaubigte öffentliche Schlüssel passend zu einem privaten. Man generiert also zuerst ein Schlüsselpaar, zu diesem Zeitpunkt darf man nun eigentlich für den öffentlichen Schlüssel nicht von Zertifikat sprechen, da es nicht signiert ist. Zunächst wird dann eine Zertifikatsanfrage (certificates request) erzeugt und an eine Zertifizierungsstelle (CA) gesendet. Zurück bekommt man ein Zertifikat, den eigenen nun beglaubigten öffentlichen Schlüssel.

An einem selbstsignierten Zertifikat (self sign certificate) ist keine CA beteiligt, auch keine eigene, nicht öffentliche. Es handelt sich auch hierbei um den öffentlichen, der jedoch durch den eigenen zugehörigen privaten signiert wird. Logischerweise sollen diese Zertifikate nur für den internen Testgebrauch verwendet werden, da ja keine dritte Instanz die Gültigkeit garantiert.

Ein solches selbstsigniertes Zertifikat ist schnell gebaut:

$ openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem

Demnach muss nun die Validierung gegen sich selbst wie folgt aussehen:

$ openssl verify -verbose -x509_strict -CAfile certificate.pem certificate.pem
certificate.pem: OK

Lennart Betz
Lennart Betz
Senior Consultant

Der diplomierte Mathematiker arbeitet bei NETWAYS im Bereich Consulting und bereichert seine Kunden mit seinem Wissen zu Icinga, Nagios und anderen Open Source Administrationstools. Im Büro erleuchtet Lennart seine Kollegen mit fundierten geschichtlichen Vorträgen die seinesgleichen suchen.

Von Ausbildung und Grok Debuggern

Vor mittlerweile einigen Wochen hatte ich eine “Elastic Stack”- Schulung bei Daniel. Bei der in wenigen Tagen alle Bestandteile des Stacks erst oberflächlich und dann in Tiefe bearbeitet worden sind.

Elastic Stack ist ein Set von Tools, die zwar von der gleichen Firma entwickelt werden und entsprechend gut aufeinander abgestimmt sind, jedoch auch einzeln ihre Anwendungsmöglichkeit finden können. Dieser besteht aus:

  • Kibana – ein Web-UI zur Analyse der Logs in dem u. a. Dashboards mit benutzerdefinierten Grafiken angelegt werden können.
  • Elasticsearch – eine Suchmaschine beziehungsweise ein Suchindex.
  • Logstash – ein Tool zum Verwalten von Events und Logs.
  • Beats – werden von Elastic als anwendungsfallspezifische Daten-Shipper beworben.

Übung macht den Meister

Damit die Themen aus der Schulungen gefestigt werden wird uns in der Regel direkt ein Projekt zu teil, welches sich mit den Schulungsthemen beschäftigt. Nach der “Fundamentals for Puppet”-Schulung vom Lennart wurde mir ein Icinga-Puppet-Projekt zugewiesen und zwar eine kleine Test-Umgebung für mich selbst mit Puppet aufzubauen. Genau das Gleiche war auch nach der “Elastic Stack”-Schulung der Fall, ein kleineres Projekt mit Icinga-Logs bei dem ich einfach ein bisschen mit Grok Filtern rumspielen sollte.

Spätestens da ist mir wieder bewusst geworden, dass die meisten unserer Consultants für sich irgendein Spezialgebiet gesetzt haben und das Dirk uns bewusst viel mit den Themen arbeiten lässt um festzustellen, was uns liegt und was uns Spaß macht. Bis jetzt habe ich weder etwas gegen Puppet noch Elastic und bis im Juli die “Advanced Puppet”-Schulung ansteht, hab ich auch noch ein weiteres Puppet-Projekt vor mir, aber dazu vielleicht beim nächsten Mal mehr.

I grok in fullness

Wenn wir schon mal beim Elastic Stack sind dann können wir gleich zu Grok Filtern in logstash kommen. I grok in fullness bedeutet übersetzt so viel wie Ich verstehe komplett. Zwar kann man das nicht immer guten Gewissens behaupten, aber immerhin versteht man jedes Mal ein bisschen mehr. Dieses Zitat ist auf der Seite des altbekannten Grok Debuggers zu finden.

An dieser Stelle ist es vielleicht ganz interessant den nun schon zwei Jahre alten Blog-Post von Tobi aufzugreifen. Seit schon geraumer Zeit ist auch in Kibana direkt ein Grok Debugger zu finden. Den Debugger kann man unter dem Reiter Dev Tools finden. Hier ein kleines Beispiel:

Der Grok Debugger in Kibana sieht nicht nur besser aus und ist einfacher zu erreichen. Er hat mir auch in der ein oder anderen Situation geholfen, da er auch das ein oder andere Pattern kennt, dass der alteingesessen Grok Debugger nicht kennt. Viel Spaß beim Grok Filter bauen!

Alexander Stoll
Alexander Stoll
Junior Consultant

Alexander ist ein Organisationstalent und außerdem seit Kurzem Azubi im Professional Services. Wenn er nicht bei NETWAYS ist, sieht sein Tagesablauf so aus: Montag, Dienstag, Mittwoch Sport - Donnerstag Pen and Paper und ein Wochenende ohne Pläne. Den Sportteil lässt er gern auch mal ausfallen.

Terraform Changes

Hallo!

Was vielen von unseren Lesern entgeht, ist das wir auch in unserem Alltag zwischen der ganzen Softwareschreiber- und Kompilier- Tätigkeiten auch ganz viele virtuelle Maschinen und Container zum testen selbiger Software rauf und runter installieren müssen, und das Tag für Tag.

Deshalb versuchen wir uns das Leben mit dafür erstellter Software und deren arbeitserleichternden Funktionen leichter zu machen. Wie mein Kollege schon in seinem Blogpost im März mir vorgegriffen hat, benutzen wir bei der Netways Terraform. Achim wird in weiteren Artikeln darauf eingehen wie man Openstack per Terraform nach seiner Pfeife tanzen lassen kann und Ich möchte mich heute auf ein anderes Terraform Thema beziehen, nämlich dem nahen Release von Terraform 0.12.

Zu dem Zeitpunkt wo ich diese Zeilen niederschreibe, ist auf der aktuellen Website von Hashicorp noch die Aktuelle Version 0.11.13 zu finden.

Aber Terraform hat uns schon vielversprechendes gezeigt mit dem 0.12.0-beta1 pre-release.

Damit kann man schon die vielen Erleichterungen, welche der neue Terraform Release mit sich bringt erahnen und auch schon antesten. Ich versuche die Änderungen Anhand eines kleinen Beispiels zu erläutern.
Vielleicht kann ich den einen oder anderen IaaS Codeschreiber, welcher sich hierfür interessiert, etwas auf den Geschmack zu bringen schon etwas zu testen mit der neuen Version.

Hier der Unterschied zwischen einer (aktuell 0.11.13) alten Terraform Version und einer neuen Version in Terraform 0.12 durch eine Gegenüberstellung.

main.tf (Random Tiernamen Beispiel)

variable "count" { default = 1 } variable "default_prefix" { default = "Giraffe" } variable "zoo_enabled" { default = "0" } variable "prefix_liste" { default = [] } resource "random_pet" "my_pet" { count = "${var.count}" prefix = "${var.zoo_enabled == "0" ? var.default_prefix : element(concat(var.prefix_liste, list (""), count.index)}" }

main.tf HCL2 Version(Random Tiernamen Beispiel)

variable "pet_count" { default = 1 } variable "default_prefix" { default = "Giraffe" } variable "prefix_list" { default = [] } resource "random_pet" "my_pet" { count = var.pet_count prefix = var.zoo_enabled ? element(var.prefix_list, count.index) : var.default_prefix }

Die Unterschiede fallen zuerst etwas weniger ins Auge, sind aber dafür meines Erachtens tiefgreifender für Leute, die IaaS Code schreiben müssen und dienen der Lesbarkeit des Codes.

Vorteil Nummer 1:
Im alten Beispiel musste noch mit “${var.count}” von einem String zu einer Number evaluiert werden. Mit der neuen HCL2 Schreibweise entfällt das, und es kann mit var.pet_count direkt der korrekte String oder Number Wert adressiert werden.

Vorteil Nummer 2:
Auch die Evaluierung der Liste prefix = “${var.zoo_enabled == “0” ? var.default_prefix : element(concat(var.prefix_liste, list (“”), count.index)}”  wird mit der neuen Notation der HCL2 wesentlich eingängiger. prefix = var.zoo_enabled ? element(var.prefix_list, count.index) : var.default_prefix ist prägnanter. Es entfällt auch die element(concat(x), list(“”), x ) Hack-Situation, um aus einer leeren Liste auch eine Liste mit einem NULL Element zum machen.

Weitere Vorteile: es gibt viel mehr was geändert worden ist, if you want to know more, klick here.

Ich hoffe ich habe euch nicht zu sehr gelangweilt mit C.O.D.E. kurz vor dem Wochenende.

Gruß David

 

David Okon
David Okon
Support Engineer

Weltenbummler David hat aus Berlin fast den direkten Weg zu uns nach Nürnberg genommen. Bevor er hier anheuerte, gab es einen kleinen Schlenker nach Irland, England, Frankreich und in die Niederlande. Alles nur, damit er sein Know How als IHK Geprüfter DOSenöffner so sehr vertiefen konnte, dass er vom Apple Consultant den Sprung in unser Professional Services-Team wagen konnte. Er ist stolzer Papa eines Sohnemanns und bei uns mit der Mission unterwegs, unsere Kunden zu...

TinkerForge-Basteln Teil 1: Auspacken und Einrichten!

Um meine neuerworbenen Kenntnisse in C++ zu vertiefen, habe ich netterweise etwas äußerst Interessantes auf den Tisch gestellt bekommen. Einen kleinen Karton mit mehreren Elektronikbauteilen, noch in ihren Antistatikbeuteln. (Meine Vorfreude steigt ins Unermessliche.)

 

Worum geht’s?

TinkerForge ist ein mittelständisches Unternehmen aus Ostwestfalen-Lippe, welches Mikrocontrollerbausteine herstellt, die sogenannten Bricks. Die Idee zu diesen Bricks hatten die beiden Gründer Bastian Nordmeyer und Olaf Lüke, nachdem sie – auf der Suche nach Mikrokontrollermodulen für autonome Fußballroboter – keine entsprechenden offenen, mit verschiedenen Programmiersprachen ansteuerbaren Bauteile gefunden haben. Was 2011 noch mit einer kleinen Produktlinie begann, ist nun ein extensiver Katalog an Controllern (Bricks) und Modulen (Bricklets), die sich in zahlreichen Programmiersprachen ansteuern lassen, und sich durch ihre modulare Bauweise schier endlos verknüpfen lassen.
Neben der Option, sich seine Bricks selbst zusammenzustellen, vertreibt Tinkerforge verschiedene Kits – Komplettpakete für verschiedene Anwendungsmöglichkeiten.
Eines dieser Kits – die Tischwetterstation (für 114,99 €) habe ich zum Austoben bekommen, dazu gab es noch einen WIFI Master Extension Brick (für 29,99€).
In diesem Blogpost wird es um das “Unboxing”, den Zusammenbau, die erste Einrichtung und Codebeispiele von Tinkerforge selbst gehen.

 

Was haben wir denn da?

Hierbei handelt es sich um den Master Brick, Version 2.1. Man kann sich diesen Brick wie die zentrale Verteilerstelle vorstellen. Er hat eine USB-Schnittstelle und hat – neben den stapelbaren Anschlüssen für andere Bricks (Master Extensions, siehe Wifi Extension!) – hat er vier Anschlüsse für Bricklets (siehe Air Quality Bricklet!), und kümmert sich um die Kommunikation zwischen den einzelnen Modulen. Dort wird auch die Verbindung zu einer Recheneinheit hergestellt, die verschiedene Formen annehmen kann, worauf ich später noch kurz eingehen werde. Außerdem ist der Master Brick mit zwei kleinen Knöpfchen an der Seite des USB-Anschlusses ausgestattet, ein Reset-Knopf und ein Erase-Knopf.

Dies ist die WIFI Master Extension, Version 2.0. Dieser Brick kann auf den Master draufgesteckt werden – der Formfaktor ist mit 4×4 cm gleich, euch fallen auch garantiert die Anschlüsse an den Seiten des Bricks auf. Mit diesen Anschlüssen lassen sich mehrere, verschiedenste Kombinationen von Bricks aufeinander stapeln, die das ganze System um zahlreiche Funktionen erweitern können. In diesem Fall, bei der WIFI Master Extension 2.0 handelt es sich um ein Kommunikationsmodul, mit dessen Hilfe sich der Master Brick drahtlos steuern ließe. Bisher hat dieser Brick aber noch nicht die ausreichende Liebe von mir erfahren – da die Wetterstation (noch?) nicht ohne Rechenpower von außen funktioniert, und per USB über den Master Brick mit Strom versorgt werden muss – dementsprechend die Kommunikation bisher größtenteils auch über dieses USB-Kabel lief.

Na, fällt euch schon etwas auf? Dieser Brick ist kein Brick, sondern ein Bricklet, der Formfaktor ist auch deutlich kleiner, mit 2,5×2 cm – es fehlen auch die gerade angesprochenen Anschlüsse zum Stapeln. Dieses kleine Bauteil ist der Air Quality Bricklet, ein interessantes Bauteil, welches mehrere Sensoren an Bord hat. Das Herzstück ist der Indoor Air Quality (kurz IAQ)-Sensor, welcher “flüchtige organische Verbindungen” (Volatile Organic Components, kurz VOC) misst. Diese Messungen werden mit den Messungen der ebenso vorhanden Luftdruck-, Luftfeuchte- und Temperatursensoren kombiniert, um den IAQ-Indexwert zu bestimmen. Laut TinkerForge braucht es rund 28 Tage Durchlaufzeit für die vollständige Kalibrierung dieses Moduls, ansonsten gilt der IAQ-Indexwert als unzuverlässig. Soviel Zeit habe ich dem Bricklet noch nicht gegeben, aber das kommt auch noch. Angeschlossen wird dieses Sensorpaket – per in dem Tischwetterstationskit enthaltenen 10-Pol- auf 7-Pol-Kabel – an den Master Brick. Insgesamt ist dieses kleine, aber feine Bauteil das, was diese Tischwetterstation zu einer Wetterstation macht.

Ein LCD-Bildschirm! Auf irgendwas muss ich ja schauen können, wenn ich es schon explizit vermeide, aus dem Fenster zu schauen, um zu sehen, wie das Wetter so ist.
Spaß beiseite, dieses Bauteil ist für mich wohl am Interessantesten aus dem ganzen Kit, denn die Möglichkeiten mit einem 2,8″ großem Display mit 128×64 Pixel wären schon unbegrenzt genug – dann hat das wunderbare Ding auch noch einen resistiven Touchscreen! Ich bin sehr gespannt drauf, was für kreative Ideen Ihr (und ich) mit sowas haben könntet (und wie weit die sich von der Grundidee einer Wetterstation entfernen). Wetterstationsschach, anyone?! Das Display wird genauso wie der Air Quality Bricklet über ein 10-Pol- auf 7-Pol-Kabel mit dem Master Brick verbunden.

Wo wir bei Kabeln sind – in dem Paket waren die zwei benötigten 10-Pol- auf 7-Pol-Kabel dabei, und das USB-Kabel, welches zur Stromversorgung und Kommunikation der Recheneinheit mit der Wetterstation dient. Außerdem war auch noch eine Schutzhülle aus gelasertem Plastik, und jede Menge Schrauben dabei. Alles, was das Bastlerherz begehert. Dann öffnen wir all die schönen Dinge mal!

 

Hardware braucht Software

Nach dem Auspacken der Bauteile (mit gebührendem Respekt) habe ich – vor dem großen Zusammenschrauben – die Bricks testen und einrichten wollen. Dazu bietet TinkerForge zwei Programme an, den Brick Deamon und den Brick Viewer.
Heruntergeladen, Master Brick per USB angeschlossen… es wird nichts erkannt. Hm.
Der Brick Viewer zeigt kein neues Modul an. Nach einigem Grübeln kam’ ich auf die Idee, den Master Brick mit einem RED Brick, den wir (inklusive einiger anderer Module) in der Firma haben, zu verbinden und den (eingerichteten) RED Brick mit meinem Rechner zu verbinden. Damit konnte ich auch den Master Brick im Brick Viewer finden. Den RED Brick abmontiert und den Master Brick wieder mit USB mit dem Rechner verbunden, siehe da, wir haben eine Verbindung. Die anderen Module u. Bricklets ließen sich ganz einfach durch Verbinden mit dem Master Brick ansteuern und die Updates funktionierten auch sehr einfach; allerhöchstens der Prozess den Master Brick auf den neuesten Stand zu bringen ist ein wenig komplizierter als nur auf den Updateknopf im Brick Viewer zu drücken; man muss zuerst den Erase-Knopf auf der Rückseite des Master Bricks gedrückt halten, den Reset-Knopf betätigen und loslassen, und dann den Erase-Knopf ebenso loslassen. Dies versetzt den Master Brick in den Bootloadermodus, dadurch lässt sich dann die neue Firmware über eine serielle Schnittstelle (in meinem Fall USB) aufspielen.

Brick Viewer

Der Brick Viewer ist ein kleines GUI-Tool, mit dem sich die einzelnen Bricks und Module updaten, testen und einrichten lassen.

Jeder Brick hat seinen Eintrag und seinen Reiter, eine UID (wichtig!), eine Position und eine Firmwareversion. Hier kann man sehr unkompliziert beispielweise die WIFI Extension einrichten, und die Kommunikation über diese Verbindung ablaufen lassen.
Hier sieht man den Reiter für den Air Quality Bricklet. Die Werte werden sekündlich geupdatet, und man kann ohne eigenes Zutun schauen, ob die Sensoren das tun, was sie sollen, oder der grundlegende Aufbau der Wetterstation stimmt. Der Brick Viewer sollte für alle Experimente die erste Anlaufstelle sein, da man hier überprüfen kann, ob alles seine “Arbeit” so erledigt, wie es das soll.

 

Brick Daemon

Der Brick Daemon ist ein zentrales Stück Software bei der Ansteuerung der einzelnen Bricks und Bricklets; der Brick Daemon sorgt dafür, dass – egal, welche von den unterstützen Programmiersprachen (eine lange Liste) man für eigene Programme verwenden sollte – die Kommunikation auf TCP/IP-Basis abläuft, sodass mit den von TinkerForge bereitgestellten APIs sich Bindings ohne Abhängigkeiten erstellen lassen. Seinen Dienst erledigt der Brick Daemon vergleichweise still im Hintergrund, loggt dabei aber auch jede Menge Informationen, Warnungen und Fehler – ein weiteres praktisches Feature, bei dem einem von TinkerForge einiges an Arbeit abgenommen wurde.

 

Demo-Anwendung!

Nachdem ich alle Bricks getestet habe, und die Station zusammengebaut und -geschraubt habe, habe ich mich gleich auf die ebenso von TinkerForge bereitgestellte Demoanwendung gestürzt, und auch da – es wäre schwer, mir das Leben noch einfacher zu machen. Die Demo-Anwendung ist in Python geschrieben, und bietet einem eine grundlegende Anzeige, die die Wetterstation allerdings schon voll funktionstüchtig macht. Der Quellcode der Anwendung bietet sogar sehr einfache Optionen, sich seine eigenen Reiter zusammenzustellen – mit eigenen Icons, Funktionen, sogar Bilder lassen sich per Python Imaging Library zur geeigneten Ausgabe auf dem LCD-Bildschirm konvertieren und ausgeben.
Hübsch, oder? Und das ist alles auf der Website von TinkerForge frei erhältlich – also, der Quellcode, aber auch die Schaltpläne der einzelnen Bricks, für die Elektrobauteiltüftler unter euch.
Ich denke, das sollte erstmal als grobe Übersicht, was für ein Projekt ich auf dem Tisch habe, reichen.

 

Erster Eindruck?

Mein erster Eindruck, bzw. Gedanke, den ich hatte, als ich die Bauteile ausgepackt habe, war: “Jetzt nochmal vierzehn sein, und so etwas unter dem Baum stehen haben. Ich wäre verliebt gewesen.” Nicht, dass das zehn Jahre später bei mir gänzlich anders aussieht. Das, was ich bisher alles mit dieser Wetterstation gemacht habe, und was sich wohl noch machen lässt… eine Plethora an Möglichkeiten, die sich einem öffnet. Die Bauteile, ihre modulare Bauweise, all der Quellcode und die Programme, die einem mitgegeben werden, beziehungsweise welche man auf der TinkerForge Website findet, sind sehr extensiv, und gerade deswegen würde ich sagen, es ist absolut super geeignet für junge, neugierige Bastler und Tüftler mit einer Leidenschaft für das Programmieren und Elektrobauteile.
Das scheint mir aber auch wirklich nicht das Anwendungsgebiet dieser Wetterstation zu sein, nein. Die Bauteile, das Set, all diese Dinge sind ganz klar auf Tüftler ausgelegt, und die wirklich sehr hohe Einsteigerfreudlichkeit macht dieses Kit definitiv zu einer Empfehlung für junge Leute ab vierzehn, die mal gerne ihre grundlegenden Programmierfertigkeiten mit einer greifbaren Anwendung verknüpfen wollen. Der Kreativität ist dank des Screens ohnehin schon keine Grenzen gesetzt; die modulare Bauweise würde auch noch viele Erweiterungen für diese Wetterstation unterstützen.
Also, fertigt schonmal die Wunschzettel an, denn nach Weihnachten ist vor Weihnachten.
Im zweiten Teil dieser Blogposts werde ich dann die ersten selbstgeschrieben Anwendungen von mir vorstellen, auf die APIs eingehen, und weitere Ideen besprechen, die ich bislang schon hatte, und auch noch haben werde.

 

Henrik Triem
Henrik Triem
Junior Developer

Henrik is Anwendungsentwickler in Ausbildung, verhindeter Rockstar, kaffeegetrieben und Open Source-begeistert. Zuhause lässt er es auch mal ruhiger mit Tee angehen, entspannt an Klavier oder Gitarre, erkundet neue Musik oder treibt sich mit seinen Freunden in Deutschland herum.