Mehrer Programmierer auf Dedicated Server



Ich hätte das Wort Backup erst gar nicht erwähnen sollen.
 
Hallo,

vielen, vielen Dank für die ganzen Nachrichten. Wie versprochen, habe ich mich am Wochenende mit der Installation herumgeschlagen. Nun läuft git, gitlab etc. auf dem Server und ich habe schon etwas rumprobiert. Das System ist wirklich klasse und ein echter Mehrwert - auch wenn ich bis jetzt das eigentliche Problem nicht gelöst habe. Aber nacheinander:

Erstmal zum Backup: Das ist nicht so das Problem. Ich habe einen zentralen Backup-Server, auf den via RSync, Acronis etc (je nach Client) gesichert und versionisiert wird. Zudem befindet sich der GitLab-Server in einer virtuellen Maschine. Diese wird ebenfalls auf dem Backup-Server tagesaktuell versionisiert gespeichert - so auch die Produktivsysteme.

Zur Zugriffskontrolle: Mir ist ein Denkfehler aufgefallen. Das Klassenverzeichnis könnte ich schützen. Nur dann kann kein Entwickler programmieren bzw. sein programmiertes nicht testen ohne es bei jeder Mini-Änderung zu pushen. Denn das gesamte Projekt benutzt auf jeder einzelnen Seite natürlich mindestens zwei Klassen.
Nun habe ich mir überlegt: Man könnte die Klassen auf einem im Netzwerk liegenden Webserver auslagern und per php-include die url zu der Klasse angeben. Dass das für die Produktivumgebung ein no-go ist, ist klar. Das soll nur für die Entwicklung sein. So sind die Klassen zugriffsgeschützt aber dennoch verwendbar. Wäre das nicht eine gute Lösung?
Warum das Ganze? Ich tue mich mit dem Gedanken schwer, das gesamte Projekt aus der Hand zu geben. Jeder Entwickler wäre mit dem git-Clone dazu fähig, das Projekt selbst zu hosten. Er bräuchte nur noch den Namen ändern und schon sind Entwicklungsjahre umsonst gewesen. Oder habe ich einen Punkt / ein Feature übersehen? Vielleicht muss ich auch nur etwas umstrukturieren - vllt. habt ihr ja noch ein paar Tipps!

Dann noch eine kurze Frage: Neue Funktionen wurden entwickelt, branches wurde mit dem master gemerged etc. Wie kommt nun die neue Version der Webseite auf die Produktivserver? Auch mit git, oder die entsprechenden Daten downloaden und per FTP uploaden?

Vielen Dank nochmals!
 
Du kannst ja für fertig kompilierte Klassen auch einfach eine API bereit stellen. Das Risiko des Disassembling bleibt zwar bestehen aber das kann sowieso jede Person durchführen.
Wo wir beim Thema sind: von welcher Programmiersprache sprechen wir eigentlich?
 
Wäre das nicht eine gute Lösung?
Ernstgemeinte Frage: Vertrauen ist keine Lösung?

Dann noch eine kurze Frage: Neue Funktionen wurden entwickelt, branches wurde mit dem master gemerged etc. Wie kommt nun die neue Version der Webseite auf die Produktivserver? Auch mit git, oder die entsprechenden Daten downloaden und per FTP uploaden?
git würde sich meiner Meinung nach auch für den Deployment-Prozess super anbieten.
 
Alternativ eines der vielen Deploy-Tools, die es so gibt - irgendeines wurde schon genannt, dann gäbe es da noch jenkins, hudson, ...

Hat den Vorteil, daß man im git / svn nicht zwingend auch alle Live-Konfigurationen haben muss sondern die entsprechenden Files beim Deploy automatisch anpassen lässt, daß man automatisiert Tests und Test-Deploys laufen lassen kann, ein sauberes Versionsmanagement auch auf Seiten der erstellten Builds hat, Logs, ...

Aber ja - selbst ein schnöder "git clone" oder "svn co" ist besser, als mit ftp was auf den Liveserver zu packen.
 
Warum das Ganze? Ich tue mich mit dem Gedanken schwer, das gesamte Projekt aus der Hand zu geben. Jeder Entwickler wäre mit dem git-Clone dazu fähig, das Projekt selbst zu hosten.
Ganz ehrlich: Wenn du deinen Entwicklern nicht trauen kannst, dann hast du doch sowieso verloren, oder? Die Entwickler liefern das KnowHow mit ihren Köpfen. Und natürlich können sie das jederzeit irgendwo hin tragen, ob du den Quelltext jetzt umständlich schützt oder auch nicht. Außerdem macht das echt schlechte Stimmung, wenn die Entwickler nicht an den Code rankommen und dadurch nicht debuggen können.

Gib deinen Entwicklern Zugriff auf den Code und lass sie lokal testen, wie sich das gehört. Alles andere ist juristisch, und nicht technisch zu lösen.

Dann noch eine kurze Frage: Neue Funktionen wurden entwickelt, branches wurde mit dem master gemerged etc. Wie kommt nun die neue Version der Webseite auf die Produktivserver?
Mit einem vernünftigen Deployment-Tool. Sieh dir mal Ansible (http://www.ansible.com/home) an, das macht im Moment einen wirklich guten Eindruck.

Alternativ eines der vielen Deploy-Tools, die es so gibt - irgendeines wurde schon genannt, dann gäbe es da noch jenkins, hudson, ...
[...] daß man automatisiert Tests und Test-Deploys laufen lassen kann, ein sauberes Versionsmanagement auch auf Seiten der erstellten Builds hat, Logs, ...
Achtung: Du verwechselst continuous integration und automatische Tests mit Deployment. Mit Jenkins kann man so weit ich weiß nicht deployen und selbst wenn, würde ich das nicht machen, da der Fokus von Jenkins auf Testing liegt.
 
Hm, hier finden bei uns automatische Deploys (ok, nur auf Testsysteme) per Jenkins statt - klar, Tests und so gehören auch dazu, aber das sollte man ja eh machen, oder?

Jenkins macht bei uns Versionserstellung, automatische Tests, Deploy-on-Demand bzw. Deploy-on-checkin auf Test- und Abnahme-Systeme, ... - das komplette Programm... Nur auf die Live-Systeme darf der nicht, Deploys dort macht nur der Admin.
 
Ganz ehrlich: Wenn du deinen Entwicklern nicht trauen kannst, dann hast du doch sowieso verloren, oder? Die Entwickler liefern das KnowHow mit ihren Köpfen. Und natürlich können sie das jederzeit irgendwo hin tragen, ob du den Quelltext jetzt umständlich schützt oder auch nicht. Außerdem macht das echt schlechte Stimmung, wenn die Entwickler nicht an den Code rankommen und dadurch nicht debuggen können.
Und wenn die Vertrauensbasis dermaßen wackelig ist, dann schließ mit deinen Entwicklern eine schriftliche Vereinbarung, in der genau fixiert wird, wer die Rechte am Code hat. Wenn dann die Codebasis oder Teile davon woanders auftauchen bzw. verwendet werden, dann hast du zumindest eine rechtliche Handhabe, um dagegen vorgehen zu können (Ob das dann sinnvoll ist oder nicht, sei mal dahingestellt...).
 
Das hat er eigentlich eh durch die Entwicklertätigkeit der Entwickler - der Code gehört eigentlich immer automatisch derm Auftraggeber.

... alles weiter packt man eigentlich dann noch in die Lizens, unter der das Projekt dann "veröffentlicht" wird.
 
Alderon said:
Wo wir beim Thema sind: von welcher Programmiersprache sprechen wir eigentlich?

Ich habe Software in der ganze Palette entwickelt, betrifft aber nur ein Projekt. Pascal (Delphi), PHP, Objective C (iOS). Da ich das alleine nicht mehr alles schaffe, habe ich mir Unterstützung geholt. Derzeit betrifft es aber erstmal nur die PHP-Teile. Daher wird die Idee mit der API auch nicht umsetzbar sein.

parkbank said:
Ernstgemeinte Frage: Vertrauen ist keine Lösung?

Ja doch schon. Ist aber immer so eine Sache, gerade wenn neue Leute in die Arbeit stoßen, die man erstmal nur von der Bewerbung kennt. Und gehört hat man schon viel.

nexus said:
Und wenn die Vertrauensbasis dermaßen wackelig ist, dann schließ mit deinen Entwicklern eine schriftliche Vereinbarung, in der genau fixiert wird, wer die Rechte am Code hat.

Ja. Diese Vereinbarung werde ich ohnehin treffen. Das ist das Mindeste, was man machen kann. Das Problem ist zwar der Nachweis, dass tatsächlich meine Teile verwendet werden (dies muss ich nachweisen), aber immernoch besser als garnichts - wenn es hart auf hart käme.

Ganz ehrlich:
Ich vertraue ja auch den Entwicklern / Teammitgliedern. Und je länger sie bei mir/uns sind, desto größer wird ja auch das Vertrauen. Aber eine gewisse Sicherheit hätte ich halt schon gerne. Es müsste ja nur aus einem blöden Grund mal einen Streit geben und dann könnte alles wieder ganz anders aussehen. Immerhin könnte ein Diebstahl der Quelltexte das Aus bedeuten. Muss nicht, aber könnte. Ich hoffe, ihr versteht in welche Richtung meine Bedenken gehen und dass sie nichts mit generellem Misstrauen einer Person gegenüber zu tun haben.

Hier scheinen ja auch einige im Team zu entwicklen: Hat wirklich jeder von euch Zugriff auf alles? Wie handhaben das denn die anderen Unternehmen?
 
Hier scheinen ja auch einige im Team zu entwicklen: Hat wirklich jeder von euch Zugriff auf alles? Wie handhaben das denn die anderen Unternehmen?
Ja, sonst könnte ich auch nicht arbeiten. Wie soll ich sinnvoll einen Bug fixen, der durch komplexe Interaktion mit weiterem Code entsteht, ohne den Code lesen und verstehen zu können?
 
Bei uns: Natürlich hat nicht jeder Zugriff auf alles.

Jeder sieht nur die Sourcen, die er braucht - das macht bei uns SVN.

Dadurch daß eben alles gekapselt ist durch die Build-Umgebung mit automatischen Builds, Tests usw. kommt der Entwickler auch gar nicht in Kontakt mit dem anderen Code - er kennt die API und entwickelt dagegen.
 
Dadurch daß eben alles gekapselt ist durch die Build-Umgebung mit automatischen Builds, Tests usw. kommt der Entwickler auch gar nicht in Kontakt mit dem anderen Code - er kennt die API und entwickelt dagegen.
Okay. Ihr lasst also lokal auf der Entwickler-Maschine gar keine Tests laufen, bevor ihr Code ins Repo pusht? Oder habt ihr Binaries, die ihr zum Testen nehmt?
 
ich müsste glaube ich erwähnen, daß das meiste bei uns Web- und App-Entwicklungen sind, also keine "Desktop-PC-Software".

Aber ja - grundlegend laufen auf den Entwickler-PCs (eigentlich :-) ) keine Testumgebungen.
 
marce said:
Aber ja - grundlegend laufen auf den Entwickler-PCs (eigentlich :-) ) keine Testumgebungen.

Ja, bei mir handelt es sich ja auch um Web-Entwicklung. Aber wenn keine Testumgebungen lokal vorhanden sind, wie testet ihr dann euren Code bzw. wie oft testet euren Code? Und wie groß ist der getestete Code? Wenn ich programmiere, teste ich sehr häufig. Quasi nach jedem größeren Schritt.
 
Automatisierte Tests sind auf jeden Fall schwer zu empfehlen, aber dennoch will man doch zumindest sicherstellen, dass die grundlegenden Testcases laufen und keine Syntax-Fehler im Code sind, bevor man das ins Repo pusht? Sonst verteilt man doch jeden kleinen Tippfehler an alle Entwickler, die sich nur noch die Haare raufen.
 
naja, Syntax-Fehler findet die Entwicklungsumgebung und die entsprechenden Builds laufen ja auch lokal damit - dafür braucht man ja auch nur die Schnittstellen/API-Bibliotheken.
 
Wir entwickeln zur Zeit ein Radarsystem zu didaktischen Zwecken mit 3 Iranern zusammen. Sie haben Zugriff auf alles. Wieso? Weil sie verdammt nochmal sonst nicht entwickeln könnten. Wir haben nicht eine Sekunde darüber nachgedacht auf irgendetwas einzuschränken. Wozu auch? Es würde den Prozess nur verlangsamen. Wir wollen in diesem Leben noch fertig werden.

Wo liegen deine Bedenken? Meist du, dass die dann den Code nehmen und anderen verkaufen? Am besten führt man dann nach jedem Projekt eine Lobotomie bei allen Entwicklern durch und sucht sich dann neue. Die alten könnten diese Idee ja für andere Projekte wiederverwenden. Naja, nach einer Lobotomie ist das unwahrscheinlich, dass sie dann überhaupt noch etwas können.

Für uns spielt das keine Rolle. Wir haben die Kundenkontakte, wir bauen die Hardware und wir haben auch das Know-How und geschult wird auch noch durch einen Experten.

Wenn man sich schon Gedanken über die Vertrauenswürdigkeit seiner Entwickler machen muss, ist man entweder selbst paranoid oder ist an die falschen Entwickler geraten.
 
*doppelpost*

sry
 
Last edited by a moderator:
Back
Top