19 Punkte von xguru 2022-05-10 | 2 Kommentare | Auf WhatsApp teilen
  • Docker hat Linux-Container populär gemacht: Virtualisierung auf OS-Ebene erleichtert die Software-Bereitstellung
  • Cloudflare Workers und Deno Deploy setzen das Konzept von JS-Containern um (in unterschiedlichen Umgebungen)
  • Wie werden sich JS-Container in den kommenden Jahren weiterentwickeln?

Universelle Skriptsprache

  • Immer mehr Dinge werden über das Web miteinander verbunden: The web is eating the world
  • Das Web ist das grundlegende Medium für Informationen der Menschheit, und JS ist tief in die Web-Infrastruktur eingebunden und daher anders als andere Sprachen
  • Skriptsprachen lösen viele serverseitige Probleme und ermöglichen es, Business-Logik schneller und günstiger zu schreiben
  • Skriptsprachen sind nützlich und ähneln sich in vieler Hinsicht; JavaScript wird am breitesten eingesetzt und dürfte auch in Zukunft relevant bleiben
  • Man kann JavaScript also als universelle Skriptsprache betrachten

Shell : Executables :: JavaScript : WebAssembly

  • Mit der JavaScript-Sandbox entsteht ein neuer High-Level-Container für Server

  • Sie ist nicht dazu gedacht, die Probleme zu lösen, auf die Linux-Container abzielen

  • Sie ist als Ergebnis von Vereinfachung entstanden
    → Minimierung des Boilerplate für die Business-Logik von Webservices
    → Gemeinsame Konzepte mit dem Browser und Minimierung der Konzepte, die Programmierer kennen müssen

  • Alle Webentwickler kennen bereits die JavaScript-Browser-APIs
    → Da die Abstraktion von JS-Containern auf denselben Browser-APIs basiert, gibt es weniger Neues zu lernen
    → Die Universalität von JS reduziert die Komplexität

  • Die Shell ist eine interpretierende Skriptsprache zum Ausführen von Unix-Programmen
    → Sie hat Bedingungen, Schleifen und Variablen, ist aber eingeschränkt und daher schwer zum Programmieren geeignet. Die eigentliche Funktionalität wird von ausführbaren Programmen bereitgestellt

  • In dieser neuen serverseitigen Abstraktionsschicht nimmt JS die Rolle der Shell ein
    → Es eignet sich besser zum Skripten als Bash/Zsh, aber so wie die Shell ausführbare Programme aufruft, ruft die JS-Sandbox WASM auf
    → Wenn komplexe Aufgaben wie Bildgrößenanpassung nötig sind, ist es besser, dafür WASM zu verwenden, statt sie in JS zu schreiben
    → So wie man in bash keine Bildgrößenanpassung implementiert, sondern ImageMagick aufruft

The North Star

  • Die Zukunft des Skriptens ist Browser-JavaScript
  • Der grundlegendste Fehler von Node.js war, dass zu viele Dinge erfunden wurden, die zu weit vom Browser entfernt waren, während neue APIs standardisiert wurden
    → 2010 hatten wir noch keine ES-Module, aber nach der Standardisierung mussten sie in Node übernommen werden
    → Dasselbe galt für Promise, Async/Await, Fetch, Streams und vieles mehr
    → Nicht standardisierte Dinge wie CommonJS require, package.json, node_modules, npm und das globale process-Objekt werden letztlich entweder standardisiert und dem Browser hinzugefügt oder durch etwas anderes auf Web-Basis ersetzt
  • High-Level-Container sind noch nicht standardisiert, und es ist noch unklar, wie sich das alles entwickeln wird
  • Derzeit verwenden Cloudflare Workers und Deno Deploy die FetchEvent-API, aber möglicherweise findet sich noch eine bessere Schnittstelle

Fazit

  • JavaScript ist eine universelle Skriptsprache
  • Durch die Universalität von JavaScript entstehen neue containerartige Abstraktionen, die Server vereinfachen
  • Das heißt nicht, dass Linux-Container verschwinden. Diese Abstraktionsebene wird weiterhin nützlich sein
    → Für viel der von Menschen geschriebenen „Business-Logik“ ist sie jedoch eine etwas zu Low-Level-Abstraktion
    → Beim Aufbau einer Website sind Dinge wie systemd-Konfiguration Boilerplate
  • Viele „Webservices“ lassen sich vermutlich vereinfachen, wenn man sie eher aus der Perspektive von JavaScript-Containern als von Linux-Containern betrachtet
  • Wir erforschen diese Idee derzeit bei Deno
    → mit dem Ziel, Server-Abstraktionen grundlegend zu vereinfachen

2 Kommentare

 
xguru 2022-05-20

Es gibt jetzt einen übersetzten Artikel.

https://medium.com/@yujso66/…

 
xguru 2022-05-10

Wenn ich es auf meine Weise zusammenfasse:

  1. In letzter Zeit erscheinen viele Sandbox-Technologien auf Basis von WASM.
  2. JavaScript wird wie ein Skript verwendet, das WASM ausführt.
  3. In einer WASM-Sandbox kann alles laufen, vom Betriebssystem über Container bis hin zu Frameworks.
  4. Dann könnte auf diese Weise mit JS-Containern ein neuer High-Level-Container-Standard entstehen, bei dem man sich nur noch um die Business-Logik kümmern muss.
    So ließe es sich vielleicht zusammenfassen.

Weitere Links zum besseren Verständnis