Ich arbeite mit 4 anderen Personen an einer Asp.net-Website. Das Problem, das wir haben, ist, welche Art von Hardware wir brauchen, um die Entwicklung im Team zu ermöglichen. Wir haben vier einzelne Desktop-Computer, welche andere Hardware brauchen wir? Welche andere Entwicklungssoftware wäre für eine solche Entwicklung ideal?
Antworten
Zu viele Anzeigen?Für das Embarcadero Developer Network ( http://edn.embarcadero.com ), das mit einem extrem niedrigen Budget erstellt wird, verwenden wir unsere eigenen PCs für die Entwicklungsumgebung. Derzeit gibt es 3 Hauptentwickler, mich eingeschlossen.
Da meine Teammitglieder remote arbeiten, haben wir auch VMs für die Entwicklung und das Debugging, die sich im selben Rechenzentrum wie unsere Live-Server befinden. Kommunikation ist entscheidend, und wir verlassen uns stark auf Skype ( http://www.skype.com/ ) dafür.
Für die Verwaltung des Quellcodes verwenden wir das kostenlose Open-Source-Programm http://subversion.tigris.org/ . Ein guter universeller Windows-Client für SVN ist TortoiseSVN ( http://tortoisesvn.net/ ). Ein ausgezeichnetes Visual Studio-Plug-in für SVN ist http://ankhsvn.open.collab.net/ .
Für Unit-Tests verwenden wir NUnit ( http://nunit.com ) für unsere .NET-Tests. Wir verwenden Dunnit ( http://dunit.sourceforge.net/ ) für unsere Delphi-Code-Tests.
Vor der Bereitstellung ist es sehr wichtig, einen Bereitstellungs-/Testserver zu haben, der KEIN Entwicklungsrechner ist, auf dem Sie das, was Sie live machen wollen, bereitstellen, bevor Sie es live stellen. Nur so können Sie sicher sein, dass Sie alles, was Sie brauchen, auf dem Live-Server bereitstellen können.
Für den Einsatz in einer Umgebung mit ausgeglichener Lastverteilung wird Robocopy (siehe http://en.wikipedia.org/wiki/Robocopy für weitere Informationen) ist ein sehr nützliches Werkzeug, um sicherzustellen, dass Ihre Live-Server Ihren "Staging"-Server spiegeln. Wir haben eine "do it all"-Batch-Datei, die 1) die neueste Version aus Subversion zieht, 2) unser CSS und JavaScript zusammenführt und minimiert (mit einem Tool, das ich geschrieben habe und das ich eines Tages veröffentlichen werde, und einem JS-Packing-Tool von den fckeditor-Leuten), 3) die neueste Version unserer Templates, CSS, Bilder, Skripte und so weiter auf die Live-Server überträgt.
Was unsere Server betrifft, so verwenden wir Windows Server 2003. Die Standard-Edition könnte für Ihre Bedürfnisse ausreichen. Die meisten unserer Webserver laufen problemlos mit 2 GB RAM, obwohl wir Millionen von Benutzern haben. Unsere stärker genutzten Server haben 4 GB RAM. Nahezu jede Webanwendung wird auf mindestens 2 identische Server verteilt. Unsere Webanwendungsserver sind meist VMs, aber unsere Datenbankserver sind immer dedizierte Boxen mit unterschiedlichen RAM-Anforderungen. VMs bieten Ihnen nicht die Leistung, die Sie für die Datenbanken benötigen.
Wir verwenden auch hauptsächlich InterBase ( http://www.embarcadero.com/products/interbase/ ) und Blackfish SQL ( http://www.embarcadero.com/products/blackfish_sql/ ) als unsere Datenbanken, aber die meisten MS-zentrierten Unternehmen bevorzugen eine Variante von MS SQL.
Wir haben unsere eigene Überwachungslösung geschrieben, um die Datenbanken, Webantworten und Webdienste zu überwachen, aus denen EDN besteht, aber vielleicht finden Sie etwas wie Nagios ( http://www.nagios.org/ ) für die Überwachung Ihrer Live-Server.
Dann brauchen Sie auch ein Problemverfolgungssystem wie Jira ( http://www.atlassian.com/software/jira/ ) FogBugz ( http://www.fogcreek.com/FogBUGZ/ ), BugZilla ( http://www.bugzilla.org/ ), Trac ( http://trac.edgewall.org/ ), das mit Subversion oder etwas anderem verwendet werden kann. Das EDN-Team verwendet QualityCentral ( http://qc.embarcadero.com ), aber das ist eine hausgemachte Lösung, die anderen nicht zur Verfügung steht.
HTH
Sie benötigen eine Form der Versionskontrolle, die entweder auf einem dieser Desktops (nicht ideal) oder auf einem anderen Server gespeichert werden kann.
Abgesehen davon wird bei einer solchen Entwicklung in der Regel jeder Entwickler die Umgebung auf seinem eigenen Rechner replizieren.
Irgendwann wäre es ideal, diesen Code auf einen Server zu bringen und ihn zu Test- und Validierungszwecken zu erstellen. Dies könnte einer der Desktops sein, wenn Ihnen die Hardware fehlt.
Ich entwickle hauptsächlich ASP.NET mit einem Team in Neuseeland, Kanada, den Vereinigten Staaten von Amerika und Israel, daher habe ich viel Erfahrung mit der effektiven Arbeit in einer Teamumgebung. Basierend auf dieser Erfahrung ist hier meine Liste der "Must Haves" für die Entwicklung im Team:
- Ein Versionskontrollsystem, mit dem Sie mehrere Revisionen von Quellcode speichern und verwalten können. Hierfür verwenden wir Subversion aber jedes anständige VCS sollte ausreichen. Neben dem Quellcode verwenden wir es auch für die gemeinsame Dokumentation und die von unseren Anwendungen verwendeten Werkzeuge und Bibliotheken.
- Ein effektiver Weg, um mit Ihrem Team zu kommunizieren. Aufgrund unserer breiten geografischen Streuung verlassen wir uns stark auf Skype und zwar sowohl in Gruppenchats als auch in Telefonkonferenzen.
- Ein Build-Prozess, der es ermöglicht, alle gemeinsam genutzten Bibliotheken und Anwendungen einfach zu erstellen. Idealerweise sollte dieser Prozess automatisiert werden, wobei die Integrität der Quellen in Ihrem VCS durch geplante Build-Läufe überprüft wird. Es gibt viele Tools, die Sie dabei unterstützen (z.B. MSBuild , NAnt ). Da sich unsere Projekte über viele verschiedene Entwicklungsumgebungen und Sprachen erstrecken (einschließlich Visual Studio, Delphi, Java, PHP), finden wir, dass die Verwendung einer Batch-Datei zur Steuerung dieses Prozesses unseren Bedürfnissen sehr entgegenkommt. Wenn Sie einen testgetriebenen Entwicklungsansatz verwenden (entweder nach TDD oder in einer Variante, die zu Ihrem Entwicklungsstil passt), ist es ebenfalls empfehlenswert, Ihre Unit-Tests während dieses geplanten Build-Prozesses auszuführen.
- Ein System zur Projektverwaltung, Aufgaben- und Problemverfolgung. Wir verwenden derzeit Jira für diese.
- Ein leicht aktualisierbares Repository für den Austausch von Informationen, wie z. B. ein internes Wiki. Wir verwenden dafür ein internes Content-Management-System (das gleiche, das auch für die Embarcadero Entwickler-Netzwerk eigentlich :-)).
Was die Hardware-Anforderungen betrifft, so hängt dies stark von Ihren tatsächlichen Entwicklungsanforderungen und Ihrem Budget ab. Ich würde wahrscheinlich empfehlen, mindestens einen dedizierten Server für Ihr VCS zu haben. Sie könnten diesen wahrscheinlich auch als Ihre Build-Maschine verwenden, obwohl Sie auch dafür einen dedizierten Server benötigen.
Es kann auch wünschenswert sein, einen oder sechs spezielle Testrechner und einen oder mehrere Datenbankserver zu haben, aber je nach Budget können diese Funktionen auch gemeinsam genutzt werden. Die Virtualisierung kann auch ein effektiver Weg sein, um die Hardware-Ausgaben zu minimieren und gleichzeitig eine gute Trennung der Funktionen beizubehalten.
Was Sie beschreiben, klingt nicht nach einem Problem, das durch Hardware gelöst wird, sondern eher durch Kommunikation und definierte Verfahren ( Agile Software-Entwicklung ist eine Methode). Quellcode-Verwaltungssoftware wie z. B. Basar , git , . o Subversion nützlich sein könnte.
- See previous answers
- Weitere Antworten anzeigen