Die Idee finde ich gar nicht schlecht. Habe ein bisschen recherchiert. Ich muss auf den User filtern und ich brauche die Sortierung von neu nach alt. Den User kann ich über den Partition Key abbilden und für die Sortierung nach Timestamp gibts wohl nen Trick:
var rowKey = (DateTime.MaxValue.Ticks - Timestamp.Ticks).ToString("d19")
Scheint auf den ersten Blick genau das abzudecken, was ich benötige. Dank dir!
Verwendetes Datenbanksystem: <Azure SQL>
Hallo zusammen,
meine Cloud App loggt aktuell User Daten, welche auch für den User relevant sind, in eine Azure SQL Table. Hier fallen pro Tag etliche 10k Einträge an. Für meine User sind diese Logs sehr wichtig und sie können diese in einer tabellarischen Ansicht auf der Website einsehen.
Von der Struktur sieht die Tabelle so aus:
ID UserId Timestamp Type Message Exchange
Die Anwendung zieht die Daten, gefiltert nach User, via Entity Framework sortiert von neu nach alt aus der DB. Es sind entsprechend auch Indexe gesetzt, nur leider verschlechtert sich der Index schon nach 1 - 2 Wochen immer wieder, da soviel neue Einträge stattfinden, was letztendlich zu Performance Problemen führt. Manchmal dauern einige Queries 1-5 Minuten.
Ich suche nun nach einem anderen performanteren Ansatz die User Daten zu loggen. Ich hatte an eine Document DB wie Cosmo gedacht. Könnt ihr mir mit den Mitteln die Azure bereitstellt eine gute Alternative raten? Denn ich möchte ja auch einigermaßen kosteneffizient bleiben. Aktuell hätte ich nur die Möglichkeit ne fettere DB bereitzustellen, was nicht gerade günstig ist.
Sehr cool. Erfolgt der Swap automatisch oder durch ein manuelles "approval"?
For the record: Ich hab diesen Anwendungsfall tatsächlich recht gut mittels Git Submodules lösen können. Ein push vom Submodule landet dann im jeweiligen Repo des Services und wird dann nach dem Merge auf den Master automatisch von der GitLab CI Pipeline verarbeitet.
Ich hab eine Haupt-Solution, welche die unterschiedlichen Services zusammenfasst, die per Submodule referenziert sind. Dadurch bin ich in der Lage alle benötigten Services in der Entwicklung gleichzeitig zu starten und zu debuggen. Ziemlich komfortabel.
Einzige Wermutstropfen ist, dass Visual Studios Git Integration damit nicht mehr umgehen kann. Das löse ich über die CommandLine oder GitKraken.
Daher noch mal ein spezieller Dank an WarLorD_XaN
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 😉
Kennen tun sich die Services nicht. Aber für den Entwicklungs-Workflow finde ich es super smart, wenn ich beispielsweise das Frontend, die API und nen Worker-Service zusammen starten kann. Dann lade ich im Frontend eine Datei hoch, die API verarbeitet diese und legt eine Nachricht auf den Service Bus, worauf hin sich der Worker Service die Nachricht greift und ich bin überall in der Lage in diesen Workflow zu debuggen.
Daher stimme ich dir zu, ich will dahin jeden Servcie separat in einem eigenen Repo abzulegen, aber gleichzeitig diesen Entwicklungs-Workflow beibehalten. Wie würdest du sowas konkret lösen?
Danke für den Hinweis. Kann Visual Studio damit denn umgehen und funktioniert die Git Integration dann noch wie gewohnt? Also, dass Visual Studio die commits in die entsprechenden submodule absetzt, wenn ich die Haupt-Solution auf habe?
Folgendes vereinfachtes Szenario: Ich habe mehrere Services in meiner Visual Solution. Dies gibt mir den großen Vorteil mehrere oder alle Services gleichzeitig zu starten und auch zu debuggen.
Nun möchte ich gerne eine CI / CD Pipeline basierend auf GitLab aufbauen, die bei jedem Checkin neue Docker-Images meiner Services baut. Nachteil hier ist, dass mir nun alle Services neu erstellt werden, wobei ich vielleicht nur einen von zehn verändert habe, da sie alle in einer Solution liegen.
Daher meine Frage: Gibt es Ansätze beide Vorteile zu verbinden? Alle Services in einer Solution fürs debugging und gleichzeitig eine CI / CD Pipeline, die nur die geänderten Services erstellt?
Oder soll ich die Webseite direkt ohne Wordpress und co. bereitstellen
Ganz genau so macht man das.
Bzgl. Authentifizierungsmöglichkeit: ASP.NET Identity
Ich bin mir nicht ganz sicher, ob es das ist was du suchst: aber im Grunde ist es doch nichts anderes als das was in der OWIN Pipeline von ASP.NET stattfindet. Du fügst dort die unterschiedlichen Authentication Provider hinzu, wie Google, Facebook oder eben ein AD. So wie in diesem Beispiel: Link