Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
mycsharp.de ist nun auf Azure umgezogen
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

Themenstarter:

mycsharp.de ist nun auf Azure umgezogen

beantworten | zitieren | melden

Hallo zusammen,

wie manche bereits bemerkt haben, haben wir nach unserer Ankündigung vor zwei Wochen am Samstag erfolgreich mycsharp.de auf Azure umgezogen.

Warum Cloud bzw. Azure?

Das Forum war bisher auf einem einzelnen, nicht-redundanten virtuellen Server, den wir selbst warten, sichern, aktualisieren und betreiben mussten.
Wir alle betreiben das Forum aber in der Freizeit und wollen dementsprechend so wenig Zeit wie Möglich in das Management des Forums investieren.

Daher waren wir schon länger damit beschäftigt das Forum technisch so zu verändern, dass es sich auf Azure im Rahmen eines Lift and Shifts einfach migrieren lässt.
Probleme des Forums, die wir gelöst haben, waren:
  • Bisher wurden alle User-Dateien (Attachements, Avatare) direkt im Root der Applikation gespeichert.
    Wir haben das Forum an den gewissen Stellen nun so umgeschrieben, dass diese Dateien auf einem Azure Blob gespeichert werden und nicht mehr direkt in der Applikation selbst.
  • Durch das Auslagern der Dateien konnten wir nun den Quellcode des Forums sauber in Azure DevOps mit einer Quellcodeverwaltung bearbeiten, ohne, dass dann Avatare oder Attachments teil der Quellcodeverwaltung sein müssen
  • Wir können damit das Forum nun in mehreren Stages betreiben (Dev/Test/Prod) bzw. im neueren Sprachgebraucht Deployment Rings.
  • Eine Änderung des Quellcodes ist binnen 30 Sekunden auf unserem Testsystem und binnen 2 Sekunden auf dem Produktivsystem.
    Dank Deployment Slots haben wir dabei keinerlei Downtime.
  • Durch das Auslagen der Dateien auf einen Blob Storage werden diese auch nicht mehr direkt durch die Webanwendung ausgeliefert, sondern durch einen CDN (Content Delivery Network). Daher werdet ihr im Networking des Forums nun auch den Zugriff auf cdn.mycsharp.de sehen.
  • Der CDN cached dabei statische Ressourcen 30 Tage (bisher 2h) und User-Dateien 7 Tage (bisher gar nicht). Dadurch hat der Webserver weniger Last, der Traffic sinkt.
  • Durch die geringere Last des Webservers konnen wir das Forum nun mit geringeren Ressourcen betreiben und Kosten sparen.
  • Nebeneffekt: das Forum ist insgesamt spürbar schneller.

Technisch gesehen basiert das Forum nun auf:
  • Quellcode via Git auf Azure DevOps mit automatischer Build- und Release Pipeline
  • Azure Web Apps mit Deployment Slots und Firewall
  • Azure Managed MySQL inkl. Managed Backups und Firewall
  • Azure Blob Storage als CDN inkl. Managed Snapshots
  • CloudFlare für Zugriffsschutz und zusätzlichem Caching

Wir haben damit eine Basis, die es uns insgesamt vereinfacht langfristig von phpBB ganz weg zu kommen, woran wir parallel bereits arbeiten.

Weitere Anpassungen
  • Die Links in der Navigation wurden aktualisiert bzw. veraltete Links entfernt
  • Die Minicity wurde aus dem Forum entfernt
  • Zugriffe auf statische Dateien auf www.mycsharp.de werden auf den CDN automatisch umgeleitet.

Sollte irgendjemand einen Fehler finden (falsche Verlinkung etc...) bitte Kontakt zum Team aufnehmen.

Besten Dank und viele Grüße
myCSharp.de-Team
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
LaTino
myCSharp.de - Experte

Avatar #avatar-4122.png


Dabei seit:
Beiträge: 3062
Herkunft: Thüringen

beantworten | zitieren | melden

Tolle Arbeit. Muss auch mal gesagt werden.

LaTino
"Furlow, is it always about money?"
"Is there anything else? I mean, how much sex can you have?"
"Don't know. I haven't maxed out yet."
(Furlow & Crichton, Farscape)
private Nachricht | Beiträge des Benutzers
toxic
myCSharp.de - Member



Dabei seit:
Beiträge: 64
Herkunft: Franken ;-)

beantworten | zitieren | melden

Zitat von LaTino
Tolle Arbeit. Muss auch mal gesagt werden.

Und Dankeschön für die Tolle Arbeit!
private Nachricht | Beiträge des Benutzers
t2t
myCSharp.de - Member



Dabei seit:
Beiträge: 436
Herkunft: Hamburg

beantworten | zitieren | melden

Bravo! Super Arbeit. Man könnte meinen ihr habt ein paar erfahrene Berater in euren Reihen, die erfolgreich eine Legacy App ins Jahr 2019 portiert haben ;-)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

Themenstarter:

beantworten | zitieren | melden

So ist das - auch wenn Legacy-Work immer weniger wird; Gott sei Dank :)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Peter Bucher
myCSharp.de - Experte

Avatar #jVxXe7MDBPAimxdX3em3.jpg


Dabei seit:
Beiträge: 6141
Herkunft: Zentralschweiz

beantworten | zitieren | melden

Top Abt! :-)
--
Microsoft MVP - Visual Developer ASP / ASP.NET, Switzerland 2007 - 2011

- https://peterbucher.ch/ - Meine persönliche Seite
- https://fpvspots.net/ - Spots für FPV Dronenflüge
private Nachricht | Beiträge des Benutzers
trib
myCSharp.de - Member



Dabei seit:
Beiträge: 691

beantworten | zitieren | melden

Da kommt man nichts ahnend aus dem Urlaub zurück und stellt fest:
Nix!

So muss ein Umzug laufen! Klasse Arbeit & Danke :)
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

Themenstarter:

beantworten | zitieren | melden

Ich wurde nun ein paar mal angeschrieben, wie wir die Azure DevOps Pipelines konfiguriert haben: sehr simpel.

- Nach einem Build (gegen den master-branch, GitHub Flow) wird automatisch ein Release auf unsere Test WebApp gespielt.
- Sollte dies positiv sein ist der nächste Schritt, dass auf eine Staging WebApp deployed wird. Diese Staging WebApp ist ein Deployment Slot
- Anschließend laufen ein paar Tests gegen die Staging WebApp
- Nun erfolgt ein Slot Swap von Staging auf Production

Mit dem Setup haben wir technisch gesehen drei verschiedene WebApps, die vollständig getrennt laufen und angesprochen werden.
Der Deployment Slot sorgt dafür, dass nach einem Deployment die WebApp wieder läuft und es keinen Cold Start gibt, sobald User drauf zugreifen; zeitgleich sorgt der Slot Swap dafür, dass keiner das Deployment selbst bemerkt (außer wir haben in der App mist gebaut): es gibt keinerlei Downtime.
Ist nichts anderes als zu einem bestimmten Moment die User nicht mehr auf App A sondern auf App B zu leiten - alles "under the hood".

Wird prinzipiell alles in Azure DevOps konfiguriert und sieht dann so aus:
Attachments
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
t2t
myCSharp.de - Member



Dabei seit:
Beiträge: 436
Herkunft: Hamburg

beantworten | zitieren | melden

Sehr cool. Erfolgt der Swap automatisch oder durch ein manuelles "approval"?
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

Themenstarter:

beantworten | zitieren | melden

Automatisch wäre in diesem Fall gefährlich - die bescheidene Forenquellcode-Basis besitzt keinerlei Tests für die Runtime selbst ;-) Erfolgt daher manuell.
Siehst im Bild auch an den Haken vor dem People-Icon.
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
Abt
myCSharp.de - Team

Avatar #avatar-4119.png


Dabei seit:
Beiträge: 16110

Themenstarter:

beantworten | zitieren | melden



Leider sind wir heute morgen in unerwartete Datenbank-Limits gelaufen, weshalb das Forum extrem träge war.

Das Forum lief bisher auf einem Azure MySQL Basic, was prinzipiell mehr Performance hat als unser alter MySQL Server.
Trotzdem hatte dies durch die unerwarteten Wachstumszahlen der Anfragen wohl nicht mehr gerreicht, sodass wir hier in Limits gelaufen sind.
Das Monitoring hatte dazu auch angeschlagen - nur die Reaktionszeit war hier Arbeitsbedingt nicht lang genug.

Da keine automatische Skalierung von Azure MySQL Basic auf Azure MySQL General Purpose möglich ist (leider steht in der Doku nicht wieso), mussten wir erneut manuell die Datenbank migrieren auf das höhere Skalierungsmodell.

Das Forum war daher ca. 3 Stunden schlecht erreichbar (Antwortzeiten zwischen 10 Sekunden und 3 Minuten) und eine Stunde durch die Migration down.

Sorry dafür; Lessons learned ;-)
- performance is a feature -

Microsoft MVP - @Website - @blog - @AzureStuttgart - github.com/BenjaminAbt
private Nachricht | Beiträge des Benutzers
T-Virus
myCSharp.de - Member



Dabei seit:
Beiträge: 1892
Herkunft: Nordhausen, Nörten-Hardenberg

beantworten | zitieren | melden

Kann passieren.
Und einige Stunden werden wir ohne das Forum bestimmt mal auskommen können :)

T-Virus
Developer, Developer, Developer, Developer....

99 little bugs in the code, 99 little bugs. Take one down, patch it around, 117 little bugs in the code.
private Nachricht | Beiträge des Benutzers
Th69
myCSharp.de - Experte

Avatar #avatar-2578.jpg


Dabei seit:
Beiträge: 4136

beantworten | zitieren | melden

Und ich wollte schon einen Bug-Report schreiben, aber es kam dann ein Netzwerkfehler (Timeout) ;-).
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von Th69 am .
private Nachricht | Beiträge des Benutzers
dr4g0n76
myCSharp.de - Experte

Avatar #avatar-1768.jpg


Dabei seit:
Beiträge: 3047
Herkunft: Deutschland

beantworten | zitieren | melden

Auch von mir: ebenfalls danke dafür. :-)
Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.
private Nachricht | Beiträge des Benutzers