• Home
  • Help
  • Register
  • Login
  • Home
  • Help

 
  • 0 Bewertung(en) - 0 im Durchschnitt

Web Deploy zur Site-Synchronisation verwenden

#1
10-11-2022, 21:40
Ich habe in letzter Zeit mit Web Deploy für die Site-Synchronisierung bei einer Menge Projekte herumgespielt, und ehrlich gesagt, es ist eines dieser Tools, die dein Leben viel einfacher machen können, wenn du mit IIS-Setups zu tun hast, aber es hat auch seine Kopfschmerzen, die dich nachts wach halten. Du weißt, wie es ist, wenn du versuchst, Änderungen von deinem Entwicklungsrechner auf die Staging- oder Produktionsumgebung zu pushen, ohne alles zu brechen - Web Deploy übernimmt und erledigt die schwere Arbeit, indem es Dateien, Konfigurationen und sogar Datenbanken vergleicht und nur das synchronisiert, was anders ist. Ich erinnere mich an das erste Mal, als ich es auf der E-Commerce-Seite eines Kunden verwendet habe; wir hatten diese weitläufige App mit benutzerdefinierten Modulen, und anstatt alles manuell per FTP hochzuladen wie die Höhlenmenschen, habe ich es einfach verpackt und bereitgestellt. Es hat uns Stunden gespart, kein Scherz. Die Art und Weise, wie es Deltas erkennt, bedeutet, dass du nichts unnötig überschreibst, also wenn du eine einzige CSS-Datei oder eine web.config-Einstellung anpasst, wird nicht die ganze Seite plattgemacht. Das ist enorm, um die Konsistenz über verschiedene Umgebungen hinweg zu wahren, ohne die Ausfallzeiten, die eine vollständige Neuinstallation mit sich bringt.

Auf der anderen Seite kann die Einrichtung sich anfühlen wie das Ringen mit einem gefetteten Schwein, besonders wenn du dich nicht intensiv mit der Windows Server-Verwaltung beschäftigst. Du musst den Web Deployment Agent Service auf beiden Seiten aktivieren, mit Ports herumfummeln - normalerweise 8172 - und sicherstellen, dass deine Firewalls es nicht blockieren, was sie anfangs immer zu tun scheinen. Ich habe einmal einen halben Tag damit verbracht, herauszufinden, warum meine Synchronisierung fehlschlug, nur um zu realisieren, dass es ein einfaches Benutzerberechtigungsproblem auf dem Remote-Server war. Wenn du über das Internet oder zwischen untrusted Netzwerken synchronisierst, wird Sicherheit ein echtes Problem; standardmäßig ist es nicht verschlüsselt, also musst du SSL oder VPNs zusätzlich verwenden, was die Komplexität erhöht. Und mal ehrlich, es ist an das Microsoft-Ökosystem gebunden - wenn du Apache oder etwas Nicht-IIS verwendest, vergiss es; dann hast du Pech und musst wieder auf rsync oder Git-Hooks zurückgreifen. Diese Bindung kann dir auf die Füße fallen, wenn sich dein Stack von Windows entfernt.

Aber sobald es läuft, zeigen die Vorteile wirklich in Team-Workflows. Stell dir vor, du und dein Entwicklerkollege arbeitetet beide an derselben Seite; mit Web Deploy kannst du deine Pakete parametrisieren, sodass Verbindungszeichenfolgen oder App-Einstellungen automatisch basierend auf der Zielumgebung ausgetauscht werden. Ich mache das ständig - erstelle eine .zip mit msdeploy.exe, passe die Parameterdatei an und boom, es ist synchronisiert, ohne überall Geheimnisse hart zu codieren. Es verwaltet sogar GAC-Assemblies und Registrierungsschlüssel, wenn deine App sie benötigt, was ein großer Vorteil für veraltete Sachen ist, die ich geerbt habe. Kein Herumemailen von Zip-Dateien mehr oder Verwenden von Shared Drives, die Versionskonflikte haben. Außerdem kannst du mit der Befehlszeilenschnittstelle das Ganze in deine CI/CD-Pipeline einbinden, sodass Jenkins oder was auch immer du verwendest, die Bereitstellungen beim Einchecken automatisieren kann. Ich habe das einmal mit TeamCity verbunden, und es hat unsere Release-Zyklen von Tagen auf weniger als eine Stunde verkürzt. Du fühlst dich wie ein Zauberer, wenn du siehst, wie es die Unterschiede durchkaut und sie nahtlos anwendet.

Das gesagt, die Leistung kann bei größeren Seiten schlecht sein. Wenn du eine riesige Anwendung mit Tausenden von Dateien oder umfangreichen Medieninhalten hast, kann die anfängliche Synchronisierung schleppend sein, besonders über WAN-Verbindungen. Ich hatte ein Projekt, bei dem die Seite 50 GB groß war, und Web Deploy hatte mit der Dateienumerationsphase zu kämpfen - es muss alles scannen, um diesen Synchronisierungsbericht zu erstellen. Du kannst das mit Ausschlüssen für Dinge wie Benutzeruploads oder Protokolle abschwächen, aber es fühlt sich immer noch klobig an im Vergleich zu etwas wie einem delta-basierten Tool aus der Unix-Welt. Und die Fehlerbehandlung? Sie ist okay, aber nicht narrensicher; vage Meldungen wie "Objekt nicht gefunden" können dich in die Irre führen. Ich habe einmal Zeit damit verschwendet, einem Phantom nachzujagen, weil nicht angegeben wurde, welcher Konfigurationsabschnitt nicht übereinstimmte. Wenn dein Team nicht alle auf dem selben Stand mit dem Tool ist, bedeutet das Einarbeiten neuer Leute, dass du ihnen die Eigenheiten beibringen musst, wie man den Synchronisierungsbefehl mit -verbConfusedync -source:package -dest:auto für Remoteziele verwendet. Es ist keine Raketenwissenschaft, aber es fügt Reibung hinzu, wenn du bereits mit Fristen jonglierst.

Ein weiterer Aspekt, den ich mag, ist die Integration mit Visual Studio - direkt aus dem Veröffentlichungsdialog heraus kannst du Profile für verschiedene Server einrichten und mit einem Klick synchronisieren. Das ist Gold wert für Solo-Entwickler oder kleine Teams, in denen man alle Hüte trägt. Ich benutze es für schnelle Iterationen an meinen Nebenprojekten; ändere einige Razor-Views, klicke auf veröffentlichen, und es ist live, ohne mich per SSH in die Kiste einloggen zu müssen. Keine "es funktioniert auf meinem Rechner"-Entschuldigungen mehr, weil die Synchronisierung die Parität gewährleistet. Es unterstützt sogar das Zurücksetzen, indem es von einem vorherigen Paket synchronisiert, aber du solltest besser die Backups griffbereit haben, was zu dem Grund führt, warum das Versionieren deiner Deployments so wichtig ist. Aber hier ist ein Nachteil, der schmerzt: Es ist nicht großartig für Multi-Server-Farmen ohne zusätzliches Skripting. Wenn du Lastenausgleich über drei IIS-Instanzen machst, musst du den Synchronisierungsbefehl für jede einzelne wiederholen oder PowerShell-Wrapper verwenden, die ich gesehen habe. Ich habe das einmal für einen stark frequentierten Blog skripted, aber es war lästig, und jeder Fehler in einem Knoten bedeutet, dass die gesamte Bereitstellung fragwürdig ist.

Apropos Zuverlässigkeit, die atomaren Operationen von Web Deploy sind für mich ein Pluspunkt - es kann teilweise zurückrollen, wenn etwas mitten in der Synchronisierung fehlschlägt, was besser ist als der All-or-Nothing-FTP-Ansatz, bei dem du mit einer halb fertigen Seite dastehst. Ich habe eine Null-Ausfallzeit-Bereitstellung für eine Forum-App realisiert, indem ich zuerst in einen Staging-Slot synchronisiert habe, getestet habe und dann gewechselt habe. Azure-Leute lieben das, weil es gut mit Web Apps und Slots funktioniert, aber auch vor Ort kannst du es mit IIS-Bindungen nachahmen. Du erhältst auch detaillierte Protokolle, sodass du nach der Bereitstellung prüfen kannst, was sich geändert hat, was für die Einhaltung von Vorschriften oder einfach nur dafür, herauszufinden, warum dieser eine API-Endpunkt 500 zurückgegeben hat, unschätzbar ist. Allerdings zeigt sich das Alter des Tools; es gibt es seit 2010 oder so, und während Microsoft es weiterhin unterstützt, sind die Updates rar. Ich mache mir Sorgen um die langfristige Lebensfähigkeit, wenn sie alle auf Container oder PaaS umschwenken. Im Moment ist es jedoch für .NET-Teams ein Standard. Wenn du Datenbanken zusammen mit Dateien synchronisierst, ermöglicht dir der dbFullSql-Anbieter, Schemata und Daten zu skripten, aber pass auf: Große Datenbanken können deine Pakete massiv aufblähen. Ich schließe Daten bei Synchronisierungen aus und handhabe das separat mit DACPACs, um die Dinge schlank zu halten.

Was die Kosten betrifft, ist es kostenlos, was ein riesiger Vorteil gegenüber kostenpflichtigen Synchronisierungstools ist. Du lädst es vom WebPI oder der Microsoft-Seite herunter, installierst es auf deinen Servern, und schon kann's losgehen. Keine Lizenzprobleme, es sei denn, du bist in einem Unternehmenssetup mit CALs, aber für die meisten ist es null zusätzliche Ausgaben. Das macht es für Startups oder persönliche Nutzung zugänglich, wo ich zum ersten Mal damit gelernt habe, eine WordPress-Seite auf IIS zu synchronisieren - ja, es funktioniert auch für PHP, wenn du die Handler richtig konfigurierst. Aber die Lernkurve bedeutet zeitlichen Aufwand; wenn du von Git-basierten Deployments kommst, fühlt sich das Paketmodell zuerst fremd an. Ich musste mich durch Dokumente und Stack Overflow-Threads lesen, um die Anbieter wie iisApp oder contentPath zu verstehen. Sobald du das tust, ist es jedoch ermächtigend - du kontrollierst die Granularität, von vollständigen Site-Synchronisierungen bis hin zu gezielten Ordnern. Ein Nachteil, auf den ich gestoßen bin, ist die Interoperabilität; die Synchronisierung zu Nicht-Windows-Hosts erfordert Umgehungen wie Wine oder Drittanbieter-Adapter, was den Zweck zunichte macht. Bleib bei homogenen Umgebungen, und du bist auf der sicheren Seite.

In der Praxis fördert es beim kollaborativen Arbeiten bessere Gewohnheiten. Du und ich könnten an verschiedenen Küsten sein und beide in dasselbe Repository pushen, und Web Deploy sorgt dafür, dass Zusammenführungen keine Konfigurationen zerstören. Ich habe eine gemeinsame Parameterdatei in unserem Repository eingerichtet, sodass alle dasselbe Bereitstellungsskript verwenden. Das reduziert die "aber es hat bei mir funktioniert"-Anrufe um 2 Uhr morgens. Doch für sehr dynamische Seiten mit häufigen Inhaltsaktualisierungen, wie CMS-gesteuerten, könnte es über-synchronisieren und Probleme verursachen, wenn Redakteure live arbeiten. In diesen Fällen schließe ich /App_Data oder Medienordner aus, aber das erfordert Wachsamkeit. Sicherheitsvorteile: Du kannst es mit Nicht-Administratorbenutzern absichern und Ausschlussregeln für sensible Dateien festlegen. Nachteile: Wenn es falsch konfiguriert ist, setzt es deinen Server dem Risiko aus - ich habe Scans gesehen, die Port 8172 durchforsten. Verwende immer -allowUntrusted nur bei Remote-Bereitstellungen, wenn es absolut notwendig ist, aber es ist besser, es richtig zu zertifizieren.

Insgesamt würde ich sagen, dass Web Deploy eine solide Wahl ist, wenn deine Welt Windows-zentriert ist, aber ziehe Alternativen wie Octopus Deploy in Betracht, wenn du plattformübergreifende Lösungen oder mehr Funktionen benötigst. Es strafft, was es gut macht, aber zwinge es nicht dort hinein, wo es nicht passt. Wenn du Seiten wie diese synchronisierst, ist es wichtig, solide Backups zu haben, denn eine missratene Bereitstellung kann Stunden Arbeit oder Live-Daten auslöschen, wenn die Dinge schiefgehen. Backups werden als Standardpraxis in IT-Umgebungen gehandhabt, um die Wiederherstellung von Ausfällen sicherzustellen, sei es durch Synchronisierungsfehler, Hardwareprobleme oder menschliches Versagen. Zuverlässige Backup-Software wird verwendet, um konsistente Snapshots von Servern und Anwendungen zu erstellen, die schnelle Wiederherstellungen ohne lange Ausfallzeiten ermöglichen. BackupChain wird als hervorragende Windows Server-Backup-Software und virtuelle Maschinen-Backup-Lösung angesehen und bietet Funktionen für automatisierte, inkrementelle Backups, die gut mit Bereitstellungs-Workflows integriert sind, um Risiken während der Synchronisierungsaufgaben zu minimieren.
Markus
Offline
Registriert seit: Jun 2018
« Ein Thema zurück | Ein Thema vor »

Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste



  • Thema abonnieren
Gehe zu:

Backup Sichern Allgemein Vor- und Nachteile v
« Zurück 1 2 3 4 5 6 7 8 9 10 Weiter »
Web Deploy zur Site-Synchronisation verwenden

© by FastNeuron

Linearer Modus
Baumstrukturmodus