Maledetta Google, ùn aghju micca vulsutu di novu bloggu. Aghju tantu da fà. U blogging richiede tempu, energia è creatività, chì puderaghju aduprà bè: i mo libri, , u mo ghjocu è cusì. Ma m'avete abbastanza arrabbiatu chì aghju da scrive questu.
Allora finiscemu questu.
Lasciami principià cù una storia corta ma istruttiva da quandu aghju cuminciatu à travaglià in Google. Sò chì aghju dettu assai cose cattive annantu à Google ultimamente, ma mi dispiace quandu a mo propria cumpagnia piglia regularmente decisioni cummerciale incompetenti. À u listessu tempu, ci vole à dà u so meritu : l'infrastruttura interna di Google hè veramente straordinaria, hè sicuru di dì chì ùn ci hè nunda di megliu oghje. I fundatori di Google eranu ingegneri assai megliu ch'e aghju mai esse, è sta storia solu cunfirma stu fattu.
Prima, un pocu sfondate: Google hà una tecnulugia di almacenamiento di dati chjamata . Hè statu un successu tecnicu notevule, unu di i primi (se micca u primu) "infinitamente scalabile" magazzini di chjave-valore (K / V): essenzialmente u principiu di NoSQL. In questi ghjorni Bigtable hè sempre bè in u spaziu di almacenamentu K / V piuttostu affollatu, ma à l'epica (2005) era incredibilmente cool.
Una cosa curiosa di Bigtable hè chì anu avutu l'uggetti di u pianu di cuntrollu internu (cum'è parte di l'implementazione) chjamati servitori di tavuletta, cù indici grossi, è in un certu puntu sò diventati un collu di bottiglia quandu scala u sistema. L'ingegneri di Bigtable eranu perplessi nantu à cumu implementà a scalabilità, è di colpu si sò realizati chì puderanu rimpiazzà i servitori di tablette cù altre almacenamiento Bigtable. Allora Bigtable face parte di l'implementazione di Bigtable. Queste strutture di almacenamento sò quì à tutti i livelli.
Un altru dettagliu interessante hè chì per un tempu Bigtable hè diventatu populari è omnipresente in Google, cù ogni squadra chì hà u so propiu repository. Allora in una di e riunioni di u venneri, Larry Page hà dumandatu casualmente in passaghju: "Perchè avemu più di una Bigtable? Perchè micca solu unu?" In teoria, un almacenamentu deve esse abbastanza per tutti i bisogni di almacenamentu di Google. Di sicuru, ùn anu mai andatu à unu solu per ragioni di sviluppu praticu (cum'è e cunsequenze di un fallimentu potenziale), ma a teoria era interessante. Un repository per tuttu l'Universu (Per via, qualcunu sapi se Amazon hà fattu questu cù u so Sable?)
In ogni casu, eccu a mo storia.
À quellu tempu, aghju travagliatu in Google per pocu più di dui anni, è un ghjornu aghju ricevutu un email da a squadra di l'ingegneria di Bigtable chì andava qualcosa cusì:
Caru Steve,
Salutami da a squadra di Bigtable. Vuleriamu informà chì in [nome di u centru di dati] site aduprate un binariu Bigtable assai, assai anticu. Questa versione ùn hè più supportata è vulemu aiutà vi aghjurnà à l'ultima versione.
Per piacè fatemi sapè se pudete pianificà un pocu di tempu per travaglià inseme annantu à questu prublema.
Tuttu u megliu,
Bigtable Team
In Google avete assai mail, cusì à u primu sguardu aghju lettu qualcosa cum'è questu:
Caru destinatariu,
Salutami da qualchi squadra. Vulemu cumunicà chì bla bla bla bla. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
Per piacè fateci sapè se pudete programà un pocu di u vostru preziosu tempu per bla bla bla.
Tuttu u megliu,
Qualchì tipu di cumandamentu
L'aghju guasi sguassatu subitu, ma à u bordu di a mo cuscenza aghju avutu una sensazione dolorosa è fastidiosa chì micca propiu pare ancu una lettera formale evidentemente, chì u destinatariu era sbagliatu perchè ùn aghju micca usatu Bigtable.
Ma era stranu.
Aghju passatu u restu di a ghjurnata alternativamente à pensà à u travagliu è à quale tipu di carne di squalo pruvà in a micro-cucina, di quale almenu trè eranu abbastanza vicini per chjappà da u mo sediu cun un biscottu ben miratu, ma u U pensamentu di scrive ùn m'hà mai lasciatu cun un sentimentu crescente d'ansietà ligera.
Hanu dettu chjaramente u mo nome. È l'email hè statu mandatu à u mo indirizzu email, micca à l'altru, è ùn hè micca cc: o bcc:. U tonu hè assai persunale è chjaru. Forse questu hè un tipu di sbagliu?
Infine, a curiosità hà avutu u megliu di mè è andò à guardà a cunsola Borg in u centru di dati chì anu citatu.
E sicuru, aghju avutu l'almacenamiento BigTable sottu gestione. Mi dispiace, chì ? Aghju guardatu u so cuntenutu, è wow! Era da l'incubatore Codelab in cui aghju assittatu durante a mo prima settimana in Google in u ghjugnu di u 2005. Codelab vi hà obligatu à eseguisce Bigtable per scrive qualchi valori quì, è apparentemente ùn aghju mai chjusu u almacenamentu dopu. Era sempre travagliatu ancu s'ellu era passatu più di dui anni.
Ci sò parechji aspetti degne di nota di sta storia. Prima, u travagliu di Bigtable era cusì insignificante nantu à a scala di Google chì solu dui anni dopu qualchissia hà avutu l'almacenamiento extra, è solu perchè a versione di u binariu era obsoleta. Per paragone, una volta aghju pensatu à aduprà per u mo ghjocu in linea. À u mumentu, stu serviziu costa circa $ 16 annu. viotu Bigtable nantu à GCP. Ùn dicu micca ch'elli vi scamming, ma in u mo parè persunale, hè assai soldi per una basa di dati viota.
Un altru aspettu degne di nota hè chì u almacenamentu travaglia sempre dopu à dui anni. WTF? I centri di dati venenu è vanu; anu sperienze outages, sò sottumessi à mantenimentu programatu, cambianu tuttu u tempu. L'hardware hè aghjurnatu, i switch sò scambiati, tuttu hè constantemente migliuratu. Cumu l'infernu sò stati capaci di mantene u mo prugramma in funzione per dui anni cù tutti questi cambiamenti? Questu pò sembrà un modestu successu in 2020, ma in 2005-2007 era abbastanza impressiunanti.
È l'aspettu più maravigliu hè chì una squadra di l'ingegneria esterna in un altru statu si avvicina à mè, u pruprietariu di qualchì casu minuscule, quasi viotu, di Bigtable, chì hà trafficu zero per l'ultimi dui anni - è offrenu aiutu per aghjurnà.
Aghju ringraziatu, sguassatu l'almacenamiento, è a vita cuntinuava cum'è di solitu. Ma tredeci anni dopu, pensu sempre à quella lettera. Perchè qualchì volta riceve email simili da Google Cloud. Sembranu cusì:
Caru utilizatore di Google Cloud,
Cum'è un ricordu, interromperemu u serviziu [serviziu essenziale chì utilizate] da Aostu 2020, dopu à quale ùn puderete micca aghjurnà e vostre istanze. Hè ricumandemu di aghjurnà à l'ultima versione, chì hè in teste beta, ùn hà micca documentazione, nè percorsu di migrazione è hè prima obsoleta cù u nostru aiutu.
Semu impegnati à assicurà chì stu cambiamentu hà un impattu minimu in tutti l'utilizatori di a piattaforma Google Cloud.
I migliori amichi per sempre,
Google Cloud Platform
Ma ùn aghju quasi mai lettu tali lettere, perchè ciò chì dicenu veramente hè:
Caru destinatariu,
Vai a cagà. Cazzo, cazzo, cazzo. Abbandunate tuttu ciò chì fate perchè ùn importa micca. Ciò chì importa hè u nostru tempu. Perdemu u tempu è i soldi per mantene a nostra merda è simu stanchi d'ellu ùn ne sustenemu più. Allora lasciate i vostri fottuti piani è cuminciate à scavà à traversu a nostra documentazione di merda, mendicanti per scraps in i fori, è per via, a nostra nova merda hè cumplitamenti sfarente da a vechja merda, perchè avemu sguassatu stu disignu abbastanza male, eh, ma questu hè u vostru. prublema, micca u nostru.
Continuemu à fà sforzi per assicurà chì tutti i vostri sviluppi diventanu inutilizabili in un annu.
Per favore, cazzo
Google Cloud Platform
È u fattu hè chì aghju ricevutu tali lettere circa una volta à u mese. Questu succede cusì spessu è cusì constantemente chì inevitabbilmente alluntanatu mè da GCP à u campu anti-nuvola. Ùn sò più d'accordu à dipende di i so sviluppi privati, perchè in fattu hè più faciule per i devops di mantene un sistema open source nantu à una macchina virtuale nuda cà di pruvà à seguità Google cù a so pulitica di chjude i prudutti "obsoleti".
Prima di vultà in Google Cloud perchè I mancu vicinu Ùn hè micca finitu di criticà elli, fighjemu a prestazione di a cumpagnia in certi altri spazii. L'ingegneri di Google sò orgogliosi di a so disciplina di l'ingegneria di u software, è questu hè ciò chì in realtà causa prublemi. L'orgogliu hè una trappula per l'inghjustu, è hà purtatu à parechji impiegati di Google à pensà chì e so decisioni sò sempre ghjustu è chì esse ghjustu (per una certa definizione vaga fuzzy) hè più impurtante chè a cura di i clienti.
Daraghju alcuni esempi aleatorii da altri grandi prughjetti fora di Google, ma spergu chì vede stu mudellu in ogni locu. Hè cusì: A cumpatibilità inversa mantene i sistemi vivi è aghjurnati per decennii.
A cumpatibilità backward hè u scopu di cuncepimentu di tutti i sistemi di successu cuncepiti apertu usu, vale à dì, implementatu cù codice fonte aperta è / o standard aperti. Mi sentu chì dicu qualcosa di troppu ovvi chì tutti sò ancu scomodi, ma nò. Questu hè un prublema puliticu, cusì ci vole esempii.
U primu sistema chì sceglieraghju hè u più vechju: GNU Emacs, chì hè una spezia d'ibridu trà Notepad Windows, u kernel di u sistema operativu, è a Stazione Spaziale Internaziunale. Hè un pocu difficiule à spiegà, ma in poche parole, Emacs hè una piattaforma di prugrammazione creata in u 1976 (iè, guasi mezu seculu fà) per aumentà a vostra produttività, ma mascherata da editore di testu.
Aghju aduprà Emacs ogni ghjornu. Iè, aghju ancu aduprà IntelliJ ogni ghjornu, hè diventatu una piattaforma putente di u so propiu. Ma scrive estensioni per IntelliJ hè un compitu assai più ambiziosu è cumplessu chè scrive estensioni per Emacs. È più impurtante, tuttu ciò chì hè scrittu per Emacs hè cunservatu per sempre.
Aghju sempre aduprà u software chì aghju scrittu per Emacs in u 1995. È sò sicuru chì qualchissia usa moduli scritti per Emacs à a mità di l'anni 80, se micca prima. Puderanu esse bisognu di un pocu tweaking da u tempu à u tempu, ma questu hè veramente raru. Ùn sò micca sapè nunda chì aghju mai scrittu per Emacs (è aghju scrittu assai) chì necessitava una re-architettura.
Emacs hà una funzione chjamata make-obsolete per entità obsolete. A terminologia di Emacs per i cuncetti fundamentali di l'informatica (cum'è ciò chì una "finestra") hè spessu diffarenza da e cunvenzioni di l'industria perchè Emacs l'hà introduttu assai tempu fà. Questu hè un periculu tipicu per quelli chì sò davanti à u so tempu: tutti i vostri termini sò sbagliati. Ma Emacs hà un cuncettu di deprecazione, chì in u so jargon hè chjamatu obsolescenza.
Ma in u mondu Emacs pare esse una definizione di travagliu sfarente. Una filusufìa sottostante sfarente, se vulete.
In u mondu di Emacs (è in parechje altre aree, chì copreremu quì sottu), u statutu API deprecated significa basicamente: "Ùn duvete micca aduprà stu approcciu, perchè mentre funziona, soffre di diversi difetti chì avemu da fà. lista quì. Ma à a fine di u ghjornu, hè a vostra scelta ".
In u mondu di Google, esse obsoleti significa "Semu in violazione di u nostru impegnu à voi". Questu hè veru. Questu hè ciò chì significa essenzialmente. Questu significa chì vi furzà rigulari fà qualchì travagliu, forse assai travagliu, cum'è punizioni per crede in elli : Avemu u megliu software. U più veloce! Fate tuttu secondu l'istruzzioni, lanciate a vostra applicazione o serviziu, è dopu bam, dopu un annu o dui si rompe.
Hè cum'è a vendita di una vittura usata chì si romperà definitivamente dopu à 1500 km.
Il s'agit de deux définitions filosofiques complètement différentes de "obsolescence". Definizione di l'odore di Google . Ùn credu micca questu in realtà obsolescenza pianificata in u listessu sensu cum'è Apple. Ma Google hè di sicuru prughjettatu di rompe i vostri prugrammi, in una manera rotonda. Sò questu perchè aghju travagliatu quì cum'è ingegnere di software per più di 12 anni. Hanu vagi direttivi interni nantu à a quantità di cumpatibilità inversa deve esse seguita, ma hè in ultimamente à ogni squadra o serviziu individuale. Ùn ci sò micca cunsiglii di l'impresa o di l'ingegneria, è a ricunniscenza più audace in quantu à i cicli di obsolescenza hè "pruvà di dà à i clienti 6-12 mesi per aghjurnà prima di rompe tuttu u so sistema".
U prublema hè assai più grande di ciò chì pensanu, è persisterà per l'anni à vene perchè a cura di i clienti ùn hè micca in u so DNA. Più nantu à questu quì sottu.
À questu puntu, aghju da fà una dichjarazione audace chì Emacs hè successu in gran parte è ancu principalmente perchè piglianu a cumpatibilità inversa cusì seriamente. In fatti, questu hè a tesi di u nostru articulu. I sistemi aperti riesciuti è longevi duveranu u so successu à e microcomunità chì anu campatu intornu à elli per decennii. estensioni/pluginsEccu ciò chì hè un ecosistema. Aghju digià discuttu l'essenza di e piattaforme è quantu sò impurtanti, è cumu Google ùn hà mai, in tutta a so storia corporativa, capitu ciò chì entra in a creazione di una piattaforma aperta di successu, senza cuntà Android o Chrome.
In fatti, devu mintuvà brevemente Android, perchè probabilmente ci avete pensatu.
Prima di tuttu, Android - questu ùn hè micca GoogleÙn anu guasi nunda in cumunu trà di elli. Android — hè una sucietà chì hè stata cumprata da Google in lugliu 2005, è a cumpagnia hè stata autorizata à operà più o menu autonomamente è hè rimasta in gran parte intatta in l'anni chì sò passati. Android — hè una pila tecnologica notoria è una urganizazione altrettantu notoria è spinosa. Cum'è un Googler hà dettu: "Ùn pudete micca solu entre Android».
In unu di i mo articuli precedenti aghju digià discuttu quantu eranu male alcune di e prime decisioni di cuncepimentu. AndroidDiamine, quandu aghju scrittu quell'articulu, stavanu lancendu sta schifezza chjamata "applicazioni istantanee", chì hè avà (surpresa!) , è simpaticu s'è tù sì stupidu abbastanza à sente à Google è spustà u vostru cuntenutu à sti Apps instantani.
Ma ci hè una differenza quì, una differenza significativa, chì hè chì a ghjente di Android Capiscenu veramente quantu sò impurtanti e piattaforme, facenu u so megliu per mantene l'applicazioni legacy in funzione. AndroidIn fatti, i so sforzi per mantene a retrocompatibilità sò cusì estremi chì ancu eiu, durante u mo breve mandatu cù a divisione, Android Qualchi anni fà, mi sò trovu à pruvà à cunvinceli à abbandunà u supportu per alcuni di i dispositivi è API più antichi (mi sbagliava, cum'è aghju fattu cù tante altre cose passate è presenti. Scusate, a ghjente di AndroidAvà chì sò statu in Indonesia, capiscu perchè ne avemu bisognu).
Persone da Android Spinghjenu a retrocompatibilità à estremi guasi inimmaginabili, ciò chì accumula una quantità enorme di debitu tecnicu legacy in i so sistemi è catene di strumenti. Diu meu, duvresti vede alcune di e cose pazze chì devenu fà in u so sistema di compilazione, tuttu in nome di a compatibilità.
Per questu aghju premiatu Android u premiu tantu bramatu "Ùn site micca Google". Ùn volenu micca diventà Google, chì ùn pò micca custruisce piattaforme durevule, ma Android sà, cumu fà. È cusì Google hè assai intelligente in un aspettu: permette à e persone di Android fà tuttu à a to manera.
Tuttavia, l'applicazioni istantanee per Android eranu una idea abbastanza stupida. È sapete perchè? Perchè avianu bisognu riscrivite è riprogettate a vostra applicazione! Hè cum'è se a ghjente riscrive solu dui milioni di applicazioni. Supponu chì Instant Apps era un'idea di alcuni Googler.
Ma ci hè una differenza. A retrocompatibilità vene à un costu significativu. Android porta ellu stessu u pesu di sti costi, mentre chì Google insiste chì questu pesu sia purtatu sì, cliente pagante.
Pudete vede l'impegnu Android Compatibilità à l'inversu in e so API. Quandu avete quattru o cinque sottosistemi diversi chì facenu letteralmente a stessa cosa, hè un segnu sicuru chì ci hè un impegnu à a compatibilità à l'inversu à u core. In u mondu di e piattaforme, questu hè sinonimu di impegnu versu i vostri clienti è u vostru mercatu.
U prublema principali di Google quì hè u so orgogliu in a so igiene ingegneria. Ùn li piace micca quandu ci sò parechje modi diffirenti di fà a listessa cosa, cù l'antichi modi menu desiderati à pusà accantu à i modi novi è più fantastichi. Aumenta a curva di apprendimentu per quelli chì sò novi à u sistema, aumenta a carica di mantene l'API legacy, rallenta a velocità di e funzioni novi, è u peccatu cardinale hè chì ùn hè micca bellu. Google - cum'è Lady Ascot da Alice in Wonderland di Tim Burton:
Lady Ascot:
- Alice, a sapete ciò chì aghju più paura ?
- A decadenza di l'aristocrazia ?
- Aviu paura ch'e aghju avutu nipoti brutti.
Per capisce u compromessu trà bellu è praticu, guardemu a terza piattaforma di successu (dopu Emacs è Android) è vedemu cumu funziona: Java stessu.
Java hà assai API obsoleti. A deprecazione hè assai populari trà i programatori Java, ancu più populari chè in a maiò parte di e lingue di prugrammazione. Java stessu, a lingua di core, è e biblioteche sò constantemente deprecate l'API.
Per piglià solu unu di millaie di esempi, cunsideratu obsolet. Hè stata obsoleta da a liberazione di Java 1.2 in dicembre 1998. Sò passati 22 anni chì questu hè statu obsoletu.
Ma u mo codice attuale in a produzzione hè sempre uccidendu i fili ogni ghjornu. Pensate veramente chì hè bonu? Assolutamente! Vogliu dì, di sicuru, s'ellu aghju da riscriva u codice oghje, l'aghju implementatu in modu diversu. Ma u codice per u mo ghjocu, chì hà fattu cintinara di millaie di persone felici in l'ultimi dui decennii, hè scrittu cù una funzione per chjude i fili chì pende troppu longu, è aghju. mai avutu a cambià. Cunnoscu u mo sistema megliu cà qualcunu, aghju literalmente 25 anni di sperienza chì travaglia cun ellu in a produzzione, è possu dì sicuru: in u mo casu, chjudendu sti fili specifichi di u travagliu hè cumpletamente. innocu. Ùn vale a pena u tempu è u sforzu di riscriva stu codice, è ringraziu Larry Ellison (probabilmente) chì Oracle ùn m'hà micca forzatu à riscrive.
Oracle prubabilmente capisce ancu e piattaforme. Chi sà.
L'evidenza pò esse truvata in tuttu u core API di Java, chì sò riddled with waves of obsolescenza, cum'è e linee di un glacier in un canyon. Pudete facilmente truvà cinque o sei gestori di navigazione di u teclatu (KeyboardFocusManager) in a biblioteca Java Swing. Hè veramente difficiule di truvà una API Java chì ùn hè micca obsoleta. Ma travaglianu sempre ! Pensu chì a squadra di Java sguasserà veramente una API solu se l'interfaccia pone un prublema di sicurezza flagrante.
Eccu u puntu, cari amichi: noi sviluppatori di software simu tutti assai occupati, è in ogni settore di u software, simu di fronte à alternative in cumpetizione. In ogni mumentu, i prugrammatori in a lingua X consideranu a lingua Y cum'è una pussibile sustituzione. Oh, ùn mi credi micca ? Vulete dì Swift ? Cum'è, tutti stanu migrendu versu Swift è nimu ùn ci rinuncia, nò ? Wow, quantu pocu ne sapete. L'imprese stanu cuntendu i costi di e duie squadre di sviluppu mobile (iOS è Android) - è cumincianu à capisce chì sti sistemi di sviluppu multipiattaforma cù nomi divertenti cum'è Flutter è React Native funzionanu veramente, è chì ponu riduce a dimensione di e so squadre mobili à a mità o, à u cuntrariu, rende li duie volte più produttivi. Ci sò soldi veri in ghjocu. Iè, ci sò compromessi, ma da l'altra parte, hè mo-o-o-nove.
Assumimu ipoteticamente chì Apple pigliò stupidamente un spuntu da Guido van Rossum è hà dichjaratu chì Swift 6.0 hè incompatibile cù Swift 5.0, cum'è Python 3 hè incompatibile cù Python 2.
Probabilmente aghju dettu sta storia una decina d'anni fà, ma circa quindici anni fà sò andatu à l'O'Reilly's Foo Camp cun Guido, pusatu in una tenda cù Paul Graham è una mansa di big shots. Avemu assittatu in u caldu sweltering aspittendu chì Larry Page vola fora in u so elicotteru persunale mentre Guido dronava annantu à "Python 3000", chì hà chjamatu dopu à u numeru d'anni chì ci vole à tutti per migrà quì. Avemu cuntinuatu à dumandà à ellu perchè rompeva a cumpatibilità, è hà rispostu: "Unicode". E avemu dumandatu, s'è no avemu avutu a riscriva u nostru codice, chì altri benefici avemu vistu? È ellu rispose: "Yoooooooooooooooooooooooooooooooooooooooooooooooooo".
Se installate u Google Cloud Platform SDK ("gcloud"), riceverete a seguente notificazione:
Caru destinatariu,
Vuleriamu ricurdà chì u supportu per Python 2 hè statu obsoletu, allora cazzi
… eccetera. Circulu di vita.
Ma u puntu hè chì ogni sviluppatore hà una scelta. È s'è vo furzà elli à riscriva codice abbastanza spessu, si pudia pinsà altri opzioni. Ùn sò micca i vostri ostaggi, ùn importa micca quantu puderebbe vulete ch'elli sò. Sò i vostri invitati. Python hè sempre una lingua di prugrammazione assai populari, ma maledetta, Python 3(000) hà creatu un tali mess in ellu stessu, in e so cumunità è trà l'utilizatori di e so cumunità chì e cunsequenze ùn sò micca state sbulicate dapoi quindici anni.
Quanti prugrammi Python sò stati riscritti in Go (o Ruby, o qualchì altra alternativa) per via di questa incompatibilità inversa? Quantu novu software hè statu scrittu in qualcosa altru ch'è Python, anche si puderia esse scrittu in Python, s'è Guido ùn avia brusgiatu tuttu u paese ? Hè difficiuli di dì, ma Python hà chjaramente patitu. Hè un grande disordine è tutti perdenu.
Allora dicemu chì Apple piglia un spuntu da Guido è rompe a cumpatibilità. Chì pensate chì succede dopu ? Ebbè, forse 80-90% di i sviluppatori riscriveranu u so software se pussibule. In altri palori, 10-20% di a basa di l'utilizatori passa automaticamente à qualchì lingua cumpetitiva, cum'è Flutter.
Fate questu parechje volte è perderete a mità di a vostra basa d'utilizatori. Cum'è in u sportu, in u mondu di a prugrammazione, a forma attuale hè ancu impurtante. Tuttu. Qualchidunu chì perde a mità di i so utilizatori in cinque anni serà cunsideratu un Big Fat Loser. Duvete esse trendy in u mondu di e plataforme. Ma questu hè induve ùn sustene micca e versioni più vechje vi arruvinà cù u tempu. Perchè ogni volta chì vi sbarazzate di certi sviluppatori, (a) li perde per sempre perchè sò arrabbiati cun voi per rompe u cuntrattu, è (b) li dà à i vostri cuncurrenti.
Irnicamenti, aghju ancu aiutatu Google à diventà una prima donna chì ignora a cumpatibilità inversa quandu aghju creatu Grok, un sistema di analisi di codice fonte è di capiscenu chì facilita l'automatizazione è l'instrumentu di u codice stessu - simile à un IDE, ma quì i magazzini di serviziu di nuvola. rapprisintazioni materializatu di tutti i miliardi di linee di codice fonte di Google in un grande magazzinu di dati.
Grok hà furnitu à i Googlers un framework putente per eseguisce refactorings automatizati in tutta a so basa di codice (literalmente in Google). U sistema calcula micca solu e vostre dipendenze upstream (da quale dipende), ma ancu scendendu (chì sò à voi) cusì quandu cambiate l'API sapete tutti quelli chì rompe! In questu modu, quandu fate cambiamenti, pudete verificà chì ogni cunsumadore di a vostra API hà aghjurnatu à a nova versione, è in realtà, spessu cù l'uttellu Rosie chì anu scrittu, pudete automatizà completamente u prucessu.
Questu permette à a basa di codice di Google per esse internamente quasi supernaturalmente pulita, postu chì anu questi servitori robotici chì scorrivanu intornu à a casa è puliscenu automaticamente tuttu s'ellu si rinominava SomeDespicablyLongFunctionName à SomeDespicablyLongMethodName perchè qualcunu hà decisu chì era un nipotu bruttu è i so bisognu di dorme.
È francamente, funziona abbastanza bè per Google... internamente. Vogliu dì, iè, a cumunità Go in Google hà una bona risata cù a cumunità Java in Google per via di u so abitudine di refactoring continuu. Se riavviate qualcosa N volte, questu significa chì ùn avete micca solu vittutu N-1 volte, ma dopu un pocu di tempu diventa abbastanza chjaru chì probabilmente l'avete avvitatu ancu à l'ennesima prova. Ma, in generale, fermanu sopra à tuttu stu fuss è mantene u codice "pulitu".
U prublema principia quandu pruvate à impone sta attitudine à i so clienti di nuvola è l'utilizatori di altre API.
Vi aghju datu una piccula introduzione à Emacs, Android è Java; guardemu l'ultima piattaforma di successu è di longa durata: u web stessu. Pudete imaginà quante iterazioni hà attraversatu HTTP dapoi u 1995, quandu usemu tag lampeggianti? è icone "In custruzzione" nantu à e pagine web.
Ma funziona sempre! E sti pagine sò sempre à travaglià ! Iè, ragazzi, i navigatori sò i campioni di u mondu in cumpatibilità inversa. Chrome hè un altru esempiu di a rara plataforma di Google chì hà i so capi avvitati currettamente, è cum'è avete capitu, Chrome opera in modu efficace cum'è una cumpagnia sandbox separata da u restu di Google.
Vogliu ancu ringrazià i nostri amichi trà i sviluppatori di sistemi operativi: Windows, Linux, MICCA APPLE FUCK APPLE, FreeBSD, ecc., per avè fattu un travagliu cusì bellu di retrocompatibilità nantu à e so piattaforme di successu (Apple riceve un C-minus à u megliu, postu chì rompenu constantemente e cose senza una bona ragione, ma in qualchì modu a cumunità riesce à riparallu in ogni versione, è i container OS X ùn sò micca cumpletamente obsoleti... ancu).
Ma aspettate, dite voi. Ùn simu micca paragunendu mele cù aranci - sistemi software autonomi nantu à una sola macchina, cum'è Emacs/JDK/Android/Chrome, cù sistemi multi-server è API, cum'è in i servizii cloud?
Ebbè, aghju tweetatu annantu à questu ieri, ma in u stilu di Larry Wall (creatore di a lingua di prugrammazione Perl - apprussimatamente per.) nantu à u principiu di "sucks / regule" aghju cercatu a parolla. deprecated nantu à i siti di sviluppatori Google è Amazon. E ancu se AWS hà centu volte più offerte di servizii cà GCP, a documentazione di sviluppatori di Google menziona a deprecazione circa sette volte più spessu.
Se qualchissia in Google leghje questu, hè prubabilmente prontu à tirà i grafici in stile Donald Trump chì mostranu chì in realtà facenu tuttu bè, è chì ùn deve micca fà paraguni ingiusti cum'è "numeru di menzioni di a parolla deprecated versus numeru di servizii ""
Ma dopu à tutti questi anni, Google Cloud hè sempre u serviziu N ° 3 (ùn aghju mai scrittu un articulu nantu à u tentativu fallutu di diventà u N ° 2), ma se l'insiders sò da crede, ci sò parechje preoccupazioni chì puderanu caccià prestu. No 4.
Ùn aghju micca argumenti convincenti per "pruvà" a mo tesi. Tuttu ciò chì aghju sò l'esempii culuriti chì aghju accumulatu più di 30 anni cum'è sviluppatore. Aghju digià citatu a natura profonda filusòfica di stu prublema; in certi modi hè puliticu in e cumunità di sviluppatori. Qualchidunu crede chì criatori e plataforme anu da cura di a cumpatibilità, mentri àutri pensanu chì questu hè una preoccupazione utilizatori (i sviluppatori stessi). Unu di dui. In verità, ùn hè micca una questione pulitica quandu decidemu quale duverebbe sopportà i costi di i prublemi cumuni ?
Allora questu hè a pulitica. È prubabilmente ci saranu risposti arrabbiati à u mo discorsu.
comu l 'utilizatori Google Cloud Platform, è cum'è un utilizatore AWS per dui anni (mentre travaglia per Grab), possu dì chì ci hè una grande differenza trà Amazon è e filusufìa di Google quandu si tratta di priorità. Ùn aghju micca sviluppatu attivamente in AWS, per quessa, ùn sò micca bè quantu spessu sguassate API antichi. Ma ci hè un suspettu chì questu ùn succede micca quasi quant'è à Google. E crede veramente chì sta fonte di cuntruversia constante è frustrazione in GCP hè unu di i più grandi fattori chì frenanu u sviluppu di a piattaforma.
Sò chì ùn aghju micca chjamatu esempi specifichi di sistemi GCP chì ùn sò più supportati. Possu dì chì quasi tuttu ciò chì aghju utilizatu, da e rete (da i più antichi à VPC) à u almacenamentu (Cloud SQL v1-v2), Firebase (avà Firestore cù una API completamente diversa), App Engine (ùn avemu mancu principiatu) , nuvola endpoints Cloud Endpoint è finu à... Ùn sò micca sapè - assolutamente tuttu questu vi furzatu à riscrive u codice dopu à un massimu di 2-3 anni, è ùn anu mai automatizatu a migrazione per voi, è spessu . Cum'è s'ellu duvia esse cusì.
È ogni volta chì guardu à AWS, mi dumandu perchè diavolo sò sempre in GCP. Chjaramente ùn anu micca bisognu di clienti. Hanu bisognu cumpratori. Capisci a diffarenza ? Lasciami spiegà.
Google Cloud hà , induve a ghjente prupone e so suluzioni di software, è per evitari l'effettu di u ristorante viotu, avianu bisognu à riempie cù qualchi pruposte, cusì cuntrattu cù una cumpagnia chjamata Bitnami per creà una mansa di suluzioni chì sò implementate cù "un clic", o duveranu. Scrivu mè stessu "soluzioni", perchè queste ùn risolve micca una cosa dannata. Esistinu solu cum'è caselle di verificazione, cum'è riempimentu di marketing, è Google ùn hà mai importatu se qualcunu di l'arnesi funziona veramente. Cunnoscu i gestori di produttu chì sò stati in u sediu di u cunduttore, è vi possu assicurà chì queste persone ùn importa micca.
Pigliate, per esempiu, una soluzione di implementazione suppostamente "un clic". . Eru malatu à a morte di Google Cloud SQL shenanigans, cusì aghju cuminciatu à circà à custruisce u mo propiu cluster Percona cum'è alternativa. E sta volta Google paria avè fattu un bonu travagliu, mi andavanu à salvà un pocu di tempu è sforzu cù u clicu di un buttone !
Bonu bellu, andemu. Seguimu u ligame è cliccate nant'à stu buttone. Selezziunate "Sì" per accettà tutti i paràmetri predeterminati è implementà u cluster in u vostru prughjettu di Google cloud. Haha, ùn funziona micca. Nisuna di sta merda funziona. L'uttellu ùn hè mai statu pruvatu è hà cuminciatu à marchjà da u primu minutu, è ùn mi sorprenderia micca se più di a mità di e "soluzioni" sò implementazioni in un clic (avà capiscenu perchè e virgulette) in generale ùn travaglia micca. Questa hè a bughjura assolutamente senza speranza, induve hè megliu ùn entre.
Ma Google hà ragiò incuragisce voi à aduprà. Vulenu chì tù cumpratu. Per elli hè una transazzione. Ùn volenu nunda sustegnu. Ùn hè micca parte di l'ADN di Google. Iè, l'ingegneri sustenenu l'altri, cum'è a mo storia cù Bigtable. Ma in i prudutti è servizii per a ghjente ordinaria elli sempre eranu spietati in , chì ùn scuntrà micca u bar per a prufittuità ancu s'ellu hà milioni di utilizatori.
È questu presenta una vera sfida per GCP perchè questu hè l'ADN daretu à tutte l'offerte di nuvola. Ùn sò micca pruvatu à sustene nunda; Hè ben cunnisciutu chì ricusanu d'ospitu (cum'è un serviziu amministratu) qualsiasi software di terzu finu à, finu à chì AWS faci u listessu è custruisce un affari di successu intornu à ellu, è quandu i clienti littiralmenti dumandanu u listessu. Tuttavia, ci vole qualchì sforzu per avè Google per sustene qualcosa.
Questa mancanza di cultura di supportu, accumpagnata da a mentalità di "la rompemu per fà più bella", alliena i sviluppatori.
È ùn hè micca una bona cosa se vulete custruisce una piattaforma longa.
Google, svegliate, maledizione. Hè 2020 avà. Perdi sempre. Hè ora di piglià un sguardu duru in u specchiu è di risponde se vulete veramente stà in l'affari di nuvola.
Se vulete stà allora smette di rompe tuttu. Ragazzi, sì ricchi. Noi sviluppatori ùn avemu micca. Allora, quandu si tratta di quale hà da piglià u pesu di cumpatibilità, avete bisognu à piglià nantu à sè stessu. Micca per noi.
Perchè ci sò almenu trè nuvole più veramente boni. Anu chjappà.
È avà andaraghju per riparà tutti i mo sistemi rotti. Eh.
Finu à a prossima volta !
PS Update dopu avè lettu alcune di e discussioni nantu à questu articulu (i discussioni sò grandi, btw). U supportu di Firebase ùn hè micca stata interrotta è ùn ci sò micca piani chì sò cunuscenza. Tuttavia, anu un bug di streaming bruttu chì face chì u cliente Java si stalla in App Engine. Unu di i so ingegneri m'hà aiutatu à risolve stu prublema, quandu aghju travagliatu in Google, ma ùn anu mai riparatu l'errore, cusì aghju una soluzione di crappy di avè da riavvia l'app GAE ogni ghjornu. È cusì hè dapoi quattru anni ! Avà anu Firestore. Ci hà da piglià assai travagliu per migrà in questu, postu chì hè un sistema completamente diversu è u bug Firebase ùn serà mai riparatu. Chì cunclusione pò esse tiratu ? Pudete ottene aiutu si travaglia in una cumpagnia. Sò prubabilmente l'unicu chì usa Firebase in GAE perchè aghju registratu menu di 100 chjave in una app nativa 100% è si ferma di travaglià ogni dui ghjorni per un bug cunnisciutu. Chì possu dì altru ch'è aduprà à u vostru propiu risicu. Passu à Redis.
Aghju vistu ancu alcuni utenti AWS più sperimentati chì dicenu chì AWS di solitu ùn ferma mai di sustene qualsiasi serviziu, è SimpleDB hè un grande esempiu. I mo supposizioni chì AWS ùn hà micca a stessa fine di a malatia di supportu cum'è Google pare esse ghjustificata.
Inoltre, aghju nutatu chì 20 ghjorni fà a squadra di Google App Engine hà rottu l'ospitu di una biblioteca Go critica, chjudendu una applicazione GAE da unu di i sviluppatori Go core. Era veramente stupidu.
Infine, aghju intesu Googlers digià discutendu stu prublema è in generale d'accordu cun mè (amu, ragazzi!). Ma parenu pensà chì u prublema ùn hè micca solu solu perchè a cultura di Google ùn hà mai avutu a struttura d'incentivazione ghjusta. Pensu chì saria bè di piglià un pocu di tempu per discutiri l'esperienza assolutamente incredibile chì aghju avutu travagliatu cù ingegneri AWS mentre travagliava à Grab. Un ghjornu in u futuru, spergu !
E sì, in u 2005 anu avutu diversi tipi di carne di squalo nantu à u buffet gigante in l'edificiu 43, è u mo preferitu era a carne di squalo martello. In ogni casu, in u 2006, Larry è Sergei sbaravanu di tutti i snacks malsani. Allora durante a storia di Bigtable in 2007 ùn ci era veramente micca squali è vi ingannatu.
Quandu aghju guardatu u cloud Bigtable quattru anni fà (date o pigliate), questu hè quì u costu era. Sembra ch'ellu sia calatu un pocu avà, ma hè sempre assai terribile per un magazzinu di dati viotu, soprattuttu chì a mo prima storia mostra quantu inconsequenziale una grande tavola viota hè à a so scala.
Scusate per offensà a cumunità Apple è ùn hà micca dettu nunda di bonu nantu à Microsoft, ecc. Avete bè, aghju veramente apprezzatu tutte e discussioni chì questu articulu hà generatu! Ma qualchì volta ci vole à fà onda un pocu per inizià una discussione, sapete?
Grazie per leghje.
Actualizazione 2, 19.08.2020/XNUMX/XNUMX. Striscia !
Actualizazione 3, 31.08.2020/2/2. Sò statu cuntattatu da un ingegnere di Google à u Cloud Marketplace chì hè diventatu un vechju amicu. Ci vulia à capisce perchè CXNUMXD ùn era micca travagliatu, è avemu eventualmente capitu chì era perchè avia custruitu a mo rete anni fà, è CXNUMXD ùn hà micca travagliatu in rete legacy perchè u paràmetru di a subnet mancava in i so mudelli. Pensu chì hè megliu per l'utilizatori potenziali di GCP per assicurà chì cunnosci abbastanza ingegneri in Google ...
Source: www.habr.com
