Openshift: Service Discovery

In meinem vorherigen Blogpost https://blog.doubleslash.de/neue-anwendungen-openshift-origin-erstellen/ habe ich eine kleine Beispielanwendung mit zwei Pods (Wildfly/MySQL) erstellt.

Das Wildfly Image unterstützt von Haus aus sogenannte ServiceDiscovery. Aber was ist das und wozu brauche ich das?

ServiceDiscovery beschreib bei Openshift eine Möglichkeit Services automatisch zu finden.

In Openshift werden IP Adressen dynamisch vergeben. Das bedeutet, dass ein Pod, der einmal verfügbar war einen Endpunkt im IP Bereich 10.168.* bekommt. Beim nächsten Start oder bei Skalierung wird ein neuer Endpunkt generiert und dem Container zugewiesen.

Somit kann ein Zusammenspiel von Containern nicht zuverlässig funktionieren. Ausserdem würde das Loadbalancing zum Container keinen Effekt haben, wenn es lediglich möglich ist einen Pod als Ziel zu konfigurieren.

Openshift stellt hier sogenannte Services als Bindeglied zwischen Routing und Container bereit. Ein Service bekommt wie ein Container eine IP. Diese ist jedoch in einem anderen Bereich (per Default 172.30.*). Der Vorteil der Service IP ist, dass diese einmal für die Laufzeit des Services vergeben wird. Über die eine Service IP wird auch das Loadbalanceing zum eigentlichen Pod durchgeführt.

Mehr

Real Life Anwendungen in Openshift

In meinem letzten Beitrag https://blog.doubleslash.de/standardization-through-containerrization/ habe ich kurz beschrieben was Openshift ist und wie man es mit Vagrant ausprobieren kann.

Nun möchte ich an einem kurzen „Real Life“ Beispiel zeigen wie schnell man die Grundlage für eine neue Anwendung schaffen kann.

openshift_blog

Wie im Komponentendiagramm dargestellt soll ein Wildfly 10 mit einer MySQL Datenbank kommunizieren.

Openshift bietet für den WildFly und MySQL bereits Unterstützung und bieten sich für andere Projekte als solide Basis an.

Mehr

„Standardization through Containerization“

Aus diesem Grund habe ich mich näher mit Openshift beschäftigen dürfen.

Openshift ist die PaaS (Platform-as-a-Service)  Plattform von Redhat. Diese gibt es wahlweise in den Varianten

  • Openshift Origin (Open-Source Variante)
  • Openshift Enterprise (Kostenpflichtig)
  • Openshift Online (für Entwickler aber auch für Unternehmen in Form von Openshift Dedicated auf AWS)

 

Openshift Enterprise basiert auf bewährten Open Source-Technologien wie Docker (als Containerplattform) und Kubernetes (als Orchestrierung für Docker). Die Basis bildet RHEL mit Atomic, welches für Linux Container optimiert ist. Openshift sitzt darüber, bringt die Technologien zusammen und erweitert die Architektur um nützliche Features.

Mit Openshift soll die Qualität und die Geschwindigkeit der Entwicklung von Software bis hin zur Auslieferung verbessert werden (DevOps).

Mehr

Amazon IoT mit MQTT

Seit 2015 bietet Amazon auch eine Plattform für das Internet der Dinge auch IoT genannt an.

Amazon IoT beinhaltet eine Device Registration, eine Rule Engine und einem Public-Subscribe Gateway für Internet Devices. Diese Services können via HTTPs (Rest) und MQTT angesprochen werden. Zudem gibt es eine Library für C, JavaScript und eine Arduino Library.

Für zukünftige Kundenprojekte kann Amazon IoT natürlich eine gute Basis für verschiedene Use-Cases sein. Deshalb habe ich ein paar Test gemacht und geprüft, wie Amazon IoT unter Java angebunden werden kann. Hierzu habe ich ein simples Publish-Subscribe Pattern über ein Topic mit Java umgesetzt.

Mehr

Einblick in den Intel Edison

Im Rahmen eines Kundenprojektes war es uns möglich einen Einblick in hardwarenahe Softwareentwicklung mit dem Edison[1] zu bekommen.

Der Edison ist ein leistungsstarker Minicomputer mit den Abmessungen von gerade mal 60mm x 29mm x 8mm (LxBxH).
Gegenüber seinen Konkurrenten glänzt er mit einem 500MHz Dual-Core Atom Prozessor und einer 100MHz Quark MCU.Mehr

Servlet-API und setContentLength()

In meiner Laufbahn als Softwareentwickler trifft man manche Stellen immer und immer wieder. So ist es mir die Tage mit der Servlet-API ergangen. Bei der Suche nach einem Bug bin ich auf folgende Stelle in einem Download-Servlet gestoßen:

Hier wird ein „cast“ vom Datentyp „long“ zu einem „int“ durchgeführt. Das ist an sich eigentlich kein Problem solange die Dateigröße nicht den Wert Integer.MAX_INT (2147483647) übersteigt. Das bedeutet einfach ausgedrückt, dass Dateien mit einer maximalen Größe von 2 GB übertragen werden können.
Mehr