Minahal nga Google Cloud, ang dili pagpahiuyon sa likod mao ang pagpatay kanimo.

Damn Google, dili ko gusto nga mag-blog pag-usab. Daghan kaayo kog buhaton. Ang pag-blog nagkinahanglan og panahon, kusog ug pagkamamugnaon, nga akong magamit sa maayo: akong mga libro, ang musika, akong duwa ug uban pa. Apan igo na nimo akong gipalagot nga kinahanglan nakong isulat kini.

Busa atong tapuson kini.

Tugoti ako nga magsugod sa usa ka mubo apan matulon-anon nga istorya gikan sa pagsugod nako sa pagtrabaho sa Google. Nahibal-an ko nga daghang dili maayo nga mga butang ang akong gisulti bahin sa Google karong bag-o, apan nasuko kini kanako kung ang akong kaugalingon nga kompanya kanunay nga naghimo og dili maayo nga mga desisyon sa negosyo. Sa samang higayon, kinahanglan natong ihatag ang angay niini: Ang internal nga imprastraktura sa Google tinuod nga talagsaon, luwas nga isulti nga walay mas maayo karon. Ang mga magtutukod sa Google labi ka maayo nga mga inhenyero kaysa ako, ug kini nga istorya nagpamatuod lamang sa kana nga kamatuoran.

Una, gamay nga background: Ang Google adunay teknolohiya sa pagtipig sa datos nga gitawag Bigtable. Kini usa ka talagsaon nga teknikal nga kalampusan, usa sa una (kung dili ang una) nga "walay katapusan nga scalable" key-value store (K / V): hinungdanon ang sinugdanan sa NoSQL. Karong mga adlawa maayo pa ang Bigtable sa medyo naghuot nga K/V storage space, apan niadtong panahona (2005) nindot kaayo.

Usa ka kataw-anan nga butang bahin sa Bigtable mao nga sila adunay internal nga kontrol nga mga butang sa eroplano (ingon bahin sa pagpatuman) nga gitawag nga mga server sa tablet, nga adunay daghang mga indeks, ug sa usa ka punto nahimo silang usa ka bottleneck kung gi-scale ang sistema. Ang mga inhenyero sa Bigtable naglibog kung giunsa ang pagpatuman sa scalability, ug kalit nga nakaamgo nga mahimo nilang ilisan ang mga server sa tablet sa uban nga pagtipig sa Bigtable. Busa ang Bigtable kabahin sa pagpatuman sa Bigtable. Kini nga mga pasilidad sa pagtipig anaa sa tanan nga lebel.

Ang laing makapaikag nga detalye mao nga sa makadiyot ang Bigtable nahimong popular ug ubiquitous sulod sa Google, nga ang matag team adunay kaugalingong repository. Busa sa usa sa mga miting sa Biyernes, si Larry Page kaswal nga nangutana: “Nganong duna tay labaw sa usa ka Bigtable? Nganong dili lang usa?” Sa teorya, ang usa ka pagtipig kinahanglan igo alang sa tanan nga mga kinahanglanon sa pagtipig sa Google. Siyempre, wala sila moadto sa usa lang alang sa praktikal nga mga hinungdan sa pag-uswag (sama sa mga sangputanan sa usa ka potensyal nga kapakyasan), apan ang teorya makapaikag. Usa ka tipiganan alang sa tibuok Uniberso (Pinaagi sa dalan, adunay nahibal-an kung gibuhat kini sa Amazon sa ilang Sable?)

Anyway, mao ni akong story.

Niadtong panahona, nagtrabaho ko sa Google sulod lang sa duha ka tuig, ug usa ka adlaw nakadawat ko og email gikan sa Bigtable engineering team nga sama niini:

Minahal nga Steve,

Hello gikan sa Bigtable team. Buot namong ipahibalo kanimo nga sa [data center name] ikaw naggamit ug usa ka karaan kaayo nga Bigtable binary. Kini nga bersyon wala na gisuportahan ug gusto namong tabangan ka nga mag-upgrade sa pinakabag-o nga bersyon.

Palihug pahibal-i ako kung mahimo ka nga mag-iskedyul og pipila ka oras aron magtinabangay bahin niini nga isyu.

Ang tanan nga labing maayo,
Bigtable nga Team

Sa Google nakakuha ka daghang mail, mao nga sa una nga pagtan-aw nabasa nako ang usa ka butang nga sama niini:

Minahal nga Tigdawat,

Hello gikan sa pipila ka team. Gusto namon nga makigsulti nga blah blah blah blah blah. Blah blah blah blah blah blah, ug blah blah blah dayon.

Palihug ipahibalo kanamo kung mahimo nimong i-iskedyul ang pipila sa imong bililhon nga oras alang sa blah blah blah.

Ang tanan nga labing maayo,
Usa ka matang sa sugo

Hapit nako kini mapapas dayon, apan sa ngilit sa akong panimuot gibati nako ang usa ka sakit, nagsamok nga pagbati nga kini dili gyud murag formal letter man klaro, nga nasayop ang nakadawat kay wala nako gamita ang Bigtable.

Apan kini talagsaon.

Gigugol nako ang nahibilin sa adlaw nga nagpulipuli sa paghunahuna mahitungod sa trabaho ug unsa nga matang sa karne sa iho ang sulayan sa micro-kusina, diin labing menos tulo ang duol nga igo aron maigo gikan sa akong lingkuranan sa usa ka maayo nga tumong nga paglabay sa usa ka biscuit, apan ang Ang paghunahuna sa pagsulat wala gayud mobiya kanako uban sa usa ka nagtubo nga pagbati malumo nga kabalaka.

Klaro nilang gisulti ang akong ngalan. Ug ang email gipadala sa akong email address, dili sa uban, ug dili kini cc: o bcc:. Personal kaayo ug klaro ang tono. Tingali kini usa ka matang sa sayup?

Sa katapusan, ang pagkamausisaon nahimong mas maayo kanako ug miadto ako sa pagtan-aw sa Borg console sa data center nga ilang gihisgutan.

Ug siyempre, ako adunay BigTable storage ubos sa pagdumala. Pasayloa ko, unsa? Gitan-aw nako ang sulod niini, ug wow! Gikan kini sa Codelab incubator nga akong gilingkoran sa akong unang semana sa Google niadtong Hunyo 2005. Gipugos ka sa Codelab sa pagpadagan sa Bigtable aron isulat ang pipila ka mga kantidad didto, ug dayag nga wala nako gisirhan ang pagtipig pagkahuman niana. Nagtrabaho gihapon kini bisag kapin na sa duha ka tuig ang milabay.

Adunay ubay-ubay nga hinungdanon nga mga aspeto niini nga istorya. Una, ang trabaho sa Bigtable dili kaayo hinungdanon sa sukod sa Google nga duha lang ka tuig ang milabay adunay bisan kinsa nga nakamatikod sa dugang nga pagtipig, ug tungod lamang kay ang bersyon sa binary wala na sa panahon. Alang sa pagtandi, gihunahuna ko kaniadto nga gamiton Bigtable sa Google Cloud para sa akong online game. Niadtong panahona, kini nga serbisyo nagkantidad ug gibana-bana nga $16 kada tuig. walay sulod Bigtable sa GCP. Wala ako nag-ingon nga sila nanglimbong kanimo, apan sa akong personal nga opinyon, kana daghang salapi alang sa usa ka walay sulod nga database sa fucking.

Ang laing hinungdanon nga aspeto mao ang pagtipig nagtrabaho gihapon human sa duha ka tuig. WTF? Ang mga sentro sa datos moabut ug moadto; makasinati sila og outages, moagi sila sa scheduled maintenance, mag-usab-usab sila sa tanang panahon. Gi-update ang hardware, gipalitan ang mga switch, ang tanan kanunay nga gipauswag. Giunsa nila pagpadayon ang akong programa sa duha ka tuig sa tanan niini nga mga pagbag-o? Kini ingon og usa ka gamay nga kalampusan sa 2020, apan sa 2005-2007 kini makapadani kaayo.

Ug ang labing katingad-an nga aspeto mao nga ang usa ka team sa engineering sa gawas sa ubang estado miduol kanako, ang tag-iya sa gamay, hapit walay sulod nga pananglitan sa Bigtable, nga adunay walay traffic sa miaging duha ka tuig—ug nagtanyag og tabang sa pag-update niini.

Gipasalamatan nako sila, gitangtang ang pagtipig, ug ang kinabuhi nagpadayon sama sa naandan. Apan trese ka tuig ang milabay, naghunahuna gihapon ko sa maong sulat. Tungod kay usahay makadawat ko og susama nga mga email gikan sa Google Cloud. Ingon ani sila:

Minahal nga Google Cloud User,

Isip usa ka pahinumdom, among ihunong ang [esensyal nga serbisyo nga imong gigamit] nga serbisyo sa Agosto 2020, pagkahuman dili na nimo ma-upgrade ang imong mga higayon. Girekomenda namon ang pag-upgrade sa pinakabag-o nga bersyon, nga naa sa pagsulay sa beta, wala’y dokumentasyon, wala’y agianan sa paglalin ug wala na kaniadto sa among tabang.

Kami komitido sa pagsiguro nga kini nga pagbag-o adunay gamay nga epekto sa tanan nga tiggamit sa Google Cloud platform.

Labing maayo nga mga higala hangtod sa hangtod,
Google Cloud Platform

Apan halos wala gyud ko makabasa sa ingon nga mga sulat, tungod kay ang giingon nila mao:

Minahal nga Tigdawat,

Adto sa impyerno. Bugtaw ka, bugal ka, bugal ka. I-drop ang tanan nimong buhaton kay dili na importante. Ang importante mao ang atong panahon. Nag-usik kami sa oras ug kwarta sa pagmintinar sa among kabuang ug gikapoy kami niini aron dili na kami mosuporta niini. Mao nga hunong na ang imong mga plano ug sugdi ang pagkubkob sa among dili maayo nga dokumentasyon, pagpakilimos alang sa mga scrap sa mga forum, ug sa ingon, ang among bag-ong tae lahi ra sa karaan nga tae, tungod kay among gidaot kini nga disenyo nga dili maayo, heh, apan kana ang imong problema, dili ang atong.

Nagpadayon kami sa pagpaningkamot aron masiguro nga ang tanan nimong mga kalamboan mahimong dili magamit sa sulod sa usa ka tuig.

Palihog lingaw
Google Cloud Platform

Ug ang kamatuoran mao nga nakadawat ako sa ingon nga mga sulat mga kausa sa usa ka bulan. Kini mahitabo kanunay ug kanunay nga dili kalikayan gitukmod palayo gikan sa GCP hangtod sa kampo sa anti-cloud. Dili na ako mouyon nga magdepende sa ilang proprietary developments, tungod kay sa pagkatinuod mas sayon ​​alang sa mga devops ang pagpadayon sa usa ka open source system sa usa ka hubo nga virtual machine kay sa pagsulay sa pagsunod sa Google sa iyang palisiya sa pagsira sa "karaan" nga mga produkto.

Before ko mubalik sa Google Cloud kay ako dili man close wala pa nahuman sa pagsaway kanila, atong tan-awon ang performance sa kompanya sa ubang mga lugar. Gipasigarbo sa mga inhenyero sa Google ang ilang kaugalingon sa ilang disiplina sa software engineering, ug kini ang hinungdan sa mga problema. Ang garbo usa ka lit-ag alang sa dili mabinantayon ug nagdala sa daghang mga empleyado sa Google nga maghunahuna nga ang ilang mga desisyon kanunay nga husto ug nga ang husto (sa pipila ka dili klaro nga dili klaro nga kahulugan) mas hinungdanon kaysa pag-atiman sa mga kustomer.

Maghatag ako pipila ka mga random nga mga pananglitan gikan sa ubang mga dagkong proyekto sa gawas sa Google, apan nanghinaut ko nga makita nimo kini nga sumbanan bisan diin. Kini mao ang mosunod: Ang backward compatibility nagpugong sa mga sistema nga buhi ug up-to-date sulod sa mga dekada.

Ang backward compatibility mao ang tumong sa disenyo sa tanang malampusong mga sistema nga gidisenyo para sa ablihan paggamit, nga mao, gipatuman uban sa open source code ug/o bukas nga mga sumbanan. Morag klaro kaayo ang akong gisulti nga bisan ang tanan dili komportable, apan dili. Usa kini ka isyu sa politika, busa gikinahanglan ang mga ehemplo.

Ang unang sistema nga akong pilion mao ang labing karaan: GNU Emacs, nga usa ka matang sa hybrid tali sa Windows Notepad, ang OS kernel, ug ang International Space Station. Medyo lisud ipasabut, apan sa laktod nga pagkasulti, ang Emacs usa ka plataporma nga gihimo kaniadtong 1976 (oo, hapit tunga sa siglo ang milabay) alang sa pagprograma aron mahimo ka nga labi ka produktibo, apan nagtakuban ingon usa ka editor sa teksto.

Gigamit nako ang Emacs kada adlaw. Oo, gigamit usab nako ang IntelliJ matag adlaw, kini nahimong usa ka gamhanan nga plataporma sa tooling sa kaugalingon nga katungod. Apan ang pagsulat sa mga extension alang sa IntelliJ usa ka labi ka ambisyoso ug komplikado nga buluhaton kaysa pagsulat sa mga extension alang sa Emacs. Ug labaw sa tanan, ang tanan nga gisulat alang sa Emacs gipreserbar sa walay katapusan.

Gigamit gihapon nako ang software nga akong gisulat alang sa Emacs kaniadtong 1995. Ug sigurado ako nga adunay naggamit mga module nga gisulat alang sa Emacs sa tungatunga sa 80s, kung dili sa sayo pa. Mahimong kinahanglan nila ang usa ka gamay nga pag-tweak matag karon ug unya, apan kini talagsa ra. Wala koy nahibal-an nga bisan unsa nga akong gisulat alang sa Emacs (ug daghan ako nagsulat) nga nanginahanglan usa ka re-architecture.

Ang Emacs adunay function nga gitawag og make-obsolete para sa mga karaan nga entidad. Ang terminolohiya sa Emacs alang sa sukaranang mga konsepto sa kompyuter (sama sa kung unsa ang usa ka "window") kanunay nga lahi sa mga kombensiyon sa industriya tungod kay gipaila kini sa Emacs sa dugay na nga panahon. Kini usa ka kasagarang kapeligrohan alang sa mga nag-una sa ilang panahon: ang tanan nimong mga termino dili husto. Apan ang Emacs adunay usa ka konsepto sa deprecation, nga sa ilang jargon gitawag pagkadaan.

Apan sa kalibutan sa Emacs ingon og adunay lahi nga kahulugan sa pagtrabaho. Lahi nga nagpahiping pilosopiya, kung gusto nimo.

Sa kalibutan sa Emacs (ug sa daghang uban pang mga lugar, nga atong hisgotan sa ubos), ang deprecated API status batakan nagpasabut: "Dili gyud nimo gamiton kini nga pamaagi, tungod kay samtang kini molihok, nag-antos kini sa lainlaing mga kakulangan nga among buhaton. lista dinhi. Apan sa katapusan sa adlaw, kini ang imong gipili."

Sa kalibutan sa Google, ang pagka-obsolete nagpasabut, "Kami naglapas sa among pasalig kanimo." Tinuod kini. Kini ang esensya nga gipasabut niini. Nagpasabot kini nga pugson ka nila kanunay pagbuhat og pipila ka trabaho, tingali daghang trabaho, isip silot sa pagtuo niini mabulukon nga advertising: Kami adunay labing kaayo nga software. Ang labing paspas! Gibuhat nimo ang tanan sumala sa mga instruksyon, ilunsad ang imong aplikasyon o serbisyo, ug dayon bam, pagkahuman sa usa o duha ka tuig kini nabuak.

Sama sa pagbaligya sa usa ka ginamit nga sakyanan nga siguradong maguba human sa 1500 km.

Kini mao ang duha ka bug-os nga lain-laing mga pilosopikal nga kahulugan sa "obsolescence." Depinisyon sa Google sa baho giplano nga pagkaubus. Dili ko motuo niini sa pagkatinuod giplano nga obsolescence sa samang diwa sama sa Apple. Apan ang Google siguradong nagplano nga bungkagon ang imong mga programa, sa usa ka roundabout nga paagi. Nahibal-an ko kini tungod kay nagtrabaho ako didto isip usa ka software engineer sa sobra sa 12 ka tuig. Sila adunay dili klaro nga internal nga mga giya kung unsa ka daghan ang backward compatibility kinahanglan sundon, apan kini sa katapusan anaa sa matag indibidwal nga team o serbisyo. Walay mga rekomendasyon sa lebel sa negosyo o engineering, ug ang labing maisugon nga rekomendasyon sa mga termino sa mga obsolescence cycles mao ang "pagsulay sa paghatag sa mga kustomer og 6-12 ka bulan aron mag-upgrade sa dili pa mabungkag ang ilang tibuok nga sistema."

Ang problema mas dako kay sa ilang gihunahuna, ug kini magpadayon sa umaabot nga mga tuig tungod kay ang pag-atiman sa kustomer wala sa ilang DNA. Dugang niini sa ubos.

Niini nga punto maghimo ako usa ka maisugon nga pahayag nga ang Emacs malampuson sa usa ka dako nga gidak-on ug bisan batakan tungod kay giseryoso nila ang backwards compatibility. Sa tinuud, kini ang thesis sa among artikulo. Ang malampuson, dugay na nga bukas nga mga sistema nakautang sa ilang kalampusan sa mga microcommunities nga nagpuyo sa ilang palibot sulod sa mga dekada mga extension/plugin. Kini ang ekosistema. Nahisgotan na nako ang bahin sa kinaiyahan sa mga platform ug kung unsa kini ka hinungdanon, ug kung giunsa wala pa mahibal-an sa Google sa tibuuk nga kasaysayan sa korporasyon kung unsa ang nahimo sa paghimo sa usa ka malampuson nga bukas nga plataporma gawas sa Android o Chrome.

Sa tinuud, kinahanglan nakong hisgutan ang Android sa makadiyot tungod kay tingali naghunahuna ka bahin niini.

Una sa tanan, Ang Android dili Google. Wala sila halos pareho sa usag usa. Ang Android usa ka kompanya nga gipalit sa Google kaniadtong Hulyo 2005, gitugotan ang kompanya nga mag-operate nga mas daghan o dili kaayo awtonomiya ug sa tinuud nagpabilin nga wala matandog sa nanglabay nga mga tuig. Ang Android usa ka bantog nga tech stack ug usa ka bantog nga tusok nga organisasyon. Sama sa giingon sa usa ka Googler, "Dili ka maka-log in sa Android."

Sa usa ka miaging artikulo, akong gihisgutan kung unsa ka daotan ang pipila sa una nga mga desisyon sa disenyo sa Android. Heck, sa dihang gisulat nako kana nga artikulo naglunsad sila og crap nga gitawag og "instant apps" nga karon (sorpresa!) karaan na, ug naluoy ko kung tanga ka sa pagpaminaw sa Google ug pagbalhin sa imong sulod niining mga instant nga app.

Apan adunay usa ka kalainan dinhi, usa ka mahinungdanon nga kalainan, nga mao nga ang mga tawo sa Android nakasabut gayud kung unsa ka importante ang mga plataporma, sila naningkamot sa ilang labing maayo aron sa pagpadayon sa mga daan nga Android apps nga nagtrabaho. Sa pagkatinuod, ang ilang mga paningkamot sa pagpadayon sa atras nga pagkaangay grabe kaayo nga bisan ako, sa akong mubo nga stint sa Android division pipila ka tuig na ang milabay, nakakaplag sa akong kaugalingon nga naningkamot sa pagkombinsir kanila sa paghulog sa suporta alang sa pipila sa mga karaan nga mga himan ug mga API (ako sayop , sama sa daghang uban pang mga butang kaniadto ug karon. Pasensya Android guys! Karon nga nakaadto na ko sa Indonesia, nasabtan nako kung ngano nga kinahanglan naton sila).

Ang mga tawo sa Android nagduso sa paatras nga pagkaangay sa halos dili mahunahuna nga mga sobra, nga nagpundok sa daghang kantidad sa kabilin nga teknikal nga utang sa ilang mga sistema ug toolchain. Oh akong diyos, kinahanglan nimo nga makita ang pipila sa mga buang nga butang nga kinahanglan nilang buhaton sa ilang sistema sa pagtukod, tanan sa ngalan sa pagkaangay.

Alang niini, gihatagan nako ang Android sa gitinguha nga award nga "Dili Ka Google". Dili gyud nila gusto nga mahimong Google, nga wala mahibal-an kung giunsa paghimo ang lig-on nga mga platform, apan ang Android nahibal-an, unsaon pagbuhat niini. Ug mao nga ang Google maalamon kaayo sa usa ka bahin: nagtugot sa mga tawo sa pagbuhat sa mga butang sa ilang kaugalingong paagi sa Android.

Bisan pa, ang mga instant nga apps alang sa Android usa ka medyo hungog nga ideya. Ug nahibal-an ba nimo kung ngano? Kay nangayo sila pagsulat pag-usab ug pagdesinyo pag-usab sa imong aplikasyon! Morag ang mga tawo mosulat na lang og duha ka milyon nga aplikasyon. Nagtuo ko nga ang Instant Apps usa ka ideya sa Googler.

Apan adunay kalainan. Ang backward compatibility moabut sa taas nga gasto. Ang Android mismo nagpas-an sa palas-anon niini nga mga gasto, samtang ang Google miinsistir nga ang palas-anon maoy pas-anon ikaw, nagbayad nga kliyente.

Imong makita ang pasalig sa Android sa atraso nga pagkaangay sa mga API niini. Kung ikaw adunay upat o lima ka lainlaing mga subsystem nga nagbuhat sa parehas nga butang, kini usa ka sigurado nga timaan nga adunay usa ka pasalig sa atras nga pagpahiangay sa kinauyokan. Nga sa kalibutan sa mga plataporma parehas sa pasalig sa imong mga kostumer ug sa imong merkado.

Ang nag-unang problema sa Google dinhi mao ang ilang garbo sa ilang engineering hygiene. Dili sila ganahan kung adunay daghang lainlaing mga paagi sa pagbuhat sa parehas nga butang, nga ang daan, dili kaayo gusto nga mga paagi naglingkod tapad sa bag-o, labi ka labi nga paagi. Gipataas niini ang kurba sa pagkat-on alang sa mga bag-o sa sistema, gipadako niini ang palas-anon sa pagpadayon sa mga kabilin nga API, gipahinay niini ang katulin sa mga bag-ong bahin, ug ang panguna nga sala kay dili kini matahum. Google - sama sa Lady Ascot gikan sa Alice in Wonderland ni Tim Burton:

Babaye Ascot:
- Alice, nahibal-an ba nimo kung unsa ang labing gikahadlokan nako?
— Pagkunhod sa aristokrasya?
- Nahadlok ko nga mahitabo mangil-ad nga mga apo.

Aron masabtan ang tradeoff tali sa matahum ug praktikal, atong tan-awon ang ikatulo nga malampuson nga plataporma (human sa Emacs ug Android) ug tan-awa kung giunsa kini paglihok: ang Java mismo.

Ang Java adunay daghang karaan nga mga API. Ang deprecation kay sikat kaayo sa mga programmer sa Java, mas popular pa kay sa kadaghanan sa mga programming language. Ang Java mismo, ang kinauyokan nga lengguwahe, ug ang mga librarya kanunay nga nagsalikway sa mga API.

Sa pagkuha lang og usa sa liboan ka mga pananglitan, panapos nga mga hilo giisip nga obsolete. Kini wala na gamita sukad sa pagpagawas sa Java 1.2 niadtong Disyembre 1998. 22 ka tuig na ang milabay sukad kini wala magamit.

Apan ang akong aktuwal nga code sa produksiyon mao ang pagpatay sa mga hilo matag adlaw. Sa imong hunahuna maayo ba kana? Hingpit nga! Buot ipasabot, siyempre, kung akong isulat pag-usab ang kodigo karon, ipatuman nako kini nga lahi. Apan ang code alang sa akong dula, nga nakapalipay sa gatusan ka libo nga mga tawo sa miaging duha ka dekada, gisulat nga adunay usa ka function sa pagsira sa mga hilo nga nagbitay nga dugay, ug ako dili na kinahanglan nga usbon kini. Nahibal-an ko nga mas maayo ang akong sistema kay sa bisan kinsa, ako adunay literal nga 25 ka tuig nga kasinatian nga nagtrabaho uban niini sa produksiyon, ug ako makaingon nga sigurado: sa akong kaso, ang pagsira niining mga piho nga mga thread sa trabahante hingpit nga dili makadaot. Dili takus sa oras ug paningkamot nga isulat pag-usab kini nga code, ug salamat Larry Ellison (tingali) nga wala ako gipugos sa Oracle nga isulat kini pag-usab.

Ang Oracle tingali nakasabut usab sa mga plataporma. Kinsay nasayod.

Makit-an ang ebidensiya sa tibuok kinauyokan nga mga Java API, nga napuno sa mga balod sa karaan, sama sa mga linya sa usa ka glacier sa usa ka canyon. Dali ka makakita og lima o unom ka lain-laing mga keyboard navigation managers (KeyboardFocusManager) sa Java Swing library. Sa tinuud lisud ang pagpangita sa usa ka Java API nga wala gihunong. Apan nagtrabaho gihapon sila! Sa akong hunahuna ang Java team magtangtang lamang sa usa ka API kung ang interface nagbutang usa ka masilaw nga isyu sa seguridad.

Ania ang butang, mga tawo: Kami nga mga nag-develop sa software busy kaayo, ug sa matag bahin sa software nag-atubang kami sa mga alternatibo nga nakigkompetensya. Sa bisan unsang panahon, ang mga programmer sa lengguwahe X nagkonsiderar sa lengguwahe Y isip posibleng kapuli. Oh, dili ka motuo kanako? Gusto ba nimo kini tawgon nga Swift? Sama sa, ang tanan milalin sa Swift ug wala’y nagbiya niini, di ba? Wow, unsa ka gamay ang imong nahibal-an. Ang mga kompanya nag-ihap sa mga gasto sa dual mobile development teams (iOS ug Android) - ug nagsugod na sila sa pagkaamgo nga kadtong mga cross-platform nga mga sistema sa pagpalambo nga adunay kataw-anan nga mga ngalan sama sa Flutter ug React Native tinuod nga nagtrabaho ug mahimong magamit sa pagpakunhod sa gidak-on sa ilang ang mga mobile team kaduha o, sa kasukwahi, gihimo silang doble nga produktibo. Adunay tinuod nga salapi nga nakataya. Oo, adunay mga pagkompromiso, apan, sa laing bahin, salapi.

Atong isipon sa hypothetically nga ang Apple sa binuang nga pagkuha sa usa ka cue gikan sa Guido van Rossum ug gipahayag nga ang Swift 6.0 kay backward incompatible sa Swift 5.0, sama sa Python 3 nga dili compatible sa Python 2.

Tingali gisulti nako kini nga istorya mga napulo ka tuig ang milabay, apan mga kinse ka tuig ang milabay miadto ako sa O'Reilly's Foo Camp kauban si Guido, naglingkod sa usa ka tolda kauban si Paul Graham ug usa ka hugpong sa mga dagkong shot. Naglingkod kami sa nag-init nga kainit nga naghulat nga molupad si Larry Page sakay sa iyang personal nga helicopter samtang si Guido nag-drone sa mga "Python 3000," nga iyang ginganlan sunod sa gidaghanon sa mga tuig nga gikinahanglan alang sa tanan nga molalin didto. Pirme namon sia ginapamangkot kon ngaa ginaguba niya ang compatibility, kag nagsabat sia: “Unicode.” Ug nangutana kami, kung kinahanglan namon nga isulat pag-usab ang among code, unsa pa nga mga benepisyo ang among makita? Ug nitubag siya "Yoooooooooooooooouuuuuuuuniiiiiiiiiiioooooooode."

Kon imong i-install ang Google Cloud Platform SDK (“gcloud”), imong madawat ang mosunod nga pahibalo:

Minahal nga Tigdawat,

Gusto namong ipahinumdom kanimo nga ang suporta alang sa Python 2 wala na gamita, busa fuck you

… ug uban pa. Lingin sa kinabuhi.

Apan ang punto mao nga ang matag developer adunay kapilian. Ug kung pugson nimo sila sa pagsulat pag-usab sa code kanunay igo, mahimo nilang hunahunaon sa uban nga mga mga kapilian. Dili sila ang imong mga hostage, bisan unsa pa ka gusto nimo sila. Sila ang imong mga bisita. Ang Python usa gihapon ka sikat nga programming language, apan damn, ang Python 3(000) nagmugna sa ingon nga kagubot sa iyang kaugalingon, sa mga komunidad niini ug sa mga tiggamit sa mga komunidad niini nga ang mga sangputanan wala pa malimpyohan sulod sa kinse ka tuig.

Pila ka mga programa sa Python ang nasulat pag-usab sa Go (o Ruby, o uban pang alternatibo) tungod sa kini nga atraso nga dili pagkaangay? Pila ka bag-ong software ang gisulat sa usa ka butang gawas sa Python, bisan kung kini mahimong gisulat sa Python, kung wala pa gisunog ni Guido ang tibuok baryo? Lisud isulti, apan klaro nga nag-antos si Python. Kini usa ka dako nga kagubot ug ang tanan mapildi.

Mao nga ingnon ta nga ang Apple nagkuha usa ka cue gikan sa Guido ug giguba ang pagkaangay. Unsa sa imong hunahuna ang sunod nga mahitabo? Aw, tingali 80-90% sa mga developers ang isulat pag-usab ang ilang software kung mahimo. Sa laing pagkasulti, 10-20% sa base sa tiggamit awtomatikong moadto sa pipila ka mga kakompetensya nga pinulongan, sama sa Flutter.

Buhata kini sa makadaghang higayon ug mawala nimo ang katunga sa imong user base. Sama sa sports, sa kalibutan sa programming, ang karon nga porma hinungdanon usab. tanan nga butang. Bisan kinsa nga mawad-an sa katunga sa ilang mga tiggamit sa lima ka tuig maisip nga usa ka Big Fat Loser. Kinahanglan nga uso ka sa kalibutan sa mga plataporma. Apan dinhi ang dili pagsuporta sa mga daan nga bersyon makadaot kanimo sa paglabay sa panahon. Tungod kay sa matag higayon nga imong tangtangon ang pipila ka mga developer, ikaw (a) mawad-an sila hangtod sa hangtod tungod kay sila masuko kanimo tungod sa paglapas sa kontrata, ug (b) mawad-an sila sa imong mga kakompetensya.

Katingad-an, gitabangan usab nako ang Google nga mahimong usa ka primadona nga wala magtagad sa paatras nga pagkaangay sa dihang gibuhat nako ang Grok, usa ka pag-analisar sa source code ug sistema sa pagsabut nga nagpadali sa pag-automate ug instrumento sa code mismo - parehas sa usa ka IDE, apan dinhi ang mga tindahan sa serbisyo sa panganod materialized representasyon sa tanang binilyon nga linya sa Google source code sa usa ka dako nga data warehouse.

Gihatagan ni Grok ang mga Googler sa usa ka kusgan nga balangkas alang sa paghimo sa mga awtomatiko nga refactorings sa ilang tibuuk nga codebase (sa literal sa tibuuk nga Google). Ang sistema nagkalkula dili lamang sa imong upstream dependencies (nga imong gisaligan), apan usab pagkanaog (nga naa ra kanimo) mao nga kung imong gibag-o ang mga API nahibal-an nimo ang tanan nga imong gilapas! Niining paagiha, kung maghimo ka mga pagbag-o, mahimo nimong pamatud-an nga ang matag konsumedor sa imong API nag-update sa bag-ong bersyon, ug sa tinuud, kanunay sa tool nga Rosie nga ilang gisulat, mahimo nimo nga hingpit nga ma-automate ang proseso.

Gitugotan niini ang codebase sa Google nga mahimong limpyo sa sulod, tungod kay aduna sila'y mga robotic nga mga sulugoon nga naglibot-libot sa balay ug awtomatiko nga gilimpyohan ang tanan kung giilisan nila ang ngalan nga SomeDespicablyLongFunctionName sa SomeDespicablyLongMethodName tungod kay adunay nakahukom nga kini usa ka mangil-ad nga apo ug kinahanglan niya nga matulog.

Ug prangka, kini nagtrabaho nga maayo alang sa Google ... sa sulod. Buot ipasabot, oo, ang komunidad sa Go sa Google adunay maayong pagkatawa sa komunidad sa Java sa Google tungod sa ilang batasan sa padayon nga pag-refactor. Kung gi-restart nimo ang usa ka butang nga N ka beses, kana nagpasabut nga dili lang nimo kini gi-screw sa N-1 nga mga panahon, apan pagkahuman sa usa ka panahon kini mahimong klaro nga mahimo nimo kini gibalibaran sa Nth nga pagsulay usab. Apan, sa kinatibuk-an, sila nagpabilin nga labaw sa tanan niini nga kasamok ug nagpadayon sa code nga "limpyo".

Nagsugod ang problema kung gisulayan nila nga ipahamtang kini nga kinaiya sa ilang mga kliyente sa panganod ug mga tiggamit sa ubang mga API.

Gipaila-ila ko nimo og gamay sa Emacs, Android ug Java; tan-awon nato ang pinakabag-o nga malampuson nga dugay nang nabuhi nga plataporma: ang Web mismo. Imong mahanduraw kung pila ka mga pag-ulit ang naagian sa HTTP sukad sa 1995, sa dihang migamit kami og mga tag nga ug mga icon nga "Under Construction" sa mga web page.

Apan kini nagtrabaho gihapon! Ug kini nga mga panid nagtrabaho gihapon! Oo, mga tawo, ang mga browser mao ang mga backward compatibility champion sa kalibutan. Ang Chrome usa pa ka pananglitan sa talagsaon nga plataporma sa Google nga gipunting sa husto nga mga ulo, ug sama sa imong nahunahunaan, ang Chrome epektibo nga naglihok ingon usa ka sandboxed nga kompanya nga bulag sa ubang bahin sa Google.

Gusto usab nako nga pasalamatan ang among mga higala sa mga nag-develop sa operating system: Windows, Linux, DILI APPLE FUCK YOU APPLE, FreeBSD, ug uban pa, tungod sa pagbuhat sa ingon usa ka maayo nga trabaho sa pagpahiangay sa paatras sa ilang malampuson nga mga platform (Nakuha sa Apple ang labing kaayo nga C sa The Ang downside mao nga ilang gibuak ang tanan sa tanang panahon nga walay igong rason, apan sa usa ka paagi ang komunidad makalibot niini sa matag pagpagawas, ug ang mga sudlanan sa OS X dili gihapon hingpit nga karaan ... pa).

Apan paghulat, ingon nimo. Dili ba nato itandi ang mga mansanas ngadto sa oranges - standalone software system sa usa ka makina sama sa Emacs/JDK/Android/Chrome nga adunay multi-server system ug APIs sama sa cloud services?

Aw, ako nag-tweet mahitungod niini kagahapon, apan sa estilo ni Larry Wall (magbubuhat sa programming language Perl - gibanabana matag.) Sa prinsipyo sa "sucks/rules" akong gipangita ang pulong wala na usba sa Google ug Amazon developer sites. Ug bisan kung adunay AWS ginatos mga pilo nga mas daghan nga mga halad sa serbisyo kay sa GCP, ang dokumentasyon sa developer sa Google naghisgot sa pagkawala sa paggamit mga pito ka pilo nga mas kanunay.

Kung adunay bisan kinsa sa Google nga nagbasa niini, tingali andam na sila nga kuhaon ang mga tsart nga istilo ni Donald Trump nga nagpakita nga sa tinuud gibuhat nila ang tanan nga husto, ug nga dili ako kinahanglan maghimo dili patas nga pagtandi sama sa "gidaghanon sa mga paghisgot sa pulong nga wala gigamit batok sa gidaghanon sa mga serbisyo ""

Apan pagkahuman sa tanan nga mga tuig, ang Google Cloud mao gihapon ang serbisyo sa No. 3 (wala gyud ako nagsulat usa ka artikulo bahin sa napakyas nga pagsulay nga mahimong No. 2), apan kung ang mga insider ang tuohan, adunay pipila nga kabalaka nga mahimo silang mahulog sa dili madugay. Num. 4.

Wala koy bisan unsang makapilit nga mga argumento aron "mapamatud-an" ang akong thesis. Ang naa ra nako mao ang mabulukon nga mga ehemplo nga akong natipon sa 30 ka tuig isip usa ka developer. Nahisgotan na nako ang lawom nga pilosopikal nga kinaiya niini nga problema; sa pipila ka mga paagi kini gipulitika sa developer nga mga komunidad. Ang uban nagtuo niana mga magbubuhat Ang mga plataporma kinahanglan nga magtagad sa pagkaangay, samtang ang uban naghunahuna nga kini usa ka kabalaka sa mga tiggamit (ang mga developers mismo). Usa sa duha. Sa pagkatinuod, dili ba kini usa ka politikanhong isyu kon kita magdesisyon kon kinsa ang angay nga mopas-an sa gasto sa komon nga mga problema?

Busa kini mao ang politika. Ug lagmit adunay masuko nga mga tubag sa akong pakigpulong.

Sa unsang paagi nga ang tiggamit Google Cloud Platform, ug isip usa ka AWS user sulod sa duha ka tuig (samtang nagtrabaho sa Grab), makaingon ko nga adunay dakong kalainan tali sa Amazon ug sa mga pilosopiya sa Google kon prayoridad ang hisgutan. Dili ko aktibo nga nag-develop sa AWS, mao nga wala ko kabalo kung unsa ka sagad ilang gitangtang ang mga daan nga API. Apan adunay usa ka pagduda nga kini dili mahitabo hapit kanunay sama sa Google. Ug nagtuo gyud ko nga kining tinubdan sa kanunay nga kontrobersiya ug kasagmuyo sa GCP maoy usa sa pinakadakong hinungdan nga nagpugong sa pag-uswag sa plataporma.

Nahibal-an ko nga wala nako hinganli ang piho nga mga pananglitan sa mga sistema sa GCP nga wala na gisuportahan. Makaingon ko nga halos tanan nakong nagamit, gikan sa mga network (gikan sa labing karaan hangtod sa VPC) hangtod sa pagtipig (Cloud SQL v1-v2), Firebase (karon Firestore nga adunay hingpit nga lahi nga API), App Engine (dili na ta magsugod) , cloud endpoints Cloud Endpoint ug hangtod sa... Wala ko kahibalo - hingpit kining tanan gipugos ka nga isulat pag-usab ang code pagkahuman sa labing taas nga 2-3 ka tuig, ug wala gyud nila awtomatiko ang paglalin alang kanimo, ug kanunay wala gayoy dokumentado nga dalan sa paglalin. Ingon ana unta.

Ug kada tan-aw nako sa AWS, mangutana ko sa akong kaugalingon nganong naa pa ko sa GCP. Klaro nga wala nila kinahanglana ang mga kliyente. Kinahanglan nila mga pumapalit. Nakasabot ka ba sa kalainan? Pasabta ko.

Ang Google Cloud adunay tiyanggihan, diin gisugyot sa mga tawo ang ilang mga solusyon sa software, ug aron malikayan ang walay sulod nga epekto sa restawran, kinahanglan nila nga pun-on kini sa pipila nga mga sugyot, mao nga nakigkontrata sila sa usa ka kompanya nga gitawag Bitnami aron maghimo usa ka hugpong sa mga solusyon nga gipakatap sa "usa ka pag-klik", o kinahanglan. Gisulat ko kini sa akong kaugalingon nga "mga solusyon," tungod kay kini dili makasulbad sa usa ka butang nga makadaot. Naglungtad ra sila ingon mga checkbox, ingon tigpuno sa pamaligya, ug wala gyud magtagad ang Google kung adunay bisan unsang mga himan nga nagtrabaho. Nahibal-an ko ang mga manager sa produkto nga naa sa lingkuranan sa drayber, ug makasiguro ako kanimo nga kini nga mga tawo wala’y pagtagad.

Dad-a, pananglitan, ang usa ka kuno "usa ka pag-klik" nga solusyon sa pag-deploy. percona. Nasakitan ko sa kamatayon sa Google Cloud SQL shenanigans, mao nga nagsugod ko sa pagtan-aw sa pagtukod sa akong kaugalingon nga Percona cluster isip alternatibo. Ug niining higayona ang Google ingon og usa ka maayo nga trabaho, sila makaluwas kanako sa pipila ka oras ug paningkamot sa pag-klik sa usa ka buton!

Maayo kaayo, lakaw na ta. Atong sundon ang link ug i-klik kini nga buton. Pilia ang "Oo" aron mouyon sa tanang default setting ug i-deploy ang cluster sa imong Google cloud project. Haha, dili ni mugana. Walay usa niini nga crap nga mubuhat. Ang himan wala gayud gisulayan ug kini nagsugod sa pagkadunot gikan sa unang minuto, ug kini dili ikatingala kanako kon labaw pa sa katunga sa mga "solusyon" mao ang usa ka-click deployments (karon atong nasabtan ngano nga ang mga kinutlo) sa kinatibuk-an dili molihok. Kini mao ang hingpit nga walay paglaum nga kangitngit, diin mas maayo nga dili mosulod.

Apan husto ang Google nag-awhag kamo sa paggamit kanila. Gusto ka nila gipalit. Alang nila, kini usa ka transaksyon. Wala silay gusto pagsuporta. Dili kini bahin sa DNA sa Google. Oo, ang mga inhenyero nagsuporta sa usag usa, ingon nga ebidensya sa akong istorya sa Bigtable. Apan sa mga produkto ug serbisyo para sa ordinaryong mga tawo sila kanunay walay kaluoy sa pagsira sa bisan unsang serbisyo, nga dili makab-ot ang bar alang sa ganansya bisan kung kini adunay milyon-milyon nga tiggamit.

Ug kini nagpresentar usa ka tinuud nga hagit alang sa GCP tungod kay kini ang DNA sa luyo sa tanan nga mga paghalad sa panganod. Wala sila naningkamot sa pagsuporta sa bisan unsa; Nahibal-an kaayo nga sila nagdumili sa pag-host (ingon usa ka pagdumala nga serbisyo) bisan unsang software sa ikatulo nga partido hangtod, hangtud nga ang AWS makahimo sa sama ug magtukod og usa ka malampuson nga negosyo sa palibot niini, ug sa diha nga ang mga kustomer literal nga mangayo sa mao gihapon. Bisan pa, gikinahanglan ang pipila ka paningkamot aron masuportahan sa Google ang usa ka butang.

Kining kakuwang sa kultura sa pagsuporta, inubanan sa mentalidad nga “buak nato aron mas nindot”, nagpahilayo sa mga developers.

Ug dili kana usa ka maayong butang kung gusto nimo nga magtukod usa ka dugay na nga platform.

Google, pagmata, damn it. 2020 na karon. Pildi gihapon ka. Panahon na nga magtan-aw pag-ayo sa salamin ug tubagon kung gusto ba nimo nga magpabilin sa negosyo sa panganod.

Kung gusto nimo magpabilin unya hunong sa pagbungkag sa tanan. Guys, dato ka. Kami nga mga developers dili. Mao nga kung kinsa ang mag-abaga sa palas-anon sa pagkaangay, kinahanglan nimo nga dad-on kini sa imong kaugalingon. Dili para namo.

Tungod kay adunay labing menos tulo pa ka maayo nga mga panganod. Nagsinyas sila.

Ug karon magpadayon ko aron ayohon ang tanan nakong mga sistema nga naguba. Eh.

Sa sunod na pud!

P.S. Pag-update human mabasa ang pipila ka mga diskusyon sa kini nga artikulo (ang mga panaghisgot maayo, btw). Ang suporta sa Firebase wala gihunong ug walay mga plano nga akong nahibal-an. Bisan pa, sila adunay usa ka daotan nga streaming bug nga hinungdan nga ang kliyente sa Java mag-stall sa App Engine. Usa sa ilang mga inhenyero mitabang kanako sa pagsulbad niini nga problema, sa dihang nagtrabaho ko sa Google, apan wala gayud nila giayo ang bug, mao nga ako adunay usa ka crappy workaround nga kinahanglan nga i-restart ang GAE app kada adlaw. Ug mao kini sulod sa upat ka tuig! Naa na silay Firestore. Nagkinahanglan kini og daghang trabaho aron molalin niini tungod kay kini usa ka hingpit nga lahi nga sistema ug ang Firebase bug dili na masulbad. Unsang konklusyon ang mahimo? Makapangayo ka ug tabang kung nagtrabaho ka sa usa ka kompanya. Tingali ako ra ang usa nga naggamit sa Firebase sa GAE tungod kay nag-log ako nga wala’y 100 nga mga yawe sa usa ka 100% nga lumad nga app ug kini mohunong sa pagtrabaho matag duha ka adlaw tungod sa usa ka nahibal-an nga bug. Unsa may akong ikasulti gawas sa paggamit niini sa imong kaugalingong risgo. Mobalhin ko sa Redis.

Nakita usab nako ang pipila ka mas eksperyensiyado nga mga tiggamit sa AWS nga nag-ingon nga ang AWS kasagaran dili mohunong sa pagsuporta sa bisan unsang mga serbisyo, ug ang SimpleDB usa ka maayong panig-ingnan. Ang akong mga pangagpas nga ang AWS wala’y parehas nga katapusan sa sakit nga suporta sama sa Google daw makatarunganon.

Dugang pa, akong namatikdan nga 20 ka adlaw ang milabay ang Google App Engine team nagbungkag sa pag-host sa usa ka kritikal nga librarya sa Go, nga nagsira sa aplikasyon sa GAE gikan sa usa sa mga nag-unang developer sa Go. Kabuang gyud.

Sa katapusan, nakadungog na ko sa mga Googler nga naghisgot na niini nga isyu ug sa kasagaran miuyon kanako (love you guys!). Apan ingon sila naghunahuna nga ang problema dili masulbad tungod kay ang kultura sa Google wala’y husto nga istruktura sa insentibo. Naghunahuna ko nga maayo nga maggahin ug panahon aron hisgutan ang hingpit nga katingad-an nga kasinatian nga akong nasinati sa pagtrabaho kauban ang mga inhenyero sa AWS samtang nagtrabaho sa Grab. Sa umaabot nga adlaw, naglaum ko!

Ug oo, niadtong 2005 aduna silay lain-laing klase sa karne sa iho sa giant buffet sa building 43, ug ang akong paborito mao ang hammerhead shark meat. Bisan pa, sa 2006, si Larry ug Sergei nagtangtang sa tanan nga dili maayo nga meryenda. So during the Bigtable story 2007 wala gyud shark ug gilimbongan tika.

Sa akong pagtan-aw sa cloud Bigtable upat ka tuig na ang milabay (give or take), dinhi ang gasto. Kini ingon og usa ka gamay nga nahulog karon, apan kana sa gihapon usa ka makalilisang nga daghan alang sa usa ka walay sulod nga data bodega, ilabi na kay ang akong unang istorya nagpakita kon unsa ka walay hinungdan ang usa ka walay sulod nga dako nga lamesa anaa sa ilang sukod.

Pasayloa sa pagpasilo sa Apple nga komunidad ug wala magsulti og bisan unsa nga nindot mahitungod sa Microsoft, ug uban pa. Okay ra ka, gipabilhan gyud nako ang tanan nga diskusyon nga nahimo niini nga artikulo! Apan usahay kinahanglan nimo nga maghimo usa ka gamay aron magsugod usa ka panaghisgot, nahibal-an nimo?

Salamat sa pagbasa.

Update 2, 19.08.2020/XNUMX/XNUMX. Stripe gi-update sa husto ang API!

Gi-update 3, 31.08.2020/2/2. Gikontak ako sa usa ka inhenyero sa Google sa Cloud Marketplace nga nahimo nga akong karaan nga higala. Gusto niya nga mahibal-an kung ngano nga ang CXNUMXD wala molihok, ug sa katapusan nahibal-an namon nga kini tungod kay gitukod nako ang akong network mga tuig na ang milabay, ug ang CXNUMXD wala nagtrabaho sa mga kabilin nga network tungod kay ang subnet parameter nawala sa ilang mga template. Sa akong hunahuna labing maayo alang sa mga potensyal nga tiggamit sa GCP nga masiguro nga sila adunay igo nga nahibal-an nga mga inhenyero sa Google...

Source: www.habr.com