Skillbyte Podcast #34: Serverless Computing - Hype oder Chance? AWS Lambda, Azure Functions, Google Cloud Functions richtig verwenden
Willkommen zum Skillbyte-Podcast! Skillbyte ist Ihr Partner für digitale Exzellenz.
In diesem Podcast geht es um das Thema: Serverless Computing - Hype oder Chance? AWS Lambda, Azure Functions,
Google Cloud Functions richtig verwenden
// Inhalt //
01:04 - Was ist Serverless Computing?
03:15 - FaaS - Functions as a Service
06:43 - Cloud Anbieter für Serverless Computing
07:52 - Abrechnung von Serverless Computing Ressourcen
09:25 - AWS Lambda am Beispiel von Amazon Alexa
11:56 - Vorteil: Zeiteinsparung bei der Administration ist signifikant
14:25 - Vorteil: Abrechnung nur verbrauchter Ressourcen
15:16 - Vorteil: Kosten werden Transparent
17:09 - Vorteil: Kleine Teams können Anwendungen Millionen von Menschen zur Verfügung stellen
18:10 - Nachteil: Vendor Lock-in
20:04 - Nachteil: Keine Performance-Garantie
23:43 - Nachteil: Ressourcenbeschränkungen (CPU Zeit, RAM, Laufzeit, etc.)
25:34 - Nachteil: unflexible Laufzeitumgebungen mit fixen Softwareversionen
28:35 - Debugging bei der Entiwcklung von Functions
30:30 - In diese Szenarien ist Serverless Computing besonders sinnvoll...
35:34 - ...und in diesen sind sie nicht besonders sinnvoll
Abonnieren Sie diesen Podcast und besuchen Sie uns auf https://www.skillbyte.de
Feedback und Fragen gerne an podcast@skillbyte.de
AUTOMATISCH ERZEUGTES TRANSKRIPT
Herzlich Willkommen zum Skill bald Podcast Episode Nr. 34 Servile Computing Hype oder Chance Apps, Landa, Escher Functions, Google Cloud Functions und so weiter richtig verwenden abonniert unseren Kanal für mehr spannende Themen aus dem Technologie Umfeld. Wenn die Entscheider oder IT Fachkraft seid, lasse auch gerne eine 5-Sterne Bewertung da oder sendet uns eine E-Mail mit euren Fragen an Podcast Skill bei. Wir freuen uns auch immer, wenn ihr den Podcast an eure Freunde und Kollegen weiter empfehlt.
Ich bin heute hier mit Max von Skill bald Hallo Max, Hallo Moritz, es freut mich ganz besonders, da wir ja schon wirklich über ein Jahr zusammen arbeiten, dass wir heute diese Episode zusammen machen können.
Freue mich auch dabei sein zu können. Es hat mich immer gereizt, jetzt immer auch mein Thema gefunden und einen Zeitpunkt wo verpasst.
Ja und was für ein Themas ist auf der einen Seite ein hoch spannendes Thema Server es Computing. Auf der anderen Seite hab ich den Eindruck, dass es aktuell auch etwas gehypt wird. Wir können ja mal darauf eingehen, was servile Computing eigentlich ist. Was verstehst du denn darunter?
Ich verstehe zwei Sachen Wissen. Lattmann da sei einmal Server, alles im reinen Sinne oder so wie es jetzt im Moment und den Cloud Providern beworben wird. Bedeutet zwar aber, dass er erstmal, dass man sich selber nicht um die Hardware kümmern muss. Das heißt, dass man im Endeffekt den Cloud, wobei der dafür bezahlt, dass sie die Infrastruktur bereitstellen, wo man dann nur noch seine Anwendungen drauf ausrollen muss. Und das ist eben für mich erst mal der grundlegende Server des Computing an der Stelle.
Aber natürlich gibt es auch die engere Definition, die dann vor allen Dingen auch heute im Podcast eher die größere Rolle spielt. Bowls dann eher in Richtung Funktion Access Service geht, wo dann eben auch der ausführende Layer sozusagen nochmal abstrahiert ist, sodass man wirklich nur sehr wenig Aufwand selber hat, was man sozusagen bereitstellen muss. Genau, also die Wartung der Plattform.
Du hast eben gesagt Server lässt, man muss sich nicht mehr um die Hardware kümmern. Genau genommen muss man sich ja auch um einige Ebenen der Software nicht mehr kümmern. Also kümmern im Sinne von installieren, warten, Updates einspielen, den Server tauschen, wenn er mal alt ist. All diese Dinge also ganz klar sollten wir vielleicht sagen Server List Code läuft natürlich nach wie vor auf Servern, nur man hat keinen direkten Kontakt mehr dazu, weil eben diese Schicht weg abstrahiert ist.
Ich denke, das spannendste Thema für unsere Zuhörer ist die Abstraktionsebene Functions, also Service oder App. Faas.
Das ist auch die geschichtlich neueste Stufe der Server alles Ebene. Da geht es darum der Anbieter stellt eine Laufzeit Umgebung zur Verfügung. Also das kann eine Python Runtime sein. Das kann eine Java Run Time sein, eine dort net run time. Alle möglichen Plattformen sind hier denkbar. Und auf dieser Plattform werden dann eben einzelne Funktionen oder Programmteile ausgeführt und diese werden dynamisch gestartet anhand von bestimmten Triggern und auch skaliert. Also ob ich ein Bild konvertiere beispielsweise oder tausend Bilder konvertiere parallel.
Das ist damit dann möglich. Rampen für Cloud Provider eben dafür zuständig €000 Laufzeit Umgebung bereitzustellen, die dann parallel den Job abarbeiten können. Hast du in letzter Zeit selber schon Functions, also Service Funktionen entwickelt?
Hab ich in der Tat. Das war bei zwei verschiedenen Projekten jeweils verschiedene Anwendungsfälle. Einmal haben wir das genutzt, um Web Application also an der Stelle einer Westlake JAL bereitzustellen, die eben von außen aufgehoben wird. Dann Processing mach. Und je nach bestimmte Antwort zurückgibt. Der andere ist mehr asynchronen Fal, wo sozusagen durch Daten Anlieferung Funktion getriggert wird, die dann eben Daten einliest, transformiert und dann wieder raus schreibt. Und dann kann auch in einer Kaskade dahinter eben neue Fangzähne getriggert werden, sodass dann sozusagen dieser übliche Ettl Job durch mehrere verschiedene Functions abgebildet wird, wobei jede Funktion immer nur eine Transformation ausführt und dann Pappi Events wie Datei wurde geschrieben oder neue Datei existiert.
Angetriggert werden und dann entsprechend ihre eigene Verarbeitung an der Stelle fortsetzen. Das heißt, die Verkettung der Trigger ist quasi ein Stück weit der neue Programmcode. Wieso?
Bei einer Dominostein Reihe genommen würde ich sogar vielleicht noch einen Schritt weiter gehen und sagen, dass wenn man mit Pantheons arbeitet und da komplexere Logik umsetzen will, ist man eigentlich gezwungen Microservices mehr oder weniger in Reinform zu denken und umzusetzen, weil dazu, wenn er später noch kommen Franzens bestimmte Limitationen haben, was vor allen Dingen Performance angeht, also CPU Rechenzeit. Und dann ist so eine Funktion tatsächlich auch nur gedacht als einen logischen Schritt, sodass man, wenn man verschiedene Schritte in seiner Ausführung hat, hat man sozusagen immer wieder einen neuen Micros Service, der gekrault wird oder durch ein Event ausgeführt wird, einfach um ein plastisches Beispiel zu.
Geben Wir sind ja noch bei der Definition, was Server des Computing ist. Früher hätte man so eine klassische Webanwendung oder ein Webshop hätte eine Anwendung beinhaltet, wo dann die Bestellung ausgelöst wird, das Etikett ausgedruckt wird für den Karton, der später versendet wird. Plus die Zahlung von der Kreditkarte, mit der der Kunde bezahlt hat. Eingezogen wird und im letzten Schritt wird der Warenbestand um 1 Dex demontiert, um eben diese Bestellung dann darzustellen. Und im Server ist reich, während das einzelne Funktionen, die sich nacheinander aufrufen oder das kann er teilweise sogar auch parallel geschehen.
Aber Microservices in Reinform. Diese kleinen Funktions Blöcke, die sich dann eben nacheinander aufrufen, was man vielleicht noch sagen sollte, weil das Wort oder der Begriff Server des Computing oft marketingtechnisch ausgeschlachtet wird meinen kann, sind auch so Docker Container Round Times also die bezeichnen sich auch als Server. Alles das ist hier im Kontext dieser Podcast Episode nicht gemeint. Mir meinen wirklich nur einzelne Funktionen, die miteinander verzahnt werden können und nicht ganze Programme, Bausteine oder ganze Programm Plattformen die eben hochgefahren werden, wo man dann auf einer niedrigeren Abstraktionsebene einsteigen würde.
Im Grunde, wenn man die Geschichte der Applications Entwicklung sieht, sind Server lässt die neueste Stufe, denn es wird auch. Ich habe in einem Artikel gelesen DevOps als DevOps auf Steroiden bezeichnet. Man kümmert sich im Grunde nur noch um die Programm Logik, also die einzelnen Funktionen und die Verschaltung dieser Funktion von Deist als das Beispiel, was du gegeben hast. Max, dass die Funktion über eine API aufgerufen werden und dann eben weitere Schritte wieder über Abis anstoßen. Schon wahrscheinlich das Paradebeispiel im Server des Computing Bereich.
Mit welchen Anbietern hast du denn? Und Laufzeit Umgebung? Hast du denn jetzt schon Erfahrung gesammelt?
Persönlich hab ich schon so gut wie in den drei größten Cloud Anbietern gearbeitet. Also Amazon habe erst an der Stelle Track Software an Google Cloud Computing allerdings lediglich in Apps und den Ärger mit den befangene Pandoras gearbeitet. Das wäre an der Stelle daneben Landa Funktionen bei Apps und einmal ja Funkens, dann bei Microsoft.
Ich glaube bei Google heißt es Cloud Functions und bei IBM heißt es auch Cloud Functions. Aber das unter dem Begriff Lambada und dem jeweiligen Provider wird man ganz sicher den Produktnamen ausgraben können. Okay, ich glaube, da haben wir schon mal ein gutes Grundverständnis gegeben, was Server Computing ist. Also vielleicht noch ganz kurz Welche Laufzeit Umgebung hast du eingesetzt? Ich nehme an Python, oder?
Genau. Bei mir war es jedesmal Theißen. Allerdings wenn die relativ die Wert mittlerweile aufgestellt. JavaScript funktioniert und auch jede andere große Programmiersprache wird mittlerweile auch an der Stelle unterstützt. Vielleicht noch ein Wort zur Abrechnung.
Also klassische Server bezahlt man ja, indem man einfach die Server mietet oder? Beim Cloud Server wird ja auch pro Minute abgerechnet. Beim Server Computing ist das so ein Mix aus verbrauchten CPU Ressourcen. Remme Ressourcen und Durchsatz. Das unterscheidet sich glaube ich auch bei jedem Anbietern. Bisschen gab es unterscheidet sich auch dann nochmal zusätzlich, in welchem Kontext du sie verwendet. Also ich weiß, dass man bei Apps verschiedene Modi haben kann. Man kann die typische Lambda Funktion haben.
Man kann auch Lambda haben. Man kann die Landa Funktionen mehr oder weniger direkt dem Internet preisgeben oder ein API Gateway benutzen und je nachdem welches Modul man dann je nach Funktionsweise benutzt. Damit wird es auch nochmal ein bisschen anders abgerechnet. Beim Großen und ganzen kann man eben sagen, man bezahlt für die Ressourcen, die man auch tatsächlich einsetzt. Lambada bedeutet, dass die Funktions Ausführung möglichst nahe an den Endkunden herangeführt wird, oder?
Genau das hat. Ich glaube in dem Kontext zwei Bedeutungen. Einmal wird eben z.B. das API Gateway nicht benutzt, was dann eben auch nochmal zusätzlich ein Netzwerk Delay verursachen würde. Und wie du richtig gesagt hast, werden dafür auch Server benutzt, die eben sehr nahe beim Kunden stehen. Das wirkt dann, wenn man das so möchte und bucht quasi und auch bezahlt weltweit auf die verschiedenen Server verteilt, sodass dann je nachdem von wo der Kunde das aufruft, das dann an den nächst gelegenen Server geht.
An der Stelle noch ein Beispiel Bevor wir zu den Vor und Nachteilen von Server des Computing kommen, ist Amazon Alexa also der Sprachassistenten von Amazon selber. Jedesmal wenn man mit Alexa spricht, ruft man im Hintergrund quasi eine Lambda Funktion auf, die dann antwortet. Das fand ich ganz interessant, dass Amazon die eigene Technologie für ja doch dieses Blockbuster Produkt verwendet, was natürlich dann auch Signalwirkung haben soll. Seht her, das ist stabil genug, darauf kann man sich verlassen.
Okay, jetzt haben wir schon einige Vorteile. Implizit angesprochen. Lass uns doch nochmal durchgehen, ob wir nicht was vergessen haben. Skalierbarkeit hatten wir eben schon angesprochen. Amazon Alexa kann man sich z.B. vorstellen, dass am Anfang gab es vielleicht einige tausend Nutzer, die regelmäßig mit ihrer Alexa gesprochen haben. Mittlerweile dürfen das einige Millionen sein. Und diese ganzen Anfragen können eben parallel durchgeführt werden, ohne dass man sich darum kümmern müsste, die Infrastruktur entsprechend zu skalieren.
Das macht der Cloud Provider und auch das Konzept für die Fans sind, denen ausgelegt sind, wo man quasi nur eine Funktion vom Code her bereitstellt, mit vordefinierten Inputs und definierten Outputs. Diese Art der Programmierung dadurch ist trivial möglich, dass auch tatsächlich die Anwendung eben skaliert. Weil n klassischen Anwendungen muss man potentiell eben auch nochmal Gedancken reinstecken, ob die Anwendung überhaupt staatlich ist, ob sie skalieren kann und so weiter. Und diese Sachen sind implizit automatisch gegeben, wenn man entsprechend diese Umgebung nutzen will, weil dann muss man sich diese Gedanken alle vorher machen.
Angekommen vom Cloud Provider sozusagen ein vordefinierte Event eingereicht, mit dem man arbeiten kann. Mehr hat man nicht. Man kann natürlich auch externe Systeme noch anfragen, aber erstmal hat man nur dieses Event und tut dann eben mit diesem Event was. Und dass es in sich allein von den logischen Gedanken beliebig skalierbar, sodass allein die Herangehensweise an die Programmierung so einer Funktion eben an der Stelle das Skalieren quasi gratis mitliefern.
Ich hab bei der Recherche so einen schönen Satz gefunden. Ich glaube es von Google. Das heißt from prototype to production to planet scale, also dass im Prinzip der parallelisiert Kargheit dieser Service Funktion keine Grenzen gesetzt sind. Physikalische Grenzen sind natürlich schon durch den Cloud Provider gesetzt, aber die liegen so hoch, dass man dort erst einmal keine Probleme haben sollte.
Okay, dass man sich nicht mehr um die Beschaffung von Hardware, die Installation des Betriebssystems, die Wartung und das Update des Betriebssystems und etwaiger anderer Software Komponenten kümmern muss. Das hatten wir eingangs schon erwähnt. Ist aber ein wichtiger Punkt, denn ich wette in vielen vielen Admin Teams wird signifikant viel Zeit für diese Tätigkeiten aufgewendet. Soviel zu meiner Erfahrung. Ich weiß nicht, welche du da gesammelt hast, doch das ist ja identisch.
Muss man sich ja nur einmal in der Fachliteratur ein bisschen umschauen. Es tauchen gefühlt jede Woche mindestens eine Sicherheitslücke auf, wo man dann das Team eigentlich überprüfen muss. Okay, der Server, auf denen unsere Anwendung läuft, ist da die Open Access Bibliothek jetzt drauf, die betroffen ist oder nicht? Wenn ja, wie? Installieren wir das? Können wir das im laufenden Betrieb machen und so weiter. Und all das entfällt eben, wenn man in diesem Server lebt, Kontext unterwegs ist.
Dafür bezahlt man am Ende dann den Cloud Provider, dass die sich dann eben um Wartung, Update und so weiter kümmern. Und man selber bekommt von der Situation überhaupt nichts mehr mit. Und dann muss sich auch keine Gedanken machen, was an der Stelle eben irgendein Produktionsausfall oder sowas ist. Oder dass die Funktion erstmal nicht mehr erreichbar. 2 Grad der Hauptsatz aber ja, updatet oder sonst was.
Das hat man eben an der Stelle überhaupt nicht, da auch das Thema, was oft unter den Tisch fällt Hardware Ausfall. Vielleicht erinnerst du dich an ein Projekt, wo wir beide waren, was noch nicht so lange her ist, dass eine fehlerhafte Netzwerkkarte also wirklich wochenlang Haare raufen gesorgt hat, bis sie im gefunden und deaktiviert wurde und ab dann konnte normal weitergearbeitet werden. Das sind auch Sachen. Also nicht, dass es die defekte Netzwerkkarte in einer Cloud Umgebung nicht geben kann.
Aber ich denke die STANDARD Hardware dort ist so gut Monitor, dass das relativ schnell auffällt. Genau. Und soweit ich das weiß, haben sie ja auch nochmal spezielle Software laufen, die Unstimmigkeiten im Netzwerk aufspürt oder insgesamt Unstimmigkeiten in der Hardware. Und dann wird mal einfach ein kompletter Server Schrank aus der aktiven Hardware rausgenommen, falls nur die Ahnung ist, dass da mit dem Server schon was nicht in Ordnung ist, weil Cloud Provider haben natürlich so viel Ressourcen oder so viele Backups auch, dass das einfach mal möglich ist.
Was natürlich für ein normales durchschnittlichen Unternehmen nicht einfach mal möglich ist. So viel über pro. resümierte Hardware dazu haben, dass man meinen gesamten Server Schank aus dem Rechner Cluster rausnehmen kann.
Und wer eine Woche mit Debugging von Hardware Problemen verbracht hat, der wünscht sich, dass er damit nichts zu tun haben möge.
Preis ist auch ein Vorteil. Wir haben es unter Vorteil gelistet, aber ich würde sagen, da muss man etwas aufpassen, denn es gibt durchaus auch Szenarien, wo es günstiger ist, wenn man einen eigenen Server mietet, der z.B. kontinuierlich unter Hoch Last steht oder der sehr spezielle Anforderungen erfüllen muss, also sei es Spezial Hardware oder sehr viel Arbeitsspeicher aufweisen muss, dann sind Server alles Funktionen leider keine Option.
Genau, also das muss man je nach Anwendungsfall immer evaluieren. Es gibt eben meistens bei der Cloud nicht die STANDARD Aussage. Ja, das ist günstiger als alles andere, weil dann gäbe es das andere auch nicht. Mehr dementsprechend. Wie du richtig gesagt hast, mein Server ständig ausgelastet wäre, dann ist der häufig günstiger, als wenn man die gleichen Neuyork laut über Funktionen an der Stelle Fahndungen.
Ein weiterer positiver Punkt, der in vielerlei Hinsicht positiv ist, ist die Abrechnung für verbrauchte Ressourcen, also CPU Zeit, RAM Io. Und nicht nur, weil man tendenziell, wenn man ein System, das man nur für die Last starken Zeiten im Prinzip bezahlt, sondern es wird auch sehr deutlich im Projekt oder bei mehreren Projekten, welche Projekte wie viele Kosten verursachen und wo genau bei welchem Arbeitsschritt und welchem CPU Dienst oder bei welchem Programmteil die höchsten Kosten anfallen und die meiste Berechnung anfällt und man kann dort gezielt optimieren.
Das finde ich auch sehr schön eigentlich. Früher hat man gesagt, die Datenbank läuft 24 Stunden am Tag. Dann können wir auch hier alles rein und rausrechnen und Backup machen. Jeden Abend 100 Gigabyte übers Netzwerk schieben, das ist ja eh da und jetzt muss man sich das schon genauer überlegen. Also kann natürlich auch negativer Punkt sein, weil man sich jetzt damit beschäftigen muss. Aber generell halte ich das für eine gute Sache, dass man weiß, wo welche Aufwände erzeugt werden und man einfach so nochmal einen Überblick bekommt.
Genau.
Also vielleicht auch das Beispiel, das sein Wickler ein bisschen anders entwickelt kann. Ich habe selber gemerkt, dass wenn man sich jetzt eben genau an diese neue Serviceleistung Banken mit arbeitet, dann denkt man auch mal zwei oder drei mal mehr nach, um zu überlegen Okay, brauche ich jetzt diese Datenbank Anfrage oder nicht? Wie du eben so schön gesagt hast wenns im normalen System läuft und die Datenbank Ishtar, dann macht man im Saft. Hab eine Anfrage Mehrheit dahin, obwohl es natürlich auch Bermann Snack optimieren würde.
An der Stelle bringt das natürlich auch Vorteile in jeder anderen Umgebung. Aber gerade in diesem Klout Umgebung hat man sowieso nochmal einen monetären Vorteil dadurch, sodass man dann auch als Entwickler gleich Kaymer überlegt, ob man das nicht wieder schöner oder performant an der Stelle schreiben kann.
Also es wird einfach transparent und man kann sich gezielt darum kümmern oder sich gezielt dafür entscheiden, sich nicht darum zu kümmern. Was ich noch als gigantischen Vorteil seh ist, dass dieses Wissen für die Administration, was ja in jedem Unternehmen aktuell vorhanden ist und auch früher für die Produktentwicklung unabdingbar war, nicht mehr unbedingt notwendig ist. Und auch kleine Entwicklerteams, die vielleicht nur aus Entwicklern und einem 2 DevOps Menschen bestehen, dass sie Anwendungen entwickeln und betreiben können, die von Millionen von Nutzern genutzt werden können da draußen und das ohne eigenes Infrastruktur Team.
Wenn man sich auf Zerfalle Computing konzentriert, also das entbindet einen nicht von allen administrativen Aufgaben. Man muss sich natürlich auskennen und dieses DevOps wissen sich auf schlauen was ist eine IP Adresse? Wie funktionieren Netze, wie sicher ich das ab und so weiter. Und wie Provision niedrig die Infrastruktur auf meinem gewählten Cloud Provider. Also diese klassische Rolle zwischen Entwickler und Betrieb dann aufnehmen. Aber ist es wirklich kein Admin im engeren Sinne mehr notwendig für eine Anwendung, die Millionen von Leute nutzen?
Das ist ja auch schon mal was. Also Apps zum Beispiel. Aber wie das so ist, auch wenn es wunderbar klingt und wer jetzt die Vorteile aufgezählt haben, da gibt es natürlich auch ein paar Nachteile, die wir schon gestrichen haben.
Ich glaube, der größte Nachteil, wo man sich immer bewusst sein muss, sobald man in der Cloud unterwegs ist und vor allen Dingen bei den sogenannten Managed Service. Was Fangnetze Service an der Stelle ist, ist, dass wir ein Vendor Login haben. Das heißt, wenn wir uns jetzt entscheiden, bei Apps in der Landa Funktion was zu tun, dann können wir das nicht eins zu eins so auch danach bei Google z.B. laufen lassen, falls das wichtig ist. Allerdings, das muss man natürlich auch zugeben ist, dass dadurch das Konzept hinter den Fangzähne bei den meisten festgeschrieben ist, muss man natürlich nicht die komplette Funktion neu schreiben, sondern an der Stelle eher den Input und Output so neu formatieren, dass er auch die neue Cloud passt.
Allerdings kannst du dann auch nochmal sein, dass er nach anderen Cloud ein bestimmtes Paket nicht verfügbar als Voda. Man kann es nicht nach installieren oder lohnt was. Also man legt sich erst mal auf eine Cloud fest, wenn man eben eine bestimmte Funktion Umgebung auswählt. Am Ende dessen muss man sich bewusst sein, was natürlich auch am Ende der Tweet of ist. Zwischen dem Komfort, den wir eben erwähnt haben, bezahlt man einer gewissen Stelle dann natürlich damit, dass man den Cloud-Anbieter treu sein muss.
Es hat sich noch keine Open Source Server alles Computing Platform herauskristallisiert, so z.B. kybernetisch. Es ist ja das DevOps Rechenzentrum oder der STANDARD für Container Computing kann man sagen, der von allen Cloud Anbietern angeboten werden muss, weil er einfach so omnipräsent ist. Und für Server des Computing gibt es so einen verbreiteten offenen STANDARD eben noch nicht, der ja vielleicht noch kommen kann. Es wäre zu wünschen, dass man dann zwischen den Anbietern eben auch wechseln kann.
Ich glaube, da besteht ein hohes Bedürfnis, gerade von großen Unternehmen. Aber wer weiß, was die Zukunft bringt. Einen weiteren Nachteil sehe ich im ansprecht Verhalten einer Sour, weil es Funktion. Es gibt keine Garantie, dass diese sofort eine Antwort liefert. Manchmal ist so eine gewisse Ramp up Periode notwendig von wenigen Sekunden, bis dann die Funktion eben ausgeführt werden kann. Das ist insbesondere dann kritisch, wenn ich eine interaktive Anwendung habe, also wo der Nutzer Eingaben tätigt und er dann auf die Rückantwort wartet.
Muss aber gestehen, ich habe hier noch keine Hands on Erfahrung. Ob das wirklich so ein großes Problem ist? Wir haben tatsächlich an der Stelle einmal die Erfahrung gemacht also diese Vampir Periode ist tatsächlich nur am Anfang oder wenn die Funktion eben noch länger nicht ausgeführt wurde oder immer nur sehr sporadisch ausgeübt. Dann hat man eben dieses von dir erwähnte Problem und wir hatten tatsächlich den Fall, als wir eben die erwähnte Vest API bloed haben bzw. Konsequenz von unseren Websiten aus gekrault haben.
Da ist der Traffic schlagartig angestiegen und an der Stelle das Skalieren fand nicht schnell genug statt. Auch wegen dieser WMP Zeit. Und da hat es dann eben die ersten 5 bis 10 Minuten sehr viele Bettwil Requests Server, Time Outs und so weiter gegeben. Was an der Stelle jetzt nicht so kritisch war, weil das keine Daten waren, die das Nutzerverhalten zu sehr beeinflusst hätten. Aber je nachdem in welcher Situation man ist, kann man sich das eben nicht erlauben an der Stelle.
Wir sind danach auch etwas schlauer geworden, dass wir dann eben entsprechend, bevor wir ein anderes neues Deployment oder ein neue Landa Funktion woanders eingebaut haben. Kann man das eben auch einmal händisch selber vorheizen in Anführungsstrichen, wo man dann eben entsprechenden Traffic simuliert, dass eben vorhanden ist. Und ich glaube, mittlerweile gibt es auch seit längerem eine Checkbox, die man in den entsprechenden Oberfläche setzen kann, wo dann eben die Funktionen auf Standby gehalten wird, sodass dann eben diese Scale out oder das Skalieren sehr viel schneller geht.
Allerdings muss man den eben einmal setzen und ich glaube, es kostet auch was eine gewisse Betrag, sodass man da nämlich ständig setzen sollte. Aber es ist gut zu wissen, wenn der Cloud Provider das nicht hat, dann sollte man eben einmal quasi händisch vorheizen, sodass dann bei dem produktiv ausrollen. Wenn man nicht die Möglichkeit hat, prozentual über mehr Traffic abzugeben, dann muss man eben einmal händisch das sicherstellen, dass der Traffic erarbeitet werden kann. Händisch vorheizen.
Das hört sich ja an wie bei einer alten Dampflokomotive her.
Ich war auch amüsiert, als ich das erste Mal den Vorhalt Begriff in diesem Kontext gehört habe. Aber am Ende ist es genau das.
Das ist einfach eine technische Notwendigkeit. Die Cloud Provider haben natürlich tausende oder Millionen Funktionen registriert von all ihren Kunden auf diesen Laufzeit Umgebungen und da wird wahrscheinlich nur ein Bruchteil konstant genutzt und alle anderen werden schlafen gelegt, damit es bei diesen geringen Kosten bleiben kann. Und wenn eine Funktion angefordert wird, dann muss erst einmal eine Laufzeit Umgebung Provision tiert werden oder diese Funktion dort zur Ausführung gebracht werden. Und das kann dann eben diese berühmt berüchtigten ein, zwei, drei, vier Sekunden dauern.
In der Zeit hat man keine Antwort oder die Anwendung kann ich weitermachen? Ja genau.
Und nach dieser Vampir Periode ist das eigentlich kein Problem mehr, weil die meisten glaubt wieder an der Stelle im hingehen und diese entweihen, wo die Funktion ausgeführt wird eben sozusagen Kelchen. Das erst mal nachdem die hochgefahren wurde. Diesen sauberen State sozusagen wird dann mehr oder weniger als Abbild für alle anderen Funktionen der Nacht genommen, sodass dann eben nicht mehr die gesamte Umgebung hochgefahren werden muss, sondern nur noch dupliziert werden muss, was an der Stelle sehr viel schneller geht.
Ein weiterer Nachteil und da sind wir selber, das weiß ich aus erster Hand schon häufiger dran gestoßen und haben da Lösungen für entwickelt. Ist die Ressourcen Beschränkung innerhalb einer Server Ulis Funktion? Das ist wahrscheinlich auch oder es macht einen Unterschied. Je nach Anbieter gibt es da unterschiedliche Ressourcen Beschränkungen. Aber generell kann man glaube ich festhalten, dass man in einem sehr, sehr engen Korsett steht, also beispielsweise, dass eine Funktion maximal 40 Sekunden Laufzeit aufweisen darf. Danach wird sie zwangs beendet oder dass sie nur ein Speicherbedarf von ein Gigabyte RAM konsumieren darf und kann dann nicht weiter wachsen.
Und diese Beschränkungen sorgen zum einen dafür, dass man sich natürlich sehr kurz fasst und die Funktion wirklich nur einen sehr kleinen Teil des Programms dann eben übernimmt. Auf der anderen Seite kann es ja vielleicht doch nötig sein, eine große Anzahl an Bildern zu konvertieren und dann müsste man das irgendwie anders lösen. Genau.
Also das ist so ein bisschen dem Anwendungsfall geschuldet. Ich glaube, das liegt in der Konzeption begründet, dass eben Bankwesens kleine logische Einheiten sind, die häufig wenig Ressourcen Anspruch haben und schnell antworten. Aber das dann in millionenfach sozusagen. Wie du richtig erwähnt, das haben wir auch schon häufiger Probleme gehabt mit diesem Kontext, einfach weil sich dann am Ende das Anwendung. Szenario doch anders entpuppt hat, als es ursprünglich erdacht war, sodass man dann am Ende dann doch auf eine andere Technologie ausweichen musste.
Und man muss sich wirklich vor Augen halten. Also nach diesen 40 Sekunden als Beispiel Wert wird die Funktion Ehard beendet, also mit einem Kill abgeschossen. Wenn man da noch offene Datenbank Transaktionen hat, werden die nicht abgeschlossen oder verbleiben dann in diesem Schwebezustand. Also das muss man wirklich bedenken, wenn man da eine Anwendung, die Zeit, einen weiteren Nachteil.
Wobei ich sagen muss, ich seh das gar nicht als so großen Nachteil, weil die Cloud Provider sich ja doch sehr viel Mühe geben, sind die unflexible Provisionszahlungen der Laufzeit Umgebung. Also ja, wir haben eben schon gesagt Java wird angeboten, Pfeifen wird angeboten, sie Charb wird angeboten. Alles was Rang und Namen hat, JavaScript wird angeboten, aber dennoch muss man sich Vereine dieser FOR konfektioniert Laufzeit Umgebungen entscheiden und kann nicht frei seinen eigenen Sophistik dort aufbauen.
Genau das ist auch je nach Cloud Provider ein bisschen anders gelöst und das von dir angesprochene Korsett einmal enger geschnürt als bei anderen, sodass man da eben Dependency es zum Teil können eben relativ leicht nache installiert werden. Gemeint sind Pulsen Umfeld ist ein Python Paket kann man eigentlich in allen Umgebungen nochmal nach installieren, weil das eben einfach der normale Weg ist. An der Stelle aber zum Beispiel System Bibliotheken, auf die zum Teil bestimmte Pakete angewiesen sind, weil das eben nicht nochmal neu implementiert wird in der entsprechenden Programmiersprache, sondern eben auf normalerweise vorhandenen System Bibliotheken zurückgegriffen wird.
Die können zum Teil Probleme bereiten, wenn eben entsprechend in der Laufzeit Umgebung das einfach nicht vorinstalliert ist.
Hast du da ein Beispiel? Also Verschlüsselung oder Open CSL? Würde mir direkt einfallen, dass man vielleicht nicht jedes Cypher Sued hat.
Genau an der Stelle ist es ein relativ spezielles Beispiel, also das Knuff PGP quasi. Die asymmetrische Verschlüsselung ist an der Stelle nicht installiert in den Äther Pantheons. Zumindestens hab ich das an der Stelle nicht rausgefunden, wie ich es laden könnte. Und so gut wie alle landesüblichen heißen Pakete, die eine einfache Interaktion mit nur P&G verschlüsselten Dateien ermöglichen, setzen eben darauf, dass entsprechend die Bibliothek dafür vorinstalliert ist, was an der Stelle daneben dann nicht der Fall war und was daneben zu sehr viel Rechercheaufwand geführt hat.
Am Ende mussten wir uns auch an der Stelle aus anderen Gründen auch für eine andere Umgebung entscheiden, einfach weil sich herausgestellt hat, dass die Daten am Ende zu groß waren für die Funktion.
Da kann man mehrere beschränkende Faktoren zusammen, also Software Estag und diese Ressourcen Beschränkungen, sodass man sich dann dort von der andere nicht zur weiles Computing Lösung entscheiden musste.
Ein anderes Beispiel, was ich auch noch nennen kann es QT benutzt, was Leuten, die mit einer Maschine noch nicht vertraut sind, wahrscheinlich was sagen wird. Es ist nicht mit dem STANDARD C Compiler kompiliert, zumindest standardmäßig nicht meine ich, dass das zumindest das zugrundeliegende Problem war. Auf jeden Fall ist es nur sehr schwierig möglich, das in z.B. PKW's zum Laufen zu bekommen. Es funktioniert, aber man muss dann doch wieder mehr Aufwand da reinstecken, dass man das eben selber kompiliert, weil die Laufzeit Umgebung sich eben leicht unterscheidet zu dem, was man normalerweise vorfindet, wo das Paket normalerweise ausgeführt wird.
Naja, und das sind dann genau diese Details Probleme, die dann doch wieder Zeit kosten. Was ich noch als Nachteil sehe.
Wobei da muss ich auch sagen, dass es bei manchen Cloud Providern doch relativ gut gelöst ist, das Debugging, während man diese Funktion entwickelt als man brauche so eine Art Remote Debugger, der dann in diese Server alles Computing Environment den dieBürger dort andockt und dass man die Funktion dann eben Schritt für Schritt durchlaufen kann. Da gibt es auch ganz gute Lösung, aber man hat halt all die Probleme, die man mit Remote Backing hat. Die Ports müssen offen sein, man muss die Funktion registrieren, es klappt nicht immer und man sieht nur die Funktion oder kann halt dadurch steppen.
Dadurch, dass man den Ausführung Stack nicht kennt, weiß man nicht. Okay, hab ich vielleicht einen Speicher Problem oder man sieht einfach nicht so viel wie wenn man das auf einer nativen Maschine macht. Genau.
Es gibt an der Schalotten unseren Ansatz. Zumindestens kenne ich den bei Apps so, dass sie tatsächlich einen lokalen Emulator für die Landa Funktionen bereitstellen. Der läuft dann meistens in Docker. Ich glaube es gibt auch alternative Installations Möglichkeiten, aber da hab ich mich dann für Docker entschieden. Und da wird dann quasi ein Docker Image Gisborne, wo dann deine Funktion Godwein kopiert wird und darum herum wird eben dann diese Funktion Logic simuliert. Funktioniert auch ganz gut, wenn man eben sozusagen die Events gucken will, ob die übereinstimmen, ob der Programmcode überhaupt ausführbar ist.
Was allerdings nicht ein Porst wird, zumindest zu dem Zeitpunkt wo ich es genutzt sind genau die angesprochenen CPU Limits MMW Limit. Execute belämmert in der Größe und so weiter, das wird an der Stelle dann eben nicht geprüft, sodass selbst wenn es dann eben lokal ausgeführt werden kann, man trotzdem in der Cloud noch auf Probleme stoßen.
In der Podcast Episode mit Olli haben wir ja über diese zwei Faktoren gesprochen, dass die Ausführung Umgebung möglichst der Entwicklungsumgebung entsprechen sollte. Und durch diesen Bruch hier kann man sich dann eben neue Probleme einfangen. Hier ist das dann nicht gegeben. Jetzt haben wir die Vor und Nachteile besprochen und ich glaube, jetzt kann man ganz gut ein Bild zeichnen, in welchen Szenarien servil es Computing denn besonders sinnvoll oder eben nicht sinnvoll eingesetzt werden kann. Alexas Gilt's hatten wir schon als Beispiel.
Du hast gesagt, Dienste, die Überrest APIs miteinander sprechen, eignen sich auch sehr gut, weil das einfach die natürliche Sprache der servile Funktionen ist. Wir haben gesagt, es gibt verschiedene Trigger, mit denen die Funktion gestartet werden kann. Also neue Datei in einem Cloud Folder hochgeladen. In einer Message Cue steht ein neues Objekt an. Ein Rest API Call ist auch ein Trigger Import. Daten sind vorhanden, klopfen irgendwo an, in einer Datenbank entsteht ein Eintrag. Wenn die Anwendung sich darauf stützt, kann man das auch sehr einfach abbilden und bei hoch parallelisiert Baan Anwendungen also zum Beispiel könnte man sich vorstellen einen Web Dienst wo Leute ihre Audiodateien hochladen können im Wave Format und bekommen einen komprimiertes MP3 zurück.
Das wäre ja perfekt. Parallelisiert war eben pro User oder sogar pro User Datei. Das wäre so ein Anwendungsfall wo man sehr gut dann eben sovieles Computing Funktionen einsetzen könnte.
Genau. Wobei man natürlich auch an der Stelle nochmal anmerken muss, dass man sich im Vorhinein überlegen muss, ob man entsprechend Größen Beschränkungen z.B. im Mäzenen, den Kommentierungen Beispiel zu bleiben größten Beschränkungen für die Josa auferlegt, damit das eben garantiert ist, dass in der benötigten Zeit abgearbeitet werden kann. Apropos benötigte Zeit ich bin auch über einen Artikel gestolpert, wo eine Architektur vorgeschlagen wurde, dass eben die sovieles Funktionen möglichst über Message KÜS miteinander verbunden werden sollen. Das Problem liegt darin, wenn man die Server Funktionen miteinander verknüpft und eine Funktion auf die Antwort einer zweiten Funktion wartet, dann wird das berechnet, weil die erste Funktion aktiv auf den Rückgabewert der zweiten Funktion wartet.
Und der Vorteil bei Message Cues ist, dass die erste Funktion ihren Job abschließt, in die Message Kyu ein Objekt anhängt. Die zweite Funktion läuft los, führt ihren Arbeitsschritt durch. Das Ergebnis wird wieder in die Message Kyu eingehängt und jetzt startet die erste Funktion wieder mit dem Ergebnis der zweiten Funktion und kann damit weiterarbeiten. Und das das kann man sich leicht vorstellen. Bei vielen, vielen 000. Funktionen, die vielleicht parallel ablaufen, doch sehr viel Zeit sparen kann und unterm Strich natürlich auch Kostenvorteile bringt.
Wobei an der Stelle würde sehr wahrscheinlich eher so laufen, dass du insgesamt drei Funktionen und zwei Medikus hast. Hast du sozusagen die erste Funktion in die erste mildtätigen schreibt, dann die zweite Funktion aus der ersten liest und in die zweite mit Süd-Korea einschreibt und dann die dritte Funktion darauf wieder reagiert. Dann hast du eben die Trennung der Microservices noch klarer, weil sonst hast du in der ersten Funktion zwei Logiken drin einmal den externen Trigger sozusagen und dann nochmal Handfeger.
Wenn, wie deine Antwort in die Meterdicken geschrieben wird an der Stelle genau serverseitig macht es natürlich Sinn, das auch noch aufzuteilen. Mir war jetzt eigentlich nur wichtig zu zeigen, dieses aktive Warten einer sovieles Funktion. Das sollte man vermeiden, eben aus Kosten, Gesichtspunkten.
Und ein anderer Vorteil natürlich bei diesem asynchronen ist, dass dann, wenn eine davon Ressourcen intensiver als einfach durch die Hörer Verarbeitungs Zeit, dann ist das eben auch an der Stelle abstrahiert. Ich glaube es ist insgesamt ein guter esein Hinweis für die Microservices Architektur, dass du die Kommunikation möglichst asynchron machst an der Stelle, wo du es kannst, dass man die Message Cues das machen lässt, wofür sie gedacht sind, eben per Sistieren von Objekten und die Koppelung der Funktionen.
Dann eben im Grunde wie bei einer Fabrik mit ganz vielen Fließbändern. An die Fließbänder sind da die Message QoS, dass man das dann so aufbaut. Mach doch das Recovery einfacher. Wenn einzelne Dienste streiken oder es zu Problemen kommt, dann sind die Nutzdaten weiterhin in den Message cuius vorhanden, in der Mehrzahl der Fälle aber sinnig verloren. Die Prozessors führen kann ein resoniert werden. Ich denke generell, dass sovieles Computing bei der Neukonzeption von Anwendungen, insbesondere Webanwendungen die Stärken ausspielen kann, wenn klar ist, dass die Anwendung in der Cloud betrieben werden soll, wenn klar ist, welche Funktionen dort umgesetzt werden können, auch mit Nutzer Interaction oder Import-Export Jobs.
Im Grunde so eine klassische Webanwendung kann schon oder weitestgehend Services umgebaut werden. Glaube ich schon. Im Grunde hat man mit der Services Computing Technologie oder Funktion, also Service. Ziel wie mit den Container Technologien nur auf der Abstraktionsebene höher. Man möchte Ressourcen schonen, wenn eine Funktion nicht laufen muss. Möchte man sich nicht darum kümmern und keine Hardware vorhalten oder die Hardware, kann man für andere Funktionen benutzt werden. Und nur die Funktionen, die jetzt gerade laufen müssen, sollen dann eben auch Hardware in Beschlag nehmen.
Genau wie bei Container Technologien auch plus Skalierung plus Ausfallsicherheit. Diese ganzen Benefiz, die man dazu bekommt bei der Container isierung, bekommt man natürlich auch beim Server des Computing dazu. Dennoch gibt es auch einige Szenarien, wo Functions A Service nicht sinnvoll sind.
Genau, also zwei prominente Beispiele. An der Stelle einmal das von uns bereits angesprochene Sache, dass wenn ein Server zum Beispiel 24 Stunden am Tag sieben Tage die Woche komplett ausgelastet ist, dann kann das potenziell günstiger sein, sich tatsächlich dann den virtuellen Server dahin zu stellen oder auch zwei oder drei je nach Last Verteilung an der Stelle. Was aber für mich der wichtigere Punkt ist, ist, dass man eben auch Limitationen hat. Man hat Lais Herz die Ressourcen, die man benutzen darf CPU, RAM und vor allen Dingen Dauer der Funktion, aber auch die Limitationen im deiner Umgebung.
Das heißt, wenn du Ebene Software Komponente hast, die bestimmte Bibliotheken benötigt, die man nicht ohne weiteres nach installieren kann, dann ist das eben definitiv ein Fall, den man nicht in den Fanzines umsetzen kann. Zumindestens aktuell nicht. Es kann natürlich sein, dass sich das in Zukunft ändert, aber nackte entstand hat man da einfach zu wenig Freiheiten, als dass man jede Anwendungs Situation da komplett abbilden kann?
Ich denke auch, es gibt ja durchaus Szenarien, wo man die volle Kontrolle über die Software Komponenten die man einsetzt haben möchte. Einfach weil man eine Anwendung betreibt, die zertifiziert ist mit einer bestimmten Version einer Datenbank. Und dann ist zwar weiles Computing auch nicht geeignet, einfach weil man alle Variablen kontrollieren muss, um die Anwendung konform zu betreiben, eben mit diesen zertifizierten Komponenten und der Cloud Provider, sogar wenn er die Anwendung anbietet. Es kann immer sein, dass es nächste Woche ein Update gibt und dann die nächste Version benutzt wird ungefragt und man dann quasi nicht mehr zertifizierte Software einsetzt.
Genau. Und noch ein anderer Punkt, der je nach Unternehmen weniger wichtig oder wichtiger ist, ist die Portabilität. Weil wir haben an der Stelle ja schon hervorgehoben, dass je nach Cloud Anbieter sich eben die Pantheons leicht unterscheiden und man dann eben die Anforderungen hat, das sehr leicht sehr schnell zwischen verschiedenen Clouds hin und her gewechselt werden kann. Dann empfangt uns an der Stelle nicht das Richtige, sondern dann muss man sich zum Beispiel mit Containern und der Cuba net selbst Bentheim angucken, die so standardisiert eigentlich in jeder Cloud auch als Managed Service angeboten werden.
Die Limits einer Server Umgebung als Nachteil. Also wenn man die nicht halten kann. Das haben wir schon angesprochen, dass das problematisch ist. Also wenn man sehr viel Memory braucht oder kontinuierlich CPU braucht einen Punkt, den man noch gar nicht angesprochen haben und der auf jeden Fall ein Nachteil ist. Denn der Server des Computing Welt ist das Thema Security, denn man muss sich eben vor Augen führen. Der eigene Code wird parallel mit Code von ganz vielen anderen Unternehmen ausgeführt.
Generell ist das schon gegeneinander abgeschirmt, aber wenn man jetzt an die Prozessor Fehler der großen 86 Hersteller denkt, ist das natürlich ein Thema. Also man läuft mit Code von anderen Unternehmen, mit Daten von anderen Unternehmen Memory parallel und es gibt einfach Anwendungsfälle, wo man das rechtlich nicht darf oder wo man das einfach nicht möchte. Und in diesen Fällen ist Server des Computing oder generell Cloud Computing ist auch schon schwierig. Dann vielleicht nichts für ein naja. Also in den Fällen muss man wie du schon sagst, generell bieten Cloud Provider Möglichkeiten, dass man eben exklusiv auf Service läuft, also auf tatsächlich Hardware Maschinen.
Ich bin mir nicht sicher, ob das in den Pantheons vorgesehen ist. Wenn ja, bezahlt man da deutlich mehr, weil dann natürlich die gesamte Hardware bezahlt werden muss, auch wenn man sie nicht nutzt. Das heißt, da sind dann potenziell andere Services durchaus besser geeignet, wenn man eben diese Bedenken berechtigterweise dann hat.
Das muss man dann abwägen, je nach Anwendung, die da ausgeführt wird und natürlich auch, welche Arten man am Ende verarbeitet.
Herr Server, weil Computing eignet sich insbesondere dann, wenn man dieses Microservices Service Masch eben hochfahren kann oder die Anwendung sich darauf abbilden lässt. Und man kann glaub ich sagen in anderen Szenarien opfert man den einen oder anderen Vorteil. Dieser SVR Wallis Umgebung dann schon eben zugunsten von mehr Kontrolle. Kann auch Szenarien geben, wo man z.B. Abhängigkeiten zu externen Diensten hat. Also bei meinem aktuellen Projekt gibt es z.B. viele Stammdaten liegen einem SAP System, was mehrere Sekunden benötigt, um komplexe Anfragen zu beantworten und hier Ergebnisse zu liefern.
Und da würde ich mich auch schwertun direkt Server Funktionen anzudocken, ohne. Ein Caching ler dazwischen. Weil ich sonst nicht sicherstellen kann, dass ich diese 40 Sekunden Marke oder diese Zeit SchrÃnke der Server alles Funktionen nicht irgendwann mal reiße und dann abgebrochen wird und in undefinierten Zustand habe. Genau. Häufig ist es eben, solange man sich in der Cloud selber bewegt. Vor allen Dingen beim gleichen Anbieter ist man relativ sicher, was diese Timelords angeht. Hat natürlich niemals davor gewappnet.
Es gibt auch da Systeme, die einfach nicht auf zeitige Antworten ausgelegt sind. Aber wie du richtig sagst, sobald man externe Systeme noch dazukommen, hast du einfach da nicht zwangsweise die Kontrolle drüber. Zumal man, wenn man jetzt nochmal sagt externe Systeme, die man selber gar nicht kontrolliert, weil es nochmal von einem anderen Anbieter kommt, dann muss man eben schon auch gucken, ob da die Anforderungen eingehalten werden können.
Ja, wenn das GAP zwischen alter Technologie und servile Computing oder funktionelles as a Service, die ja wirklich ganz neu und an vorderster Front der Entwicklung stehen, wenn Scepter dazwischen zu groß ist, dann muss man schauen, wie man das minimiert, damit man nicht zu viele Abstriche machen muss in beiden Welten. Ja, vielen, vielen Dank, Max, dass du heute da warst. Wenn unsere Zuhörer Fragen haben oder Feedback senden möchten, können sie das gerne tun unter der E-Mail-Adresse, Podcast etc.
. Gilbert E. Lasst uns gerne eine Bewertung dar und abonniert unseren Podcast. Und wir freuen uns immer, wenn ihr diesen auch an Freunde und Kollegen weiterleitet. Für mehr spannende Technologie. Tim schaut auch gerne auf Skill bei TE Slash Blog vorbei. Max, ich bedanke mich ganz herzlich bei dir für dieses wahnsinnig interessante Gespräche rund um Server des Computing und das Thema Functions Service. Es hat einen Riesenspaß gemacht. Danke Meads, auch Spaß gemacht, dabei zu sein.
Wunderbar! Ich wünsche dir noch einen schönen Abend.
Danke. Gleichfalls.