Mein großer Deyploment How-To Fragen-Thread

Thallius

Top Contributor
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.

ePlanningScreenShot.png

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


HardwareDesign.png
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

Top Contributor
Dazu habe ich mir gedacht packe ich das erstmal in lauter Docker Container.
Und das aus Deinen Fingern? Müssen wir uns Sorgen machen? ;)

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.

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

Top Contributor
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

Top Contributor
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...

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

Top Contributor
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.
 

Thallius

Top Contributor
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
 

Thallius

Top Contributor
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
 

Neue Themen


Oben