# datenbank verbindung config



## cyb0rg (26. Feb 2018)

Hallo zusammen,

ich schreibe an einer anwendung die auf eine Datenbank zugreift.

Die "Produktive" DB befindet sich extern auf einem SQL Server.
Für die "Entwicklung" nutze ich eine DB lokal, die test Daten enthält.

So bisher ist es so, dass ich die adresse des Servers & die zugangsdaten hard coded habe ( ja ich weiss sollte man nicht  ) allerdings ist sie vorerst nur für mich und das hat mir bisher gereicht. plane allerdings so oder so das laden und ausfüllen über eine maske.

Nichts desto trotz.. bisher muss ich jedesmal im Code den connect string anpassen bzw. werde demnächst das auslagern so dass ich lediglich ein boolean debug = true setzen muss.. so oder so ist es nicht elegant.

Die Frage ist nun, wie macht ihr es? Ich arbeite mit Git und am liebsten hätte ich es so, dass wenn ich ein Release deploye dass es automatisch den richtigen Server setzt und ich das nicht manuell erledigen muss. Umgekehrt dasselbe sobald ich mich bei der Entwicklung befinde hätte ich es am liebsten wenn es automatisch den test server nimmt..

Gruss


----------



## Thallius (26. Feb 2018)

Ich bin mir nicht sicher was das bedeuten soll, dass du das über eine Maske machst aber wenn deine App eine Client Applikation ist, dann wird das so oder nichts werden und du Must vor der Release alles auf einen Webservice umbauen, was sehr viel Arbeit wird. Damit machst du dir jetzt schon doppelte Arbeit und solltest viellecht überlegen das jetzt schon richtig zu machen bevor es gänzlich zu spät ist.

Ansonsten kannst du doch einfach auf deinem Developer Rechner eine Datei „irgendwas.txt“ erstellen. Beim Programmstart siehst du nach ob die Datei existiert und wenn ja nimmst du die lokale DB ansonsten die Richtige.

Gruß

Claus


----------



## mrBrown (26. Feb 2018)

Nutzt du Maven oder Gradle?

Dann wären vermutlich Profiles passend für dich. Gäbe dann eins für deploy und eins für debugging, in denen dann die entsprechende Config genutzt wird.

Auf irgendwelche Flags im Programm oder gar Datein aufm Rechner würd ich in jedem Fall verzichten.


----------



## Thallius (26. Feb 2018)

mrBrown hat gesagt.:


> Auf irgendwelche Flags im Programm oder gar Datein aufm Rechner würd ich in jedem Fall verzichten.



Klar, warum auch einfach, wenn man statt dessen ein eine riesige EierlegendeWollMilchSau benutzen kann, für die man erstmal tagelang recherchieren muss um sie halbwegs zu verstehen, dessen möglchkeiten man aber nur zu 1% nutzt wenn man alleine programmiert, dafür aber tausende von Dateien auf deinem Rechner installiert werden von denen kein Mensch weis wozu die eigentlich alle gut sein solllen....


----------



## mrBrown (26. Feb 2018)

Hast du jemals Maven oder Gradle benutzt?

Das klingt nach dem typischen Meckern von jemandem, der es weder nutzt noch ansatzweise verstanden hat, warum man es nutzt...


----------



## stg (26. Feb 2018)

cyb0rg hat gesagt.:


> Ich arbeite mit Git und am liebsten hätte ich es so, dass wenn ich ein Release deploye dass es automatisch den richtigen Server setzt und ich das nicht manuell erledigen muss.



Sofern die angesprochenen Build-Tools keine Option sind, kannst du das, was du möchtest aber doch auch schon allein mit git realisieren, dafür brauchst du lediglich zwei Branches -- einen fürs Release und den anderen für die Entwicklung. Für die Konfigurations-Dateien setzt du entsprechende Git-Attributes hinsichtlich der merge-Strategie. Dann kannst du sonstige Änderungen im Entwicklungsbranch einfach in den Release-Branch mergen ohne dabei deine Konfigurationsdateien kaputt zu schreiben und von dort dein Release bauen.

Siehe dazu z.B.: https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_merge_strategies


----------



## Thallius (27. Feb 2018)

mrBrown hat gesagt.:


> Hast du jemals Maven oder Gradle benutzt?
> 
> Das klingt nach dem typischen Meckern von jemandem, der es weder nutzt noch ansatzweise verstanden hat, warum man es nutzt...



Ich muss das leider ständig nutzen. Aber ich sehe in den meisten Fällen einfach keinen Mehrwert darin. 

Du hast mal gefragt was ich mache. Hier die ziemlich lange Erklärung dazu:

Ich entwickele Java und Web Applikationen. Wobei seit ein paar Jahren von den Auftraggebern eigentlich nur noch Web Apllikationen gefragt sind.

Ich arbeite für einen der größten Konzerne der Welt. Dort geht das folgendermaßen ab. Ich schreibe das jetzt extra extrem überspitzt ihr könnt das dann entsprechend auf die Realität skalieren wie ihr möchtet:

Irgendein Mitarbeiter hat eine Idee, wie man mit einer individuellen Software, die 1 und 1 zusammenrechnet einen Arbeitsprozess ungemein vereinfachen könnte. Der Manager findet diese Idee gut und ruft bei der globalen IT an und erklärt sein Anliegen. Die globale IT sagt sie wird sich beraten und dann wieder melden. Wenn der Manager nun Glück hat wartet er nur 1-2Monate bis er eine Antwort bekommt: „Wir haben das einmal durchgerechnet. Für diese Software brauchen wir einen Projektleiter, einen Front- und einen Backend-Softwarentwickler (Einer von denen wärst dann wahrscheinlich du), einen Qualitätstmanager, einen Technischen Redakteur und ein etwa 5 köpfiges Betatest-Team. Dazu müssen wir die Software nach DIN a,b,c,d und e validieren und zertifizieren. Wenn Sie das OK geben, können wir schon in 6 Monaten damit anfangen und in etwa 24 Monaten haben sie die Software. Die Kosten belaufen sich auf etwa 450.000 Euro“.

Das  ist natürlich keine Option für den Manager also nimmt er Plan B. Er angagiert einen Studenten oder Praktikanten oder einen gerade fertig gewordenen Informatik Studenten (eben was gerade verfügbar und am billigsten ist) und lässt diesen die Software im Alleingang entwickeln. Der nimmt natürlich das was er mal so Halbseiden gelernt hat, nämlich Java Spring für das Backend und AngularJS für das Frontend. Das ganze schön mit Maven aufgesetzt. Da er aber keinen Senior hat der ihm dabei hilft haben wir nun 3 mögliche Ergebnisse:

1) Die Software wird nach einem halben Jahr 1+1 ausrechnen aber 3 heraus bekommen und er braucht Hilfe.
2) Die Software funktioniert auf dem Windows Entwicklungsrechner des Studenten aber keiner weis wie man diese nun auf den Amazon Cloud Linux Server mit externer Oracle DB und entsprechenden Problemen der Portfreischaltungen etc installieren soll und man braucht Hilfe.
2) Der Manager wird nach einem halben Jahr langsam nervös weil die Software immer noch nicht fertig ist und braucht Hilfe

Diese Hilfe bin dann ich. Ich sehe mir dann an was der Studi da verzapft hat und versuche meist wenigstens das backend zu retten. Deshalb muss ich auch mit Maven arbeiten und mit Spring obwohl ich es einfach nur grottig finde. Wenn ich das ganze in PHP oder meinetwegen auch in NodeJS machen würde, wäre es um einiges performanter und um Längen kompakter. Wenn das backend komplett Schrott ist mache ich das auch neu in PHP oder NodeJS.
Das Frontend ist in75% der Fälle komplett unbrauchbar. Das schreibe ich dann lieber eben schnell neu in JavaScript und JQuery. Hier habe ich mir über Jahrzehnte ein eigens kleines Framework geschrieben mit dem ich sehr schnell eine Single side Applikation schreiben kann die dynamisch alle weiteren Inhalte nachlädt. Also nicht nur die html, sondern auch die ja, css und ein JSON file welches die Texte für die von User ausgewählte Sprache enthält (Multilingual). Das Framework ist dermaßen klein und einfach, dass es nichtmal 5MB groß ist.

Nach etwa 14 Tagen bis 4 Wochen hat der Manger dann eine funktionieren Software die ihm 1+1 richtig ausrechnet. Und nein, die ist natürlich nicht validiert oder zertifiziert, nein, die hat keine Unittest, kein qualitätsmanagement und auch keinen Betatest hinter sich. Warum auch? Diese Software berechnet 1+1 und jeder sieht ob das Ergebnis stimmt oder nicht. 

Der Manager ist über glücklich und empfiehlt mich weiter, so dass ich mitlerweile schon Aufträge ablehnen muss.

Nochmal: ich sehe die Notwendigkeit eines Maven, einer QS und dem ganzen oben genannten Zenober, wenn ich eine Software schreibe die die Größenordnung eines CMS ala SAP hat, welches bei einem Fehler dazu führen kann, dass eine ganze Firma nicht mehr funktioniert. Aber das sind ja nicht einmal 1% der Anwendungen die geschrieben werden. Bei einer Anwendung, die von einer Person geschrieben wird und die eine klar abgesteckte unkritische Funktionaliät hat, da braucht an so etwas nicht. Da kostet das einfach nur unnötige Zeit und erzeugt weitere Abhängigkeiten zu anderen Software Entwickelrn, die man nicht einmal kennt und auf die man im Notfall auch keinen Einfluss nehmen kann. Natürlich kommt man niemals ganz darum herum sich von anderen abgängig zu machen. Es fängt ja schon beim OS an, das hindert mich persönlich aber nicht daran trotzdem diese Abhägigkeiten so minimal wie möglic h zu halten.

Und solange ich damit so großen Erfolg habe, werde ich das sicherlich nicht ändern. 

Gruß

Claus


----------



## mrBrown (27. Feb 2018)

Ich habe kaum eine Anwendung gesehen, die ohne Abhängigkeiten zu anderen Libs auskommt (und da du von Web sprichst, bezweifle ich, dass es dir anders gehen kann).
Und schon eine Abhängigkeit ist für mich Grund genug, ein Build-Tool dafür zu nutzen. Völlig unabhängig davon, wie groß und komplex das Projekt wird.




Thallius hat gesagt.:


> 2) Die Software funktioniert auf dem Windows Entwicklungsrechner des Studenten [...]


Du kritisierst einerseits das, bist aber gleichzeitig *gegen* Build-Tools, deren Haupt-Zweck ist, genau das zu verhindern und den Build unabhängig vom System zu machen?
Genau diese Probleme (und alles was du sonst kritisierst) sind für mich ein Argument *für* Build-Tools und mehr "Software-Engineering" und keineswegs dagegen.



Thallius hat gesagt.:


> [...] die ist natürlich nicht validiert oder zertifiziert, nein, die hat keine Unittest, kein qualitätsmanagement und auch keinen Betatest hinter sich [...]


Für mich ist das so ziemlich das Gegenteil von Software-Engineering (ich bin allerdings auch nur der billige Studi, der nichts kann...). Irgendwer hat mal gesagt, "Code schreiben kann jeder, den Unterschied zwischen Gefrickel und professionellem Entwicklen macht das Drumherum aus".


Bei mir läuft alles mit Maven/Gradle + Git + Tests + CI und ist von push bis Deploy automatisiert.
Was mich das kosten? etwa 2 min Zeit zum Aufsetzen und Abhängigkeiten zum Tooling (die aber nicht mehr als eine Java-Installation voraussetzen und damit maximal Unabhängig von der Umgebung sind...)
Was ich gewinnen? Der Build ist unabhängig von mir (was so ziemlich die größte Fehlerquelle ist) und läuft überall reproduzierbar und spart mir üblicherweise einiges an (Zeit-) Aufwand.


----------



## Thallius (27. Feb 2018)

mrBrown hat gesagt.:


> Ich habe kaum eine Anwendung gesehen, die ohne Abhängigkeiten zu anderen Libs auskommt (und da du von Web sprichst, bezweifle ich, dass es dir anders gehen kann).
> Und schon eine Abhängigkeit ist für mich Grund genug, ein Build-Tool dafür zu nutzen. Völlig unabhängig davon, wie groß und komplex das Projekt wird.



Was brauche ich denn in Web Applikationen für Abhängigkeiten? Ich habe einen Ordner in dem alle Dateien liegen die ich deployen muss damit meine App läuft. Thats it!.
Brauche ich eine lib, dann downloade ich mir die benötigte .js datei und kopiere sie in meinen externallibs Ordner in der Application. Damit kann ich sicher sein, dass meine Applikation überall funktioniert auch wenn es mal aus versehen eine neue Version der Lib gibt die vielleicht einen Fehler hat. Ich brauche die lib ja nicht updaten solange sie funktioniert. Wozu brauche ich da jetzt ein Tool?


----------



## mrBrown (27. Feb 2018)

Thallius hat gesagt.:


> Was brauche ich denn in Web Applikationen für Abhängigkeiten? Ich habe einen Ordner in dem alle Dateien liegen die ich deployen muss damit meine App läuft. Thats it!.


Da du von Java und Web sprachst: Mindestens die entsprechende APIs. Oder hast du wirklich alle Jars mit im Repo liegen, inklusive derer Abhängigkeiten (du nutzt doch VCSs?)?

Deployen läuft mit Tool auch nicht anders, man tippt den passenden Befehl ein, und fertig. Oder je nachdem wie weit automatisiert ist: man pusht und alles danach läuft automatisch (setzt natürlich Tests voraus).



Thallius hat gesagt.:


> Brauche ich eine lib, dann downloade ich mir die benötigte .js datei und kopiere sie in meinen externallibs Ordner in der Application.


Mit einem Build-Tool nicht anders, nur passiert es automatisch.



Thallius hat gesagt.:


> Damit kann ich sicher sein, dass meine Applikation überall funktioniert auch wenn es mal aus versehen eine neue Version der Lib gibt die vielleicht einen Fehler hat. Ich brauche die lib ja nicht updaten solange sie funktioniert.


Mit einem Build-Tool nicht anders, da wird genausowenig einfach eine andere Version genutzt, wenn du es nicht angibst. Allerdings kann man den Update-Prozess automatisieren, wenn man denn möchte, im Gegensatz zu deiner Variante.
Das "überall funktionieren" klappt im Zweifelsfall auch besser, weil der gesamte Prozess automatisiert ist.



Thallius hat gesagt.:


> Wozu brauche ich da jetzt ein Tool?


"Brauchen" ist relativ. Nur passiert dann halt alles, was du per Hand machst automatisch.


----------



## Thallius (27. Feb 2018)

mrBrown hat gesagt.:


> "Brauchen" ist relativ. Nur passiert dann halt alles, was du per Hand machst automatisch.



Dem Tool muss ich die Abhängigkeit auch erst sagen. Das ist auch nicht schneller als die Datei eben selber zu kopieren.

Und wie ich bereits sagte: Bei Java als Backend nutze ich auch Maven weil man bei den Kram eh schon keinen Durchblick mehr hat was da eigentlich alles passiert ist der zusätzliche autmatismus auch egal.
Ich von mir aus würde aber eben, unter anderem wegen diesem Grund (Von der grauenhaften Performance mal ganz abgesehen) niemals freiwillig ein Java Backend schreiben....

Und ja, ich habe alle libs mit im Repo. Warum auch nicht. Da sich die nie ändern stören sie auch nicht weiter. Nur der intiale Commit dauert halt etwas länger. Dafür habe ich auch hier mit einem Pull eine komplett lauffähige Version und muss mich um nichts anderes kümmern


----------



## mrBrown (27. Feb 2018)

Thallius hat gesagt.:


> Dem Tool muss ich die Abhängigkeit auch erst sagen. Das ist auch nicht schneller als die Datei eben selber zu kopieren.


also ich schreibe den Namen deutlich schneller, als den namen zu schreiben, dann die Datei runter zu laden und an den passenden Ort zu kopieren...



Thallius hat gesagt.:


> Und wie ich bereits sagte: Bei Java als Backend nutze ich auch Maven weil man bei den Kram eh schon keinen Durchblick mehr hat was da eigentlich alles passiert ist der zusätzliche autmatismus auch egal.


Wenn du keinen Durchblick bei Java hast, ist das aber tendenziell deine Schuld...



Thallius hat gesagt.:


> Ich von mir aus würde aber eben, unter anderem wegen diesem Grund (Von der grauenhaften Performance mal ganz abgesehen) niemals freiwillig ein Java Backend schreiben....


Das du Java nicht nutzen möchtest, wenn du es nicht verstehst, kann ich ja noch nachvollziehen.

Aber Java ist dir zu langsam im Vergleich mit PHP oder NodeJS?
Deinen Humor möchte ich auch haben...


----------



## Thallius (27. Feb 2018)

mrBrown hat gesagt.:


> Aber Java ist dir zu langsam im Vergleich mit PHP oder NodeJS?
> Deinen Humor möchte ich auch haben...



DAS wiederum läßt darauf schliessen das du von PHP nicht ein bischen Ahnung hast. Und ich meine hier PHP und nicht Synfony, Laravel oder solche Krankheiten die krampfhaft versuchen PHP Objectorientiert zu machen, was es aber niemals wird und wofür es auch niemals gemacht wurde. 
Und was man bei einem Backend auch wirklich absolut nicht braucht. Daten aus einer DB lesen, in ein JSON packen und verschicken und das Ganze anders herum, das kann man auch sehr gut procedural lösen....


----------



## mrBrown (27. Feb 2018)

Thallius hat gesagt.:


> DAS wiederum läßt darauf schliessen das du von PHP nicht ein bischen Ahnung hast. Und ich meine hier PHP und nicht Synfony, Laravel oder solche Krankheiten die krampfhaft versuchen PHP Objectorientiert zu machen, was es aber niemals wird und wofür es auch niemals gemacht wurde.


Das wiederum läßt darauf schliessen das du von JAVA und PHP nicht ein bischen Ahnung hast. Und ich meine hier Java, nicht irgendein riesiges Framework.
Reines Java ist so gut wie *immer* schneller als PHP.
Objektiver Benchmark dazu, der deinem genannten Use-Case am nächsten kommen dürfte: https://www.techempower.com/benchmarks/#section=data-r15&hw=ph&test=db



Thallius hat gesagt.:


> Und was man bei einem Backend auch wirklich absolut nicht braucht. Daten aus einer DB lesen, in ein JSON packen und verschicken und das Ganze anders herum, das kann man auch sehr gut procedural lösen....


Das dürfte allerdings nur einen kleinen Teil aller Backends ausmachen^^


----------



## Thallius (27. Feb 2018)

mrBrown hat gesagt.:


> Das dürfte allerdings nur einen kleinen Teil aller Backends ausmachen^^



Das wiederum kommt darauf an wieviel der Logik du ins Front und wieviel ins Backend packst. Ich bevorzuge vieles im Frontend zu machen, da ich damit die Last vom Server nehme. Andere kaufen halt einfach größere Server...


----------



## stg (27. Feb 2018)

Ist der Flame-War schon wieder vorbei? 

Aber vielleicht meldet sich @cyb0rg ja doch noch mal zurück und geht auf die Antworten ein, die sich noch auf die Frage bezogen haben...


----------



## cyb0rg (1. Mrz 2018)

Hallo zusammen,



Thallius hat gesagt.:


> Damit machst du dir jetzt schon doppelte Arbeit und solltest viellecht überlegen das jetzt schon richtig zu machen bevor es gänzlich zu spät ist.



und genau deshalb frage ich hier 



Thallius hat gesagt.:


> Ansonsten kannst du doch einfach auf deinem Developer Rechner eine Datei „irgendwas.txt“ erstellen. Beim Programmstart siehst du nach ob die Datei existiert und wenn ja nimmst du die lokale DB ansonsten die Richtige.



hatte ich mir auch schon überlegt, doch die anwendung nutze ich auch selbst bei meinem developer rechner  entsprechend... hmm
dazu kommt.. habs mir etwas überlegt.. und ich müsste beim start der anwendung prüfen können von welchem verzeichnis aus die anwendung gestartet wird? damit ich bzgl dem file selbst prüfen kann.. wüsste nicht mal ob es möglich ist den pfad von dem aus die anwendung gestartet wird iin RunTime zu prüfen... müsste ich mal sowieso recherchieren ist interessant.



mrBrown hat gesagt.:


> Nutzt du Maven oder Gradle?
> 
> Dann wären vermutlich Profiles passend für dich. Gäbe dann eins für deploy und eins für debugging, in denen dann die entsprechende Config genutzt wird.
> 
> Auf irgendwelche Flags im Programm oder gar Datein aufm Rechner würd ich in jedem Fall verzichten.



ich habe beides mal kurz angewandt, gradle hauptsächlich wegen der Android Entwicklung.

Allerdings muss ich die 2 Tools noch richtig lernen, wüsste jetzt so spontan nicht wie ich da mehrere Profile mit config files erstelle.

Ich bin auf jedenfall grundsätzlich überhaupt nicht abgeneigt von solechen build tools, mein ziel ist es, selbst wenn es zu lernzwecken ist, ein build automatisierungsprozess zu erreichen.



stg hat gesagt.:


> schon allein mit git realisieren, dafür brauchst du lediglich zwei Branches -- einen fürs Release und den anderen für die Entwicklung. Für die Konfigurations-Dateien setzt du entsprechende Git-Attributes hinsichtlich der merge-Strategie. Dann kannst du sonstige Änderungen im Entwicklungsbranch einfach in den Release-Branch mergen ohne dabei deine Konfigurationsdateien kaputt zu schreiben und von dort dein Release bauen.
> 
> Siehe dazu z.B.: https://git-scm.com/book/en/v2/Customizing-Git-Git-Attributes#_merge_strategies



sehr interessant! zeigt mir, dass ich Git noch einiges lernen muss / darf  danke!



mrBrown hat gesagt.:


> Bei mir läuft alles mit Maven/Gradle + Git + Tests + CI und ist von push bis Deploy automatisiert.
> Was mich das kosten? etwa 2 min Zeit zum Aufsetzen und Abhängigkeiten zum Tooling (die aber nicht mehr als eine Java-Installation voraussetzen und damit maximal Unabhängig von der Umgebung sind...)
> Was ich gewinnen? Der Build ist unabhängig von mir (was so ziemlich die größte Fehlerquelle ist) und läuft überall reproduzierbar und spart mir üblicherweise einiges an (Zeit-) Aufwand.



das hört / liest sich für mich als sehr interessant an. Hast du da genauere Informationen?

Grundsätzlich verstehe ich , dass es gefährlich ist, sich von Produkten abhängig zu machen, gleichzeitig aber sehe ich auch die Vorteile, wenn mann jetzt einfach mal den Aufwand ignoriert. Ich sags mal so, der Aufwand an sich, ob es sinn macht oder nicht wenn man alleine Entwickelt, ich mache es sehr gerne und wenn ich etwas cooles neues "entdecke" dann würde ich es gerne meinen Kollegen zeigen und vielleicht wenn es überzeugt gemeinsam in Zukunft nutzen.
Bisher ist der Entwicklungsprozess lediglich so -> Git Branch erstellen von dev, mergen pushen, review code, that's it. Falls alles okay -> ins Master.
Das einzige was ich noch lokal "ausführe" ist eine Statische Code Analyse & FindBugs.. wie auch code Formatter.. das würde ich später gerne auch "auslagern" 

Gruss


----------



## cyb0rg (1. Mrz 2018)

stg hat gesagt.:


> Ist der Flame-War schon wieder vorbei?
> 
> Aber vielleicht meldet sich @cyb0rg ja doch noch mal zurück und geht auf die Antworten ein, die sich noch auf die Frage bezogen haben...



sry.. hatte auf email nachricht bzgl neue beiträge gewartet kam aber nichts.. hab wohl ne einstellung "verpasst".

gruss


----------



## mrBrown (1. Mrz 2018)

cyb0rg hat gesagt.:


> Allerdings muss ich die 2 Tools noch richtig lernen, wüsste jetzt so spontan nicht wie ich da mehrere Profile mit config files erstelle.


Am besten klappt da Learning-By-Doing 

Zu diesem speziellen Fall dürfte es auch einige Beispiele geben, zur Not halt hier 




cyb0rg hat gesagt.:


> das hört / liest sich für mich als sehr interessant an. Hast du da genauere Informationen?


Naja, die meisten Einzelteile dürften dir schon bekannt sein 

Projekt läuft mit Maven oder Gradle (das kümmert sich dann um den gesamten Build, Code Analyse, Formatter, Tests, ...).
Das ganze in einem Repo und zB bei GitHub gehostet.
Da gibts dann Anbindung an Continuous Integration, zB Travis. Wenn da das aktivierst wird dein Code bei jedem Push ausgecheckt und gebaut. Das Ergebnis (Erfolgreich/Fehlschlagend) landet dann zB bei GitHub.



cyb0rg hat gesagt.:


> Grundsätzlich verstehe ich , dass es gefährlich ist, sich von Produkten abhängig zu machen


Den Punkt sehe ich eigentlich auch bei solchen Standards überhaupt nicht. Es meckert ja auch niemand, dass man jetzt von git und java abhängig ist  Wären das jetzt irgendwelche Exoten, wäre das sicher anders - aber die werden so gut wie überall genutzt und haben eine riesige Community hinter sich.



cyb0rg hat gesagt.:


> Bisher ist der Entwicklungsprozess lediglich so -> Git Branch erstellen von dev, mergen pushen, review code, that's it. Falls alles okay -> ins Master.


Der Entwicklungsprozess wäre für die Entwickler nicht mal anders zu benutzen  Es passiert halt nur mehr automatisch im Hintergrund - zB das vorm review automatische Tests und Code-Analyse laufen (sodass man den Review z.T. automatisieren kann) oder dass nach dem Merge direkt die neue Version bereit steht.



cyb0rg hat gesagt.:


> Das einzige was ich noch lokal "ausführe" ist eine Statische Code Analyse & FindBugs.. wie auch code Formatter.. das würde ich später gerne auch "auslagern"


Das lässt sich alles wunderbar mit Maven und Gradle (und git) automatisieren


----------



## cyb0rg (2. Mrz 2018)

mrBrown hat gesagt.:


> Am besten klappt da Learning-By-Doing



da kann ich nicht wiedersprechen 



mrBrown hat gesagt.:


> Naja, die meisten Einzelteile dürften dir schon bekannt sein
> Projekt läuft mit Maven oder Gradle (das kümmert sich dann um den gesamten Build, Code Analyse, Formatter, Tests, ...).
> Das ganze in einem Repo und zB bei GitHub gehostet.
> Da gibts dann Anbindung an Continuous Integration, zB Travis. Wenn da das aktivierst wird dein Code bei jedem Push ausgecheckt und gebaut. Das Ergebnis (Erfolgreich/Fehlschlagend) landet dann zB bei GitHub.



ich verstehe 
Ist zwar cool, dass es sowas wie Travis gibt, aber ich suche nach einer Lösung die ich selbst hosten kann.
z.B um in GitLab einzubauen, denn sobald ich solche Lösungen nutze die ich bis zu einem gewissen Grad kostenlos nutzen kann, sich plötzlich entscheiden geld von mir zu wollen... ausserdem Travis bietet es kostenlos an für opensource projekte, für private projekte (was die meisten von mir sind) kostet es 80$ (gerundet) im Monat.. es summiert sich halt sobald man das eine oder andere benötigt / will.



mrBrown hat gesagt.:


> Den Punkt sehe ich eigentlich auch bei solchen Standards überhaupt nicht. Es meckert ja auch niemand, dass man jetzt von git und java abhängig ist  Wären das jetzt irgendwelche Exoten, wäre das sicher anders - aber die werden so gut wie überall genutzt und haben eine riesige Community hinter sich.



Richtig. Ich habe lediglich die Erfahrung gemacht, dass wenn man nicht ein bisschen drauf achtet, irgendwann mit etwas da steht welches unzällige Abhängigkeiten hat und wenn man Pech hat vielleicht die eine oder andere die Entwicklung eingestellt haben. Aber grundsätzlich gebe ich dir schon recht 



mrBrown hat gesagt.:


> Der Entwicklungsprozess wäre für die Entwickler nicht mal anders zu benutzen  Es passiert halt nur mehr automatisch im Hintergrund - zB das vorm review automatische Tests und Code-Analyse laufen (sodass man den Review z.T. automatisieren kann) oder dass nach dem Merge direkt die neue Version bereit steht.


genau  nur dass ich gerne diese automatismen auf meine server direkt implementiert haben möchte (falls möglich).

gruss


----------



## mrBrown (2. Mrz 2018)

cyb0rg hat gesagt.:


> ich verstehe
> Ist zwar cool, dass es sowas wie Travis gibt, aber ich suche nach einer Lösung die ich selbst hosten kann.
> z.B um in GitLab einzubauen, denn sobald ich solche Lösungen nutze die ich bis zu einem gewissen Grad kostenlos nutzen kann, sich plötzlich entscheiden geld von mir zu wollen... ausserdem Travis bietet es kostenlos an für opensource projekte, für private projekte (was die meisten von mir sind) kostet es 80$ (gerundet) im Monat.. es summiert sich halt sobald man das eine oder andere benötigt / will.



Gibt ja noch andere als Travis  Travis ist halt super einfach, weil es eben nicht selbst gehosted ist.
Jenkins wäre zB eine Alternative, ist etwas komplexer einzurichten und man muss es selber hosten - kann aber auch deutlich mehr.



cyb0rg hat gesagt.:


> Richtig. Ich habe lediglich die Erfahrung gemacht, dass wenn man nicht ein bisschen drauf achtet, irgendwann mit etwas da steht welches unzällige Abhängigkeiten hat und wenn man Pech hat vielleicht die eine oder andere die Entwicklung eingestellt haben. Aber grundsätzlich gebe ich dir schon recht


Wenn die Entwicklung eingestellt wird, forkt man halt 
Ist halt immer ein Abwägen zwischen alles selber machen und Abhängigkeiten - und bei den Build-Tools geht das für mich meist eindeutig aus.


----------



## Barista (4. Mrz 2018)

Ich weiß nicht genau ob es für Dich passt,
aber im aktuellen Javamagazin 4.2018 auf Seite 50 gibt es einen Artikel der sich mit diesem (oder zumindest einem ähnlichen) Problem befasst.

Voraussetzung ist aber die Nutzung von Spring


----------



## mrBrown (4. Mrz 2018)

Barista hat gesagt.:


> Ich weiß nicht genau ob es für Dich passt,
> aber im aktuellen Javamagazin 4.2018 auf Seite 50 gibt es einen Artikel der sich mit diesem (oder zumindest einem ähnlichen) Problem befasst.
> 
> Voraussetzung ist aber die Nutzung von Spring


Da gehts allerdings um Spring Cloud, oder?


----------



## cyb0rg (5. Mrz 2018)

mrBrown hat gesagt.:


> Jenkins wäre zB eine Alternative, ist etwas komplexer einzurichten und man muss es selber hosten - kann aber auch deutlich mehr.


yeah werd ich mir anschauen hört sich cool an! 



mrBrown hat gesagt.:


> Wenn die Entwicklung eingestellt wird, forkt man halt
> Ist halt immer ein Abwägen zwischen alles selber machen und Abhängigkeiten - und bei den Build-Tools geht das für mich meist eindeutig aus.



ack 



Barista hat gesagt.:


> Ich weiß nicht genau ob es für Dich passt,
> aber im aktuellen Javamagazin 4.2018 auf Seite 50 gibt es einen Artikel der sich mit diesem (oder zumindest einem ähnlichen) Problem befasst.
> 
> Voraussetzung ist aber die Nutzung von Spring



Sprint setze ich im moment noch nicht ein 
Ist aber auch auf meiner Liste um es anzuschauen


----------

