Im nächsten Semester soll ich nicht nur 5-6 Klassen unterrichten, sondern währenddessen auch das Fach (bei uns "Modul") ausarbeiten, das ich unterrichte. Das ganze heisst "Cloud Lösungen konzipieren und realisieren" (sic. mit Deppenleerzeichen). Dazu gibt es auch eine offizielle Modulbeschreibung, die mir als Lehrer aber recht wenig konkretes an die Hand gibt. (Hier wurde eine komplette neue Bildungsverordnung in wenigen Monaten aus dem Boden gestampft. Ein kritisches Review von Lernzielen dürfte kaum stattgefunden haben.) Das Positive: Mein Vorgesetzter, der früher auch mal mein Lehrer war, lässt mir komplett freie Hand. Ich kann also das unterrichten, was ich als sinnvoll erachte. Ausreden habe ich also keine
Das NIST hat eine offizielle Definition (PDF), was Cloud Computing bedeutet. Das Thema reicht also von einfachen VMs in der "Cloud" (IaaS, z.B. von Anbietern wie Exoscale oder Linode) über irgendwelche Kubernetes-Plattformen, die man sich zurechtklicken kann (PaaS), bis zu kompletten Softwarelösungen (SaaS: Office 365, SAP usw.), die man praktisch ohne jegliches Verständnis für die Materie zum Laufen bekommt.
Beruflich hatte ich schon mit OpenShift (Enterprise Kubernetes) in einer "private Cloud" zu tun. Aktuell bin ich aber eher wieder auf der IaaS-Ebene tätig; entwickle Software, die dann auf VMs in der Cloud ausgeführt wird, und administriere diese ganzen VMs.
Nun ist mein Grundsatz beim Unterrichten: Keine Produktschulungen, sondern grundlegende Konzepte verstehen und einüben. Ganz ohne "Produkt" geht es natürlich nicht, so muss man sich irgendeinmal für eine Programmiersprache oder für eine Datenbank entscheiden. Hier bevorzuge ich freie Software, da diese allen, überall, zu jeder Zeit und oftmals auf allen relevanten Betriebssystemen zur Verfügung steht.
Das "Zielpublikum" sind 16-17 jährige, angehende Informatiker. Sie hatten schon etwas Webdesign (HTML, CSS) Programmiergrundlagen (in C#), Datenbanktechnik (RDBMS, SQL) und Netzwerktechnik (z.B. IP-Rechnen). Themen wie Container folgen erst später, d.h. nach meinem Unterricht. (Kubernetes usw. fällt also weg.) Ich habe pro Klasse ca. 14 mal zwei Wochenlektionen. (Was parallel dazu in der Schule läuft, muss ich noch abklären.)
Meine Idee für dieses Cloud-Modul wäre dann folgendermassen:
- Zuerst werden die Programmiergrundlagen, die ein halbes Jahr zurückliegen, wieder aufgefrischt. Hierzu nehme ich aber Go, weil das einerseits die dominante Sprache für Cloudinfrastruktur (Kubernetes, Docker usw.) und andererseits sehr einsteigerfreundlich ist.
- Weiter schauen wir uns Konzepte wie Umgebungsvariablen und HTTP an, die dann mit entsprechenden Übungen vertieft werden. (Umgebungsvariablen werden sehr oft zur Konfiguration von Upstream-Services, Portnummern usw. verwendet. In Go lassen sich ja wunderbar Server- und Clientanwendungen mit HTTP umsetzen.)
- Die wichtigsten abstrakten Datentypen (Listen, Maps, Structs) werden eingeübt. Diese werden zunächst in den Programmierbeispielen dynamisch verwendet, und dann später in einem Key-Value-Store (z.B. in redis) persistent abgespeichert.
- Zur Nebenläufigkeit (eine weitere Stärke von Go) soll aufgezeigt werden, dass das "Hochskalieren" von VMs nur dann sinnvoll ist, wenn die Anwendung auch entsprechend aufgebaut ist.
- S3 soll dann als konkrete Technologie vorgestellt werden. Mit s3cmd und Minio gibt es ja freie client- und serverseitige Implementierungen.
So komme ich endlich zu meiner Frage: Welchen Cloud-Anbieter würdet ihr für sowas empfehlen? Idealerweise etwas kostenloses, aber ich könnte mir über die Schule wohl auch etwas Guthaben für einen Anbieter sichern. (Microsoft ist ja bekanntermassen "grosszügig", wenns ums "Anfixen" junger Leute geht.) Hat jemand positive/negative Erfahrungen mit entsprechenden Anbietern gemacht? Was gilt es dabei zu beachten? (60-70 VMs administrieren ist nicht praktikabel. Es müsste schon eher in die Richtung "serverless Function" gehen.)
Zweite Frage am Rande: Was haltet ihr von meinem Plan? Ist das zu persönlich eingefärbt (ich mag Go und meinen Laptop als minimalistische Arbeitsumgebung)? Vergesse ich wichtige Aspekte? Oder wäre eine Azure- oder AWS-Produkteschulung (wo muss ich klicken, damit ich Service X bekomme) vielleicht nicht doch praxisrelevanter? Ich bin froh um alle Denkanstösse! (Die Vollzeit-Lehrerkollegen fallen aufgrund der Sommerferien als Diskussionspartner im Moment leider weg.)
Ich danke euch!