API First - Was ist das?
8:29
8 ай бұрын
Пікірлер
@FilmfanOliver1992
@FilmfanOliver1992 5 күн бұрын
Ihr solltet Vorlesungen für IT-Studenten halten. So wichtiges Zeugs wird meist nicht vermittelt.
@PsytekkLala
@PsytekkLala 6 күн бұрын
Danke für das Video. Sehr gut erklärt. Was mich bei 11:10 etwas irritiert. Es wird angegeben, dass der User Admin ist. Wenn ein Mitarbeiter, welcher einen normalen Token (bsp, Admin false oder Groups = "Mitarbeiter") hat, könnte den Eintrag von false auf true setzen oder als Gruppe Admin hinzufügen. Den manipulierten Token könnte man dann in die Session schreiben und dieser würde dann bei der nächsten Anfrage mitgegeben. Dies wäre dan ein ziemliches Sicherheitsrisiko.
@TPolley
@TPolley 5 күн бұрын
Genau. Die Payload könnte er beliebig modifizieren. Allerdings passt dann die Signatur nicht mehr zum Inhalt (Header+Payload). Wenn das modifizierte Token dann ans Zielsystem geschickt wird, schlägt die Validierung der Signatur fehl. Die Signatur könnte man natürlich auch ersetzen. Um das korrekt zu machen, müsste der Mitarbeiter dann allerdings das Geheimnis kennen. - Und das tut er hoffentlich nicht. (Der Fall 'Geheimnis erraten' wird ja auch im Video diskutiert. Geht natürlich auch. Allerdings werden bei guten Geheimnissen sehr sehr sehr sehr viele Rateversuche benötigt, sodass dieser Angriff eher theoretischer Natur ist.) Wenn man Sorge hat, ob die Signatur am Zielsystem korrekt validiert wird (zum Beispiel, weil es sehr sehr viele Zielsysteme gibt), empfiehlt es sich, ein API Gateway vor das Zielsystem zu hängen. Alle HTTP Requests müssen dann durch den durch, bevor sie ans Zielsystem dürfen. Im API Gateway kann man dann die Logik 'wenn Token am Request, validiere Signatur' realisieren. (Full Disclosure: Wir geben als open source Projekt Membrane API Gateway heraus: www.membrane-api.io/ )
@yasinicdeniz9617
@yasinicdeniz9617 24 күн бұрын
Genial erklärt. Ich habe es immer noch nicht geschafft eine Schulung zu buchen, steht aber auf der Agenda.
@frueskens
@frueskens Ай бұрын
Wieder alles sehr gut erklärt - Danke👋
@ronaldgarciavazquez8232
@ronaldgarciavazquez8232 Ай бұрын
Thank you so much, I´m sorry for my English, I´m from Bolivia and speak Spanish.. I´m happy fpr my with your video explain, grettings.
@predic8
@predic8 Ай бұрын
Thanks for the comment. Hope the subtitles weren't to bad.
@SezginRuhi
@SezginRuhi Ай бұрын
Danke
@ericzoona_6098
@ericzoona_6098 Ай бұрын
Bomben Video, die anderen Kommentare fassen es wirklich gut zusammen, sehr stark.
@predic8
@predic8 Ай бұрын
Danke für den Kommentar und das Feedback
@DerBarde2012
@DerBarde2012 Ай бұрын
Open Soße leggah ^^
@florianfeilmeier1017
@florianfeilmeier1017 Ай бұрын
Dieses Erklärvideos sind immer genial verständlich aufbereitet. Ich würde aber immer mit eigenen Datenbanken pro Mandant arbeiten, aus folgenden Gründen: 1. ist es kein Problem in K8s einen ganzen Datenbankserver zu hosten (z.B. MariaDb Galera) und dann pro Kunde eine eigene Datenbank bereitstellen. Das braucht kaum mehr Ressourcen als anders. 2. so kann man viel besser horizontal skalieren, indem man nach und nach weitere Datenbankserver hinzufügt. 3. können Kunden unterschiedliche Microservice- bzw. Software-Versionen nutzen mit dementsprechend unterschiedlicher Datenbankstruktur. Mit eigenem Proxy (z.B. Yarp) ist das einfach möglich, und die Microservices unterschiedlicher Versionen können trotzdem ge-shared und auch repliziert werden. 4. ist es so viel sicherer, denn es kann nicht zu Bugs kommen, die verursachen, dass aufgrund eines fehlerhaften SQL Statements Kunden auf einmal die Daten von anderen sehen. Zusätzlich könnte man das dann sogar noch mit jeweils eigenem Datenbank Benutzer absichern. 4.1 die SQL Statements sind mit eigenen Datenbanken viel simpler 5. Eine gemeinsame Datenbank benötigt man trotzdem. Darin sind aber nur Accountdaten, -tokens etc. verwaltet. Eine Hauptdatenbank quasi. Jeder Mandant hat dann aber für die eigentliche App Domain eine eigene Datenbank mit eigener Datenbankstruktur und eigenem Sicherheitsscope. Hetzner Cloud, 3 Controlplanes, 9 Worker, Talos Linux für K8s, < 200€ monatlich locker bei 100 Kunden. Lass uns gerne mal debattieren ;)
@XMediasatWesel
@XMediasatWesel Ай бұрын
Tolle Erklärung
@sennlich
@sennlich 2 ай бұрын
wenn der Kund mehr zahlen muss unterm Strich wird schwierig!!!!
@Vue-F
@Vue-F 2 ай бұрын
Verdammt gut erklärt.
@115599884422
@115599884422 2 ай бұрын
Sauber erklärt! Ich habe unsere Geschichte an vielen Stellen in deiner Story wiedergefunden. Ich frage mich nur, wo plötzlich die Security Abteilung hin ist :D, bei uns ist sie weiterhin eine große Bremse. Wir haben uns letztendlich dazu entschieden, die Datenbanken pro Mandant zu isolieren, sie aber auf einem geteilten Cluster (Server) laufen zu lassen. Eine Datenisolation ist damit gegeben, das noisy neighbor Problem ist aber noch da. Das war für uns ein guter Kompromiss.
@thomas-bayer
@thomas-bayer 2 ай бұрын
Danke für den Erfahrungsbericht. Die Security Abteilung hat eine wichtige Rolle und liefert oft ein Framework, mit welchem Risiken und Massnahmen abgewogen werden können. Davon hängt dann ab, was im Einzelfall möglich ist.
@cgsman1
@cgsman1 2 ай бұрын
Das hast Du toll und umfassend, lebendig und praxisnah erklärt - Klasse! Eine Frage hätte ich noch zu den Tokens: durch gefälschte Tokens wäre es ja möglich, in die fremden Datenbanken hineinzukommen. Wie begegnet man diesen Problem in der Praxis?
@ragilo13
@ragilo13 2 ай бұрын
Wie willst du ein Token fälschen wenn der signiert wird? Da müsste ja der Angriffsvektor bei dem "Token Service" sein.
@cgsman1
@cgsman1 2 ай бұрын
Vielleicht stelle ich mir das zu einfach vor: Aber es gibt ja die Angriffe mit "geklauten" token - zumindest in der PHP-Welt. (Und ich sage auch nicht, dass hier ein Problem liegen MUSS - deswegen frage ich ja!).@@ragilo13
@ragilo13
@ragilo13 2 ай бұрын
@@cgsman1 Meiner Meinung bzw Wissens nach besteht kein Problem, wenn der "Token Service" sauber implementiert ist. Kommt ja auch drauf an, welche Art von Tokens man verwendet. Alles hat wie immer Vor und Nachteile. Eine Sicherheitslücke in der Authentifizierung führt, aber quasi "immer" zu nem Desaster. Zumindest wenn man nicht On-Prem airgapped ist.
@marcom.
@marcom. 2 ай бұрын
Richtig gut gemacht - guter Content. Danke und weiter so.
@thomas-bayer
@thomas-bayer 2 ай бұрын
Danke für die Motivation
@fahrican9708
@fahrican9708 2 ай бұрын
super video!
@sutozsuzsa
@sutozsuzsa 2 ай бұрын
Süß ❤, nicht nur die Kekse!
@RandomDude-ux3gh
@RandomDude-ux3gh 3 ай бұрын
Eure Fruitshop API Funktioniert nicht :) Wann läuft die wieder ?
@thomas-bayer
@thomas-bayer 3 ай бұрын
Danke für den Hinweis. Die API sollte verfügbar sein. Gab es eine Fehlermeldung oder ein Timeout?
@RandomDude-ux3gh
@RandomDude-ux3gh 3 ай бұрын
Eure Fruitshop API funktioniert nicht :)
@predic8
@predic8 3 ай бұрын
Danke für den Hinweis. Die API sollte verfügbar sein. Gab es eine Fehlermeldung oder ein Timeout?
@RandomDude-ux3gh
@RandomDude-ux3gh 3 ай бұрын
@@predic8 einen CORS Fehler für post delete und put anfragen get funktionierte
@predic8
@predic8 3 ай бұрын
Ausserhalb vom Browser sollte es funktionieren. Im Browser eigentlich auch, da der "Access-Control-Allow-Origin: *"-Header gesetzt ist. In letzter Zeit gab es aber trotzdem Probleme im Browser. Vielleicht wurden die Anforderungen wieder verschärft. Ich schaue mir das Mal an.
@MrVoosle
@MrVoosle 3 ай бұрын
Bitte darauf achten, das die Schaubilder länger gezeigt werden. Oft wurde nach Veränderung des Schaubildes sofort auf den Sprecher umgeschwenkt, so das der Zuschauer die Änderung im Schaubild kaum verfassen konnte.
@thomas-bayer
@thomas-bayer 3 ай бұрын
Danke für den Hinweis. Ich werde das im nächsten Video berücksichtigen.
@Karl-Klammer
@Karl-Klammer 3 ай бұрын
super Veranschaulichung, vielen Dank dafür! Als es ums Thema Schichten-Trennung ging, fiel mir direkt ArchUnit ein -- umso besser, dass es direkt integriert ist. Inwieweit sich der "magische Ansatz" von Spring hier anbietet oder ein eigener Ansatz, wird sich zeigen. Meistens liegt die Wahrheit ja irgendwo in der Mitte ;-)
@thomas-bayer
@thomas-bayer 3 ай бұрын
Danke für deinen Kommentar.
@marcom.
@marcom. 3 ай бұрын
Hallo Thomas, danke für diese Einführung. So sehr ich auch die Intention von Spring Modulith begrüße, bin ich doch irgendwie sehr am zweifeln, ob dieser Ansatz weit genug greift. Meine Hauptkritik ist, dass die Modularisierung ausschließlich "gedanklich" vorhanden ist. Es werden keinerlei höherwertige Modulkonzepte verwendet, die schon zur Entwicklungszeit greifen und zum Teil deutlich strenger und mächtiger sind. Es werden keine Java Modules verwendet. Außerdem haben wir keine getrennten Maven-Module und keine getrennten Repositories. Für die Entwickler ist es also weiterhin ein großer Code-Monolith, wo sich alle gleichzeitig mit ihren Änderungen, Abhängigkeiten und Commits in die Quere kommen. Das Konzept klingt auch nicht so, als ob es gut geeignet ist, wenn man nachträglich einen Modulithen zu echten Microservices umbauen möchte. Das geht los mit der Unterscheidung zwischen interner und externer Events - wobei das immerhin schon gut ist, dass beides möglich ist. Ich vermisse aber einen allgemeinen Ansatz von Commands und Queries, wenn ich die APIs anderer Module aufrufen will. Und dann ist da noch das große Problem des gemeinsamen Applikationskontextes. Connection Pools, Caches, Transaktionen - das alles ist vermutlich modulübergreifend und kann natürlich entsprechende Seiteneffekte bewusst oder unbewusst hervorrufen. Insofern stellt sich mir die Frage nach dem wirklich Ziel von Spring Modulith. Ja, es unterstützt sicherlich die saubere Strukturierung einer Spring-Boot-Anwendung, aber aus meiner Sicht geht es längst nicht weit genug, um als Vorstufe echter Microservices zu dienen - in dem Sinne, dass man später jederzeit einzelne oder mehrere Module in autarke Services ausgliedern kann.
@thomas-bayer
@thomas-bayer 3 ай бұрын
Hallo Marcom, danke für deine Kritik an Spring Modulith und die Diskussionspunkte. Ich frage mich auch, wo Java- oder Maven Module vielleicht besser passen. OSGi hätte noch eine Alternative sein können, die viele Probleme ganz gut gelöst hätte. Leider hat sich OSGi aber nicht so verbreitet. Das mit dem späteren Ausgliedern ist meiner Meinung nach mehr ein Argument als eine Eigenschaft.
@marcom.
@marcom. 3 ай бұрын
@@thomas-bayer Hallo Thomas, ich habe vor ca. 3 Jahren mal an einem Spring-Boot-Projekt teilgenommen, wo wir für jeden Bounded Context zwei eigene Maven-Module erstellt haben: Eines für die Implementierung und eines für die öffentliche API. Jedes dieser Module hatte auch sein eigenes git-Repo. Java Modules waren damals nicht im Fokus, kann also nicht sagen, ob man den Ansatz sinnvoll nutzen könnte. Was wir aber gemacht haben: Jeder Bounded Context hatte seine eigene SubApplication mit eigenem Spring Context. Die Module wurden dann durch eine Spring Boot Application zusammengefasst. Kommunikation fand nur über die APIs statt, wobei die APIs letztlich aus Commands, Queries und Events bestanden. Ich denke Du verstehst, wohin die Reise da geht. Ist natürlich ein viel komplexeres Setup, aber gerade hier würde einem ein entsprechen vorgefertigtes "Modulith-Framework" viel Arbeit abnehmen könnnen.
@thomas-bayer
@thomas-bayer 3 ай бұрын
​@@marcom. danke für die Beschreibung. Ich hoffe, dass Spring Modulith dazu beiträgt, dass mehr in Modularisierung investiert wird. Die Techniken dafür sind wie du beschreibst alle schon da. Die Maven-Module, SOLID-Prinzipien, Frameworks, ...
@odrotbohm
@odrotbohm 3 ай бұрын
Danke für das Feedback. Grundsätzlich ist zu sagen, dass Spring Modulith keine Entweder-Oder-Alternative zu anderen Modulansätzen ist. Zum Einen ist das Featurespektrum von Spring Modulith *komplett* auf Applikationsentwickler zugeschnitten. Zum Anderen "fehlen" den von dir genannten Alternativen Features wie die Testintegration, die Dokumentation usw. völlig, und haben einen deutlich technischeren Fokus (JPMS: 1:1 Beziehung zwischen Modul & JAR usw.). Wichtig ist eigentlich zu erkennen, dass es eine Art "Werkzeugraum" gibt, in dem jedes Werkzeug unterschiedliche Tradeoffs eingeht und sich die Werkzeuge auch kombinieren lassen. Wenn man das Abhängigkeitsmanagement eher über Buildmodule realisieren möchte: bitte gern. Dann kann man immer noch die Dokumentations- und Integrationstestfeatures von Spring Modulith nutzen. Etwas herausgezoomt ist uns wichtig, den Blick für dieses Thema zu schaffen: wie bilde ich eine fachliche Architektur in einer Applikation ab. Der potentielle Umbau in ein später verteiltes System ist durchaus ein Thema für uns. Der gesamte Bereich der Unterstützung für Event-basierte Kommunikation bereitet genau das vor, weil man dadurch die Transaktionsklammern bereits auf einzelne Module begrenzt. Ist das erstmal in der Applikation etabliert, ist es recht einfach, ein Modul in eine separate App zu schieben und die Events z. B. über einen Kafka in die andere Applikation zu tragen. Das funktioniert in den Produktionsdeployments die wir aktuell sehen ziemlich gut. Ich weiß von Projekten, die nicht Spring Modulith verwenden, aber für jedes logische Modul einen separaten ApplicationContext starten. Das erfordert deutlich mehr technische Koordination und verbraucht deutlich mehr Ressourcen (EntityManager und Servletcontainer pro Kontext usw.) Ich sage nicht, dass das falsch ist. Es ist nur wieder ein anderer Tradeoff. Gut möglich, dass wir das irgendwann als advanced Feature auch mal anvisieren.
@papierbndc
@papierbndc 3 ай бұрын
Sehr gut erklärt. Kenne kein anderes Video was einen Proxy bzw einen Reversed Proxy soo gut erklärt wie dieses. Und da rede ich vom internationalen Raum.
@ursestermann8807
@ursestermann8807 3 ай бұрын
Deutsch 👍🏻
@ricardoborutta
@ricardoborutta 4 ай бұрын
Sehr cooles Video
@FilmfanOliver1992
@FilmfanOliver1992 4 ай бұрын
Wissen was an an keiner Uni/Hochschule lernt, klasse ;-)
@s.f.8867
@s.f.8867 4 ай бұрын
Danke für die Vorstellung dieses Features. Vielleicht setzen wir das mit der Entityversion wirklich mal ein um die Voraussetzungen noch mal abzuchecken. Das mit dem Caching ist bei uns eher nicht relevant.
@thomas-bayer
@thomas-bayer 4 ай бұрын
Hallo, danke für den Beitrag. Mit dem Abchecken der Voraussetzungen kannst du optimistic Locking realisieren und für mehr Konsistenz trotz HTTP Schnittstelle sorgen.
@yasinicdeniz9617
@yasinicdeniz9617 4 ай бұрын
Zu wenig likes und Kommentare... Thomas vielen Dank für deine Mühe und Zeit.
@thomas-bayer
@thomas-bayer 4 ай бұрын
Danke Yasin für den Kommentar.
@frederik_hd
@frederik_hd 4 ай бұрын
was ich bevorzuge sind 2 Monoliths: für's Backend und für die Storefront - und mehrere kleinere Microservices für's Backend die zusätzliche Funktionalitäten hinzugefügt die nicht im Standart drin sind (bezahl methoden die müssen ja nicht alle im Backend drin sein wenn man sich entscheidet nur eine zu nützen) - für die Storefront benutze ich feature toggles um Funktionalitäten an/aus zu schalten
@thomas-bayer
@thomas-bayer 4 ай бұрын
Hi Frederik, danke für die Beschreibung deines Ansatzes. Ich denke, dass das ganz praktikabel ist.
@marcom.
@marcom. 4 ай бұрын
Hallo Thomas, super Video. Mir fallen noch zwei Aspekte ein, die man in diesem Themenbereich noch genauer erörtern könnte. Einmal, was die unterschiedlichen Ansätze für Implikationen auf mögliche/sinnvolle Transaktionsklammern haben. Und zweitens hast Du quasi gesagt, dass man einen Modulithen in einem gemeinsamen Repository entwickelt. Das kann man machen, muss man aber nicht. Denn insbesondere, wenn mehrere Teams an unterschiedlichen Modulen arbeiten, kommt man sich ständig mit den Commits und Versionen ins Gehege - der Git-Flow wird entsprechend kompliziert. Insbesondere, wenn man den Maven-Multimodule-Ansatz verfolgt, können die Module auch in verschiedenen Repositories liegen.
@predic8
@predic8 4 ай бұрын
Hi @marcom, danke für die Hinweise. Datenzugriff und Transaktionssicherheit darf man in der Diskussion nicht vergessen. Den Modulith kann man in einem Repo entwickeln, wie du schreibst muss man das aber nicht. Man kann sogar aus mehreren Code-Repos entweder einen Modulith oder Microserives bauen.
@moscript
@moscript 4 ай бұрын
Sehr verständlich. Vielen Dank
@mirageman2
@mirageman2 4 ай бұрын
Na das ist ja sehr großzügig von euch, äußerst lobenswert.
@SalamSalam-bq9vq
@SalamSalam-bq9vq 4 ай бұрын
Rest wurde von Roy Fielding zum ersten mal verwendet wurde. de.m.wikipedia.org/wiki/Roy_Fielding
@yasinicdeniz9617
@yasinicdeniz9617 4 ай бұрын
Bis zum Ende geschaut. Danke Thomas ❤ werde definitiv bei dir eine onlineschulung buchen!!!! ❤❤❤
@yasinicdeniz9617
@yasinicdeniz9617 4 ай бұрын
Genial !!! Deine Frau freut sich bestimmt wenn sie das Video sieht. Stichwort Ehering :)))
@GeoPap37
@GeoPap37 5 ай бұрын
Klasse. Danke und ein Linke weil aus Bonn :)
@alexanderw4714
@alexanderw4714 5 ай бұрын
Macht man das clientseitige Invalidieren in der Praxis wirklich? Ist es kein Sicherheitsproblem wenn der Client entscheidet wann der Applikation Server angesprochen wird? Stichwort: DoS
@thomas-bayer
@thomas-bayer 5 ай бұрын
no-cache wird wahrscheinlich an erster Stelle verwendet um garantiert eine frische Antwort, die nicht aus dem Cache kommt zu erhalten. Bei der Invalidierung für andere z.B. nach einem PUT ist man darauf angewiesen, dass der Client wirklich die Invalidierung durchführt. Was nicht einfach ist, wenn man selbst nicht den Client implementiert. Caches bieten natürlich auch eine Angriffsoberfläche. Man kann z.B. versuchen mit Cache Poisening eine Attacke zu fahren. Dabei wird z.B. nach einem HTTP-Header gesucht, der nicht in den Cache-Key eingeht, der aber einen Fehler verursacht, der dann gecached wird. Um den Cache für eine DOS zu umgehen, genügt es, den Cache-Key z.B. mit einem zusätzlichen Query-Parameter zu verändern. Es kann je nach Anforderung auch Sinn machen, den no-cache nicht zuzulassen.
@alexanderw4714
@alexanderw4714 5 ай бұрын
@@thomas-bayer danke für die ausführliche Antwort. 😁. Bzgl. der GET Parameter sollte der Cache imho nur geprüfte Werte in den Cache ablegen. Ansonsten könnte man den Cache fluten bis er in die Knie geht. Bei Web Applikation kann man das lösen in dem man die Parameter signiert und GET Anfragen ohne Signatur verwirft. Aber bei einer API ist das natürlich deutlich aufwendiger. Vermutlich wäre da eine Whitelist mit erlaubten Parametern in Kombination mit einer Authentifizierung und Rate Limiter eine gute Option.
@kyrospace
@kyrospace 5 ай бұрын
Ich finde den neuen Stil der Video top. Weiter so.
@thomas-bayer
@thomas-bayer 5 ай бұрын
Danke für das Feedback. Ich werde weiter am Stil arbeiten.
@gurkal89
@gurkal89 5 ай бұрын
deleteWare(). Deutsche Wörter im Code sind wirklich schlimm!
@sinithparanga2481
@sinithparanga2481 6 ай бұрын
Danke und echt gut erklärt. Bin in der Vergangenheit auch an das Thema rangekommen, die MSG BUS Lösung habe ich aber tatsächlich nie in betracht genommen. Was im Video noch cool gewesen wäre ist neben dem technischen noch der finanzielle Aspekt. Weiter so, danke fuer die Videos
@PeterK-gj1yh
@PeterK-gj1yh 6 ай бұрын
schönes Video. Gut finde ich, dass du stark auf die Vor- und Nachteile eingehst. Da kann man immer viel für die eigenen Lösungen mitnehmen. Was mich noch Interessiert, aus Minute 19:00 (kzbin.info/www/bejne/b2S9pK2AjcSBiJI): Welche "Tricks" hast du um Änderungen an API Daten mitzubekommen (wenn das die API nicht unterstützt)? Gibt es da etwas komfortables ohne eigene Datenhaltung?
@thomas-bayer
@thomas-bayer 6 ай бұрын
Hallo Peter, wenn es geht bevorzuge ich immer eine statuslose Integration. Es läuft aber leider schnell auf eine eigene Datenhaltung heraus. Du must meist aber nicht allzuviel speichern. Bei aufsteigenden Ids, oder einem lastModified-Feld genügt oft nur ein Wert pro Datensatzart. Wenn es das nicht gibt, kannst du anstatt den gesamten Datensatz zu speichern einen Hash erzeugen und den abspeichern. Um die Änderungen zu bekommen, ziehst du alle Daten ab, bildest die Hashes und vergleichst diese. Auf den Bus schickst du dann nur die Datensätze, bei denen sich der Hash geändert hat.
@lizgoldstein4256
@lizgoldstein4256 6 ай бұрын
Einfach Klasse! Danke, Thomas (?), das war verständlich erklärt und illustriert. Obwohl es keine Programmiersprache ist, so hilft JSON mir gerade, mich überhaupt in diese Welt vorzutasten, weil es recht straightforward ist. Eine Frage: wie verhält sich das eigentlich mit dem JSON Schema -- generiert man quasi selbst ein Template und schreibt dann ein JSON und schaut, ob es in das Template passt, oder bezieht man dieses aus irgendwelchen Libraries und schreibt sein JSON dann passend auf das vorgegebene Schema? Ist vielleicht eine etwas seltsame Frage, aber ich möchte nochmal klar darüber sein, "woher" dieses Schema kommt.
@thomas-bayer
@thomas-bayer 6 ай бұрын
Hallo, Thomas passt. Zu deiner Frage. Es kommt ganz auf die Aufgabe an. Manchmal bekommst du ein Schema, z.B. aus einer OpenAPI Datei. Für bestimmte Branchen gibt es auch Standards, die zunehmend ein JSON Format vorschreiben und ein dazu passendes JSON Schema mitliefern. Es kann auch sein, dass man selbst ein Format entwerfen muss. Für die Beschreibung des Formats kann dann JSON Schema ein Hilfsmittel sein. Das JSON Schema kann dann auch als Dokumention oder Vorlage für nachgeordnete Arbeiten dienen. Ich hoffe, dass das ein wenig zu Klarheit beitragen kann. Viel Erfolg und Spass beim vortasten.
@mufumonk
@mufumonk 6 ай бұрын
bready gate :) no hate, fand die aussprache einfach lustig. gutes video!
@Florian3003
@Florian3003 6 ай бұрын
Hello. Deine Videos sind sehr gut verständlich aufgebaut. Ich bin selbst Automatisierungstechniker und Software Entwickler in einem Mittelständischen Betrieb. Hattest du schon mal etwas mit Unified Name Spaces zu tun?
@thomas-bayer
@thomas-bayer 6 ай бұрын
Hallo Florian, mit Unfied Namespaces hatte ich bisher noch keine Berührung. Ich habe mir das Thema gerade kurz angesehen. Die Verteilung über MQTT und Pub/Sub ist im Prinzip die Alternative mit Messaging und Bus aus meinem Video. Danke für den Tip, Unified Namespaces werde ich weiter verfolgen.
@marcom.
@marcom. 6 ай бұрын
Schöner, gut strukturierter Überblick.
@thomas-bayer
@thomas-bayer 6 ай бұрын
Danke
@lukystreik
@lukystreik 6 ай бұрын
sehr gut. ich habe gerade für einen Sales Kollegen eine einfache Erklärung gesucht. Tolles Kistenmodell. Danke. Goldwert
@lukystreik
@lukystreik 6 ай бұрын
cooles „leichtgewichtiges“ tutorial damit man mal sieht, wie man modern apps machen muss 🙈
@Tomatexyz
@Tomatexyz 6 ай бұрын
Broxy
@stefanbobel6793
@stefanbobel6793 6 ай бұрын
Sehr schöner Überblick über das Tool
@blubbdiblubb333
@blubbdiblubb333 6 ай бұрын
"neues feld: x" wenn die einzige geänderte Zeile diese property ist, ist eben ein Beispiel für eine schlechte Commit nachricht. Die Änderung selbst ist für jeden offensichtlich, warum diese Property neu dazu kommt aber nicht. Das müsste in der Commit nachricht beschrieben werden
@thomas-bayer
@thomas-bayer 6 ай бұрын
Am besten immer nur das Offensichtliche dokumentieren, das spart Zeit und vermeidet Fehler 🙂. Ich stimme dir zu, dass der Kommentar keine neuen Informationen enthält und dass man das besser machen kann. Die redundante Info kann trotzdem nützlich sein, da man die commit-Nachrichten automatisch in die Release Notes übernehmen kann.