Geschrieben

Blog

Notizen aus sieben Jahren Basteln, Bauen und Betreiben: Discord-Bots, Webdienste, Server und ein Minecraft-Netzwerk. Was funktioniert hat, was kaputtgegangen ist und was ich daraus gelernt habe.

26 Beiträge zum Thema „architektur“.

Beiträge

  1. E

    Ein Plugin statt siebenundfünfzig — der Plan hinter DreamCore

    Jeder Minecraft-Versionssprung bedeutet, dutzende fremde Plugins nachzuziehen. Der Plan: möglichst viel davon in ein eigenes zentrales Plugin holen. Was ersetzbar ist — und was Infrastruktur bleibt.

    • minecraft
    • eigenbau
    • architektur
    5 Min. Lesezeit
  2. E

    Eine Rechteverwaltung für fünf Server

    Jeder Server hatte seine eigenen Rechte — oder gar keine. Wie ich sie in einer gemeinsamen Datenbank zusammengeführt habe, ohne einen Bestand zu verlieren.

    • minecraft
    • rechte
    • architektur
    5 Min. Lesezeit
  3. E

    Eine fremde Lizenzprüfung übernehmen, ohne das Plugin anzufassen

    Ein gekauftes Serverpaket prüft seine Lizenz gegen einen Server, den es nicht mehr gibt. Wie die Prüfung auf die eigene Infrastruktur umgezogen ist — mit einer geänderten Zeile statt eines Eingriffs ins Plugin.

    • lizenzen
    • minecraft
    • architektur
    5 Min. Lesezeit
  4. W

    Warum eine Datenbank für drei Prozesse reicht

    Bot, Dashboard und Verwaltung hatten am Ende drei getrennte Datenbestände — historisch gewachsen, nie beabsichtigt. Wie ich sie zusammengeführt habe und woran man merkt, dass etwas auseinanderläuft.

    • datenbank
    • architektur
    • betrieb
    5 Min. Lesezeit
  5. D

    Der Blog zieht von MDX-Dateien in die Datenbank

    Zwei Jahre lagen die Beiträge als Dateien im Repository. Warum ich sie in die Datenbank verschoben habe, was dabei gleich bleiben musste — und was ich mir damit eingehandelt habe.

    • web
    • architektur
    • blog
    5 Min. Lesezeit
  6. L

    Lizenzverwaltung mit Prüfspur

    Schlüssel sperren, entsperren, Gerätebindung zurücksetzen, Laufzeit verlängern. Jede dieser Aktionen greift in etwas ein, für das jemand bezahlt hat — und gehört deshalb protokolliert.

    • lizenzen
    • architektur
    • sicherheit
    5 Min. Lesezeit
  7. R

    Rate-Limits dürfen fail-open sein — Auth nicht

    Wie ich Begrenzungen tatsächlich umgesetzt habe: Token-Bucket, gleitendes Fenster, Zähler mit Ablauf — und was passiert, wenn der Speicher dahinter ausfällt.

    • sicherheit
    • architektur
    • meinung
    5 Min. Lesezeit
  8. O

    OAuth-Token verschlüsseln, bevor jemand danach fragt

    Wer sich über Discord anmeldet, hinterlässt bei mir ein Zugriffstoken. Was damit möglich wäre, wie ich es verschlüssele — und der Fehler, den ich dabei jahrelang im Code hatte.

    • sicherheit
    • yurna
    • architektur
    5 Min. Lesezeit
  9. P

    prisma db push statt Migrationen — bewusst

    Migrationsdateien gelten als der professionelle Weg. Ich habe mich für den direkten Schemaabgleich entschieden, und zwar mit Gründen — inklusive der Einschränkungen, die man dabei akzeptiert.

    • datenbank
    • architektur
    • werkzeuge
    5 Min. Lesezeit
  10. F

    fail-closed als Grundhaltung

    Wenn eine Prüfung nicht durchgeführt werden kann — verweigern oder durchlassen? Die Antwort hängt davon ab, was schiefgeht, und die Unterscheidung ist eine der nützlichsten, die ich kenne.

    • sicherheit
    • architektur
    • meinung
    5 Min. Lesezeit
  11. G

    Geheimnisse gehören nicht dauerhaft in die .env

    Eine .env-Datei löst das Problem „Zugangsdaten im Code“. Sie löst nicht das Problem „Zugangsdaten im Klartext auf der Platte“. Wie ich Runtime-Zugangsdaten verschlüsselt in die Datenbank verlegt habe.

    • sicherheit
    • architektur
    • betrieb
    5 Min. Lesezeit
  12. D

    Drei Prozesse, eine Datenbank

    Bot, Dashboard und Verwaltung laufen getrennt und sprechen nie direkt miteinander. Warum diese Architektur für ein Ein-Personen-Projekt genau richtig ist — und wo ihre Grenzen liegen.

    • yurna
    • architektur
    • betrieb
    5 Min. Lesezeit
  13. D

    Die Admin-API wird eigenständig

    Wenn der Bot abstürzt, soll man trotzdem nachsehen und steuern können. Warum ich die Verwaltung vom laufenden Discord-Client entkoppelt habe — und wie Befehle an einen abwesenden Bot funktionieren.

    • yurna
    • architektur
    • api
    5 Min. Lesezeit
  14. V

    Von Postgres nach SQLite — der unpopuläre Umzug

    Fast alle Wege führen von SQLite zu Postgres. Ich bin den umgekehrten gegangen, aus Gründen, die mit Last nichts zu tun haben — und würde es wieder tun.

    • datenbank
    • architektur
    • yurna
    5 Min. Lesezeit
  15. R

    Redis optional machen war die beste Entscheidung des Jahres

    Zwischenspeicher, Sitzungen, Sperren, Rate-Limits — alles lief über Redis. Bis ich gemerkt habe, dass ein zusätzlicher Pflichtdienst für Selbstbetreiber eine echte Hürde ist.

    • architektur
    • leistung
    • betrieb
    5 Min. Lesezeit
  16. D

    Directus kam und ging

    Ein fertiges Content-System für Texte, Bilder und Ankündigungen. Ein halbes Jahr später war es wieder draußen. Was der Umweg gekostet und was er gebracht hat.

    • web
    • cms
    • architektur
    5 Min. Lesezeit
  17. L

    Lizenzschlüssel selbst bauen — und was daran heikel ist

    Ein Schlüssel im Format BLACK-XXXXX-ZACK-XXXXX-XXXXX, eine Prüfung, ein Gerätebezug. Wie ich ein Lizenzsystem gebaut habe und warum der schwierigste Teil nicht die Kryptografie ist.

    • lizenzen
    • sicherheit
    • architektur
    5 Min. Lesezeit
  18. T

    Ticket-System v2: Transkripte, Kategorien, Automatik

    Aus einem Knopf, der einen Kanal erzeugt, wurde ein System mit Abschriften, Bewertungen, Notizen und Regeln. Der größte Einzelbrocken des Jahres — und die Fragen, die dabei nicht technisch waren.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  19. P

    Postgres für einen Bot war eine Nummer zu groß

    Ich hatte eine ausgewachsene Datenbank für ein System mit überschaubarer Last. Was das gekostet hat, was es gebracht hat — und warum die Entscheidung trotzdem erst später fiel.

    • yurna
    • datenbank
    • architektur
    5 Min. Lesezeit
  20. R

    Reaction Roles und die Tücke der Events

    Auf ein Emoji klicken, eine Rolle bekommen. Das einfachste Feature überhaupt — bis man merkt, dass Discord Ereignisse für alte Nachrichten gar nicht erst liefert.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  21. M

    Mehrsprachigkeit von Anfang an wäre billiger gewesen

    Über hundert Befehle mit Texten mitten im Code, dazu Zahlen, Daten und Pluralformen. Was das Nachrüsten von zwei Sprachen tatsächlich gekostet hat.

    • yurna
    • i18n
    • architektur
    5 Min. Lesezeit
  22. M

    Monorepo oder nicht — ich habe mich falsch entschieden und dann richtig

    Bot, Dashboard und gemeinsamer Code lagen in drei Repositories. Jede Änderung an geteilten Funktionen war eine Kopieraktion. Wie ich das zusammengelegt habe und was dabei schiefging.

    • architektur
    • werkzeuge
    • yurna
    5 Min. Lesezeit
  23. D

    Das erste Ticket-System — und warum ich es zweimal gebaut habe

    Ein Knopf, ein Kanal, ein Gespräch. Die erste Fassung hat sechs Wochen gehalten, dann kamen die Fragen, die ich nicht bedacht hatte: Verlauf, Kategorien, Rechte, Löschen.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  24. G

    Giveaways sind schwerer, als sie aussehen

    Eine Verlosung ist ein Zeitgeber, eine Teilnehmerliste und ein Zufallsgriff. Klingt nach einer Stunde Arbeit — und ist der Befehl, der mich am meisten über Zustand, Neustarts und Fairness gelehrt hat.

    • yurna
    • discord
    • architektur
    5 Min. Lesezeit
  25. V

    Von JSON-Dateien zu einer richtigen Datenbank

    Zwei beschädigte Dateien, ein verlorener Punktestand und die Frage, warum eigentlich alle Datenbanken benutzen. Der Umzug von JSON auf MySQL — mit allem, was ich dabei zum ersten Mal verstanden habe.

    • yurna
    • datenbank
    • architektur
    6 Min. Lesezeit
  26. V

    Vom if-Wald zum Command-Handler

    Wie aus einer 400-Zeilen-Verzweigung ein System aus einzelnen Dateien wurde — und warum diese Umstellung die wichtigste des ganzen Jahres war.

    • yurna
    • javascript
    • architektur
    5 Min. Lesezeit