Warum sollte gelegentlich in Erwägung gezogen werden, sich selbst auf die Probe zu stellen? Worte und Ideen bleiben oft nur Konstrukte der eigenen Vorstellungskraft, bis sie tatsächlich in die Tat umgesetzt werden. In der heutigen Zeit bietet uns die verfügbare Technologie zahlreiche Möglichkeiten, unsere eigenen Potenziale zu realisieren. Oft reicht nur ein kleiner Funke 🔥 aus, um die Leidenschaft eines IT-Enthusiasten zu entfachen.
Dies war auch der Fall bei unserer kürzlich besiegelten Partnerschaft mit OLAPLINE GmbH, die einen einzigartigen Wissensaustausch ermöglichte. Innerhalb weniger Stunden konnten wir auf einem anspruchsvollen technischen Niveau unsere bisherigen Erfolge im Bereich IBM Planning Analytics bzw. TM1 und das dazugehörige Ökosystem präsentieren und diskutieren. Solche Gelegenheiten kommen nicht allzu oft vor. Eine Frage, die uns Henri gestellt hat, beschäftigte mich besonders:
„Habt ihr schon einmal versucht, TM1 in einem Container auszuführen?“
Ehrlich gesagt, hatten wir das bisher noch nicht versucht. Aber warum eigentlich nicht?
- Lag es an fehlender Zeit?
- War es die nicht vorhandene Notwendigkeit?
- Mangelte es am Nutzen?
Ich kann mir vorstellen, dass dieses Thema viele Fragen und Diskussionen auslöst. Als uns Henri aber seine Lösung präsentierte und uns die Docker- und Compose-Dateien schickte, war ich überzeugt, dass wir es auch mit seiner Unterstützung schaffen können. Warum also nicht versuchen?
Gesagt, getan – unser Plan sah wie folgt aus: Wir wollten klein anfangen und schrittweise erkunden, was möglich ist. Im ersten Schritt bringen wir die Linux-basierte Variante von IBM Planning Analytics Local in einem Container zum Laufen. Unser Container basiert auf der CentOS Linux-Distribution, die von Red Hat Enterprise Linux als Open Source zur Verfügung gestellt wird.
Dockerfile
FROM centos:stream9
RUN yum -y install libstdc++ libstdc++.i686 motif libXm.so.4 libXtst
RUN yum -y install java-1.8.0-openjdk java-1.8.0-openjdk-devel
ENV JAVA_HOME="/usr/lib/jvm/jre-1.8.0-openjdk-1.8.0.362.b09-4.el9.x86_64"
RUN mkdir /app COPY /opt/ibm/cognos /app/cognos
Nun müssen wir noch einige relevante Bibliotheken installieren und wichtige Umgebungsvariablen setzen. Wir legen einen entsprechenden Ordner im Container an und kopieren die Dateien von IBM Planning Analytics nach einer erfolgreichen Installation dorthin. Alternativ kann die Installation auch im Container durchgeführt werden. Hierfür wird die unbeaufsichtigte Installation für IBM Cognos-Komponenten mithilfe der .ats-Datei gestartet.
Dockerfile
RUN chmod +x /app/cognos/tm1_64/bin64/startup_tm1s.sh
ENV TM1_PATH="/app/cognos/tm1_64/bin64"
ENTRYPOINT ["sh", "/app/cognos/tm1_64/bin64/startup_tm1s.sh","/app/cognos/tm1_64/samples/tm1/24Retail"]
Der Container ist jetzt einsatzbereit und kann über Docker, Podman oder in einer Azure Container App ausgeführt werden. Nach dem Testen verschiedener Möglichkeiten, ist es uns gelungen, TM1 Server Version 11 in der Azure Container-Umgebung nutzen zu können. Das Besondere daran ist, dass wir den internen IBM HTTPPortNumber auf die Ports 443 bzw. 80 mappen und über eine benutzerfreundliche URL einen einfachen Zugriff auf die IBM REST-API haben. Sobald dann alles eingerichtet ist, können Tools wie IBM Planning Analytics Workspace, IBM watsonx oder Cubewise Arc verwendet werden, um auf das Datenmodell zuzugreifen. Aber auch Tools wie unser DAL und TM1Py ❤️ in Kombination mit einem JupyterLab-Container können problemlos von Data Scientists genutzt werden.
Natürlich sind wir noch bei den ersten Versuchen, TM 1 im Container laufen zu lassen, aber wollen trotzdem allen TM1- Enthusiasten schon die Möglichkeiten zeigen, die sich bieten. Wir möchten die Idee von Manny Perez weiterführen und neue Wege in der Bereitstellung und Nutzung dieser Technologie im Sinne echter Innovation gehen – und uns selbst fordern, komplexe Strukturen einfach zu verstehen und anzuwenden.
Wir haben noch viele Ideen, wie die Integration von ODBC-Treibern in unsere Container und die Nutzung der ExecuteHttpRequest-Funktion in unseren Linux-Containern. Die ODBC-Treiber würden den Zugriff auf verschiedene Datenbanken erleichtern, während die ExecuteHttpRequest-Funktion die Interaktion mit externen Diensten und APIs ermöglicht. Diese Erweiterungen würden unsere Container-Infrastruktur vielseitiger und flexibler machen, um Daten zu verwalten und mit verschiedenen Plattformen zu kommunizieren.