Kæri Google Cloud, að vera ekki afturábaksamhæft er að drepa þig.

Fjandinn Google, ég vildi ekki blogga aftur. Ég hef svo mikið að gera. Blogg tekur tíma, orku og sköpunargáfu, sem ég gæti nýtt mér vel: bækurnar mínar, tónlistin, leikurinn minn og svo framvegis. En þú ert búinn að pirra mig svo mikið að ég þarf að skrifa þetta.

Svo skulum við klára þetta.

Ég ætla að byrja á stuttri en lærdómsríkri sögu frá því ég byrjaði fyrst að vinna hjá Google. Ég veit að ég hef verið að segja margt slæmt um Google undanfarið, en það kemur mér í uppnám þegar mitt eigið fyrirtæki tekur reglulega óhæfar viðskiptaákvarðanir. Á sama tíma verðum við að gefa því til kynna: Innri innviðir Google eru sannarlega óvenjulegir, það er óhætt að segja að það er ekkert betra í dag. Stofnendur Google voru miklu betri verkfræðingar en ég mun nokkru sinni verða, og þessi saga staðfestir aðeins þá staðreynd.

Í fyrsta lagi smá bakgrunnur: Google er með gagnageymslutækni sem kallast Stórborð. Þetta var ótrúlegt tæknilegt afrek, eitt af fyrstu (ef ekki fyrstu) „óendanlega skalanlegu“ lykilgildi (K/V): í raun upphaf NoSQL. Þessa dagana gengur Bigtable enn vel í frekar troðfullu K/V geymsluplássi, en á þeim tíma (2005) var það ótrúlega flott.

Eitt fyndið við Bigtable er að þeir voru með hluti af innri stjórnflugvél (sem hluti af útfærslunni) sem kallast spjaldtölvuþjónar, með stórum vísitölum, og á einhverjum tímapunkti urðu þeir að flöskuhálsi þegar kerfið skal skalað. Bigtable verkfræðingar voru að velta fyrir sér hvernig ætti að innleiða sveigjanleika og áttuðu sig skyndilega á því að þeir gætu skipt út spjaldtölvuþjónum fyrir aðra Bigtable geymslu. Svo Bigtable er hluti af Bigtable útfærslunni. Þessar geymslur eru til staðar á öllum stigum.

Annað áhugavert smáatriði er að um tíma varð Bigtable vinsæll og alls staðar nálægur innan Google, þar sem hvert lið átti sína eigin geymslu. Svo á einum af föstudagsfundunum spurði Larry Page látlaust í framhjáhlaupi: „Af hverju eigum við fleiri en eitt stórborð? Af hverju ekki bara einn?" Fræðilega séð ætti ein geymsla að duga fyrir allar geymsluþarfir Google. Auðvitað fóru þeir aldrei í bara einn af hagnýtum þróunarástæðum (eins og afleiðingum hugsanlegrar bilunar), en kenningin var áhugaverð. Ein geymsla fyrir allan alheiminn (Við the vegur, veit einhver hvort Amazon gerði þetta með Sable þeirra?)

Allavega, hér er sagan mín.

Á þeim tíma hafði ég starfað hjá Google í rúm tvö ár og einn daginn fékk ég tölvupóst frá Bigtable verkfræðingateyminu sem hljóðaði eitthvað á þessa leið:

Kæri Steve,

Halló frá Bigtable teyminu. Við viljum upplýsa þig um að hjá [heiti gagnavera] ertu að nota mjög, mjög gamlan Bigtable tvíundirskrá. Þessi útgáfa er ekki lengur studd og við viljum hjálpa þér að uppfæra í nýjustu útgáfuna.

Vinsamlegast láttu mig vita ef þú getur tímasett einhvern tíma til að vinna saman að þessu máli.

Allt það besta,
Bigtable lið

Á Google færðu mikinn póst, svo við fyrstu sýn las ég eitthvað á þessa leið:

Kæri viðtakandi,

Halló frá einhverju liði. Við viljum koma því á framfæri bla bla bla bla bla. Bla bla bla bla bla, og bla bla bla strax.

Vinsamlegast láttu okkur vita ef þú getur tímasett einhvern dýrmætan tíma fyrir bla bla bla.

Allt það besta,
Einhvers konar skipun

Ég eyddi því næstum strax, en á jaðri meðvitundarinnar fann ég fyrir sársaukafullri, nöldrandi tilfinningu að það ekki alveg lítur þó út eins og formlegt bréf augljóslega, að viðtakandinn hafi rangt fyrir sér vegna þess að ég notaði ekki Bigtable.

En það var skrítið.

Ég eyddi restinni af deginum til skiptis í að hugsa um vinnuna og hvers konar hákarlakjöt ég ætti að prófa í ör-eldhúsinu, þar af voru að minnsta kosti þrjú nógu nálægt til að slá úr sætinu með hnitmiðuðu kexkasti, en hugsaði um að skrifa skildi mig aldrei eftir með vaxandi tilfinningu um vægan kvíða.

Þeir sögðu greinilega nafnið mitt. Og tölvupósturinn var sendur á netfangið mitt, ekki einhvers annars, og það er ekki cc: eða falið:. Tónninn er mjög persónulegur og skýr. Kannski er þetta einhvers konar mistök?

Loksins tók forvitnin völdin og ég fór að skoða Borg vélina í gagnaverinu sem þeir nefndu.

Og auðvitað var ég með BigTable geymslu undir stjórn. Fyrirgefðu, hvað? Ég skoðaði innihald þess og vá! Það var úr Codelab útungunarvélinni sem ég sat í fyrstu vikuna mína hjá Google í júní 2005. Codelab neyddi þig til að keyra Bigtable til að skrifa nokkur gildi þar, og ég virðist aldrei hafa lokað geymslunni eftir það. Það virkaði enn þó meira en tvö ár væru liðin.

Það eru nokkrir athyglisverðir hliðar á þessari sögu. Í fyrsta lagi var vinna Bigtable svo ómerkileg á mælikvarða Google að aðeins tveimur árum síðar tók einhver eftir auka geymsluplássinu, og aðeins vegna þess að útgáfan af tvöfaldanum var úrelt. Til samanburðar íhugaði ég einu sinni að nota Bigtable á Google Cloud fyrir netleikinn minn. Á þeim tíma kostaði þessi þjónusta um það bil $16 á ári. tómt Bigtable á GCP. Ég er ekki að segja að þeir séu að blekkja þig, en að mínu persónulega mati eru þetta miklir peningar fyrir tóman helvítis gagnagrunn.

Annar athyglisverður þáttur er að geymslan enn að vinna eftir tvö ár. WTF? Gagnaver koma og fara; þeir verða fyrir truflunum, þeir gangast undir áætlað viðhald, þeir breytast alltaf. Vélbúnaður er uppfærður, skipt er um rofa, allt er stöðugt í endurbótum. Hvernig í ósköpunum gátu þeir haldið forritinu mínu gangandi í tvö ár með öllum þessum breytingum? Þetta kann að virðast vera hóflegt afrek árið 2020, en á árunum 2005-2007 var það nokkuð áhrifamikið.

Og dásamlegasti þátturinn er að utanaðkomandi verkfræðiteymi í einhverju öðru ríki leitar til mín, eiganda örsmárs, næstum tóms dæmis af Bigtable, sem hefur núll umferð undanfarin tvö ár - og eru að bjóða aðstoð við að uppfæra það.

Ég þakkaði þeim fyrir, eyddi geymslunni og lífið hélt áfram eins og venjulega. En þrettán árum síðar hugsa ég enn um þetta bréf. Vegna þess að stundum fæ ég svipaðan tölvupóst frá Google Cloud. Þeir líta svona út:

Kæri Google Cloud notandi,

Til áminningar munum við hætta að nota [nauðsynlega þjónustuna sem þú notar] frá og með ágúst 2020, eftir það muntu ekki geta uppfært tilvikin þín. Við mælum með því að uppfæra í nýjustu útgáfuna, sem er í beta prófun, hefur engin skjöl, engin flutningsleið og er áður úrelt með góðri hjálp okkar.

Við erum staðráðin í að tryggja að þessi breyting hafi lágmarksáhrif á alla notendur Google Cloud vettvangsins.

Bestu vinir að eilífu,
Google Cloud Platform

En ég les næstum aldrei svona bréf, því það sem þeir segja í raun og veru er:

Kæri viðtakandi,

Fara til helvítis. Fokkaðu þig, fokkaðu þér, fokkaðu þér. Slepptu öllu sem þú gerir því það skiptir ekki máli. Það sem skiptir máli er okkar tími. Við sóum tíma og peningum í að viðhalda vitleysunni okkar og erum þreytt á því svo við munum ekki styðja það lengur. Svo hættuð helvítis plönunum þínum og farðu að grafa í gegnum skítaskjölin okkar, biðja um rusl á spjallborðunum, og við the vegur, nýja skíturinn okkar er allt öðruvísi en gamla skíturinn, því við klúðruðum þessari hönnun frekar illa, heh, en það er þitt vandamál, ekki okkar.

Við höldum áfram að reyna að tryggja að öll þróun þín verði ónothæf innan eins árs.

Vinsamlega drífðu þig
Google Cloud Platform

Og staðreyndin er sú að ég fæ svona bréf svona einu sinni í mánuði. Þetta gerist svo oft og svo stöðugt að þeir óhjákvæmilega ýtt í burtu ég frá GCP til skýjavarnarbúðanna. Ég er ekki lengur sammála því að treysta á einkaframkvæmd þeirra, því í raun er auðveldara fyrir devops að halda úti opnu kerfi á beinni sýndarvél en að reyna að halda í við Google með stefnu þess að loka „úreltum“ vörum.

Áður en ég fer aftur í Google Cloud vegna þess að ég ekki einu sinni nálægt því ekki búið að gagnrýna þá, skoðum frammistöðu félagsins á einhverjum öðrum sviðum. Verkfræðingar Google leggja metnað sinn í hugbúnaðarverkfræði sína og þetta er það sem veldur í raun vandamálum. Hroki er gildra fyrir óvarkára og það hefur leitt til þess að margir starfsmenn Google halda að ákvarðanir þeirra séu alltaf réttar og að það sé mikilvægara að hafa rétt fyrir sér (samkvæmt einhverri óljósri óljósri skilgreiningu) en að hugsa um viðskiptavini.

Ég mun gefa nokkur dæmi af handahófi frá öðrum stórum verkefnum utan Google, en ég vona að þú sérð þetta mynstur alls staðar. Það er sem hér segir: afturábak eindrægni heldur kerfum lifandi og uppfærðum í áratugi.

Afturábak eindrægni er hönnunarmarkmið allra farsælla kerfa sem eru hönnuð fyrir opið nota, það er útfært með opnum frumkóða og/eða opnum stöðlum. Mér finnst ég vera að segja eitthvað of augljóst að allir séu jafnvel óþægilegir, en nei. Þetta er pólitískt mál og því þarf dæmi.

Fyrsta kerfið sem ég mun velja er það elsta: GNU Emacs, sem er eins konar blendingur á milli Windows Notepad, OS kjarnans og Alþjóðlegu geimstöðvarinnar. Það er svolítið erfitt að útskýra, en í hnotskurn, Emacs er vettvangur sem skapaður var árið 1976 (já, fyrir næstum hálfri öld) fyrir forritun til að gera þig afkastameiri, en líkjast textaritli.

Ég nota Emacs á hverjum einasta degi. Já, ég nota líka IntelliJ á hverjum degi, það hefur vaxið í öflugan verkfæravettvang í sjálfu sér. En að skrifa viðbætur fyrir IntelliJ er miklu metnaðarfyllra og flóknara verkefni en að skrifa viðbætur fyrir Emacs. Og meira um vert, allt sem skrifað er fyrir Emacs er varðveitt að eilífu.

Ég nota ennþá hugbúnaðinn sem ég skrifaði fyrir Emacs árið 1995. Og ég er viss um að einhver noti einingar sem eru skrifaðar fyrir Emacs um miðjan níunda áratuginn, ef ekki fyrr. Þeir gætu þurft smá lagfæringar af og til, en þetta er í raun frekar sjaldgæft. Ég veit ekki um neitt sem ég hef nokkurn tíma skrifað fyrir Emacs (og ég hef skrifað mikið) sem krafðist endurskipulagningar.

Emacs hefur aðgerð sem kallast make-obsolete fyrir úreltar einingar. Hugtök Emacs fyrir grundvallarhugtök í tölvum (eins og hvað "gluggi" er) er oft frábrugðin venjum iðnaðarins vegna þess að Emacs kynnti þau fyrir löngu síðan. Þetta er dæmigerð hætta fyrir þá sem eru á undan sinni samtíð: allir skilmálar þínir eru rangir. En Emacs hefur hugtak um afskrift, sem í þeirra hrognamáli er kallað fyrning.

En í Emacs heiminum virðist vera önnur skilgreining. Önnur undirliggjandi heimspeki, ef þú vilt.

Í heimi Emacs (og á mörgum öðrum sviðum, sem við munum fjalla um hér að neðan), þýðir úrelt API staða í grundvallaratriðum: „Þú ættir í raun ekki að nota þessa aðferð, því á meðan hún virkar, þjást hún af ýmsum göllum sem við munum lista hér. En þegar öllu er á botninn hvolft er það þitt val."

Í heimi Google þýðir það að vera úreltur: "Við brjótum í bága við skuldbindingar okkar við þig." Þetta er satt. Þetta er það sem það þýðir í meginatriðum. Þetta þýðir að þeir munu þvinga þig reglulega vinna einhverja vinnu, kannski mikla vinnu, sem refsingu fyrir að trúa á þá litríkar auglýsingar: Við erum með besta hugbúnaðinn. Hraðasti! Þú gerir allt samkvæmt leiðbeiningunum, ræsir forritið þitt eða þjónustu, og svo bam, eftir eitt eða tvö ár bilar það.

Þetta er eins og að selja notaðan bíl sem mun örugglega bila eftir 1500 km.

Þetta eru tvær gjörólíkar heimspekilegar skilgreiningar á „úreldingu“. Skilgreining Google á lykt fyrirhugaða fyrningu. Ég trúi þessu ekki raunar fyrirhuguð fyrning í sama skilningi og Apple. En Google ætlar örugglega að brjóta forritin þín, á hringtorgi hátt. Ég veit þetta vegna þess að ég starfaði þar sem hugbúnaðarverkfræðingur í yfir 12 ár. Þeir hafa óljósar innri viðmiðunarreglur um hversu mikið afturábak eindrægni ætti að fylgja, en það er að lokum undir hverju einstöku liði eða þjónustu komið. Það eru engar ráðleggingar um fyrirtæki eða verkfræðistig og djörfustu ráðleggingarnar hvað varðar fyrningarlotur eru „reyndu að gefa viðskiptavinum 6-12 mánuði til að uppfæra áður en allt kerfið þeirra brýtur.

Vandamálið er miklu stærra en þeir halda og mun halda áfram í mörg ár þar sem umönnun viðskiptavina er ekki í DNA þeirra. Meira um þetta hér að neðan.

Á þessum tímapunkti ætla ég að gefa djörf yfirlýsingu um að Emacs sé farsælt að miklu leyti og jafnvel í grundvallaratriðum vegna þess að þeir taka afturábak eindrægni svo alvarlega. Reyndar er þetta ritgerð greinarinnar okkar. Farsæl, langlíf opin kerfi eiga velgengni sína að þakka örsamfélögunum sem hafa búið í kringum þau í áratugi viðbætur/viðbætur. Þetta er vistkerfið. Ég hef þegar talað um eðli kerfa og hversu mikilvægir þeir eru og hvernig Google hefur aldrei í allri fyrirtækjasögu sinni skilið hvað felst í því að búa til farsælan opinn vettvang utan Android eða Chrome.

Reyndar ætti ég að minnast á Android stuttlega vegna þess að þú ert líklega að hugsa um það.

Í fyrsta lagi er Android er ekki Google. Þau eiga nánast ekkert sameiginlegt. Android er fyrirtæki sem var keypt af Google í júlí 2005, fyrirtækið fékk að starfa meira og minna sjálfstætt og hefur í raun staðið að mestu ósnortið á milli ára. Android er alræmdur tæknistafla og álíka alræmd stingandi stofnun. Eins og einn Googler orðaði það, „Þú getur ekki bara skráð þig inn á Android.

Í fyrri grein fjallaði ég um hversu slæmar sumar fyrstu hönnunarákvarðanir Android voru. Heck, þegar ég skrifaði þessa grein voru þeir að setja út vitleysu sem kallast „instant apps“ sem eru núna (óvart!) gamaldags, og ég samhryggist ef þú værir nógu heimskur til að hlusta á Google og færa efnið þitt yfir í þessi skyndiforrit.

En það er munur hér, verulegur munur, sem er að Android fólkið skilur virkilega hversu mikilvægir pallar eru, þeir reyna eftir fremsta megni að halda gömlum Android öppum virkum. Reyndar eru viðleitni þeirra til að viðhalda afturábakssamhæfni svo öfgakennd að jafnvel ég, á stuttu tímabili mínu hjá Android deildinni fyrir nokkrum árum, fann sjálfan mig að reyna að sannfæra þá um að hætta stuðningi við sum af elstu tækjunum og API (ég hafði rangt fyrir mér) , eins og var í mörgu öðru fyrr og nú. Fyrirgefðu Android krakkar! Nú þegar ég hef farið til Indónesíu skil ég hvers vegna við þurfum þá).

Android fólkið þrýstir afturábak eindrægni út í næstum ólýsanlegar öfgar og safnar upp gríðarlegu magni af eldri tæknilegum skuldum í kerfum sínum og verkfærakeðjum. Guð minn góður, þú ættir að sjá eitthvað af þeim brjáluðu hlutum sem þeir þurfa að gera í byggingarkerfinu sínu, allt í nafni eindrægni.

Fyrir þetta veiti ég Android hin eftirsóttu „Þú ert ekki Google“ verðlaunin. Þeir vilja í raun ekki verða Google, sem veit ekki hvernig á að búa til endingargóða vettvang, heldur Android veit, hvernig á að gera það. Og Google er því mjög klár að einu leyti: að leyfa fólki að gera hlutina á sinn hátt á Android.

Hins vegar voru skyndiforrit fyrir Android frekar heimskuleg hugmynd. Og veistu hvers vegna? Vegna þess að þeir kröfðust endurskrifa og endurhanna umsókn þína! Það er eins og fólk muni einfaldlega endurskrifa tvær milljónir umsókna. Ég giska á að Instant Apps hafi verið hugmynd einhvers Googler.

En það er munur. Afturábak eindrægni kostar mikið. Android sjálft ber byrðarnar af þessum kostnaði á meðan Google krefst þess að byrðarnar verði bornar þú ert, borgandi viðskiptavinur.

Þú getur séð skuldbindingu Android um afturábak eindrægni í API þess. Þegar þú ert með fjögur eða fimm mismunandi undirkerfi sem gera bókstaflega það sama, er það öruggt merki um að það sé skuldbinding um afturábak eindrægni í kjarnanum. Sem í heimi palla er samheiti yfir skuldbindingu við viðskiptavini þína og markaðinn þinn.

Helsta vandamál Google hér er stolt þeirra af verkfræðilegu hreinlæti sínu. Þeim líkar það ekki þegar það eru margar mismunandi leiðir til að gera það sama, þar sem gömlu, minna eftirsóknarverðu leiðirnar sitja við hliðina á nýju, flottari leiðunum. Það eykur námsferilinn fyrir þá sem eru nýkomnir í kerfið, það eykur byrðina við að viðhalda eldri API, það hægir á hraða nýrra eiginleika og höfuðsyndin er að það er ekki fallegt. Google - eins og Lady Ascot úr Lísu í Undralandi eftir Tim Burton:

Lady Ascot:
- Alice, veistu hvað ég er mest hrædd við?
- Hnignun aðalsins?
- Ég var hræddur um að ég myndi hafa það ljót barnabörn.

Til að skilja skiptinguna á milli fallegs og hagnýts, skulum við kíkja á þriðja farsæla vettvanginn (á eftir Emacs og Android) og sjá hvernig hann virkar: Java sjálft.

Java hefur mikið af gamaldags API. Afskriftir eru mjög vinsælar meðal Java forritara, jafnvel vinsælli en í flestum forritunarmálum. Java sjálft, kjarnamálið og bókasöfnin eru stöðugt að afnema API.

Til að taka aðeins eitt af þúsundum dæma, loka þræði talið úrelt. Það hefur verið úrelt síðan Java 1.2 kom út í desember 1998. Það eru 22 ár síðan þetta var afskrifað.

En raunverulegur kóðinn minn í framleiðslu er enn að drepa þræði á hverjum degi. Finnst þér það virkilega gott? Algjörlega! Ég meina auðvitað ef ég myndi endurskrifa kóðann í dag myndi ég útfæra hann öðruvísi. En kóðinn fyrir leikinn minn, sem hefur glatt hundruð þúsunda manna undanfarna tvo áratugi, er skrifaður með það hlutverk að loka þráðum sem hanga of lengi, og ég þurfti aldrei að breyta því. Ég þekki kerfið mitt betur en nokkur annar, ég hef bókstaflega 25 ára reynslu af því að vinna með það í framleiðslu, og ég get sagt með vissu: í mínu tilfelli er það algjörlega að loka þessum tilteknu starfsmannaþráðum meinlaus. Það er ekki tímans og fyrirhöfnarinnar virði að endurskrifa þennan kóða og þakka Larry Ellison (líklega) fyrir að Oracle neyddi mig ekki til að endurskrifa hann.

Oracle skilur líklega vettvang líka. Hver veit.

Sönnunargögn má finna í gegnum kjarna Java API, sem eru full af úreldingarbylgjum, eins og línur jökuls í gljúfri. Þú getur auðveldlega fundið fimm eða sex mismunandi lyklaborðsleiðsögustjóra (KeyboardFocusManager) í Java Swing bókasafninu. Það er í raun erfitt að finna Java API sem er ekki úrelt. En þeir virka samt! Ég held að Java teymið muni aðeins raunverulega fjarlægja API ef viðmótið veldur hrópandi öryggisvandamálum.

Hér er málið, gott fólk: Við hugbúnaðarhönnuðir erum allir mjög uppteknir og á öllum sviðum hugbúnaðar stöndum við frammi fyrir samkeppnishæfum valkostum. Á hverjum tíma eru forritarar á tungumáli X að íhuga tungumál Y sem mögulega staðgengil. Ó, þú trúir mér ekki? Viltu kalla það Swift? Eins og allir eru að flytja til Swift og enginn er að yfirgefa það, ekki satt? Vá hvað þú veist lítið. Fyrirtæki eru að telja kostnað við tvöfalda farsímaþróunarteymi (iOS og Android) - og þau eru farin að átta sig á því að þessi þverpalla þróunarkerfi með fyndnum nöfnum eins og Flutter og React Native virka í raun og hægt er að nota til að minnka stærð þeirra. farsímateymi tvisvar eða öfugt, gera þau tvöfalt afkastamikil. Það eru alvöru peningar í húfi. Já, það eru málamiðlanir, en á hinn bóginn peningar.

Gefum tilgátu að Apple hafi í heimskulegum hætti tekið vísbendingu frá Guido van Rossum og lýst því yfir að Swift 6.0 sé afturábak ósamhæft við Swift 5.0, svipað og Python 3 sé ósamrýmanlegt Python 2.

Ég sagði þessa sögu líklega fyrir um tíu árum, en fyrir um fimmtán árum fór ég í O'Reilly's Foo Camp með Guido, sat í tjaldi með Paul Graham og fullt af stórum skotum. Við sátum í brennandi hitanum og biðum eftir því að Larry Page myndi fljúga út í persónulegri þyrlu sinni á meðan Guido keyrði áfram um „Python 3000,“ sem hann nefndi eftir fjölda ára sem það myndi taka fyrir alla að flytja þangað. Við spurðum hann í sífellu hvers vegna hann væri að brjóta eindrægni og hann svaraði: „Unicode. Og við spurðum, ef við þyrftum að endurskrifa kóðann okkar, hvaða aðra kosti myndum við sjá? Og hann svaraði "Yooooooooooooouuuuuuuniiiiiiiicooooooooode."

Ef þú setur upp Google Cloud Platform SDK („gcloud“) færðu eftirfarandi tilkynningu:

Kæri viðtakandi,

Við viljum minna þig á að stuðningur við Python 2 hefur verið úreltur, svo fokkaðu þér

… og svo framvegis. Hringur lífsins.

En málið er að sérhver verktaki hefur val. Og ef þú neyðir þá til að endurskrifa kóða nógu oft, gætu þeir hugsað um öðrum valkosti. Þeir eru ekki gíslar þínir, sama hversu mikið þú vilt að þeir séu. Þeir eru gestir þínir. Python er enn mjög vinsælt forritunarmál, en andskotinn, Python 3(000) skapaði svo mikið rugl í sjálfu sér, í samfélögum sínum og meðal notenda samfélagsins að afleiðingarnar hafa ekki verið hreinsaðar út í fimmtán ár.

Hversu mörg Python forrit hafa verið endurskrifuð í Go (eða Ruby, eða einhverjum öðrum valkostum) vegna þessa afturábaks ósamrýmanleika? Hversu mikið af nýjum hugbúnaði hefur verið skrifaður í eitthvað annað en Python, þó það gæti verið skrifað í Python, ef Guido hefði ekki brennt allt þorpið? Það er erfitt að segja, en Python hefur greinilega þjáðst. Þetta er mikið rugl og allir tapa.

Svo við skulum segja að Apple taki vísbendingu frá Guido og brjóti eindrægni. Hvað heldurðu að gerist næst? Jæja, kannski 80-90% þróunaraðila munu endurskrifa hugbúnaðinn sinn ef mögulegt er. Með öðrum orðum, 10-20% af notendahópnum fara sjálfkrafa á eitthvert samkeppnismál, eins og Flutter.

Gerðu þetta mörgum sinnum og þú munt missa helming notendahópsins. Rétt eins og í íþróttum, í heimi forritunar, skiptir núverandi form líka máli. allt. Allir sem missa helming notenda sinna á fimm árum verða álitnir Big Fat Loser. Þú verður að vera töff í heimi palla. En þetta er þar sem það að styðja ekki eldri útgáfur mun eyðileggja þig með tímanum. Vegna þess að í hvert skipti sem þú losar þig við forritara (a) missir þú þá að eilífu vegna þess að þeir eru reiðir út í þig fyrir að brjóta samninginn og (b) gefur keppinautum þínum þá.

Það er kaldhæðnislegt að ég hjálpaði Google líka að verða svona prímadonna sem hunsar afturábak samhæfni þegar ég bjó til Grok, frumkóðagreiningar- og skilningskerfi sem gerir það auðvelt að gera sjálfvirkan og hljóðfæra kóðann sjálfan - svipað og IDE, en hér geymir skýjaþjónustan raunverulegar framsetningar allra milljarða lína af Google frumkóða í stóru gagnavöruhúsi.

Grok útvegaði Googlerum öflugan ramma til að framkvæma sjálfvirkar endurstillingar á öllum kóðagrunni þeirra (bókstaflega um allt Google). Kerfið reiknar ekki aðeins út háð þitt í andstreymi (sem þú treystir á), heldur einnig niðurstreymis (sem er undir þér komið) þannig að þegar þú skiptir um API þekkirðu alla sem þú ert að brjóta! Þannig, þegar þú gerir breytingar, geturðu sannreynt að sérhver neytandi API þíns hafi uppfært í nýju útgáfuna, og í raun og veru, oft með Rosie tólinu sem þeir skrifuðu, geturðu fullkomlega sjálfvirkt ferlið.

Þetta gerir kóðagrunni Google kleift að vera innra með sér nánast yfirnáttúrulega hreinn, þar sem þeir láta þessa vélmennaþjóna þjóta um húsið og þrífa allt sjálfkrafa ef þeir endurnefndu SomeDespicablyLongFunctionName í SomeDespicablyLongMethodName vegna þess að einhver ákvað að þetta væri ljótt barnabarn og þarfir hans að vera svæfðar.

Og satt að segja virkar það nokkuð vel fyrir Google... innbyrðis. Ég meina, já, Go samfélagið hjá Google hlær að Java samfélaginu hjá Google vegna vanans þeirra að endurnýja stöðugt. Ef þú endurræsir eitthvað N sinnum, þýðir það að þú hafir ekki aðeins klúðrað því N-1 sinnum, heldur verður það nokkuð ljóst eftir smá stund að þú hafir líklega klúðrað því í Nth tilraun líka. En í stórum dráttum eru þeir ofar öllu þessu læti og halda kóðanum „hreinum“.

Vandamálið byrjar þegar þeir reyna að þröngva þessu viðhorfi á skýjabiðlara sína og notendur annarra API.

Ég hef kynnt ykkur Emacs, Android og Java aðeins; við skulum skoða nýjasta farsæla langlífa vettvanginn: vefinn sjálfan. Geturðu ímyndað þér hversu margar endurtekningar HTTP hefur farið í gegnum síðan 1995 þegar við notuðum blikkandi merki? og „Under Construction“ tákn á vefsíðum.

En það virkar samt! Og þessar síður eru enn að virka! Já krakkar, vafrar eru heimsmeistarar í afturábakssamhæfi. Chrome er annað dæmi um sjaldgæfa Google vettvang sem er með hausinn rétt skrúfaður á og eins og þú gætir hafa giskað á, þá starfar Chrome í raun sem sandkassafyrirtæki aðskilið frá restinni af Google.

Ég vil líka þakka vinum okkar í stýrikerfisframleiðendum: Windows, Linux, NOT APPLE FOCK YOU APPLE, FreeBSD, o.s.frv., fyrir að gera svo frábært starf við bakábak eindrægni á farsælum kerfum þeirra (Apple fær í besta falli C með The gallinn er sá að þeir brjóta allt alltaf án góðrar ástæðu, en einhvern veginn kemst samfélagið í kringum það með hverri útgáfu, og OS X gámar eru enn ekki alveg úreltir... ennþá).

En bíddu, segirðu. Erum við ekki að bera saman epli við appelsínur - sjálfstæð hugbúnaðarkerfi á einni vél eins og Emacs/JDK/Android/Chrome á móti fjölþjónakerfum og API eins og skýjaþjónustu?

Jæja, ég tísti um þetta í gær, en í stíl við Larry Wall (höfundur forritunarmálsins Perl - u.þ.b. pr.) á meginreglunni um "sjúga/reglur" fletti ég upp orðinu lækkað á Google og Amazon þróunarsíðum. Og þó að AWS hafi hundruð sinnum meira þjónustuframboð en GCP, í þróunarskjölum Google er minnst á afskrift um það bil sjö sinnum oftar.

Ef einhver hjá Google er að lesa þetta, þá er hann líklega tilbúinn að draga fram töflur í Donald Trump-stíl sem sýna að þeir eru í raun að gera allt rétt og að ég ætti ekki að gera ósanngjarnan samanburð eins og „fjöldi minnst á orðið afleitt á móti fjöldi þjónustu" "

En eftir öll þessi ár er Google Cloud enn númer 3 þjónustan (ég skrifaði aldrei grein um misheppnaða tilraun til að verða númer 2), en ef trúa má innherja eru nokkrar áhyggjur af því að þeir gætu brátt fallið til Nr. 4.

Ég hef engin haldbær rök til að "sanna" ritgerðina mína. Allt sem ég á eru litrík dæmi sem ég hef safnað í 30 ár sem þróunaraðili. Ég hef þegar minnst á hið innilega heimspekilega eðli þessa vandamáls; að sumu leyti er það pólitískt í þróunarsamfélögum. Sumir trúa því höfundum pallar ættu að hugsa um eindrægni á meðan aðrir telja að þetta sé áhyggjuefni notendur (hönnuðirnir sjálfir). Einn af tveimur. Reyndar, er það ekki pólitískt mál þegar við ákveðum hver eigi að bera kostnað af sameiginlegum vandamálum?

Svo þetta er pólitík. Og sennilega verða reið viðbrögð við ræðu minni.

Как notandi Google Cloud Platform, og sem AWS notandi í tvö ár (meðan ég starfaði hjá Grab), get ég sagt að það er gríðarlegur munur á hugmyndafræði Amazon og Google þegar kemur að forgangsröðun. Ég þróa ekki virkan á AWS, svo ég veit ekki vel hversu oft þeir fjarlægja gömul API. En það er grunur um að þetta gerist ekki nærri eins oft og hjá Google. Og ég trúi því sannarlega að þessi uppspretta stöðugrar deilna og gremju í GCP sé einn stærsti þátturinn sem hamlar þróun vettvangsins.

Ég veit að ég nefndi ekki sérstök dæmi um GCP kerfi sem eru ekki lengur studd. Ég get sagt að næstum allt sem ég hef notað, frá netkerfum (frá því elsta til VPC) til geymslu (Cloud SQL v1-v2), Firebase (nú Firestore með allt öðru API), App Engine (við skulum ekki einu sinni byrja) , skýendapunktar Cloud Endpoint og allt að... Ég veit það ekki - algjörlega allt þetta neyddu þig til að endurskrifa kóðann eftir að hámarki 2-3 ár, og þeir gerðu aldrei sjálfvirkan flutning fyrir þig, og oft það var alls engin skjalfest flutningsleið. Eins og það ætti að vera svo.

Og í hvert skipti sem ég horfi á AWS spyr ég sjálfan mig hvers vegna í fjandanum ég er enn á GCP. Þeir þurfa greinilega ekki viðskiptavini. Þau þurfa afgreiðsla. Skilurðu muninn? Leyfðu mér að útskýra.

Google Cloud hefur Markaður, þar sem fólk leggur til hugbúnaðarlausnir sínar, og til að forðast tómu veitingahúsaáhrifin, þurftu þeir að fylla það með einhverjum tillögum, svo þeir sömdu við fyrirtæki sem heitir Bitnami um að búa til fullt af lausnum sem eru notaðar með „einum smelli“ eða ættu að Ég skrifa það sjálfur „lausnir“ vegna þess að þær leysa engan fjandann. Þeir eru einfaldlega til sem gátreitir, sem markaðsfylling, og Google hefur aldrei verið sama um hvort eitthvað af verkfærunum virki í raun. Ég þekki vörustjóra sem hafa verið í bílstjórasætinu og ég get fullvissað þig um að þessu fólki er alveg sama.

Tökum sem dæmi, sem sagt „eins-smell“ dreifingarlausn. percona. Ég var dauðsjúkur af Google Cloud SQL skelfingum, svo ég fór að skoða að byggja upp minn eigin Percona þyrping sem valkost. Og í þetta skiptið virtist Google hafa staðið sig vel, þeir ætluðu að spara mér tíma og fyrirhöfn með því að smella á hnappinn!

Jæja frábært, við skulum fara. Við skulum fylgja hlekknum og smella á þennan hnapp. Veldu „Já“ til að samþykkja allar sjálfgefnar stillingar og dreifa þyrpingunni í Google skýjaverkefninu þínu. Haha, það gengur ekki. Ekkert af þessu rugli virkar. Tólið var aldrei prófað og það byrjaði að rotna frá fyrstu mínútu, og það kæmi mér ekki á óvart ef meira en helmingur "lausnanna" eru uppsetningar með einum smelli (nú skiljum við hvers vegna tilvitnanir) almennt virkar ekki. Þetta er algjörlega vonlaust myrkur, þar sem betra er að fara ekki inn.

En Google hefur rétt fyrir sér hvetur þú að nota þá. Þeir vilja að þú gerir það keyptur. Fyrir þá eru það viðskipti. Þeir vilja ekki neitt stuðningur. Það er ekki hluti af DNA Google. Já, verkfræðingar styðja hver annan eins og sagan mín með Bigtable sýnir. En í vörum og þjónustu fyrir venjulegt fólk sem þeir alltaf voru miskunnarlausir í að loka hvaða þjónustu sem er, sem stenst ekki arðsemismörk þó að það hafi milljónir notenda.

Og þetta er raunveruleg áskorun fyrir GCP vegna þess að þetta er DNA á bak við öll skýjaframboð. Þeir eru ekki að reyna að styðja neitt; Það er vel þekkt að þeir neita að hýsa (sem stýrða þjónustu) hugbúnað frá þriðja aðila þar til, þar til AWS gerir það sama og byggir upp farsælt fyrirtæki í kringum það, og þegar viðskiptavinir krefjast bókstaflega þess sama. Hins vegar þarf smá átak til að fá Google til að styðja eitthvað.

Þessi skortur á stuðningsmenningu, ásamt "við skulum brjóta það til að gera það fallegra" hugarfari, fjarlægir þróunaraðila.

Og það er ekki gott ef þú vilt byggja langlífan vettvang.

Googlaðu, vaknaðu, fjandinn hafi það. Það er 2020 núna. Þú ert enn að tapa. Það er kominn tími til að líta vel í spegil og svara því hvort þú viljir virkilega vera áfram í skýjabransanum.

Ef þú vilt vera þá hættu að brjóta allt. Krakkar, þið eruð ríkir. Við verktaki gerum það ekki. Svo þegar kemur að því hver mun axla byrðarnar af eindrægni, þá þarftu að taka það á þig. Ekki fyrir okkur.

Vegna þess að það eru að minnsta kosti þrjú mjög góð ský í viðbót. Þeir benda.

Og nú mun ég halda áfram að laga öll biluð kerfi mín. Eh.

Þar til næst!

PS Uppfærsla eftir að hafa lesið nokkrar umræður um þessa grein (umræðurnar eru frábærar, btw). Firebase stuðningi hefur ekki verið hætt og það eru engar áætlanir sem mér er kunnugt um. Hins vegar eru þeir með viðbjóðslega streymisvillu sem veldur því að Java biðlarinn stöðvast í App Engine. Einn af verkfræðingum þeirra hjálpaði mér að leysa þetta vandamál, þegar ég vann hjá Google, en þeir lagaðu villuna í raun og veru, svo ég er með vitlausa lausn á því að þurfa að endurræsa GAE appið á hverjum degi. Og þannig hefur það verið í fjögur ár! Þeir eru nú með Firestore. Það mun taka mikla vinnu að flytja til þess þar sem þetta er allt annað kerfi og Firebase villan verður aldrei lagfærð. Hvaða ályktun er hægt að draga? Þú getur fengið hjálp ef þú vinnur í fyrirtæki. Ég er líklega sá eini sem notar Firebase á GAE vegna þess að ég skrái minna en 100 lykla í 100% innfæddu forriti og það hættir að virka á tveggja daga fresti vegna þekktrar villu. Hvað get ég sagt annað en að nota það á eigin ábyrgð. Ég er að skipta yfir í Redis.

Ég hef líka séð reyndari AWS notendur segja að AWS hætti yfirleitt aldrei að styðja neina þjónustu og SimpleDB er frábært dæmi. Forsendur mínar um að AWS hafi ekki sama enda stuðningssjúkdóms og Google virðist vera réttlætanlegt.

Að auki tók ég eftir því að fyrir 20 dögum síðan braut Google App Engine teymið hýsingu á mikilvægu Go bókasafni og lokaði GAE forriti frá einum af helstu Go þróunaraðilum. Það var virkilega heimskulegt.

Að lokum, ég hef heyrt Googler nú þegar ræða þetta mál og eru almennt sammála mér (elska ykkur!). En þeir virðast halda að vandamálið sé óleysanlegt vegna þess að menning Google hafði aldrei rétta hvatauppbyggingu. Ég hélt að það væri gott að taka smá tíma til að ræða þá alveg ótrúlegu reynslu sem ég hafði að vinna með AWS verkfræðingum á meðan ég starfaði hjá Grab. Einhvern tímann í framtíðinni, vona ég!

Og já, árið 2005 voru þeir með mismunandi tegundir af hákarlakjöti á risahlaðborðinu í byggingu 43 og uppáhaldið mitt var hamarhákarlakjötið. Hins vegar, árið 2006, losnuðu Larry og Sergei við allt óhollt snarl. Svo í Bigtable sögunni árið 2007 voru í raun engir hákarlar og ég blekkti þig.

Þegar ég horfði á cloud Bigtable fyrir fjórum árum síðan (gefa eða taka), var þetta þar sem kostnaðurinn var. Það virðist hafa lækkað aðeins núna, en það er samt mjög mikið fyrir tómt gagnageymsluhús, sérstaklega þar sem fyrsta sagan mín sýnir hversu ómarktækt tómt stórt borð er á þeirra mælikvarða.

Afsakið að hafa móðgað Apple samfélagið og ekki sagt neitt fallegt um Microsoft o.s.frv. Það er allt í lagi með þig, ég þakka virkilega alla umræðuna sem þessi grein hefur skapað! En stundum þarf að gera smá bylgjur til að hefja umræðu, veistu?

Takk fyrir að lesa.

Uppfært 2, 19.08.2020/XNUMX/XNUMX. Rönd uppfærir API rétt!

Uppfært 3, 31.08.2020/2/2. Google verkfræðingur hjá Cloud Marketplace hafði samband við mig sem reyndist vera gamall vinur minn. Hann vildi komast að því hvers vegna CXNUMXD virkaði ekki og við komumst að lokum að því að það var vegna þess að ég hafði byggt upp netið mitt fyrir mörgum árum, og CXNUMXD var ekki að vinna á eldri netkerfum vegna þess að undirnetsbreytu vantaði í sniðmát þeirra. Ég held að það sé best fyrir hugsanlega GCP notendur að ganga úr skugga um að þeir þekki nógu marga verkfræðinga hjá Google...

Heimild: www.habr.com