Hurmatli Google Cloud, orqaga qarab emas, balki moslik sizni o'ldiradi

Jin ursin Google, men boshqa blog yozishni xohlamadim. Mening qiladigan ishlarim juda ko'p. Blog yuritish vaqt, kuch va ijodkorlikni talab qiladi, men undan yaxshi foydalanishim mumkin: kitoblarim, musiqa, mening o'yinim va boshqalar. Lekin siz meni shunchalik g'azablantirdingizki, men buni yozishga majbur bo'ldim.

Shunday qilib, keling, buni yakunlaylik.

Google’da ish boshlaganimdan qisqa, ammo ibratli hikoyadan boshlaylik. Oxirgi paytlarda Google haqida juda ko‘p yomon gaplar aytayotganimni bilaman, lekin mening kompaniyam muntazam ravishda noqobil biznes qarorlar qabul qilsa, bu meni xafa qiladi. Shu bilan birga, biz o'z haqimizni berishimiz kerak: Googlening ichki infratuzilmasi haqiqatan ham g'ayrioddiy, bugungi kunda bundan yaxshiroq narsa yo'q deb aytish mumkin. Google asoschilari men har qachongidan ham yaxshi muhandis bo'lishgan va bu voqea faqat bu haqiqatni tasdiqlaydi.

Birinchidan, bir oz fon: Google nomli ma'lumotlarni saqlash texnologiyasiga ega Katta stol. Bu ajoyib texnik yutuq bo'lib, birinchilardan biri (agar birinchi bo'lmasa) "cheksiz ravishda kengaytiriladigan" kalit-qiymatlar do'koni (K/V): mohiyatan NoSQLning boshlanishi. Hozirgi kunda Bigtable juda gavjum K/V saqlash maydonida hali ham yaxshi ishlamoqda, ammo o'sha paytda (2005) bu juda ajoyib edi.

Bigtable-ning kulgili tomoni shundaki, ularda katta indekslarga ega planshet serverlari deb ataladigan ichki boshqaruv tekisligi ob'ektlari (amalga oshirishning bir qismi sifatida) bor edi va ular tizimni miqyosda kengaytirishda bir nuqtaga aylandi. Bigtable muhandislari masshtablilikni qanday amalga oshirish haqida bosh qotirishdi va birdan ular planshet serverlarini boshqa Bigtable xotirasi bilan almashtirishlari mumkinligini angladilar. Shunday qilib, Bigtable Bigtable dasturining bir qismidir. Ushbu saqlash joylari barcha darajalarda mavjud.

Yana bir qiziq jihat shundaki, bir muncha vaqt Bigtable Google ichida mashhur bo'lib, hamma joyda keng tarqaldi, har bir jamoa o'z omboriga ega. Juma kungi uchrashuvlardan birida Larri Peyj bexosdan so'radi: “Nega bizda bir nechta katta stol bor? Nega bitta emas?” Nazariy jihatdan, bitta xotira Google-ning barcha saqlash ehtiyojlari uchun etarli bo'lishi kerak. Albatta, ular amaliy rivojlanish sabablari (potentsial muvaffaqiyatsizlik oqibatlari kabi) uchun hech qachon bittasiga bormagan, ammo nazariya qiziq edi. Butun olam uchun bitta ombor (Aytgancha, Amazon buni Sable bilan qilganmi yoki yo'qligini kimdir biladimi?)

Qanday bo'lmasin, mening hikoyam.

O'sha paytda men Google'da ikki yildan ko'proq vaqt davomida ishlaganman va bir kuni menga Bigtable muhandislik jamoasidan shunday xat keldi:

Hurmatli Stiv,

Bigtable jamoasidan salom. Sizga shuni maʼlum qilmoqchimizki, siz [maʼlumotlar markazi nomi] juda eski Bigtable ikkilik faylidan foydalanmoqdasiz. Bu versiya endi qoʻllab-quvvatlanmaydi va biz sizga eng soʻnggi versiyaga oʻtishingizga yordam bermoqchimiz.

Iltimos, ushbu masala bo'yicha birgalikda ishlash uchun vaqt ajrata olsangiz, menga xabar bering.

Barcha ezgu tilaklarni tilayman,
Katta stol jamoasi

Google-da siz juda ko'p xat olasiz, shuning uchun birinchi qarashda men shunday bir narsani o'qidim:

Hurmatli oluvchi,

Bir jamoadan salom. Biz bu blah bla bla bla blah bilan muloqot qilishni xohlaymiz. Bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla

Iltimos, qimmatli vaqtingizning bir qismini blah blah bla uchun rejalashtira olsangiz, bizga xabar bering.

Barcha ezgu tilaklarni tilayman,
Qandaydir buyruq

Men uni deyarli o'chirib tashladim, lekin ongimning chekkasida menda og'riqli va bezovta qiluvchi tuyg'u paydo bo'ldi. unchalik emas rasmiy xatga o'xshaydi shubhasiz, qabul qiluvchi xato qilgan, chunki men Bigtable dan foydalanmaganman.

Lekin bu g'alati edi.

Men kunning qolgan qismini navbatma-navbat ish va mikrooshxonada qanday akula go'shtini tatib ko'rish haqida o'ylardim, ulardan kamida uchtasi pecheneni yaxshi maqsadli uloqtirish bilan o'rnimdan urish uchun etarlicha yaqin edi, lekin yozishni o'ylash meni hech qachon o'sib borayotgan engil tashvish hissi bilan qoldirmadi.

Ular mening ismimni aniq aytishdi. Va elektron pochta boshqa birovning emas, mening elektron pochta manzilimga yuborildi va u cc: yoki bcc: emas. Ohang juda shaxsiy va aniq. Balki bu qandaydir xatodir?

Nihoyat, qiziquvchanlik mendan ustun keldi va men ular aytib o'tgan ma'lumotlar markazidagi Borg konsolini ko'rish uchun bordim.

Va, albatta, men boshqaruv ostida BigTable xotirasiga ega edim. Nima nima? Men uning mazmuniga qaradim va voy! Bu 2005 yil iyun oyida Google'dagi birinchi haftamda o'tirgan Codelab inkubatoridan edi. Codelab u erda ba'zi qiymatlarni yozish uchun sizni Bigtable-ni ishga tushirishga majbur qildi va men bundan keyin hech qachon xotirani yopmaganman. Ikki yildan ko'proq vaqt o'tgan bo'lsa ham, u ishlayotgan edi.

Ushbu hikoyaning bir nechta diqqatga sazovor tomonlari bor. Birinchidan, Bigtable ishi Google miqyosida shunchalik ahamiyatsiz ediki, faqat ikki yil o'tgach, hech kim qo'shimcha xotirani payqamadi va faqat ikkilik versiyasi eskirganligi sababli. Taqqoslash uchun, men bir marta foydalanishni o'yladim Google Cloud-da katta jadval onlayn o'yinim uchun. O'sha paytda bu xizmat yiliga taxminan 16 000 dollar turadi. bo'sh GCP-da katta jadval. Men sizni aldashayotganini aytmayapman, lekin mening shaxsiy fikrimcha, bu bo'sh ma'lumotlar bazasi uchun juda ko'p pul.

Yana bir e'tiborga loyiq jihati shundaki, saqlash ikki yildan keyin ham ishlaydi. WTF? Ma'lumotlar markazlari keladi va ketadi; ular uzilishlarni boshdan kechirishadi, rejali texnik xizmat ko'rsatishadi, ular doimo o'zgaradi. Uskuna yangilanadi, kalitlar almashtiriladi, hamma narsa doimiy ravishda yaxshilanadi. Qanday qilib ular bu o'zgarishlar bilan mening dasturimni ikki yil davomida ushlab turishga muvaffaq bo'lishdi? Bu 2020 yilda kamtarona yutuqdek tuyulishi mumkin, ammo 2005-2007 yillarda bu juda ta'sirli edi.

Va eng ajoyib jihati shundaki, boshqa shtatdagi tashqi muhandislik guruhi menga, Bigtable-ning kichik, deyarli bo'sh nusxasi egasiga yaqinlashadi. nol trafik so'nggi ikki yil davomida - va uni yangilash uchun yordam taklif qilmoqda.

Men ularga rahmat aytdim, xotirani o'chirib tashladim va hayot odatdagidek davom etdi. Ammo oradan o‘n uch yil o‘tgan bo‘lsa ham, o‘sha maktub haqida o‘ylayman. Chunki ba'zan men Google Cloud'dan shunga o'xshash xatlarni olaman. Ular shunday ko'rinadi:

Hurmatli Google Cloud foydalanuvchisi,

Eslatib oʻtamiz, 2020-yil avgust oyidan boshlab [siz foydalanadigan asosiy xizmat] xizmatini toʻxtatamiz, shundan soʻng siz namunalaringizni yangilay olmaysiz. Beta-sinovda boʻlgan, hujjatsiz, koʻchirish yoʻli yoʻq va bizning yordamimiz bilan avval eskirgan eng soʻnggi versiyaga yangilashni tavsiya etamiz.

Biz ushbu oʻzgarish Google Cloud platformasining barcha foydalanuvchilariga minimal taʼsir koʻrsatishini taʼminlashga intilamiz.

Abadiy eng yaxshi do'stlar,
Google bulutli platformasi

Ammo men bunday xatlarni deyarli o'qimaganman, chunki ular aslida shunday deyishadi:

Hurmatli oluvchi,

Jahannamga ravona bo'l. O'zingni o'zingni, sikishni. Qilayotgan hamma narsadan voz keching, chunki bu muhim emas. Muhimi bizning vaqtimiz. Biz ahmoqligimizni saqlab qolish uchun vaqt va pulni behuda sarflaymiz va biz bundan charchaganmiz, shuning uchun uni boshqa qo'llab-quvvatlamaymiz. Shunday qilib, o'z rejalaringizdan voz keching va bizning ahmoq hujjatlarimizni qazishni boshlang, forumlarda parchalar so'raymiz va aytmoqchi, bizning yangi axlatimiz eski axlatdan butunlay farq qiladi, chunki biz bu dizaynni juda yomon buzdik, heh, lekin bu sizniki muammo, bizning emas.

Biz barcha ishlanmalaringiz bir yil ichida yaroqsiz holga kelishini ta'minlash uchun harakat qilishda davom etamiz.

Iltimos, keting
Google bulutli platformasi

Gap shundaki, men har oyda bir marta shunday xatlarni olaman. Bu shunchalik tez-tez va doimiy ravishda sodir bo'ladiki, ular muqarrar itarib yubordi meni GCP dan bulutga qarshi lagerga. Men endi ularning mulkiy ishlanmalariga bog'liq bo'lishga rozi emasman, chunki aslida devoplar uchun "eskirgan" mahsulotlarni yopish siyosati bilan Google'dan qolishga urinishdan ko'ra, ochiq kodli tizimni yalang'och virtual mashinada saqlash osonroq.

Men Google Cloud-ga qaytishdan oldin, chunki men hatto yaqin ham emas ularni tanqid qilish tugamadi, keling, kompaniyaning boshqa sohalardagi faoliyatini ko'rib chiqaylik. Google muhandislari o'zlarining dasturiy injiniring intizomi bilan faxrlanadilar va bu aslida muammolarni keltirib chiqaradi. Mag'rurlik beparvolar uchun tuzoqdir va bu ko'plab Google xodimlarining qarorlari doimo to'g'ri va to'g'ri bo'lish (ba'zi noaniq ta'riflar bo'yicha) mijozlarga g'amxo'rlik qilishdan ko'ra muhimroq deb o'ylashga olib keldi.

Men Google'dan tashqari boshqa yirik loyihalardan tasodifiy misollar keltiraman, lekin umid qilamanki, siz bu naqshni hamma joyda ko'rasiz. Bu quyidagicha: orqaga qarab muvofiqlik o'nlab yillar davomida tizimlarni jonli va yangilab turadi.

Orqaga qarab muvofiqlik - bu barcha muvaffaqiyatli tizimlarning dizayn maqsadi ochiq foydalanish, ya'ni ochiq kodli va/yoki ochiq standartlar bilan amalga oshiriladi. Men o'zimni juda aniq aytayotgandek his qilyapmanki, hamma hatto noqulay, lekin yo'q. Bu siyosiy masala, shuning uchun misollar kerak.

Men tanlagan birinchi tizim eng qadimiysi: GNU Emacs, bu Windows Notepad, OS yadrosi va Xalqaro kosmik stansiya o'rtasidagi gibriddir. Buni tushuntirish biroz qiyin, biroq qisqacha aytganda, Emacs 1976 yilda (ha, deyarli yarim asr oldin) sizni yanada samaraliroq qilish uchun dasturlash uchun yaratilgan, ammo matn muharriri sifatida niqoblangan platformadir.

Men har kuni Emacs-dan foydalanaman. Ha, men ham IntelliJ-dan har kuni foydalanaman, u o'z-o'zidan kuchli asboblar platformasiga aylandi. Ammo IntelliJ uchun kengaytmalarni yozish Emacs uchun kengaytmalar yozishdan ko'ra ancha talabchan va murakkab vazifadir. Va bundan ham muhimi, Emacs uchun yozilgan hamma narsa saqlanib qolgan abadiydir.

Men hali ham 1995 yilda Emacs uchun yozgan dasturiy ta'minotdan foydalanaman. Ishonchim komilki, kimdir ilgari bo'lmasa, 80-yillarning o'rtalarida Emacs uchun yozilgan modullardan foydalanmoqda. Ular vaqti-vaqti bilan biroz sozlashni talab qilishi mumkin, ammo bu juda kam uchraydi. Men hech qachon Emacs uchun yozgan (va men ko'p yozganman) qayta arxitekturani talab qiladigan hech narsani bilmayman.

Emacs-da eskirgan ob'ektlar uchun eskirgan qilish funksiyasi mavjud. Asosiy kompyuter tushunchalari uchun Emacs terminologiyasi (masalan, "oyna" nima) ko'pincha sanoat konventsiyalaridan farq qiladi, chunki Emacs ularni uzoq vaqt oldin kiritgan. Bu o'z vaqtidan oldinroq bo'lganlar uchun odatiy xavf: sizning barcha shartlaringiz noto'g'ri. Ammo Emacs-da eskirish tushunchasi bor, bu ularning jargonida deyiladi eskirish.

Ammo Emacs dunyosida boshqa ish ta'rifi borga o'xshaydi. Agar xohlasangiz, boshqa asosiy falsafa.

Emacs dunyosida (va biz quyida ko'rib chiqamiz boshqa ko'plab sohalarda) eskirgan API maqomi asosan quyidagilarni anglatadi: "Siz haqiqatan ham bunday yondashuvdan foydalanmasligingiz kerak, chunki u ishlayotgan paytda biz turli kamchiliklarga duchor bo'lamiz. bu erda ro'yxat. Ammo oxir-oqibat, bu sizning tanlovingiz."

Google dunyosida eskirgan bo‘lish “Sizga bo‘lgan majburiyatimizni buzyapmiz” degan ma’noni anglatadi. Bu haqiqat. Bu aslida nimani anglatadi. Bu sizni majburlashini anglatadi muntazam ravishda ularga ishonish uchun jazo sifatida ba'zi ishlarni, ehtimol ko'p ishlarni bajaring rangli reklama: Bizda eng yaxshi dasturiy ta'minot mavjud. Eng tez! Siz hamma narsani ko'rsatmalarga muvofiq qilasiz, ilovangizni yoki xizmatingizni ishga tushirasiz, keyin bam, bir yoki ikki yildan keyin u buziladi.

Bu 1500 km dan keyin albatta buzilib ketadigan eski mashinani sotishga o'xshaydi.

Bu "eskirganlik" ning ikkita mutlaqo boshqa falsafiy ta'riflari. Google tomonidan hidning ta'rifi rejalashtirilgan eskirish. Men bunga ishonmayman aslida Apple bilan bir xil ma'noda rejalashtirilgan eskirish. Ammo Google, albatta, dasturlaringizni aylanma tarzda buzishni rejalashtirmoqda. Men buni bilaman, chunki men u erda 12 yildan ortiq dasturiy ta'minot muhandisi bo'lib ishlaganman. Ularda orqaga qarab muvofiqlikka qanchalik rioya qilish kerakligi haqida noaniq ichki ko'rsatmalar mavjud, ammo bu oxir-oqibat har bir alohida jamoa yoki xizmatga bog'liq. Korxona yoki muhandislik darajasida tavsiyalar mavjud emas va eskirish davrlari bo'yicha eng jasur tavsiya "mijozlarga butun tizimini buzishdan oldin yangilash uchun 6-12 oy berishga harakat qiling".

Muammo ular o'ylaganidan ancha katta va u yillar davomida saqlanib qoladi, chunki mijozlarga xizmat ko'rsatish ularning DNKsida yo'q. Bu haqda quyida batafsilroq.

Shu nuqtada men Emacs katta darajada va hatto muvaffaqiyatli ekanligi haqida dadil bayonot bermoqchiman asosan chunki ular orqaga qarab muvofiqlikni juda jiddiy qabul qilishadi. Aslida, bu bizning maqolamizning tezisi. Muvaffaqiyatli, uzoq umr ko'radigan ochiq tizimlar o'zlarining muvaffaqiyatlari uchun atrofida o'nlab yillar davomida yashab kelgan mikrojamiyatlarga qarzdorlar. kengaytmalar/plaginlar. Bu ekotizim. Men allaqachon platformalarning tabiati va ular qanchalik muhimligi va Google o'zining butun korporativ tarixida Android yoki Chrome'dan tashqari muvaffaqiyatli ochiq platforma yaratish nima ekanligini hech qachon tushunmaganligi haqida gapirgan edim.

Aslida Android haqida qisqacha aytib o'tishim kerak, chunki siz bu haqda o'ylayotgandirsiz.

Birinchidan, Android Google emas. Ularning bir-biri bilan deyarli hech qanday umumiyligi yo'q. Android 2005 yilning iyul oyida Google tomonidan sotib olingan kompaniya bo'lib, kompaniyaga ozmi-ko'pmi avtonom ishlashga ruxsat berilgan va o'tgan yillar davomida deyarli hech qanday zarar ko'rmagan. Android - bu mashhur texnologik to'plam va bir xil darajada mashhur bo'lgan shiddatli tashkilot. Bir Google xodimi aytganidek, "Siz shunchaki Android tizimiga kira olmaysiz."

Oldingi maqolada men Android-ning dastlabki dizayn qarorlari qanchalik yomon ekanligini muhokama qildim. Men o'sha maqolani yozganimda, ular "tezkor ilovalar" deb nomlangan ahmoqona narsalarni tarqatishdi, ular hozir (hayratlanarli!) eskirgan, va agar siz Googleni tinglash va kontentingizni ushbu tezkor ilovalarga ko'chirish uchun etarlicha ahmoq bo'lsangiz, men hamdardman.

Ammo bu erda farq bor, sezilarli farq, ya'ni Android odamlari platformalar qanchalik muhimligini haqiqatdan ham tushunishadi, ular eski Android ilovalarini ishlashi uchun qo'llaridan kelgancha harakat qilishadi. Darhaqiqat, ularning orqaga qarab muvofiqligini saqlab qolish bo'yicha urinishlari shu qadar haddan tashqari ko'pki, hatto men bir necha yil oldin Android bo'limidagi qisqa muddatli ishim davomida ularni eng qadimgi qurilmalar va API-larni qo'llab-quvvatlashni to'xtatishga ishontirishga harakat qilganman (men xato qilganman) , boshqa ko'plab o'tmish va hozirgi narsalarda bo'lgani kabi. Kechirasiz, Android do'stlari! Endi men Indoneziyada bo'lganimdan so'ng, ularga nima uchun kerakligini tushundim).

Android odamlari o'zlarining tizimlari va asboblar zanjirlarida katta miqdorda eski texnik qarzlarni yig'ib, deyarli tasavvur qilib bo'lmaydigan darajada orqaga qarab uyg'unlikni oshiradilar. Ey xudoyim, siz ularning qurish tizimida qilishlari kerak bo'lgan ba'zi aqldan ozgan narsalarni ko'rishingiz kerak, barchasi moslik nomidan.

Buning uchun men Android-ga "Siz Google emassiz" mukofotini topshiraman. Ular, albatta, Google bo'lishni xohlamaydilar, u qanday qilib bardoshli platformalar yaratishni bilmaydi, lekin Android biladi, buni qanday qilish kerak. Shunday qilib, Google bir jihatdan juda aqlli: odamlarga Android-da o'z xohishlariga ko'ra narsalarni qilishlariga ruxsat berish.

Biroq, Android uchun tezkor ilovalar juda ahmoqona fikr edi. Va nima uchun bilasizmi? Chunki ular talab qilishdi ilovangizni qayta yozing va qayta loyihalashtiring! Go‘yo odamlar ikki million arizani shunchaki qaytadan yozishadi. Menimcha, Instant Apps ba'zi Google xodimlarining g'oyasi bo'lgan.

Lekin farq bor. Orqaga qarab muvofiqlik yuqori narxga ega. Androidning o'zi bu xarajatlar yukini ko'taradi, Google esa yukni o'z zimmasiga olishini talab qiladi sizlarsiz, to'lovchi mijoz.

Android-ning orqaga qarab muvofiqlikka sodiqligini uning API-larida ko'rishingiz mumkin. Agar sizda to'g'ridan-to'g'ri bir xil ishni bajaradigan to'rt yoki besh xil quyi tizimlar mavjud bo'lsa, bu yadroda orqaga qarab muvofiqlik majburiyati borligidan dalolat beradi. Platformalar dunyosida bu sizning mijozlaringiz va bozoringizga sodiqlik bilan sinonimdir.

Bu erda Googlening asosiy muammosi ularning muhandislik gigienasi bilan faxrlanishidir. Ularga bir xil ishni qilishning turli usullari mavjud bo‘lsa, eski, unchalik ma’qul bo‘lmagan usullar yangi, qiziqroq usullar yonida o‘tirishni yoqtirmaydi. Bu tizimga yangi kelganlar uchun o'rganish egri chizig'ini oshiradi, eski API-larni saqlash yukini oshiradi, yangi xususiyatlarning tezligini sekinlashtiradi va asosiy gunoh - bu chiroyli emas. Google - Tim Burtonning Alisa mo''jizalar mamlakatidagi Lady Ascot kabi:

Ascot xonim:
- Elis, bilasanmi, men nimadan ko'proq qo'rqaman?
- Aristokratiyaning tanazzulga uchrashi?
- Men qo'rqaman deb qo'rqardim xunuk nevaralar.

Chiroyli va amaliy o'rtasidagi kelishuvni tushunish uchun keling, uchinchi muvaffaqiyatli platformani (Emacs va Androiddan keyin) ko'rib chiqamiz va uning qanday ishlashini ko'rib chiqamiz: Java-ning o'zi.

Java-da juda ko'p eskirgan API mavjud. Eskirish Java dasturchilari orasida juda mashhur bo'lib, ko'pchilik dasturlash tillariga qaraganda ancha mashhur. Java-ning o'zi, asosiy til va kutubxonalar API-larni doimiy ravishda bekor qiladi.

Minglab misollardan faqat bittasini olaylik, iplarni yopish eskirgan deb hisoblanadi. 1.2 yil dekabr oyida Java 1998 versiyasi chiqqandan beri u eskirgan. Bu eskirganiga 22 yil bo'ldi.

Lekin ishlab chiqarishdagi haqiqiy kodim hali ham iplarni o'ldiradi har kuni. Haqiqatan ham bu yaxshi deb o'ylaysizmi? Mutlaqo! Aytmoqchimanki, agar bugun kodni qayta yozsam, uni boshqacha amalga oshirgan bo'lardim. Ammo so'nggi yigirma yil ichida yuz minglab odamlarni xursand qilgan o'yinimning kodi juda uzoq vaqt osilgan iplarni yopish funktsiyasi bilan yozilgan va men hech qachon o'zgartirish kerak emas edi. Men o'z tizimimni hammadan ko'ra yaxshiroq bilaman, ishlab chiqarishda u bilan ishlashda 25 yillik tajribaga egaman va aniq ayta olaman: mening vaziyatimda ushbu aniq ishchi iplarini yopish butunlaydir. zararsiz. Ushbu kodni qayta yozish uchun vaqt va kuch sarflashning hojati yo'q va Oracle meni uni qayta yozishga majbur qilmagani uchun Larri Ellisonga (ehtimol) rahmat.

Oracle, ehtimol, platformalarni ham tushunadi. Kim biladi.

Dalillarni kanyondagi muzlik chiziqlari kabi eskirish to'lqinlari bilan to'ldirilgan asosiy Java API-larida topish mumkin. Java Swing kutubxonasida besh yoki olti xil klaviatura navigatsiya menejerlarini (KeyboardFocusManager) osongina topishingiz mumkin. Aslida eskirmagan Java API-ni topish qiyin. Ammo ular hali ham ishlaydi! O'ylaymanki, Java jamoasi, agar interfeys jiddiy xavfsizlik muammosi tug'dirsa, APIni haqiqatdan ham olib tashlaydi.

Gap shundaki, odamlar: Biz dasturiy ta'minot ishlab chiqaruvchilari juda bandmiz va dasturiy ta'minotning har bir sohasida biz raqobatdosh alternativlarga duch kelamiz. Har qanday vaqtda X tilidagi dasturchilar Y tilini mumkin bo'lgan almashtirish sifatida ko'rib chiqadilar. Oh, menga ishonmaysizmi? Uni Swift deb nomlashni xohlaysizmi? Hamma Swiftga ko'chib o'tmoqda va hech kim uni tark etmayapti, shunday emasmi? Voy, siz qanchalik kam bilasiz. Kompaniyalar ikki tomonlama mobil ishlab chiqish guruhlari (iOS va Android) xarajatlarini hisoblamoqda - va ular Flutter va React Native kabi kulgili nomlarga ega bo'lgan o'zaro platformalarni ishlab chiqish tizimlari haqiqatda ishlayotganini va ularning hajmini kamaytirish uchun ishlatilishi mumkinligini tushuna boshladilar. mobil guruhlar ikki marta yoki aksincha, ularni ikki baravar samarali qiladi. Haqiqiy pul xavf ostida. Ha, murosalar bor, lekin boshqa tomondan, pul.

Faraz qilaylik, Apple ahmoqona Gvido van Rossumdan maslahat oldi va Swift 6.0 Swift 5.0 bilan orqaga mos kelmaydi, xuddi Python 3 Python 2 bilan mos kelmaydi deb e'lon qildi.

Men bu voqeani taxminan o'n yil oldin aytgan bo'lsam kerak, lekin taxminan o'n besh yil oldin men Gvido bilan O'Reylining Fu lageriga bordim, Pol Grexem va bir nechta katta kadrlar bilan chodirda o'tirdim. Biz jazirama issiqda Larri Peyjning shaxsiy vertolyotida uchishini kutib o‘tirdik, Gvido esa “Python 3000”da uchib o‘tirdi, uni har bir kishi u yerga ko‘chib o‘tishi uchun qancha yil kerak bo‘lishini inobatga olgan. Biz undan nima uchun moslikni buzayotganini so'rardik va u: "Unicode" deb javob berdi. Va biz so'radik, agar kodimizni qayta yozishimiz kerak bo'lsa, yana qanday afzalliklarni ko'ramiz? Va u "Yoooooooooooooouuuuuniiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii" deb javob berdi.

Agar siz Google Cloud Platform SDK (“gcloud”) ni o‘rnatsangiz, quyidagi bildirishnoma olasiz:

Hurmatli oluvchi,

Sizga shuni eslatmoqchimizki, Python 2-ni qo'llab-quvvatlash bekor qilindi, shuning uchun sizni behuda

… va hokazo. Hayot doirasi.

Lekin gap shundaki, har bir ishlab chiquvchi tanlovga ega. Va agar siz ularni tez-tez kodni qayta yozishga majbur qilsangiz, ular bu haqda o'ylashlari mumkin boshqa variantlari. Qanchalik xohlasangiz ham, ular sizning garovingiz emas. Ular sizning mehmonlaringiz. Python hali ham juda mashhur dasturlash tili bo'lib qolmoqda, ammo jin ursin, Python 3(000) o'z hamjamiyatlarida va o'z jamoalari foydalanuvchilari orasida shunday tartibsizliklarni keltirib chiqardiki, oqibatlari o'n besh yil davomida tozalanmagan.

Ushbu orqaga mos kelmasligi sababli Go (yoki Ruby yoki boshqa alternativa) da qancha Python dasturlari qayta yozilgan? Python-dan boshqa narsada qancha yangi dasturiy ta'minot yozilgan bo'lsa-da bo'lishi mumkin Pythonda yozilgan, agar Guido butun qishloqni yoqib yubormagan bo'lsa? Buni aytish qiyin, lekin Python aniq zarar ko'rgan. Bu juda katta tartibsizlik va hamma yutqazadi.

Aytaylik, Apple Guidodan maslahat oladi va moslikni buzadi. Sizningcha, keyin nima bo'ladi? Xo'sh, ehtimol, ishlab chiquvchilarning 80-90% iloji bo'lsa, o'z dasturlarini qayta yozadilar. Boshqacha qilib aytganda, foydalanuvchi bazasining 10-20% avtomatik ravishda Flutter kabi raqobatdosh tilga o'tadi.

Buni bir necha marta bajaring va foydalanuvchi bazasining yarmini yo'qotasiz. Xuddi sportda bo'lgani kabi, dasturlash dunyosida ham hozirgi shakl ham muhimdir. hamma narsa. Besh yil ichida foydalanuvchilarining yarmini yo'qotgan har bir kishi katta yog'ni yo'qotuvchi hisoblanadi. Siz platformalar dunyosida moda bo'lishingiz kerak. Ammo bu erda eski versiyalarni qo'llab-quvvatlamaslik sizni vaqt o'tishi bilan buzadi. Chunki har safar ba'zi ishlab chiquvchilardan xalos bo'lganingizda, siz (a) shartnomani buzganingiz uchun sizga g'azablangani uchun ularni abadiy yo'qotasiz va (b) ularni raqobatchilaringizga berasiz.

Ajablanarlisi shundaki, men Grok-ni yaratganimda Google-ning orqaga qarab moslashuvni e'tiborsiz qoldiradigan prima donna bo'lishiga yordam berdim, bu kodni o'zi avtomatlashtirish va jihozlashni osonlashtiradigan manba kodini tahlil qilish va tushunish tizimini - IDE-ga o'xshash, ammo bu erda bulut xizmati saqlaydi. katta ma'lumotlar omborida Google manba kodining barcha milliardlab satrlarining moddiylashtirilgan tasvirlari.

Grok Google xodimlariga butun kod bazasida (so'zma-so'z Google bo'ylab) avtomatlashtirilgan qayta ishlashni amalga oshirish uchun kuchli asosni taqdim etdi. Tizim nafaqat sizning yuqori oqimdagi bog'liqliklaringizni (siz bog'liq), balki hisoblab chiqadi tushayotgan (bu sizga bog'liq), shuning uchun API-larni o'zgartirganingizda, siz hamma narsani buzayotganingizni bilasiz! Shunday qilib, siz o'zgartirishlar kiritganingizda, API-ning har bir iste'molchisi yangi versiyaga yangilanganligini tekshirishingiz mumkin va aslida ular yozgan Rosie vositasi yordamida jarayonni to'liq avtomatlashtirishingiz mumkin.

Bu Google kodlar bazasini ichki jihatdan deyarli g‘ayritabiiy darajada toza bo‘lishiga imkon beradi, chunki ularda bu robot xizmatchilar uy atrofida aylanib yurishadi va agar ular SomeDespicablyLongFunctionName nomini SomeDespicablyLongMethodName deb o‘zgartirsalar, avtomatik ravishda hamma narsani tozalashadi, chunki kimdir bu xunuk nevara deb qaror qilgan va uning uyquga ketishi kerak.

Ochig'ini aytganda, u Google uchun juda yaxshi ishlaydi ... ichki. Aytmoqchimanki, ha, Googledagi Go hamjamiyati uzluksiz refaktoring odatlari tufayli Googledagi Java hamjamiyatiga yaxshi kulib turadi. Agar biror narsani N marta qayta ishga tushirsangiz, demak, siz uni nafaqat N-1 marta buzgansiz, balki bir muncha vaqt o'tgach, siz uni N-urinishda ham buzganingiz aniq bo'ladi. Ammo, umuman olganda, ular bu shov-shuvlardan ustun turishadi va kodni "toza" saqlashadi.

Muammo ular o'zlarining bulutli mijozlariga va boshqa API foydalanuvchilariga bunday munosabatni o'rnatishga harakat qilganlarida boshlanadi.

Men sizni Emacs, Android va Java bilan bir oz tanishtirdim; keling, eng so'nggi muvaffaqiyatli uzoq muddatli platformani ko'rib chiqaylik: Internetning o'zi. Tasavvur qila olasizmi, biz miltillovchi teglardan foydalanganimizda 1995 yildan beri HTTP qancha iteratsiyadan o'tgan? va veb-sahifalardagi "Qurilish bosqichida" piktogrammalari.

Lekin u hali ham ishlaydi! Va bu sahifalar hali ham ishlamoqda! Ha, bolalar, brauzerlar orqaga qarab muvofiqlik bo'yicha jahon chempionlari. Chrome - bu nodir Google platformasining yana bir misoli bo'lib, uning boshi to'g'ri o'rnatilgan va siz taxmin qilganingizdek, Chrome boshqa Google kompaniyasidan alohida sinov muhitida ishlaydigan kompaniya sifatida samarali ishlaydi.

Men operatsion tizimni ishlab chiquvchilardagi do'stlarimizga ham minnatdorchilik bildirmoqchiman: Windows, Linux, NOT APPLE FUCK YOU APPLE, FreeBSD va boshqalar, o'zlarining muvaffaqiyatli platformalarida orqaga qarab muvofiqlik bo'yicha shunday ajoyib ishni bajarganliklari uchun (Apple eng yaxshi holda C ni oladi). salbiy tomoni shundaki, ular har doim hech qanday sababsiz hamma narsani buzadi, lekin qandaydir tarzda hamjamiyat uni har bir nashrda aylanib chiqadi va OS X konteynerlari hali ham butunlay eskirgan emas...).

Lekin kuting, deysiz. Biz olmalarni apelsinlar bilan taqqoslamayapmizmi - Emacs/JDK/Android/Chrome kabi bitta mashinadagi mustaqil dasturiy ta'minot tizimlari va bulutli xizmatlar kabi ko'p serverli tizimlar va API'lar?

Kecha men bu haqda tvit yozdim, lekin Larri Uoll uslubida (Perl dasturlash tilini yaratuvchisi - taxminan boshiga) "so'rlash/qoidalar" tamoyili bo'yicha men so'zni qidirdim. bekor qilindi Google va Amazon dasturchi saytlarida. Va AWS bor bo'lsa ham yuzlab GCP ga qaraganda ko'proq xizmat takliflari, Google ishlab chiquvchi hujjatlari eskirish haqida etti marta tez-tez eslatib o'tadi.

Agar Google'da kimdir buni o'qiyotgan bo'lsa, ular aslida hamma narsani to'g'ri bajarayotganliklarini ko'rsatadigan Donald Trump uslubidagi jadvallarni olib tashlashga tayyor bo'lishi mumkin va men "eskirgan so'z bilan eskirgan so'zni eslatish soni" kabi adolatsiz taqqoslashlarga yo'l qo'ymasligim kerak. xizmatlar soni" "

Ammo buncha yillardan keyin ham Google Cloud 3-raqamli xizmat bo‘lib qolmoqda (men hech qachon 2-o‘rin bo‘lishga muvaffaqiyatsiz urinish haqida maqola yozmaganman), lekin agar insayderlarga ishonadigan bo‘lsak, ular tez orada bu xizmatdan voz kechishi mumkin degan xavotirlar bor. № 4.

Mening dissertatsiyamni "isbotlash" uchun hech qanday jiddiy dalillarim yo'q. Menda bor narsa - men ishlab chiquvchi sifatida 30 yil davomida to'plagan rangli misollar. Men bu muammoning chuqur falsafiy mohiyatini aytib o‘tdim; u qaysidir ma'noda ishlab chiquvchilar hamjamiyatlarida siyosiylashtirilgan. Ba'zilar bunga ishonishadi ijodkorlar platformalar moslik haqida qayg'urishi kerak, boshqalar esa bu tashvishli deb o'ylashadi foydalanuvchilar (ishlab chiquvchilarning o'zlari). Ikkitadan bittasi. Darhaqiqat, umumiy muammolarning harajatlarini kim ko'tarishi kerakligini hal qilish siyosiy masala emasmi?

Demak, bu siyosat. Va, ehtimol, mening nutqimga g'azablangan javoblar bo'ladi.

qanday foydalanuvchi Google Cloud Platform va ikki yil davomida AWS foydalanuvchisi sifatida (Grab uchun ishlayotganda), ustuvorliklarga kelganda Amazon va Google falsafalari o'rtasida katta farq borligini ayta olaman. Men AWS-da faol ishlamayman, shuning uchun ular eski API-larni qanchalik tez-tez olib tashlashlarini yaxshi bilmayman. Ammo bu Googledagi kabi tez-tez sodir bo'lmaydi, degan shubha bor. Va men chinakam ishonamanki, GCPdagi doimiy bahs-munozaralar va umidsizliklar manbai platformaning rivojlanishini to'xtatuvchi eng katta omillardan biridir.

Men endi qo'llab-quvvatlanmaydigan GCP tizimlarining aniq misollarini nomlamaganimni bilaman. Aytishim mumkinki, men ishlatgan deyarli hamma narsa, tarmoqlardan tortib (eng qadimgi VPCgacha) saqlash (Cloud SQL v1-v2), Firebase (hozir butunlay boshqa API bilan Firestore), App Engine (hatto boshlamaylik) , bulut so‘nggi nuqtalari Cloud Endpoint va gacha... Bilmayman - bularning barchasi mutlaqo sizni kodni maksimal 2-3 yildan keyin qayta yozishga majbur qildi va ular hech qachon siz uchun migratsiyani avtomatlashtirmadi va ko'pincha hujjatlashtirilgan migratsiya yo'li umuman yo'q edi. Go'yo shunday bo'lishi kerak edi.

Va har safar AWS-ga qaraganimda, nega men hali ham GCP-da ekanligimni so'rayman. Ular mijozlarga muhtoj emasligi aniq. Ular kerak xaridorlar. Farqni tushunyapsizmi? Keling, tushuntiraman.

Google Cloud mavjud bozor, odamlar o'zlarining dasturiy echimlarini taklif qiladigan joyda va bo'sh restoran effektiga yo'l qo'ymaslik uchun ular uni ba'zi takliflar bilan to'ldirishlari kerak edi, shuning uchun ular Bitnami deb nomlangan kompaniya bilan "bir marta bosish" bilan o'rnatiladigan bir qator echimlarni yaratish uchun shartnoma tuzdilar. Men buni o'zim "echimlar" deb yozaman, chunki bu la'nat narsani hal qilmaydi. Ular shunchaki belgilash katakchalari, marketing to'ldiruvchisi sifatida mavjud va Google hech qachon biron bir vosita ishlayaptimi yoki yo'qligiga ahamiyat bermagan. Men haydovchi o'rindig'ida bo'lgan mahsulot menejerlarini bilaman va sizni ishontirib aytamanki, bu odamlar bunga ahamiyat bermaydilar.

Misol uchun, "bir marta bosish" bo'yicha tarqatish yechimini olaylik. Perkona. Men Google Cloud SQL shenaniganlaridan o'limgacha kasal edim, shuning uchun men o'zimning Percona klasterimni muqobil ravishda yaratishni boshladim. Va bu safar Google yaxshi ish qilganga o'xshardi, ular bir tugmani bosish bilan bir oz vaqt va kuchimni tejaydilar!

Xo'sh, ajoyib, ketaylik. Keling, havolaga o'tamiz va ushbu tugmani bosing. Barcha standart sozlamalarga rozi bo'lish va Google bulut loyihangizda klasterni o'rnatish uchun "Ha" ni tanlang. Haha, ishlamayapti. Bu axlatning hech biri ishlamaydi. Asbob hech qachon sinovdan o'tkazilmagan va u birinchi daqiqadanoq chiriy boshladi va agar "yechimlar" ning yarmidan ko'pi bir marta bosish orqali amalga oshirilsa, meni ajablantirmaydi (endi biz nima uchun tirnoqlarni tushunamiz) umuman olganda ishlamayapti. Bu mutlaqo umidsiz zulmat, bu erga kirmaslik yaxshiroqdir.

Lekin Google haq rag'batlantiradi siz ulardan foydalanasiz. Ular sizni xohlashadi sotib oldi. Ular uchun bu tranzaksiya. Ular hech narsani xohlamaydilar qo'llab -quvvatlash. Bu Google DNKsining bir qismi emas. Ha, muhandislar bir-birini qo'llab-quvvatlaydi, buni Bigtable bilan bo'lgan hikoyam tasdiqlaydi. Ammo oddiy odamlar uchun mahsulot va xizmatlarda ular har doim shafqatsiz edilar har qanday xizmatni yopish, bu millionlab foydalanuvchilarga ega bo'lsa ham rentabellik darajasiga mos kelmaydi.

Va bu GCP uchun haqiqiy qiyinchilik tug'diradi, chunki bu barcha bulut takliflari ortidagi DNKdir. Ular hech narsani qo'llab-quvvatlashga harakat qilishmaydi; Ma'lumki, ular uchinchi tomon dasturlarini joylashtirishni (boshqariladigan xizmat sifatida) rad etishadi qadar, AWS xuddi shunday qilmaguncha va uning atrofida muvaffaqiyatli biznes qurmaguncha va mijozlar tom ma'noda xuddi shunday talab qilmaguncha. Biroq, Google-ni biror narsani qo'llab-quvvatlash uchun biroz harakat qilish kerak.

Ushbu qo'llab-quvvatlash madaniyatining etishmasligi, "keling, uni yanada chiroyli qilish uchun sindiraylik" mentaliteti bilan birgalikda ishlab chiquvchilarni begonalashtiradi.

Va agar siz uzoq muddatli platforma qurmoqchi bo'lsangiz, bu yaxshi narsa emas.

Google, uyg'on, la'nat. Hozir 2020-yil. Siz hali ham yo'qotyapsiz. Oynaga diqqat bilan qarash va bulutli biznesda qolishni xohlaysizmi, degan savolga javob berish vaqti keldi.

Agar qolishni istasangiz, unda hamma narsani buzishni to'xtating. Bolalar, siz boysiz. Biz ishlab chiquvchilar buni qilmaymiz. Shunday qilib, kim moslik yukini yelkaga olishi haqida gap ketganda, siz buni o'zingizga olishingiz kerak. Biz uchun emas.

Chunki yana kamida uchta juda yaxshi bulut bor. Ishora qiladilar.

Va endi men barcha buzilgan tizimlarimni tuzatishga harakat qilaman. Eh.

Keyingi safargacha!

PS Ushbu maqoladagi ba'zi muhokamalarni o'qib chiqqandan so'ng yangilang (munozaralar ajoyib, btw). Firebase-ni qo'llab-quvvatlash to'xtatilmagan va men biladigan rejalar yo'q. Biroq, ularda Java mijozining App Engine-da to'xtab qolishiga olib keladigan yomon oqim xatosi bor. Ularning muhandislaridan biri menga bu muammoni hal qilishda yordam berdi, Googleda ishlaganimda, lekin ular hech qachon xatoni tuzatmaganlar, shuning uchun menda har kuni GAE ilovasini qayta ishga tushirishga to'g'ri keladigan yomon echim bor. Shunday qilib, to'rt yil o'tdi! Endi ularda Firestore bor. Unga o'tish uchun ko'p mehnat talab etiladi, chunki u butunlay boshqa tizim va Firebase xatosi hech qachon tuzatib bo'lmaydi. Qanday xulosa chiqarish mumkin? Siz yordam olishingiz mumkin agar siz kompaniyada ishlasangiz. Men GAE-da Firebase-dan yagona foydalanayotganman, chunki men 100% mahalliy ilovada 100 dan kam kalitni kiritaman va u maʼlum xatolik tufayli har ikki kunda ishlashni toʻxtatadi. O'zingizning xavf-xataringiz bilan ishlatishdan boshqa nima deyishim mumkin. Men Redis-ga o'tyapman.

Bundan tashqari, ba'zi tajribali AWS foydalanuvchilari AWS odatda hech qachon biron-bir xizmatlarni qo'llab-quvvatlashni to'xtatmasligini aytishganini ko'rganman va SimpleDB ajoyib misoldir. Mening taxminlarim, AWS Google kabi qo'llab-quvvatlash kasalligining oxiriga ega emas.

Bundan tashqari, men 20 kun oldin Google App Engine jamoasi muhim Go kutubxonasi hostingini buzganini va asosiy Go dasturchilaridan birining GAE ilovasini oʻchirib qoʻyganini payqadim. Bu haqiqatan ham ahmoq edi.

Nihoyat, men Google xodimlarining bu masalani muhokama qilayotganini va umuman men bilan rozi ekanliklarini eshitdim (sizlarni yaxshi ko'raman!). Ammo ular muammoni hal qilib bo'lmaydi deb o'ylashadi, chunki Google madaniyati hech qachon to'g'ri rag'batlantiruvchi tuzilmaga ega emas edi. Grab’da ishlayotganimda AWS muhandislari bilan ishlaganim ajoyib tajribamni muhokama qilish uchun biroz vaqt ajratsam yaxshi bo‘lardi deb o‘yladim. Bir kun kelib, umid qilamanki!

Ha, 2005 yilda ular 43-binodagi ulkan bufetda har xil turdagi akula go'shti bor edi va mening eng yaxshi ko'rganim bolg'achali akula go'shti edi. Biroq, 2006 yilga kelib, Larri va Sergey barcha zararli gazaklardan xalos bo'lishdi. Shunday qilib, 2007 yilda Bigtable hikoyasi paytida, albatta, hech qanday akula yo'q edi va men sizni aldadim.

To'rt yil oldin bulutli Bigtable-ga qaraganimda (berish yoki olish), xarajat shu erda edi. Endi bu biroz pasayib ketganga o'xshaydi, lekin bo'sh ma'lumotlar ombori uchun bu hali ham dahshatli, ayniqsa mening birinchi hikoyam bo'sh katta jadval ularning miqyosida qanchalik ahamiyatsiz ekanligini ko'rsatganligi sababli.

Apple hamjamiyatini xafa qilganim va Microsoft va boshqalar haqida hech qanday yaxshi gap aytmaganim uchun uzr. Siz yaxshisiz, men ushbu maqola yaratgan barcha muhokamalarni juda qadrlayman! Ammo ba'zida munozarani boshlash uchun siz biroz to'lqin qilishingiz kerak, bilasizmi?

O'qiganingiz uchun rahmat.

Yangilanish 2, 19.08.2020/XNUMX/XNUMX. Chiziq APIni to'g'ri yangilaydi!

Yangilanish 3, 31.08.2020/2/2. Men bilan Cloud Marketplace’dagi Google muhandisi bog‘landi, u mening eski do‘stim bo‘lib chiqdi. U nima uchun CXNUMXD ishlamayotganini aniqlamoqchi edi va biz oxir-oqibat men o'z tarmog'imni yillar oldin qurganim va CXNUMXD eski tarmoqlarda ishlamayotganligi, chunki ularning shablonlarida pastki tarmoq parametri yo'qligini tushundik. Potentsial GCP foydalanuvchilari Google’da yetarlicha muhandislarni bilishlariga ishonch hosil qilishlari ma’qul deb o‘ylayman...

Manba: www.habr.com