Ankündigung

Einklappen
Keine Ankündigung bisher.

Lokale Entwicklungsumgebung mit Windows

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • #16
    rkr : Wenn du 50 Projekte hast, die du gleichzeitig (innerhalb eines Arbeitstages) bearbeiten musst, dann hast du vermutlich andere Probleme... Üblicherweise arbeitet ein Mitarbeiter doch an wenigen Projekten, so 1 bis 3? Wie auch immer, bleiben wir dabei, dass es unterschiedliche Anforderungen und Arbeitsweisen gibt.

    Für mich beispielsweise ist der Overhead von Vagrant minimal. Ich habe viele unterschiedliche Konfigurationen (Mysql 5.5 bis 5.7, PHP 5.4 bis 7, evt. PG). Dann habe ich Zusatztools, die ich nur sehr selten benötige (Selenium, Node, ...). Ich habe es dann nicht gerne, wenn ich mein Hostsystem mit all diesen Konfigurationen verschandle. Ich hatte das des öftern, dass ich für ein Projekt spezifische Einstellungen gemacht haben muss (sei es weil Wordpress den MySQL-Strict-Mode nicht verträgt, ich meine Projekte aber darin entwickle) und ich danach wieder, wenn ich zwischen Projekten hin- und herwechsle, Konfigurationen anpassen muss.

    Wenn man spezifische Konfigurationen für Software hat oder diese erwarten kann, dann lohnt sich Vagrant gut, weil man damit sein System darauf konfigurieren kann. Gewissen Kunden kann ich PHP 7 und MySQL 5.7 (noch) nicht zutrauen. Für eigene Produkte kann ich diese "Vorteile" jedoch sehr gut nutzen. Dann bin ich mit Vagrant sehr gut bedient.
    [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

    Kommentar


    • #17
      Zitat von ChristianK Beitrag anzeigen
      rkr : Wenn du 50 Projekte hast, die du gleichzeitig (innerhalb eines Arbeitstages) bearbeiten musst, dann hast du vermutlich andere Probleme...
      Nicht gleichzeitig. Aber ich weiß auch nicht, welche ich tagsüber öffnen muss, weil irgend ne Kleinigkeit geändert werden muss.

      Kommentar


      • #18
        Eine virtuelle Maschine bringt nun mal einiges an Overhead
        Wieso sollte mich das stören wenn der Overhead zwar messbar aber nicht oder kaum wahrnehmbar ist? Ich habe zum Teil auf dem kleinsten Macbook Air mehrere VMs laufen, unter anderem ein Windows 7 Prof. und einen Linux-Mint-Mate Desktop gleichzeitig und noch 1-3 Debian-Server, alles kein Problem.

        und die Übertragung von Daten in so eine virtuelle Umgebung ist nun mal nicht so direkt, wie die Arbeit im eigenen Dateisystem.
        In einer virtuellen Umgebung abreitet man doch genau so direkt im eigenen Dateieinsystem? Die Daten liegen nur in der virtuellen Umgebung, da muss nicht dauernd was übertragen werden.

        Das Argument, dass man seine Arbeitsumgebung Plug'n'Play auf eine andere Maschine übertragen kann, ist ein relativ schwaches Argument.
        Es ist sicherlich auch kein Nachteil wenn man seine komplette Entwicklungsumgebung auf jedem Rechner innerhalb von 5-10 Minuten einrichten kann.

        VG
        Jack
        -

        Kommentar


        • #19
          jack88 Bei Vagrant liegen die Daten Hostdateisystem und werden synchronisiert mit der virtuellen Maschine (via rsync, ntfs, ...; konfigurierbar). Das führt insbesondere bei grossen Projekten oder gar bei der Symfony-Standardinstallation unter gewissen Hostsystemen (sagen wir, Windows) zu extremen Performanceeinbrüchen (Ladezeit >15 Sekunden pro Seite).
          [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

          Kommentar


          • #20
            Verstehe, ich arbeite nicht mit Vagrant, deshalb kenne ich das Problem so nicht. Wie oft wird da eingentlich synchronisiert, beim Hochfahren, vor jedem Request? Läßt sich das Synchronisieren nicht einstellen oder komplett abschalten, oder werden die Daten nach Shutdown jedes Mal komplett gelöscht?

            Bei mir läuft die Entwicklungsumgebung (nur IDE + Entwicklungstools + alle erforderlichen Keys etc.) in einer eigenen Virtualbox-VM und der/die Entwicklungsserver in einer anderen Virtualbox-VM. Die VMs werden einmal komplett eingerichtet und behalten dann ihre Daten. Um Synchronisation muss ich mich nicht weiter kümmern, weil jede Codeänderung in PhpStorm unmittelbar auf den Entwicklungsserver übertragen wird.

            VG
            jack
            -

            Kommentar


            • #21
              Die Synchronisation ist/muss live (sein). Denn du arbeitest ja und testest den Code. Wenn du den Sync abstellst, hast du ja gar keine Daten in der VM?
              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

              Kommentar


              • #22
                Zitat von ChristianK Beitrag anzeigen
                Die Synchronisation ist/muss live (sein). Denn du arbeitest ja und testest den Code. Wenn du den Sync abstellst, hast du ja gar keine Daten in der VM?
                Warum nicht direkt die Daten in der VM bearbeiten? Wozu die Herumsynchronisiererei?

                Kommentar


                • #23
                  Dir ist bekannt wie Vagrant funktioniert? Ich möcht hier nicht das Manual vorlesen...
                  [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                  Kommentar


                  • #24
                    Zitat von ChristianK Beitrag anzeigen
                    Dir ist bekannt wie Vagrant funktioniert? Ich möcht hier nicht das Manual vorlesen...
                    Ehrlich gesagt kenne ich das nicht mal. Ich bin von dem einfachen Fall ausgegeben, dass man mit einer VM arbeitet. Wozu die Dinge komplizierter machen, als sie sind?

                    Kommentar


                    • #25
                      Zitat von ChristianK Beitrag anzeigen
                      Die Synchronisation ist/muss live (sein)?
                      Soll das heißen, daß vor jedem einzelnen Request zuerst ein Datensync ausgeführt wird? Das wäre ja der totale Overhead.

                      Ich habe gerad kurz auf der Vagrant-Website nachgesehen. Wenn ich es richtig verstehe läßt sich der Sync auch deaktivieren. Also wenn sich files innerhalb einer Vagrant-Box persistent ablegen lassen, dann kann man sich den Sync-Prozess doch komplett sparen, je nachdem wie man arbeitet bzw. die eigene Entwicklungsumgebung konfiguriert ist der Syncprozess überflüssig.

                      VG
                      Jack
                      -

                      Kommentar


                      • #26
                        Zitat von hellbringer Beitrag anzeigen

                        Ehrlich gesagt kenne ich das nicht mal. Ich bin von dem einfachen Fall ausgegeben, dass man mit einer VM arbeitet. Wozu die Dinge komplizierter machen, als sie sind?
                        Vagrant ist eine leichtgewichtige VM, das heist, weniger Speicherverbrauch. Siehe z.B. die Infografik am Ende hier: https://www.scriptrock.com/articles/docker-vs-vagrant

                        Zitat von jack88 Beitrag anzeigen

                        Soll das heißen, daß vor jedem einzelnen Request zuerst ein Datensync ausgeführt wird? Das wäre ja der totale Overhead.

                        Ich habe gerad kurz auf der Vagrant-Website nachgesehen. Wenn ich es richtig verstehe läßt sich der Sync auch deaktivieren. Also wenn sich files innerhalb einer Vagrant-Box persistent ablegen lassen, dann kann man sich den Sync-Prozess doch komplett sparen, je nachdem wie man arbeitet bzw. die eigene Entwicklungsumgebung konfiguriert ist der Syncprozess überflüssig.

                        VG
                        Jack
                        Nein, nicht vor jedem Request. Entweder via NFS/SMB als Netzlaufwerk, d.h. die Ressourcen werden über das Netzwerk eingebunden oder dann via rsync, wobei da vermutlich jede Änderung synchronisiert wird. Es kann durchaus sein, dass du den Sync nicht benötigst. Ich könnte den aus meinem Arbeitsprozess nicht wegdenken, bzw. jede Änderung würde mehr Overhead bedeuten. Zudem erhält man ja keinen Nachteil [auf Linux oder Mac] durch den Sync-Prozess.
                        [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                        Kommentar


                        • #27
                          rkr Das mit den bis zu 50 Projekten am Tag nehme ich Dir nicht ab, sofern Du auf Arbeit einen ordentlichen Entwicklungsworkflow hast.

                          Mal davon ausgehend das man bei Kleinkram durchschnittlich pro Projekt ~10 Minuten braucht um Codeänderungen zu machen (selbst wenn da nen paar ausreisen mit 5 minuten dabei sind, egal), das die Unittests dafür nochmal mindestens genau so lange brauchen und dann noch die Änderungen commiten und im Browser/CLI/... testen auch nochmal 10 Minuten sind das rund 30 Minuten pro Projekt. Das sind summa summarum 25h Arbeitszeit pro tag.

                          Respekt!

                          selbst bei nur 20 minuten sind das immer noch 16 2/3 Stunden am Tag.

                          DU scheinst ein guter Burnout-Kandidat zu sein.
                          PHP-Manual ¡ mysql_* ist veraltet ¡ Debugging: Finde DEINE Fehler selbst ¡ Passwort-Hashing ¡ Prepared Statements

                          Kommentar


                          • #28
                            Zitat von Ulfikado Beitrag anzeigen
                            rkr Das mit den bis zu 50 Projekten am Tag nehme ich Dir nicht ab, sofern Du auf Arbeit einen ordentlichen Entwicklungsworkflow hast.
                            Das habe ich oben doch erklärt. Genauer: Ich habe (es sind tatsächlich sogar mehr als) 50 Projekte, die ich in zufälliger Reihenfolge öffne und bearbeite. Je nach dem, wo gerade Änderungen anstehen. Normal brauche ich am Tag nicht mehr als 5 bis 6 Projekte. Es ist alles immer da. Muss nur die virtuelle Domain aus der Lesezeichenleiste aufrufen und zack - alles da. Ohne VM. Es mag Szenarien geben, wo man erst mit einer VM bestimmte Ziele erreicht. Ich richte mein System im Schnitt alle 2 Jahre neu ein. Die zwei Stunden, die ich für die Einrichtung mehr brauche, sind da unwesentlich...

                            Zitat von jack88 Beitrag anzeigen
                            In einer virtuellen Umgebung abreitet man doch genau so direkt im eigenen Dateieinsystem? Die Daten liegen nur in der virtuellen Umgebung, da muss nicht dauernd was übertragen werden.
                            Mal anders gefragt: Wenn du direkt unter Linux arbeiten würdest (Hauptsystem = Linux), das ähnlich eingerichtet ist, wie der Live-Server, würdest du selbst dann noch in einer VM arbeiten? Wenn ja: Warum?

                            Kommentar


                            • #29
                              Zitat von rkr Beitrag anzeigen
                              [...]
                              Mal anders gefragt: Wenn du direkt unter Linux arbeiten würdest (Hauptsystem = Linux), das ähnlich eingerichtet ist, wie der Live-Server, würdest du selbst dann noch in einer VM arbeiten? Wenn ja: Warum?
                              Meine Antwort zu dieser Frage: Ja. Denn ich will mein Hostsystem clean halten. Alles "experimentieren" geht in eine VM.
                              [URL="https://github.com/chrisandchris"]GitHub.com - ChrisAndChris[/URL] - [URL="https://github.com/chrisandchris/symfony-rowmapper"]RowMapper und QueryBuilder für MySQL-Datenbanken[/URL]

                              Kommentar


                              • #30
                                Zitat von rkr Beitrag anzeigen
                                Mal anders gefragt: Wenn du direkt unter Linux arbeiten würdest (Hauptsystem = Linux), das ähnlich eingerichtet ist, wie der Live-Server, würdest du selbst dann noch in einer VM arbeiten? Wenn ja: Warum?
                                Ich kann mir ehrlich gesagt kein Szenario vorstellen wo ein Server ähnlich konfiguriert wäre wie eine IDE oder umgekehrt? Ich wüßte nicht wofür sowas gut wäre.

                                Eine Entwicklungsumgebung besteht für mich grundsätzlich aus

                                - Entwicklungswerkzeugen
                                - Ausführungsumgebung

                                Während die Entwicklungswerkzeuge innerhalb eines System i.d.R. gut koexistieren können, benötigen Ausführungsumgebungen oft jeweils ein eigenes System. Man kann mit dem gleichen Editor durchaus Programme für mehrere Sprachen schreiben, aber man braucht oft unterschiedliche Ausführungsumgebungen um diese Programme auszuführen.

                                Ich arbeite z.B. viel mit PHP und Bash, als Editor verwende ich für Beides den PHPStorm. Es ist nicht so wichtig auf welchem System ich die Programme schreibe (Win/Mac/Linux), aber ich kann z.B. keine Bashskripte unter Windows ausführen. Sollte ich jetzt wegen Bash einen weiteren Rechner einrichten und dann nachmal alle die Entwicklungswerkzeuge installieren?

                                Und die Sicherheit? Bashskripte z.B. benötigen oft Rootrechte, da kann schon ein „kleiner“ Fehler fatale Folgen für das gesamte System haben.

                                Und wie sieht es mit Migrationen aus, z.B. auf eine neue PHP-Version? Mehrere PHP-Versionen, Datenbanken... alles in einer Ausführungsumgebung, wie soll das gehen?

                                Nein, Ausführungsumgebung und Entwicklungswerkzeuge parallel auf einem System, das ist keine gute Idee. Da wird nichts einfacher oder besser. Eine solche Arbeitsweise bietet aus meiner Sicht absolut keine Vorteile.

                                Um einen flexiblen IDE-Workflow zu realisieren bietet es sich deshalb an auf Virtualisierung zurückzugreifen. Dazu muss man lediglich eine Virtualisierungssoftware installieren und zumindest die Ausführungsumgebungen virtualisieren. Dabei muss man natürlich nicht gleich für jedes Projekt eine eigene Ausführungsumgebung erstellen. Wenn nichts dagegen spricht, dann können sich mehrere Projekte natürlich eine VM teilen, aber wenn ein Projekt es erfordert, dann hat man die Flexibilität dieses Projekt jederzeit in einer anderen, angepassten Ausführungsumgebung weiter zu entwickeln und zwar ohne an dem restlichen System mit Entwicklungswerkzeugen irgendetwas ändern zu müssen.

                                Ob man die Entwicklungswerkzeuge selbst, direkt auf dem Host installiert oder in einer VM, hängt ganz von den persönlichen Anforderungen ab.

                                In meinem Fall verhält es sich so, daß ich in der Firma an einem Win-Pc und einem Win-Laptop arbeite und zuhause mit iMac und Macbook. So müßte ich meine Entwicklungswerkzeuge insgesamt vier mal auf zwei verschiedenen OS einrichten. Außerdem arbeite ich weder mit Mac OS noch mit Windows wirklich gerne. Warum also nicht gleich alle die Entwicklungswerkzeuge einmal in eine schicke Linux-VM packen und bei bedarf auf so viele Rechner kopieren wie nötig. Damit habe ich unabhängig von dem verwendeten Host-OS auf jedem Rechner immer eine identische, vertraute Entwicklungsumgebung und nur noch ein OS mit dem ich mich ggf. herumärgern muss Wer glaubt, daß sich das alles irgendwie langsam, oder indirekt anfühlt, der sollte es einfach mal selbst ausprobieren.

                                VG
                                Jack
                                -

                                Kommentar

                                Lädt...
                                X