Cloudless Cloud-Unterricht

Smalltalk
Antworten
Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Cloudless Cloud-Unterricht

Beitrag von paedubucher » 23.07.2022 12:57:41

Ich bin jetzt seit einem Jahr nebenberuflich als Berufsschullehrer beschäftigt und habe dort während zwei Semester insgesamt vier Klassen zu den Themen "agile Softwareentwicklung" und "Web-Entwicklung" unterrichtet. Dabei habe ich den Fokus immer sehr auf das Programmieren und praktische Üben gelegt. (Mein Verdacht war, dass das Üben zu kurz kommt. Meine Vorgänger haben mir das auch bestätigt.)

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 :wink:

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 Debianredis) 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 Debians3cmd und Minio gibt es ja freie client- und serverseitige Implementierungen.
Das ganze lässt sich wunderbar auf der "Private Cloud" der Berufsschüler (vulgo BYOD-Laptop bzw. localhost) bewerkstelligen. Nun wäre es zwecks Anschaulichkeit aber doch noch schön, wenn man so gegen Ende Semester doch mal eine entwickelte Software "in die Cloud" stellen könnte, sodass sie über das Internet abrufbar ist. (So etwas wie ein Instagram-Klon, der Bilder in S3 und Metadaten in Redis ablegt.)

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!
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

smiler
Beiträge: 117
Registriert: 31.03.2004 21:26:06

Re: Cloudless Cloud-Unterricht

Beitrag von smiler » 23.07.2022 14:51:54

Hallo,

Eigentlich kann kann ich nichts sinnvolles beitragen, aber die Modulbeschreibung ist ja der Hammer...
Einen Aneinanderreihung von bullshit Bingo und wenn ich dann schon "Lift-and-shift" lese..da löscht's mich ab (wie der Schweizer sagt) ;)

Ansonsten klingt das Modul-Ziel doch recht anspruchsvoll, meiner Meinung nach. Keine Ahnung, wie das in 14x2 Wochenstunden untergebracht werden soll...
Vor allem "Lösungen" bewerten, da sollte man ja "inhouse", bzw. "klassisch" und dieses Cloud (wo es ja auch wieder dutzende Ausprägungen gibt) in ihren Eigenschaften kennen und gewichten können.
Vor allem, wie du sagst, dass z.B. Container erst nach deinem Kurs kommen dünkt mich seltsam...Container sind ja nun mal ein ziemlich bedeutender Usecase in der Cloud, denke ich...

Ich bin kein Dozent (das schon mal als Vorabinformation), daher kann ich nicht sagen, welche Konzept und Themen gut funktionieren...
(Nebenbei, mein Grosser macht auch gerade eine Ausbilder als Informatiker EFZ, und die behandelten Themen hinken meiner Meinung nach den aktuellen Entwicklungen um mindestens 10 Jahre hinterher..traurig. Als Ausgleicht sieht's bei den Grundlagen auch nicht so toll aus... :mrgreen: )

Wen nich mal kurz was aus dem ärmel schütteln müsste, würde ich es evtl. eher so aufziehen:
- Das mit Go würde ich erst mal als Optional sehen (passt nicht in die Modul Ziele)
- Ich suche mir eine Existierende Webapplikation (Die kann von mir aus in Go geschrieben sein), welche aus möglichst viel Komponenten besteht (DB, evtl. ldap für User, cache, etc. pp.) , trotzdem aber einfach installierbar ist, und sowohl auf einer einzelmaschine läuft (klassisch, old school) für die es aber auch möglich ist teilweise oder ganz in die Cloud umzuziehen. Am besten noch einen LB (ha-proxy) davor setzen.
- Diese Applikation kannst Du dann mit dienen Schülern ganz oder gar nicht auf einer EInzelmaschine betreiben und komplett in der Cloud.
Anhand der verschiedenen Ausprägungen können die einzelnen Betriebsmodelle gegen Vorteile/Nachteile abgeprüft werden.
- horizontales und vertikales skalieren kannst Du so relativ einfach durchexerzieren...
- Ich würde trotzdem noch container reinbringen, einfach weil das zur Cloud gehört (vielleicht nicht erklären, aber mit zum Einsatz bringen, evtl. sogar mit Kubernetes)
- Und anhand dieses Setup kannst Du dann die Modulziele Abarbeiten
- am besten noch nebenbei Git mit einführen (gitops) ;-)

Wichtige zu besprechende Punkte meiner Meinung nach:
- Datensicherheit
- Datenschutz
- Security
- wo liegen die Daten
- Backup
- (desaster) Recovery, wie schnell bin ich wieder online
- Skalierung
- kosten (da erleben viele eine böse Überraschung, wenn die erste Rechnung von AWS kommt)
- Wo liegt das Knowhow

Ich habe so ein bisschen Den Eindruck (nicht böse gemeint, und nicht falsch verstehen bitte), dass Du gerne den technischen Aspekt eines Cloud Betriebs (Devops?) deinen Schülern nahebringen willst. Aber die Modulziele sind doch eher konzeptioneller Art. Das Ausetzen eine Applikation ist nur ein Punkt von 4 Stück (genauer Punkt 4)

Zu Anbietern kann ich leider gar nichts sagen, ausser dass ich ein paar kenne...

So, das waren mal meine völig unausgegorenen Gedanken am Wochenende...

Viele Grüsse
Thomas

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 23.07.2022 23:07:00

smiler hat geschrieben: ↑ zum Beitrag ↑
23.07.2022 14:51:54
Hallo,

Eigentlich kann kann ich nichts sinnvolles beitragen, aber die Modulbeschreibung ist ja der Hammer...
Einen Aneinanderreihung von bullshit Bingo und wenn ich dann schon "Lift-and-shift" lese..da löscht's mich ab (wie der Schweizer sagt) ;)
Bullshit Bingo war auch mein erster Gedanke :mrgreen:

"Lift and Shift" geht ja noch. Aber stell dir mal vor, wenn ein Klassenzimmer voller 17jähriger anfängt "Lift and Reshape" zu googeln. :roll:
smiler hat geschrieben: Ansonsten klingt das Modul-Ziel doch recht anspruchsvoll, meiner Meinung nach. Keine Ahnung, wie das in 14x2 Wochenstunden untergebracht werden soll...
Vor allem "Lösungen" bewerten, da sollte man ja "inhouse", bzw. "klassisch" und dieses Cloud (wo es ja auch wieder dutzende Ausprägungen gibt) in ihren Eigenschaften kennen und gewichten können.
Man kann natürlich die ca. zwei dutzend Begriffe einfach in der Theorie anschauen, dann ist es nicht anspruchsvoll. Aber mein Anspruch ist schon, dass die Leute auch etwas machen können; halt das Handwerk einüben.
smiler hat geschrieben: Vor allem, wie du sagst, dass z.B. Container erst nach deinem Kurs kommen dünkt mich seltsam...Container sind ja nun mal ein ziemlich bedeutender Usecase in der Cloud, denke ich...
Also nach oder gleichzeitig; das muss ich noch herausfinden. Aber ich kann dieses Wissen nicht voraussetzen, höchstens Ende Semester darauf zurückgreifen.
smiler hat geschrieben: Ich bin kein Dozent (das schon mal als Vorabinformation), daher kann ich nicht sagen, welche Konzept und Themen gut funktionieren...
(Nebenbei, mein Grosser macht auch gerade eine Ausbilder als Informatiker EFZ, und die behandelten Themen hinken meiner Meinung nach den aktuellen Entwicklungen um mindestens 10 Jahre hinterher..traurig. Als Ausgleicht sieht's bei den Grundlagen auch nicht so toll aus... :mrgreen: )
Grundlagen hinken nie hinterher und sollten von allen beherrscht werden. Das Konzept eines assoziativen Arrays (Map, Dictionary, Hash, Table; je nach Programmiersprache) halte ich beim Programmieren für absolut essenziell, und doch ist es vielen im 3. Jahr noch völlig unbekannt. Solche Sachen muss ich dann in meinem Unterricht nachholen. OOP hingegen mit Konzepten wie Sichtbarkeit, Vererbung und Beziehungen (is-a vs. has-a) wird rauf- und runtergebetet. Aber wirklich was konkretes umsetzen kann man damit nicht.
smiler hat geschrieben: Wen nich mal kurz was aus dem ärmel schütteln müsste, würde ich es evtl. eher so aufziehen:
- Das mit Go würde ich erst mal als Optional sehen (passt nicht in die Modul Ziele)
- Ich suche mir eine Existierende Webapplikation (Die kann von mir aus in Go geschrieben sein), welche aus möglichst viel Komponenten besteht (DB, evtl. ldap für User, cache, etc. pp.) , trotzdem aber einfach installierbar ist, und sowohl auf einer einzelmaschine läuft (klassisch, old school) für die es aber auch möglich ist teilweise oder ganz in die Cloud umzuziehen. Am besten noch einen LB (ha-proxy) davor setzen.
- Diese Applikation kannst Du dann mit dienen Schülern ganz oder gar nicht auf einer EInzelmaschine betreiben und komplett in der Cloud.
Anhand der verschiedenen Ausprägungen können die einzelnen Betriebsmodelle gegen Vorteile/Nachteile abgeprüft werden.
- horizontales und vertikales skalieren kannst Du so relativ einfach durchexerzieren...
- Ich würde trotzdem noch container reinbringen, einfach weil das zur Cloud gehört (vielleicht nicht erklären, aber mit zum Einsatz bringen, evtl. sogar mit Kubernetes)
- Und anhand dieses Setup kannst Du dann die Modulziele Abarbeiten
- am besten noch nebenbei Git mit einführen (gitops) ;-)
Punkt für Punkt:
  • Programmiersprache ist keine vorgegeben in den Modulzielen. Aber irgend eine muss ich ja nehmen. Hier bietet sich Go an. Von C# wissen die Schüler zwar etwas, aber auch nur minimal. Von daher passt Go schon besser zum Thema. (Lässt sich in ein Binary kompilieren und kommt ohne Runtime aus.)
  • Eine bestehende Webapplikation finde ich grundsätzlich eine gute Idee. Sehr kompliziert und mit vielen Komponenten darf sie aber nicht sein, da die Schüler z.B. noch nicht einmal Datenbankzugriffe gemacht haben. Hier dran krankt das Modul meiner Meinung nach: Die Schüler sollen an einem Ort abgeholt werden, wo sie noch nie waren: Eine Legacy-Anwendung zu einer Cloud-Anwendung umbauen ist nur dann sinnvoll, wenn man schon einmal eine Legacy-Anwendung gesehen hat. Und die Schüler haben bisher nur "Hallo Welt" in C# gemacht. Wenn ich die bestehende Anwendung aber klein genug mache und ausführlich durcharbeite, könnte man das dann schon anschliessend umbauen. (Hier kommen dann Sachen dazu, wie z.B. den DB-Connection-String oder die Portnummer als Umgebungsvaraible mitzugeben.)
  • Load Balancing mit einem vorgelagerten Proxy ist ein interessanter Aspekt. Ich frage mich aber, ob man das nicht schon mit Go anschaulich genug demonstrieren könnte. Vielleicht mal so eine ganz primitive Implementierung selber zu versuchen, so ganz einfach mit Round-Robin, und dann die Requests an verschiedene Prozesse weiterleiten. Mit einem Key-Value-Store könnte man das auch so machen. (Nachtrag: Gerade bin ich auf dieses Load-Balancer-Tutorial gestossen. Ich finde solche Veranschaulichungen in der Ausbildung unendlich viel wertvoller als einfach mal eine Industriestandardsoftware wie HA-Proxy hochzufahren! Die Schüler sollen sehen, dass die Informatik schlussendlich auf einfachen Konzepten basiert, und nicht einfach schwarze Magie hinter grossen Black Boxes vermuten. Sowas finde ich viel nachhaltiger, als einfach mal Kubernetes hochzufahren, weil es halt gerade das Jahr 2022 ist. 2005 hätte man vielleicht einen Eclipse-Rich-Client mit XML gezeigt :roll: )
  • Einzelne Container kommen evtl. gegen Ende des Moduls in Frage., ab er nur, wenn die Grundlagen anderweitig schon erarbeitet worden sind. Sonst sind die Überschneidungen zum Container-Modul zu gross. Kubernetes halte ich für übertrieben.
  • Git ist dann ein Semester später das Thema. Hier werde ich nur zwei, drei Handgriffe erläutern.
smiler hat geschrieben: Wichtige zu besprechende Punkte meiner Meinung nach:
- Datensicherheit
- Datenschutz
- Security
- wo liegen die Daten
- Backup
- (desaster) Recovery, wie schnell bin ich wieder online
- Skalierung
- kosten (da erleben viele eine böse Überraschung, wenn die erste Rechnung von AWS kommt)
- Wo liegt das Knowhow
Die meisten Themen wurden schon anderweitig behandelt. Backup und Recovery wären sicherlich noch interessant, gerade wenn man das von der Cloud raussichert und on-premise aufbewahrt. Skalierung finde ich im Zusammenhang mit Concurrency interessant. Hier könnte man mit den VM-Konfigurationen herumspielen (mehrere CPUs oder bloss eine. Das mit den Kosten ist wohl auch ein Beispiel wert; so eine Hausaufgabe, wo man ein vergleichbares Setup punkto Kosten On-Premise mit der Cloud vergleicht.
smiler hat geschrieben: Ich habe so ein bisschen Den Eindruck (nicht böse gemeint, und nicht falsch verstehen bitte), dass Du gerne den technischen Aspekt eines Cloud Betriebs (Devops?) deinen Schülern nahebringen willst. Aber die Modulziele sind doch eher konzeptioneller Art. Das Ausetzen eine Applikation ist nur ein Punkt von 4 Stück (genauer Punkt 4)
Eigentlich überhaupt nicht: Ich möchte v.a. eine konkrete Anwendung umsetzen, die dann quasi "cloud-ready" ist. D.h. man kann sie lokal oder auf einer VM in der Cloud ausführen, man könnte sie aber auch einfach containerisieren. Die Konzepte (wenn auch nicht alle) lassen sich daran am besten vertiefen.
smiler hat geschrieben: Zu Anbietern kann ich leider gar nichts sagen, ausser dass ich ein paar kenne...

So, das waren mal meine völig unausgegorenen Gedanken am Wochenende...

Viele Grüsse
Thomas
Besten Dank für deine Rückmeldung! Das mit der vorgegebenen Anwendung, die dann zu modernisieren/cloudifizieren ist, halte ich für eine recht gute Idee! So hätte man auch gutes Anschauungsmaterial. Ich schlafe mal darüber. (Ich habe die Erfahrung gemacht, dass die guten Unterrichtsideen dann kommen, wenn man anfängt, etwas Beispielcode zu schreiben.)

Nachtrag: So ein Bild-Sharing-Dings (nennen wir es mal "Poorstagram: Instagram für Arme") könnte man schön mit dem Filesystem umsetzen. Bilder als Bilddateien; Metadaten in einer globalen CSV-Datei dazu. Dann wird es cloudifiziert: Die Bilder werden in S3 abgespeichert, die Metadaten in Redis. So kann man klassische Anwendungskonzepte (Persistenz mit lokalem Dateisystem) anschaulich mit Cloud-Konzepten vergleichen.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
GregorS
Beiträge: 2596
Registriert: 05.06.2008 09:36:37
Wohnort: Freiburg
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von GregorS » 23.07.2022 23:50:29

paedubucher hat geschrieben: ↑ zum Beitrag ↑
23.07.2022 12:57:41
... Hierzu nehme ich aber Go, ...
Ich kenne Go nicht und mit irgendeinem Cloud-Kram hatte ich auch nie zu tun. Ich war in den letzten 15 Jahren aber immer wieder froh, mich in C++ reingewurschtelt zu haben. C++ ist in meinen Augen halt die ultimative „Fortsetzung“ von C, das in Form von C# ja irgendwie voraussetzbar ist, wie Du schreibst. Also, obwohl ich Go wie gesagt nicht kenne, würde ich da ein Fragezeichen dahinter setzen.

Gruß

Gregor
Wenn man keine Probleme hat, kann man sich welche machen. ("Großes Lötauge", Medizinmann der M3-Hopi [und sog. Maker])

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 24.07.2022 11:46:35

GregorS hat geschrieben: ↑ zum Beitrag ↑
23.07.2022 23:50:29
paedubucher hat geschrieben: ↑ zum Beitrag ↑
23.07.2022 12:57:41
... Hierzu nehme ich aber Go, ...
Ich kenne Go nicht und mit irgendeinem Cloud-Kram hatte ich auch nie zu tun. Ich war in den letzten 15 Jahren aber immer wieder froh, mich in C++ reingewurschtelt zu haben. C++ ist in meinen Augen halt die ultimative „Fortsetzung“ von C, das in Form von C# ja irgendwie voraussetzbar ist, wie Du schreibst. Also, obwohl ich Go wie gesagt nicht kenne, würde ich da ein Fragezeichen dahinter setzen.
Der aktuelle Working Draft des C++ Standards umfasst 1995 Seiten. Wenn ich die Go Language Specification nach LibreOffice Writer kopiere, komme ich auf 95 Seiten. Die C++-Spezifikation ist somit 1900 Seiten länger als die Go-Spezifikation. Diesem heuristischen Vergleich nach zu urteilen dürfte sich Go besser als C++ eignen, um mal eben nebenher gelernt zu werden.

Das Kompilieren eines C++-Programms (oder auch C-Programms) bestehend aus mehreren Dateien erfordert bereits eine Einführung in Make oder in ein anderes Buildsystem. Bei Go benötigt man nur einen Befehl: go build. Unter den kompilierten Programmiersprachen hat Go wohl die tiefste Einstiegshürde. Eine VM mit vorinstalliertem Go werde ich zur Verfügung stellen.

Mit einer Sprache wie C++ zurecht zu kommen ist sicherlich eine nicht zu verachtende Leistung. In meinem Kontext würde C++ aber zu viel Aufwand bedeuten.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 25.09.2022 22:03:45

Die letzte Woche vor den Herbstferien bricht an, und ich habe bisher folgende Erfahrungen gemacht:
  • Für die Theorie habe ich mit einer eigenen Übersetzung der NIST-Definition gearbeitet. Ich habe es bei einer Woche und einer Hausaufgabe belassen.
  • Die mechanischen Aspekte des Programmierens (keine Syntaxfehler, Edit-Test-Korrektur-Zyklus) sitzen nach einem halben Jahr Programmieren, das schon ein halbes Jahr zurückliegt, noch überhaupt nicht.
  • Die Schüler haben Mühe mit Git, auch wenn ich das nur über das GUI von Visual Studio verwenden lasse. Jeder zweite klont das Original-Repo statt des persönlichen Forks, und versteht dann nicht, warum der Push nicht funktioniert. (Obwohl ich den Sachverhalt schon zehnmal erläutert habe.)
  • Mit Go im Speziellen haben sie keine Mühe. Aber einige haben sich beschwert, dass man da überhaupt programmieren muss. Wenn ich dann nachfrage, wie sie Cloud-Anwendungen realisieren wollen, ohne zu programmieren, erhalte ich als Antwort: "Das will ich ja hier lernen." Eben.
  • Die automatisch gebaute Linux-VM läuft recht gut. Der Umgang mit der Kommandozeile macht aber den meisten extrem viel Mühe. Ein einfaches go run exercise1.go bringen viele nicht hin, weil sie im falschen Verzeichnis sind, und sich dort nicht zurechtfinden.
Ich versuche jetzt Kontakt mit den Autoren der ursprünglichen Modulidentifikation aufzunehmen. Von Programmieren steht dort halt effektiv nichts drin. Aber eben: Wie setzt man eine Cloud-Anwendung um, ohne zu programmieren? Kann mich mal jemand aufklären?

Morgen mache ich eine Übung mit einer minimalistischen Serveranwendung (HTTP-Canary) und SSH (Port-Tunneling), halt so etwas, das für die IaaS-Ebene der Cloud relevant ist. Ich bin schon gespannt, wie viele das dann als irrelevant abkanzeln werden (Dunning-Kruger-Effekt) :roll:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: Cloudless Cloud-Unterricht

Beitrag von Liffi » 26.09.2022 05:25:55

paedubucher hat geschrieben: ↑ zum Beitrag ↑
25.09.2022 22:03:45
  • Die mechanischen Aspekte des Programmierens (keine Syntaxfehler, Edit-Test-Korrektur-Zyklus) sitzen nach einem halben Jahr Programmieren, das schon ein halbes Jahr zurückliegt, noch überhaupt nicht.
  • Die Schüler haben Mühe mit Git, auch wenn ich das nur über das GUI von Visual Studio verwenden lasse. Jeder zweite klont das Original-Repo statt des persönlichen Forks, und versteht dann nicht, warum der Push nicht funktioniert. (Obwohl ich den Sachverhalt schon zehnmal erläutert habe.)
  • Mit Go im Speziellen haben sie keine Mühe. Aber einige haben sich beschwert, dass man da überhaupt programmieren muss. Wenn ich dann nachfrage, wie sie Cloud-Anwendungen realisieren wollen, ohne zu programmieren, erhalte ich als Antwort: "Das will ich ja hier lernen." Eben.
  • Die automatisch gebaute Linux-VM läuft recht gut. Der Umgang mit der Kommandozeile macht aber den meisten extrem viel Mühe. Ein einfaches go run exercise1.go bringen viele nicht hin, weil sie im falschen Verzeichnis sind, und sich dort nicht zurechtfinden.
Das klingt so, als würde es schwierig in den 14x2 Terminen was spaßiges auf die Beine zu stellen ohne sehr viel fertiges hinzustellen.
Ich versuche jetzt Kontakt mit den Autoren der ursprünglichen Modulidentifikation aufzunehmen. Von Programmieren steht dort halt effektiv nichts drin. Aber eben: Wie setzt man eine Cloud-Anwendung um, ohne zu programmieren? Kann mich mal jemand aufklären?
Kommt sich auf die Definition von umsetzen an. Aber wenn ich die Seite richtig verstehe, werden mehr oder weniger vorgefertige Services in die Cloud geworfen und ihnen viel Glück gewünscht.

Ich finde es großartig, wie viel Mühe du dir gibst.

uname
Beiträge: 12072
Registriert: 03.06.2008 09:33:02

Re: Cloudless Cloud-Unterricht

Beitrag von uname » 26.09.2022 08:10:03

Ich finde deine Idee mit dem Cloud-Unterricht super. Wobei ich nicht weiß, ob das Niveau für "normale" Schüler nicht viel zu hoch ist. Ich denke Informatik kann man nie in den normalen Unterrichtsstunden alleine lernen. Wer nicht nebenbei noch stundenlang im privaten Kämmerlein programmiert, wird niemals Informatiker. Wer das nicht will, dem rate ich von der Informatik ab.
paedubucher hat geschrieben:Nun ist mein Grundsatz beim Unterrichten: Keine Produktschulungen, sondern grundlegende Konzepte verstehen und einüben.
Das ist der wichtigste Satz überhaupt. Daran scheitert praktisch jeder Informatik-Unterricht. Es werden nicht Konzepte (z. B. Schriftsetzung), sondern Produkte (Word) geschult.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 26.09.2022 20:00:03

Liffi hat geschrieben: ↑ zum Beitrag ↑
26.09.2022 05:25:55
Das klingt so, als würde es schwierig in den 14x2 Terminen was spaßiges auf die Beine zu stellen ohne sehr viel fertiges hinzustellen.
Ja, eine halbfertige Anwendung werde ich wohl hinstellen müssen. Aber wenigstens sollten sie bis dann alle genug Wissen haben, um die Anwendung einigermassen verstehen zu können.
Liffi hat geschrieben:
Ich versuche jetzt Kontakt mit den Autoren der ursprünglichen Modulidentifikation aufzunehmen. Von Programmieren steht dort halt effektiv nichts drin. Aber eben: Wie setzt man eine Cloud-Anwendung um, ohne zu programmieren? Kann mich mal jemand aufklären?
Kommt sich auf die Definition von umsetzen an. Aber wenn ich die Seite richtig verstehe, werden mehr oder weniger vorgefertige Services in die Cloud geworfen und ihnen viel Glück gewünscht.
Dann würde ich diese Leute mal fragen, woher sie diese Anwendung nehmen möchten :wink:
Liffi hat geschrieben: Ich finde es großartig, wie viel Mühe du dir gibst.
Vielen Dank für die ermunternden Worte!
uname hat geschrieben: ↑ zum Beitrag ↑
26.09.2022 08:10:03
Ich finde deine Idee mit dem Cloud-Unterricht super. Wobei ich nicht weiß, ob das Niveau für "normale" Schüler nicht viel zu hoch ist. Ich denke Informatik kann man nie in den normalen Unterrichtsstunden alleine lernen. Wer nicht nebenbei noch stundenlang im privaten Kämmerlein programmiert, wird niemals Informatiker. Wer das nicht will, dem rate ich von der Informatik ab.
Einige sind offenbar im Lehrbetrieb gut aufgehoben und können im 2. Jahr doch schon einiges. Andere setzen wohl nur Windows-Rechner auf und wechseln Toner aus. Hier hat man es schon nach einem Jahr mit grossen Unterschieden zu tun.
uname hat geschrieben:
paedubucher hat geschrieben:Nun ist mein Grundsatz beim Unterrichten: Keine Produktschulungen, sondern grundlegende Konzepte verstehen und einüben.
Das ist der wichtigste Satz überhaupt. Daran scheitert praktisch jeder Informatik-Unterricht. Es werden nicht Konzepte (z. B. Schriftsetzung), sondern Produkte (Word) geschult.
Die jungen Leute sind aber bereits so konditioniert. Sie fragen sich, warum man etwas wie Maps und Structs lernt, und nicht einfach Microsoft Azure.

Heute habe ich eine Übung zu SSH gemacht. Passt ja sehr gut zur "Cloud" auf IaaS-Stufe. Halt ein bisschen die Konzepte erklärt, einen Key auf die lokale VM rüberkopiert, und mit einer kleinen Webanwendung Port-Forwarding (Local und Remote) demonstriert. Einige haben darüber recht gestaunt, gerade die mit etwas mehr Wissen. Ich konnte dann auch noch Cross-Kompilierung einbringen, da ja die VM Go installiert hat, und der Host nicht. Das Binary wurde dann per scp auf den Host gezogen und dort ausgeführt. Und über den SSH-Tunnel konnten sie dann von der VM aus auf die Anwendung auf dem Host zugreifen. Über "Irrelevanz" hat heute auf jeden Fall keiner geklagt :)
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
Tintom
Moderator
Beiträge: 3033
Registriert: 14.04.2006 20:55:15
Wohnort: Göttingen

Re: Cloudless Cloud-Unterricht

Beitrag von Tintom » 26.09.2022 21:16:35

uname hat geschrieben: ↑ zum Beitrag ↑
26.09.2022 08:10:03
Ich finde deine Idee mit dem Cloud-Unterricht super.
Dem schließe ich mich an!
paedubucher hat geschrieben: ↑ zum Beitrag ↑
26.09.2022 20:00:03
Einige sind offenbar im Lehrbetrieb gut aufgehoben und können im 2. Jahr doch schon einiges. Andere setzen wohl nur Windows-Rechner auf und wechseln Toner aus. Hier hat man es schon nach einem Jahr mit grossen Unterschieden zu tun.
Wenn ich an meine Berufsschulzeit zurückdenke (allerdings im kaufmännischen Bereich), kann ich das nur bestätigen. Vor allem wird es noch schlimmer im Verlauf der Berufsschulzeit, denn es kommt vor allem auf den Betrieb an und wie sie ihre Azubis einsetzen.
Da hilft dann auch persönliche Begabung oder Fleiß des Schülers kaum, denn wenn jemand während der gesamten Lehrzeit Telefondienst schiebt und ein anderer die komplette Bandbreite des Betriebs kennen lernt reißen 1-2 Tage Berufsschule pro Woche den Karren auch nicht mehr raus, der eine langweilt sich dann im Unterricht während der andere komplett überfordert ist. Du schaffst es aber scheinbar, auch den stärkeren einen Aha-Moment zu vermitteln, von daher: weiter so! :THX:

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 27.09.2022 22:38:03

Tintom hat geschrieben: ↑ zum Beitrag ↑
26.09.2022 21:16:35
paedubucher hat geschrieben: ↑ zum Beitrag ↑
26.09.2022 20:00:03
Einige sind offenbar im Lehrbetrieb gut aufgehoben und können im 2. Jahr doch schon einiges. Andere setzen wohl nur Windows-Rechner auf und wechseln Toner aus. Hier hat man es schon nach einem Jahr mit grossen Unterschieden zu tun.
Wenn ich an meine Berufsschulzeit zurückdenke (allerdings im kaufmännischen Bereich), kann ich das nur bestätigen. Vor allem wird es noch schlimmer im Verlauf der Berufsschulzeit, denn es kommt vor allem auf den Betrieb an und wie sie ihre Azubis einsetzen.
Da hilft dann auch persönliche Begabung oder Fleiß des Schülers kaum, denn wenn jemand während der gesamten Lehrzeit Telefondienst schiebt und ein anderer die komplette Bandbreite des Betriebs kennen lernt reißen 1-2 Tage Berufsschule pro Woche den Karren auch nicht mehr raus, der eine langweilt sich dann im Unterricht während der andere komplett überfordert ist.
Ich habe meine Ausbildung in einem grossen Betrieb gemacht, wurde aber die ersten beiden Jahre zu einer kleinen, etwas altmodischen Firma ausgeliehen. Ich konnte aber dort recht selbständig das Programmieren in Visual Basic 6 und SQL erkunden. Schulisch ging es von durchschnittlich in Richtung Klassenbester in dieser Zeit.

Als ich auf die zweite Lehrhälfte dann zu meiner eigentlichen Firma kam, wurde dort gerade eXtreme Programming von einer "Software Factory" abgelöst (galt damals schon als Anti-Pattern) und schliesslich durch Outsourcing ersetzt. So bin ich in der Softwareentwicklung praktisch stehengeblieben.

In der Schule konnte ich immerhin von einem sehr engagierten Lehrer profitieren, der eben dort heute mein Chef ist. Ich ärgere mich heute über diese Zeit in der Firma, wo ich praktisch nur irgendwelche Konzepte ausformulieren und dann deren Implementierung testen musste. Privat habe ich mich mit Linux befasst, aber in der Firma konnte ich kaum noch etwas technisches lernen, höchstens extrem spezifische Werkzeuge und Prozesse. Das ganze praxisrelevante Wissen musste ich mir dann mühsam in meiner Freizeit erarbeiten.

Ein Grundsatz von meinem Unterricht ist, dass ich Sachen behandeln möchte, um die ich froh gewesen wäre, wenn sie mir ein Lehrer damals schon gezeigt hätte. So etwas wie SSH hätte man damals schon lernen können. Darum bringe ich solche Sachen nun meinen Schülern bei (Youtube-Playlist über SSH-Grundlagen).
Zuletzt geändert von paedubucher am 01.10.2022 14:03:06, insgesamt 1-mal geändert.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 01.10.2022 13:56:55

Einen muss ich noch nachlegen. Ein unzufriedener Schüler meint, er sei (nicht alleine) der Meinung, dass Go Programmieren einen Plattformentwickler (früher: Systemtechniker) nicht weiterbringe. Vielmehr wolle er die "Bedienung des Frontends einer Cloud" lernen. :roll:

Ich fahre dann mal nach den Herbstferien eine VM hoch oder eine Function und schaue, was passiert. :facepalm:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: Cloudless Cloud-Unterricht

Beitrag von Liffi » 01.10.2022 16:27:25

paedubucher hat geschrieben: ↑ zum Beitrag ↑
01.10.2022 13:56:55
Einen muss ich noch nachlegen. Ein unzufriedener Schüler meint, er sei (nicht alleine) der Meinung, dass Go Programmieren einen Plattformentwickler (früher: Systemtechniker) nicht weiterbringe. Vielmehr wolle er die "Bedienung des Frontends einer Cloud" lernen. :roll:
Puh. Hilft natürlich nichts, wenn ich jetzt sage, dass ihm die Grundlagen viel mehr bringen als die Bedienung eines irgendwie gearteten Frontends.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 01.10.2022 17:38:52

Liffi hat geschrieben: ↑ zum Beitrag ↑
01.10.2022 16:27:25
paedubucher hat geschrieben: ↑ zum Beitrag ↑
01.10.2022 13:56:55
Einen muss ich noch nachlegen. Ein unzufriedener Schüler meint, er sei (nicht alleine) der Meinung, dass Go Programmieren einen Plattformentwickler (früher: Systemtechniker) nicht weiterbringe. Vielmehr wolle er die "Bedienung des Frontends einer Cloud" lernen. :roll:
Puh. Hilft natürlich nichts, wenn ich jetzt sage, dass ihm die Grundlagen viel mehr bringen als die Bedienung eines irgendwie gearteten Frontends.
Hiermit bestätige ich die empirische Korrektheit deiner Aussage :wink:

Ich habe gerade damit begonnen, das Semesterprojekt auszuarbeiten. Auf ein Image-Sharing-Tool habe ich definitiv keine Lust, und das ist auch eher etwas für den Web-Unterricht (Frontends bauen und so). Jetzt mache ich ein kleines Monitoring- und Alerting-Tool, womit man verschiedene Endpoints durch periodisches Anfragen überwachen kann.

Die eine Komponente verwaltet die Konfiguration (welche Endpoints wie häufig, mit welcher Methode, erwarteter Status-Code, Anzahl Retries usw.). Die andere Komponente nimmt dann das Monitoring anhand dieser Konfiguration vor.

Das ganze Grundgerüst sowie die komplizierteren Teile (nebenläufige Requests) gebe ich vor. Die Konfiguration verwalte ich in einer CSV-Datei. Das können die Schüler dann durch Redis ersetzen. (Ist vielleicht nicht der pefekte Anwendungsfall: Aber die serialisierten Config-Strukturen als JSON-String sollen da reinkommen.)

Dazu soll ein kleines Alerting kommen; via REST-API eine Nachricht in den Teams- oder Slack-Chat schreiben, dass der Endpoint nicht mehr oder wieder verfügbar ist.

Die Logdateien sollen dann regelmässig in einem S3-Storage abgelegt werden. Da gibt es ja verschiedenste Anbieter.

Hierzu lasse ich die Schüler zu Beginn des Projekts vielleicht noch mögliche Anbieter suchen und evtl. den Preis für den Betrieb ganz grob berechnen.

Deployed wird das dann entweder als Function in die Cloud oder halt auf einer Cloud-VM, wo ich für jeden Schüler einen User einrichte. Mit einer grossen VM wird man wohl am günstigsten und einfachsten fahren. Aber da schaue ich jetzt mit der Schule, welche Angebote uns zur Verfügung stehen.

Um alle Aspekte verstehen zu könne ist die Zeit wohl knapp. Aber immerhin kann ich so ein paar interessante Möglichkeiten aufzeigen. Und da es nur auf freier Software basiert und nicht auf proprietären Cloud-Services, kann das dann jeder zu Hause ausbauen.

Also ich hatte da in meiner Ausbildungszeit dümmere Projekte...
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Liffi
Beiträge: 2306
Registriert: 02.10.2004 01:33:05

Re: Cloudless Cloud-Unterricht

Beitrag von Liffi » 03.10.2022 09:28:51

paedubucher hat geschrieben: ↑ zum Beitrag ↑
01.10.2022 17:38:52
Jetzt mache ich ein kleines Monitoring- und Alerting-Tool, womit man verschiedene Endpoints durch periodisches Anfragen überwachen kann.
Ausgezeichnete Idee. Machen die meisten Umgebungen später mehr oder weniger automatisch, aber das Prinzip dahinter zu verstehen ist unglaublich wichtig und nützlich.

Benutzeravatar
paedubucher
Beiträge: 856
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Cloudless Cloud-Unterricht

Beitrag von paedubucher » 05.10.2022 21:31:15

Liffi hat geschrieben: ↑ zum Beitrag ↑
03.10.2022 09:28:51
paedubucher hat geschrieben: ↑ zum Beitrag ↑
01.10.2022 17:38:52
Jetzt mache ich ein kleines Monitoring- und Alerting-Tool, womit man verschiedene Endpoints durch periodisches Anfragen überwachen kann.
Ausgezeichnete Idee. Machen die meisten Umgebungen später mehr oder weniger automatisch, aber das Prinzip dahinter zu verstehen ist unglaublich wichtig und nützlich.
Man kann daran sehr viele wichtige Prinzipien demonstrieren. Z.B. dass einem schnelle Maschinen nichts nutzen, wenn die Requests blockierend warten. Da kann man dann curl ... mit curl ... & vergleichen. Skalierung ist in erster Linie ein Software-, kein Hardwareproblem.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten