{"id":238790,"date":"2020-12-11T01:18:14","date_gmt":"2020-12-11T00:18:14","guid":{"rendered":"https:\/\/www.borncity.com\/blog\/?p=238790"},"modified":"2020-12-11T01:20:28","modified_gmt":"2020-12-11T00:20:28","slug":"misslungener-google-cloud-test-endet-mit-72-000-rechnung","status":"publish","type":"post","link":"https:\/\/borncity.com\/blog\/2020\/12\/11\/misslungener-google-cloud-test-endet-mit-72-000-rechnung\/","title":{"rendered":"Misslungener Google Cloud-Test endet mit 72.000 $-Rechnung"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" style=\"float: left; margin: 0px 10px 0px 0px; display: inline\" src=\"https:\/\/borncity.com\/blog\/wp-content\/uploads\/2014\/02\/OneDrive.jpg\" width=\"58\" align=\"left\" height=\"56\"\/>Eine Verkettung ungl\u00fccklicher Umst\u00e4nde mit verbuggtem Code hat einem Ex-Google-Mitarbeiter und Startup-Gr\u00fcnder bei einem Google Cloud-Test einige aufregende Stunden beschert. Statt ein 7 US-Dollar-Budget zu verballern, wie geplant, standen pl\u00f6tzlich 72.000 US-Dollar auf dem Rechnungskonto. <\/p>\n<p><!--more--><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"\" src=\"https:\/\/vg05.met.vgwort.de\/na\/b378a924cf14464e861abce4c688ff7b\" width=\"1\" height=\"1\"\/>Ich mache eigentlich einen weiten Umweg um alles, was mit Cloud-Diensten zu tun hat, wenn ich nicht genau kontrollieren kann, was im Hintergrund abgeht. Mir steht zwar ein dreistelliger Betrag f\u00fcr Azure-Tests bei Microsoft zur Verf\u00fcgung. Aber mir ist nie ganz wohl bei einer solchen Sache, weil man sich das Kleingedruckte genau durchlesen muss, um nicht ins finanzielle Grab zu wandern. Und im Grunde genommen brauche ich die Cloud-L\u00f6sungen auch nicht zu testen, ich setze diese ja nicht ein. <\/p>\n<p>The Register hat jetzt einen speziellen Fall in <a href=\"https:\/\/www.theregister.com\/2020\/12\/10\/google_cloud_over_run\/\" target=\"_blank\" rel=\"noopener\">diesem Artikel<\/a> aufgegriffen. Getroffen hat es Sudeep Chauhan, den Gr\u00fcnder des Startups <a href=\"https:\/\/medium.com\/milkie-way\/to-milkie-way-8a5a1bef689d\" target=\"_blank\" rel=\"noopener\">Milkie Way<\/a>. Dazu muss man sagen, dass Chauhan ein Ex-Google-Mitarbeiter ist und sogar zwei Jahre als technischer Programmmanager f\u00fcr Zahlungen t\u00e4tig war. <\/p>\n<h2>Test einer Anwendung in der Cloud<\/h2>\n<p>Das Ganze ist beim Testen einer Anwendung passiert. Die Idee war, einen Dienst auszuprobieren, der Webseiten ausliest und die Ergebnisse in einer Datenbank speichert. Das Entwicklerteam entschied sich f\u00fcr Google Cloud Run, einen GCP-Dienst zum Ausf\u00fchren von Containern, um diese Aufgabe auszuf\u00fchren. Die Daten wurden in eine Firebase-Datenbank geschrieben. Bald stellten die Entwickler fest, dass ihr Code in jeder Instanz eine Zeit\u00fcberschreitung verursachte und anhielt, w\u00e4hrend er eine Seite nach der anderen abarbeitete. <\/p>\n<p>Also richteten sie ein System ein, das Seiten parallel verarbeitete, um jede Seite innerhalb des Laufzeitlimits abzurufen und zu speichern. F\u00fcr den Test hatte Sudeep Chauhan ein Budget von 7 US-Dollar eingeplant (Ziel war es, so lange als m\u00f6glich ohne eigenen Server auszukommen). Das Problem bei diesem Ansatz: Man muss sehr genau wissen, was man da an Cloud-Diensten nutzt und welche Kosten auf einen zukommen. Chauhan schrieb dazu:&nbsp; <\/p>\n<blockquote>\n<p>Ich sprang aus dem Bett, loggte mich bei Google Cloud Billing ein und sah eine Rechnung \u00fcber ~$5.000\". Super gestresst und nicht sicher, was passiert war, klickte ich herum und versuchte herauszufinden, was passiert war. Ich fing auch an, dar\u00fcber nachzudenken, was passiert sein k\u00f6nnte und wie wir m\u00f6glicherweise die 5.000-Dollar-Rechnung bezahlen k\u00f6nnten. Das Problem war, dass die Rechnung jede Minute weiter anstieg. Nach zwei Stunden stand sie bei etwas weniger als 72.000 Dollar.<\/p>\n<\/blockquote>\n<p>Da war einiges schief gelaufen. Die Ausf\u00fchrung der Testversion von 'Hello World' auf Cloud Run verursachte 116 Milliarden Lesevorg\u00e4ngen und 33 Millionen Schreibvorg\u00e4ngen in der Firebase-Datenbank. Diese immense Zahl an Read-Operationen auf die Firebase-Datenbank schlugen mit 69.000 US-Dollar zu Buche. Um diese Zahl in die richtige Perspektive zu r\u00fccken: Google erh\u00e4lt etwa 3,5 Milliarden Suchanfragen pro Tag. Wenn jede Suche 30 Tabellen-Lookups erfordert, w\u00e4re das immer noch weniger als die Lookups, die das Testprogramm in wenigen Stunden durchgef\u00fchrt hatte.<\/p>\n<h2>Fluch der Cloud, Fluch der Instanzen<\/h2>\n<p>Hinzu kam der 'Fluch der Instanzen'. Nach dem Testen nahmen die Entwickler an, dass die Requests beendet w\u00fcrden, weil die Protokollierung gestoppt wurde. Aber tats\u00e4chlich ging jede Anfragen in einen Hintergrundprozess \u00fcber. Da die Leute die Dienste nicht l\u00f6schten (dies war das erste Mal, dass sie Cloud Run verwendeten, und sie verstanden es damals noch nicht wirklich), arbeiteten mehrere Dienste langsam weiter. In 24 Stunden verbrauchten diese auf jeweils 1000 Instanzen skalierten Dienstversionen 16.022 Stunden Cloud-Rechenzeit. <\/p>\n<p>Das verursachte weitere Kosten &#8211; und am Ende des Tages war das das Startup faktisch pleite. Aber Google hat wohl eine Ausnahme gemacht und denen diese Rechnung als einmalige Geste guten Willens erlassen. Der Original Post mit den technischen Details findet sich auf Medium und tr\u00e4gt den bezeichnenden Namen <a href=\"https:\/\/medium.com\/milkie-way\/we-burnt-72k-testing-firebase-cloud-run-and-almost-went-bankrupt-part-2-8092a3bb773d\" target=\"_blank\" rel=\"noopener\">We Burnt $72K testing Firebase \u2014 Cloud Run and almost went Bankrupt [Part 2]<\/a>.&nbsp; Der Fall zeigt, dass der Teufel im Detail steckt. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine Verkettung ungl\u00fccklicher Umst\u00e4nde mit verbuggtem Code hat einem Ex-Google-Mitarbeiter und Startup-Gr\u00fcnder bei einem Google Cloud-Test einige aufregende Stunden beschert. Statt ein 7 US-Dollar-Budget zu verballern, wie geplant, standen pl\u00f6tzlich 72.000 US-Dollar auf dem Rechnungskonto.<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7263],"tags":[1171],"class_list":["post-238790","post","type-post","status-publish","format-standard","hentry","category-cloud","tag-cloud"],"_links":{"self":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/238790","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/comments?post=238790"}],"version-history":[{"count":0,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/posts\/238790\/revisions"}],"wp:attachment":[{"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/media?parent=238790"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/categories?post=238790"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/borncity.com\/blog\/wp-json\/wp\/v2\/tags?post=238790"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}