# Mein großer Deyploment How-To Fragen-Thread



## Thallius (2. Mrz 2020)

Hallo,

ich arbeite für eine Firma, die medizintechnische Produkte herstellt, vertreibt und wartet. Hier bin ich im Bereich Service für DI-Großgeräte (Also CT, MRT, NUC, PET, US etc) tätig.
ich habe vor ein paar Jahren angefangen ein kleines Tool ePlanning zu schreiben, dass die Termine der Techniker in einem Kalendar grafisch darstellt. Klingt komisch aber das CMS der Firma ist dazu tatsächlich nicht in der Lage.
Über die Jahre wurde das Tool immer weiter aufgebohrt und mittlerweile ersetzt es eigentlich das CMS im Service-Center komplett. Seit 3 Jahren ist noch ein weiteres Tool ePlanner dazu gekommen, was sehr stark in das erste Tool eingreift. Dieses Tool erstellt automatisch die Wartungsplanung für alle Geräte unter Vertrag. Diese werden dann im ersten Tool angezeigt und können dort dann auch bearbeitet werden.

Um das Ganze ein bischen wenig abstrakt zu machen habe ich mal einen verpixelten Screenshot angehängt.



Nun ist das Ganze halt irgendwie über die Jahre gewachsen und ich möchte das gerne mal in eine vernünftige Deployment Umgebung stecken. Dazu habe ich mir gedacht packe ich das erstmal in lauter Docker Container. Wie ich mir das Vorstelle seht ihr in diesem Bild



Auf das Hardware Setup in der Production habe ich keinen Einfluß. Ich kann also die mySQL DB nicht selber über SSH ansprechen und in einen Docker stecken.

Hier meine ersten beiden Fragen:

1) Macht das so für euch Sinn?
2) Wenn ja, wie würdet ihr das GIT dazu machen? Jeweils eines für ePlanning und ePlanner oder doch alles zusammen in ein Repository?

Gruß

Claus


----------



## mihe7 (2. Mrz 2020)

Thallius hat gesagt.:


> Dazu habe ich mir gedacht packe ich das erstmal in lauter Docker Container.


Und das aus Deinen Fingern? Müssen wir uns Sorgen machen? 



Thallius hat gesagt.:


> 1) Macht das so für euch Sinn?


Für mich als Außenstehenden sieht es jedenfalls nicht falsch aus. Wenn das obere Bild den aktuellen Zustand wiedergibt, an dem Du nichts ändern kannst, dann würde ich sagen, dass das insofern Sinn macht, als dass Du möglichst genau diesen Zustand abbildest. 

Warum verwenden die beiden Tools eine gemeinsame DB? Wenn das nur an der Produktionsumgebung liegt, könnte man noch überlegen, lokal zu trennen, um die Modelle auch auf DB-Ebene sauber voneinander getrennt zu halten.



Thallius hat gesagt.:


> 2) Wenn ja, wie würdet ihr das GIT dazu machen? Jeweils eines für ePlanning und ePlanner oder doch alles zusammen in ein Repository?


Ich vermute mal, dass ePlanning und ePlanner von unterschiedlichen Benutzergruppen bedient werden. Getrennte Tools -> getrennte Repositories.


----------



## Thallius (2. Mrz 2020)

mihe7 hat gesagt.:


> Und das aus Deinen Fingern? Müssen wir uns Sorgen machen?



Wenn ich feststelle das es dadurch unbedienbar langsam wird schmeiß ich es wieder weg 



> Warum verwenden die beiden Tools eine gemeinsame DB? Wenn das nur an der Produktionsumgebung liegt, könnte man noch überlegen, lokal zu trennen, um die Modelle auch auf DB-Ebene sauber voneinander getrennt zu halten.



Das ist so schon richtig weil die verwenden auch die gleichen Daten. Also Tabellen wie Techniker, Systeme, Kunden, Spezifikationen, Jobs etc.
Eigentlich könnten beide Tools auch in einem sein aber die habe ich aus zwei Gründen geändert:

1) ePlanning ist komplett auf useability und performance ausgelegt. Du kannst hier Jobs mit Drag und Drop verschieben und erhälst während des Verschiebens online wichtige Informationen je nachdem über welchem Techniker und Datum/Uhrzeit du den Job gerade schiebst wie z.B. "Techniker hat nicht den richtigen Skill", "Tag entspricht nicht der Kundepräferenz", "Das für diesen Job benötigte Tool ist an dem Tag nicht verfügbar", "Der Job befindet sich ausserhalb des Compliance Intervals" etc. Deshalb habe ich das in raw JS programmiert. (Habe es am Anfang mal mit Angular probiert aber war echt einfach nur langsam). 
ePlanner ist nicht zeitkritisch (eine Planung dauert je nach Größe des Landes eh 15-30min) aber der Prozess ist hoch komplex. Deshalb habe ich das in Java geschrieben weil das die bevorzugte Sprache meines Auftraggebers ist und ich dort keinen Nachteil sehe. Eher den Vorteil von mehr Übersichtlichkeit im Code
2) ePlanner ist sehr CPU und Speicher hungrig. Diese Tools werden von ganz EMEA benutzt (Also Europe, Middle-East, Africa). Wenn nun ein Land einen Planungsprozess mit ePlanner startet und dieser liefe auf dem gleichen Server wie ePlanning, dann wäre ePlanning für die anderen Länder sehr langsam. Deshalb kommt der ePlanner auf einen eigenen Server wo er dann machen kann was er will.
[/quote]



> Ich vermute mal, dass ePlanning und ePlanner von unterschiedlichen Benutzergruppen bedient werden. Getrennte Tools -> getrennte Repositories.



Tatsächlich hat ePlanner gar kein Benutzerinterface. ePlanning hat ein Fenster indem man die Einstellungen für den ePlanner vornimmt und dann startet. Per Poll, holt sich dann ePlanning 4x in der Sekunde den aktuellen Status vom ePlanner und zeigt diesen an.

Danke schonmal für Kommentieren

Claus


----------



## mihe7 (2. Mrz 2020)

Verstehe. Der ePlanner wird nur zum Zwecke der Skalierung separat gehalten, wobei die DB hier nicht das Bottleneck zu sein scheint (warum auch immer). Ja, dann...



Thallius hat gesagt.:


> Wenn ich feststelle das es dadurch unbedienbar langsam wird schmeiß ich es wieder weg


LOL, ist ja keine VM  Zumindest, so lange man kein Windows verwendet. Ich kann mich über die Geschwindigkeit nicht beschweren, wobei sich der Container natürlich ein klein wenig auswirkt.


----------



## Thallius (2. Mrz 2020)

Im Moment sieht es eigentlich gut aus. Im Moment kämpfe ich mit dem PHP-OCI8 setup wie immer. Das ist echt jedesmal ne Krücke bis das läuft.


----------



## mihe7 (2. Mrz 2020)

Thallius hat gesagt.:


> OCI8


Iiiiiiiihhhh. Ist das immer noch so eine Sch..., den Client einzurichten? War da nicht was mit tnsnames.ora/sqlnet.ora... das ist ewig und drei Tage her, dass ich damit zu tun hatte.


----------



## Thallius (2. Mrz 2020)

mihe7 hat gesagt.:


> Iiiiiiiihhhh. Ist das immer noch so eine Sch..., den Client einzurichten? War da nicht was mit tnsnames.ora/sqlnet.ora... das ist ewig und drei Tage her, dass ich damit zu tun hatte.



Naja man muss erstmal den instantclient installieren und dann dem treiber sagen wo er das findet. Das funktioniert normalerweise über die LD_LIBRARY_PATH variable aber bei docker scheint das wohl nicht zu klappen. Jedenfalls findet er die benötigten so files nicht


----------



## mihe7 (2. Mrz 2020)

Könnte helfen: https://github.com/vitoo/docker-php-oci8/blob/master/Dockerfile


----------



## Thallius (2. Mrz 2020)

mihe7 hat gesagt.:


> Könnte helfen: https://github.com/vitoo/docker-php-oci8/blob/master/Dockerfile



Wow das sieht wirklich gut aus. Das meiste davon habe ich auch so drin. Werde ich morgen mal als erstes ausprobieren. Wonach hast du gesucht das du das gefunden hast? Ich dachte Ich habe das ganze Netz schon abgesucht,


----------



## mihe7 (2. Mrz 2020)

Einfach: https://www.google.de/search?q=oci8 docker - erstes Ergebnis angeschaut, Dockerfile gesehen -> könnte passen.


----------



## Thallius (3. Mrz 2020)

mihe7 hat gesagt.:


> Einfach: https://www.google.de/search?q=oci8 docker - erstes Ergebnis angeschaut, Dockerfile gesehen -> könnte passen.



Lag wohl daran das ich nach php73 gesucht habe. Hat jetzt geklappt. Was mir fehlte war das wissen wie ich den OCI treiber mit dem --try-with-resources installieren kann aus dem DockerFile heraus. Das habe ich jetzt auch gelernt.

Nun muss ich leider erstmal wieder ein anderes Projekt angehen.

Melde mich wenn es weiter geht.

Danke

Claus


----------

