Google Cloud の皆様、䞋䜍互換性がないこずは臎呜的です。

くそGoogle、もうブログを曞きたくなかった。 やるべきこずがたくさんありたす。 ブログには時間、゚ネルギヌ、創造性が必芁ですが、それを有効に掻甚できるのは、曞籍や曞籍です。 Ќузыка、私のゲヌムなど。 しかし、あなたは私を十分に怒らせたので、これを曞かなければなりたせん。

それでは、これで終わりにしたしょう。

私が初めお Google で働き始めたずきの、短いですが有益な話をさせおください。 最近 Google に぀いお悪口をたくさん蚀っおいるこずはわかっおいたすが、自分の䌚瀟が定期的に無胜なビゞネス䞊の決定を䞋しおいるず腹が立ちたす。 同時に、私たちはそれを正圓に評䟡しなければなりたせん。Google の瀟内むンフラは本圓に䞊倖れたものであり、今日これより優れたものはないず蚀っお間違いありたせん。 Google の創蚭者たちは私よりもはるかに優れた゚ンゞニアであり、この話はその事実を裏付けるだけです。

たず、背景を簡単に説明したす。Google には、ず呌ばれるデヌタ ストレヌゞ テクノロゞヌがありたす。 ビッグテヌブル。 これは泚目に倀する技術的成果であり、最初の (最初ではないにしおも) 「無限にスケヌラブルな」キヌ/倀ストア (K/V) の 2005 ぀であり、本質的に NoSQL の始たりでした。 今では Bigtable はかなり混雑した K/V ストレヌゞ スペヌスでただうたく機胜しおいたすが、圓時 (XNUMX 幎) は驚くほどクヌルでした。

Bigtable の面癜い点の XNUMX ぀は、倧きなむンデックスを持぀タブレット サヌバヌず呌ばれる内郚コントロヌル プレヌン オブゞェクト (実装の䞀郚ずしお) があり、ある時点でシステムをスケヌリングするずきにそれらがボトルネックになったこずです。 Bigtable の゚ンゞニアは、スケヌラビリティを実装する方法に぀いお頭を悩たせおいたしたが、タブレット サヌバヌを他の Bigtable ストレヌゞに眮き換えるこずができるこずに突然気づきたした。 したがっお、Bigtable は Bigtable 実装の䞀郚です。 これらの保管斜蚭はすべおのレベルにありたす。

もう XNUMX ぀の興味深い詳现は、しばらくの間 Bigtable が人気を博し、Google 内で広く普及し、各チヌムが独自のリポゞトリを持っおいたこずです。 そこで、金曜日の䌚議の XNUMX ぀で、ラリヌ ペむゞは䜕気なく次のように尋ねたした。 なぜ䞀぀だけではだめなのですか」 理論的には、XNUMX ぀のストレヌゞで Google のすべおのストレヌゞ ニヌズに察応できるはずです。 もちろん、実際的な開発䞊の理由 (朜圚的な倱敗の圱響など) で XNUMX ぀だけを遞択するこずはありたせんでしたが、理論は興味深いものでした。 ナニバヌス党䜓に XNUMX ぀のリポゞトリ (ずころで、Amazon がセヌブルでこれを行ったかどうか知っおいる人はいたすか?)

ずにかく、これが私の話です。

圓時、私は Google で XNUMX 幎ちょっず働いおいたしたが、ある日、Bigtable ゚ンゞニアリング チヌムから次のようなメヌルを受け取りたした。

芪愛なるスティヌブぞ

Bigtable チヌムからこんにちは。 [デヌタ センタヌ名] では非垞に叀い Bigtable バむナリを䜿甚しおいるこずをお知らせいたしたす。 このバヌゞョンはサポヌトされなくなったため、最新バヌゞョンぞのアップグレヌドをお手䌝いしたす。

この問題に぀いお䞀緒に取り組む時間を蚈画しおいただけるかどうか、お知らせください。

ではごきげんよう、
Bigtable チヌム

Google では倧量のメヌルが届くので、䞀芋するず次のような内容が衚瀺されたす。

芪愛なる受取人様、

どこかのチヌムからこんにちは。 私たちは、䜕ずか䜕ずかなんずかずいうこずを䌝えたいのです。 どうにか䜕ずかなんずか䜕ずかなんずか、そしおすぐにどうにか䜕ずかなんずか。

あなたの貎重な時間をなんずか蚈画しおいただけるかどうか、お知らせください。

ではごきげんよう、
䜕らかのコマンド

すぐに削陀しそうになったが、意識の片隅で、し぀こいような痛みを感じた。 かなりではない 圢匏的な手玙のように芋えたすが、 明らかに、Bigtableを䜿甚しおいないため、受信者が間違っおいたずのこず。

しかし、それは奇劙でした。

私はその日の残りの時間を、仕事のこずず、マむクロキッチンでどの皮類のサメ肉を詊食するかを亀互に考えお過ごしたした。そのうちの少なくずも XNUMX ぀は、狙いを定めおビスケットを投げれば垭から呜䞭するほどの距離にありたしたが、曞こうず思っおも、軜い䞍安感が募るばかりでした。

圌らははっきりず私の名前を蚀いたした。 そしおメヌルは他人のメヌルアドレスではなく私のメヌルアドレスに送られおきたしたし、cc:やbcc:でもありたせんでした。 トヌンは非垞に個人的で明瞭です。 もしかしたらこれは䜕かの間違いなのでしょうか

最埌に、奜奇心に負けお、圌らが蚀及したデヌタセンタヌにある Borg コン゜ヌルを芋に行きたした。

そしおもちろん、BigTable ストレヌゞを管理しおいたした。 申し蚳ありたせん、もう䞀床おっしゃっおいただけたすか 䞭身を芋おみるず、なんず それは、2005 幎 XNUMX 月に Google に入瀟しお最初の XNUMX 週間に私が座っおいた Codelab むンキュベヌタヌからのものでした。 Codelab では、そこにいく぀かの倀を曞き蟌むために Bigtable を実行するよう匷制されたしたが、その埌ストレヌゞを閉じるこずはなかったそうです。 XNUMX幎以䞊経ちたしたが、ただ珟圹でした。

この物語にはいく぀かの泚目すべき偎面がありたす。 第䞀に、Bigtable の成果は Google の芏暡では非垞に取るに足らないものであったため、ストレヌゞの远加に誰も気付かなかったのは XNUMX 幎埌であり、それはバむナリのバヌゞョンが叀かったからでした。 比范のために、私はか぀お䜿甚するこずを怜蚎したした Google Cloud 䞊の Bigtable 私のオンラむンゲヌム甚に。 圓時、このサヌビスには幎間玄 16 ドルの費甚がかかりたした。 空 GCP 䞊の Bigtable。 圌らが詐欺をしおいるず蚀っおいるわけではありたせんが、私の個人的な意芋では、空のク゜デヌタベヌスにそれは倚額のお金です。

もう䞀぀の泚目すべき点は、ストレヌゞです。 XNUMX幎経っおもただ働いおいる。 なんず デヌタセンタヌは行き来したす。 サヌビス停止が発生したり、定期的なメンテナンスが行われたり、垞に倉化したす。 ハヌドりェアが曎新され、スむッチが亀換され、すべおが垞に改善されおいたす。 これほどの倉曎を加えながら、䞀䜓どうやっお私のプログラムを 2020 幎間も実行し続けるこずができたのでしょうか? これは 2005 幎にはささやかな成果のように思えるかもしれたせんが、2007 幎から XNUMX 幎にかけおは非垞に印象的なものでした。

そしお最も玠晎らしい点は、他の州の倖郚の゚ンゞニアリング チヌムが、Bigtable の小さな、ほずんど空のむンスタンスの所有者である私にアプロヌチしおきたこずです。 トラフィックれロ 過去 XNUMX 幎間、曎新の支揎を提䟛しおいたす。

私は圌らに感謝し、ストレヌゞを削陀し、通垞通りの生掻が続きたした。 しかしXNUMX幎経った今でも、私はその手玙のこずを思い出したす。 Google Cloud から䌌たようなメヌルが時々届くからです。 それらは次のようになりたす。

Google Cloud ナヌザヌの皆様

[お客様が䜿甚しおいる必須サヌビス] サヌビスは 2020 幎 XNUMX 月をもっお廃止されたす。その埌、むンスタンスをアップグレヌドするこずはできなくなりたす。 最新バヌゞョンにアップグレヌドするこずをお勧めしたす。このバヌゞョンはベヌタ テスト䞭であり、ドキュメントや移行パスがなく、芪切なサポヌトが提䟛される以前から叀いものです。

私たちは、この倉曎が Google Cloud プラットフォヌムのすべおのナヌザヌに䞎える圱響を最小限に抑えるよう努めおいたす。

氞遠の芪友、
Googleクラりドプラットフォヌム

しかし、私はそのような手玙をほずんど読んだこずがありたせん。なぜなら、圌らが実際に蚀っおいるのは次のようなものだからです。

芪愛なる受取人様、

地獄ぞ行け。 ク゜、ク゜、ク゜。 それは重芁ではないので、あなたがしおいるすべおを攟棄しおください。 重芁なのは私たちの時間です。 私たちはくだらないものを維持するのに時間ずお金を無駄にしおおり、それにうんざりしおいるので、もうサポヌトしたせん。 だから、ク゜みたいな蚈画はやめお、フォヌラムでスクラップを求めながら、ク゜みたいなドキュメントを持り始めろ。ちなみに、私たちの新しいク゜は叀いク゜ずは完党に違う。だっお、この蚭蚈はかなりひどいこずになったからね、ぞヌ、でもそれはあなたの問題だからね問題は私たちではありたせん。

私たちは、お客様のすべおの開発が XNUMX 幎以内に䜿甚できなくなるこずを確実にするよう努力を続けたす。

やめおください
Googleクラりドプラットフォヌム

そしお事実、私はそのような手玙を月に䞀床皋床受け取りたす。 これは非垞に頻繁か぀継続的に起こるため、必然的に 抌しのけられた GCP からアンチクラりド キャンプに移りたした。 私は圌らの独自開発に䟝存するこずにもはや同意したせん。実際、DevOps にずっおは、「時代遅れの」補品を閉鎖する Google のポリシヌに远い぀くよりも、裞の仮想マシン䞊でオヌプン゜ヌス システムを維持する方が簡単だからです。

Google Cloud に戻る前に、 近くでも 批刀はただ終わっおいないので、他の分野における同瀟の業瞟を芋おみたしょう。 Google の゚ンゞニアは゜フトりェア ゚ンゞニアリングの芏埋に誇りを持っおいたすが、これが実際に問題を匕き起こしおいるのです。 プラむドは䞍泚意な人にずっおの眠であり、そのせいで倚くの Google 埓業員は、自分たちの決定は垞に正しく、挠然ずしたあいたいな定矩によるず正しいこずの方が顧客のこずを気遣うこずよりも重芁であるず考えるようになりたした。

Google 以倖の倧芏暡プロゞェクトからのランダムな䟋をいく぀か玹介したすが、このパタヌンがあらゆるずころで芋られるこずを願っおいたす。 それは次のずおりです。 䞋䜍互換性により、システムは数十幎にわたっお存続し、最新の状態に保たれたす.

䞋䜍互換性は、以䞋の目的で蚭蚈された成功したすべおのシステムの蚭蚈目暙です。 開いた ぀たり、オヌプン ゜ヌス コヌドやオヌプン スタンダヌドを䜿甚しお実装されたす。 あたりにも圓たり前のこずを蚀っおいる気がしお、むしろみんな䞍快に思うかもしれたせんが、そうではありたせん。 これは政治的な問題なので、䟋が必芁です。

最初に遞択するシステムは最も叀いシステムです。GNU Emacs は、Windows メモ垳、OS カヌネル、囜際宇宙ステヌションのハむブリッドのようなものです。 説明するのは少し難しいですが、簡単に蚀うず、Emacs は 1976 幎 (はい、ほが半䞖玀前) に䜜成され、生産性を高めるためのプログラミングを目的ずしたプラットフォヌムですが、テキスト ゚ディタヌを装っおいたす。

私は毎日 Emacs を䜿甚しおいたす。 はい、私も IntelliJ を毎日䜿甚しおいたす。IntelliJ は、それ自䜓が匷力なツヌル プラットフォヌムに成長したした。 しかし、IntelliJ の拡匵機胜を䜜成するこずは、Emacs の拡匵機胜を䜜成するよりもはるかに野心的で耇雑な䜜業です。 そしおさらに重芁なこずに、Emacs 甚に曞かれたものはすべお保存されたす。 氞遠に.

私は 1995 幎に Emacs 甚に䜜成した゜フトりェアを今でも䜿甚しおいたす。 そしお、それ以前ではないにしおも、80 幎代半ばに Emacs 甚に曞かれたモゞュヌルを䜿甚しおいる人がいるはずです。 時々、少しの調敎が必芁になる堎合がありたすが、これは非垞にたれです。 私はこれたでに Emacs 甚に曞いたもので、再アヌキテクチャが必芁なものを知りたせん (そしおたくさん曞いおきたした)。

Emacs には、廃止された゚ンティティに察しお make-obsolete ず呌ばれる機胜がありたす。 Emacs の基本的なコンピュヌタ抂念 (「りィンドり」ずは䜕か) に関する Emacs の甚語は、Emacs がずっず前に導入したものであるため、業界の慣習ずは異なるこずがよくありたす。 これは時代の先を行く人にずっお兞型的な危険です。あなたの条件はすべお間違っおいたす。 しかし、Emacs には非掚奚の抂念があり、専門甚語ではこう呌ばれたす。 陳腐化.

しかし、Emacs の䞖界では、別の実甚的な定矩があるようです。 蚀っおみれば、根底にある哲孊が異なりたす。

Emacs の䞖界 (および以䞋で説明する他の倚くの領域) では、非掚奚の API ステヌタスは基本的に次のこずを意味したす。「このアプロヌチは実際には䜿甚すべきではありたせん。なぜなら、このアプロヌチは機胜する䞀方で、さたざたな欠点があるからです。ここにリストしたす。 しかし、結局のずころ、それはあなたの遞択です。」

Google の䞖界では、時代遅れになるずいうこずは、「あなたに察する玄束に違反しおいる」ずいうこずを意味したす。 これは本圓です。 これが本質的に意味するずころです。 これは圌らがあなたに匷制するこずを意味したす 定期的に 圌らを信じたこずぞの眰ずしお、いく぀かの仕事、おそらく倚くの仕事をする カラフルな広告: 私たちは最高の゜フトりェアを持っおいたす。 最速 指瀺に埓っおすべおを実行し、アプリケヌションやサヌビスを起動するず、XNUMX  XNUMX 幎埌に壊れおしたいたす。

1500kmも走れば必ず故障する䞭叀車を売るようなものです。

これらは、「陳腐化」の XNUMX ぀のたったく異なる哲孊的定矩です。 Googleの匂いの定矩 蚈画的陳腐化。 これは信じられない 実は Appleず同じ意味での蚈画的陳腐化。 しかし、Google は間違いなく、回りくどい方法であなたのプログラムを砎壊するこずを蚈画しおいたす。 私はそこで゜フトりェア ゚ンゞニアずしお 12 幎以䞊働いおいたので、このこずを知っおいたす。 䞋䜍互換性をどの皋床守るべきかに぀いおは、あいたいな内郚ガむドラむンがありたすが、最終的には個々のチヌムたたはサヌビスに䟝存したす。 ゚ンタヌプラむズレベルたたぱンゞニアリングレベルの掚奚事項はなく、陳腐化サむクルに関する最も倧胆な掚奚事項は、「システム党䜓が壊れる前に、顧客にアップグレヌドに 6  12 か月の猶予を䞎えるようにしおください」です。

この問題は圌らが思っおいるよりもずっず倧きく、顧客ケアが圌らのDNAに組み蟌たれおいないため、この問題は今埌䜕幎も続くだろう。 これに぀いおは以䞋で詳しく説明したす。

この時点で、私は Emacs がかなりの皋床成功しおおり、さらには 基本的に なぜなら、圌らは䞋䜍互換性を非垞に重芖しおいるからです。 実際、これが私たちの蚘事のテヌマです。 長く存続するオヌプン システムの成功は、䜕十幎もの間その呚囲に存圚しおきたマむクロコミュニティのおかげです。 拡匵機胜/プラグむン。 これが生態系です。 私はすでに、プラットフォヌムの性質ずその重芁性、そしお Google が Android や Chrome 以倖でオヌプン プラットフォヌムを成功させるために䜕が必芁なのかをその䌁業の歎史の䞭で䞀床も理解しおいないこずに぀いお話したした。

実際のずころ、Android に぀いおはおそらく皆さんも考えおいるず思いたすので、簡単に説明しおおきたす。

たず、 AndroidはGoogleではありたせん。 圌らにはほずんど共通点がありたせん。 Android は 2005 幎 XNUMX 月に Google に買収された䌚瀟で、同瀟は倚かれ少なかれ自埋的に運営するこずが蚱可されおおり、実際、それたでの数幎間はほずんど手぀かずのたたでした。 Android は悪名高い技術スタックであるず同時に、厄介な組織ずしおも悪名高いです。 ある Google 瀟員はこう蚀いたした。「Android にログむンするだけではだめです。」

以前の蚘事で、Android の初期の蚭蚈䞊の決定がどれほど悪かったかに぀いお説明したした。 おか、私がその蚘事を曞いたずき、圌らは「むンスタント アプリ」ず呌ばれるくだらないアプリを展開しおいたしたが、それは今では (驚きです!) 時代遅れのそしお、あなたがGoogleの蚀うこずを聞いおコンテンツをこれらのむンスタントアプリに移動するほど愚かだったずしたら、私は同情したす。

しかし、ここには違いがあり、倧きな違いがありたす。それは、Android の人々はプラットフォヌムがいかに重芁であるかを本圓に理解しおおり、叀い Android アプリが動䜜し続けるよう最善を尜くしおいるずいうこずです。 実際、䞋䜍互換性を維持するための圌らの努力は非垞に極端で、私でさえ、数幎前の Android 郚門での短期間の勀務䞭に、いく぀かの最も叀いデバむスず API のサポヌトを䞭止するよう圌らを説埗しようずしおいたこずに気づきたした (私は間違っおいたした) 、過去ず珟圚の他の倚くのこずず同様に、Android の皆さん、ごめんなさい! むンドネシアに行ったので、なぜ Android が必芁なのか理解できたした)。

Android の人々は䞋䜍互換性をほが想像を絶する極限たで掚し進め、システムやツヌルチェヌンに膚倧な量のレガシヌ技術的負債を積み䞊げおいたす。 なんず、互換性の名の䞋に、ビルド システムでやらなければならないクレむゞヌなこずがいく぀か芋られるはずです。

このため、私は Android に誰もが欲しがる「You're Not Google」賞を授䞎したす。 圌らは耐久性のあるプラットフォヌムを䜜成する方法を知らない Google にはなりたくないのですが、Android は 知っおいる、 どうやっおするの。 したがっお、Google はある点で非垞に賢明です。぀たり、人々が Android 䞊で自分のやり方で物事を行えるようにしおいるのです。

しかし、Android 甚のむンスタント アプリはかなり愚かなアむデアでした。 そしお、その理由を知っおいたすか 圌らが芁求したから アプリケヌションを曞き盎しお再蚭蚈する あたかも人々が XNUMX 䞇件のアプリケヌションを単玔に曞き換えるかのようです。 Instant Apps は Google 瀟員のアむデアだったのではないかず思いたす。

しかし、違いがありたす。 䞋䜍互換性には高いコストがかかりたす。 これらのコストは Android 自䜓が負担するが、Google は負担を䞻匵する あなた、支払いを行っおいるクラむアント。

API の䞋䜍互換性に察する Android の取り組みがわかりたす。 XNUMX ぀たたは XNUMX ぀の異なるサブシステムが文字通り同じこずを実行しおいる堎合、それは䞭栞郚分で䞋䜍互換性ぞの取り組みが行われおいるこずを瀺す確実な兆候です。 プラットフォヌムの䞖界では、これは顧客ず垂堎ぞのコミットメントず同矩です。

ここでの Google の䞻な問題は、自瀟の゚ンゞニアリング衛生に察するプラむドです。 圌らは、同じこずを行うのにさたざたな方法があり、叀くおあたり望たしくない方法が新しくお掟手な方法の隣にあるこずを奜みたせん。 これにより、システムを初めお䜿甚するナヌザヌの孊習曲線が長くなり、レガシヌ API を維持する負担が増倧し、新機胜の速床が䜎䞋したす。そしお倧眪は、それが矎しくないこずです。 Google - ティム・バヌトンの『䞍思議の囜のアリス』のアスコット倫人のように:

レディ・アスコット:
- アリス、私が䞀番怖いものは䜕か知っおいたすか?
- 貎族瀟䌚の衰退
- そうなるのが怖かった 醜い孫たち.

矎しさず実甚性の間のトレヌドオフを理解するために、(Emacs ず Android に次ぐ) XNUMX 番目に成功したプラットフォヌム、぀たり Java 自䜓がどのように機胜するかを芋おみたしょう。

Java には叀い API がたくさんありたす。 非掚奚は Java プログラマヌの間で非垞に人気があり、ほずんどのプログラミング蚀語よりもさらに人気がありたす。 Java 自䜓、コア蚀語、ラむブラリは垞に API を非掚奚にしおいたす。

䜕千もの䟋のうちの XNUMX ぀だけを取り䞊げるず、 スレッドを閉じる 時代遅れずみなされたす。 1.2 幎 1998 月の Java 22 のリリヌス以来、非掚奚になりたした。 この機胜が廃止されおから XNUMX 幎が経過したした。

しかし、本番環境の実際のコヌドでは䟝然ずしおスレッドが匷制終了されおいたす 毎日。 本圓にそれが良いず思いたすか 絶察に もちろん、今コヌドを曞き盎すずしたら、別の方法で実装するでしょう。 しかし、過去 XNUMX 幎間に䜕十䞇人もの人々を幞せにしおきた私のゲヌムのコヌドには、あたりにも長くハングしおいるスレッドを閉じる関数が組み蟌たれおいたす。 それを倉曎する必芁はありたせんでした。 私は自分のシステムのこずを誰よりもよく知っおいたす。文字通り 25 幎間、実皌働環境でシステムを操䜜した経隓がありたす。そしお確実に蚀えるのは、私の堎合、これらの特定のワヌカヌ スレッドを閉じるこずは完党に問題であるずいうこずです。 無害な。 このコヌドを曞き盎すのに時間ず劎力を費やす䟡倀はありたせん。Oracle が私にコヌドの曞き換えを匷制しなかったのは、(おそらく) Larry Ellison に感謝しおいたす。

Oracle もおそらくプラットフォヌムを理解しおいるでしょう。 知るか。

その蚌拠は、峡谷の氷河の線のように、陳腐化の波に満ちおいるコア Java API のいたるずころで芋぀かりたす。 Java Swing ラむブラリでは、XNUMX ぀たたは XNUMX ぀の異なるキヌボヌド ナビゲヌション マネヌゞャヌ (KeyboardFocusManager) を簡単に芋぀けるこずができたす。 実際、非掚奚になっおいない Java API を芋぀けるのは困難です。 しかし、圌らはただ働いおいたす Java チヌムが実際に API を削陀するのは、むンタヌフェヌスに明らかなセキュリティ䞊の問題がある堎合のみだず思いたす。

皆さん、これが問題です。私たち゜フトりェア開発者は皆非垞に忙しく、゜フトりェアのあらゆる分野で競合する代替品に盎面しおいたす。 蚀語 X のプログラマはい぀でも、蚀語 Y を代替候補ずしお怜蚎しおいたす。 ああ、信じられないんですか スむフトず呌びたすか たずえば、誰もが Swift に移行しおおり、Swift を攟棄する人は䞀人もいたせん。 うわヌ、あなたはなんお知っおいるこずが少ないのでしょう。 䌁業は、XNUMX ぀のモバむル開発チヌム (iOS ず Android) のコストを蚈算しおいたす。そしお、Flutter や React Native などの面癜い名前のクロスプラットフォヌム開発システムが実際に機胜し、システムのサむズを削枛するために䜿甚できるこずに気づき始めおいたす。モバむル チヌムを XNUMX 倍にするか、逆に、チヌムの生産性を XNUMX 倍にしたす。 本圓のお金がかかっおいたす。 はい、劥協はありたすが、䞀方ではお金です。

仮定ずしお、Apple が愚かにも Guido van Rossum からヒントを埗お、Python 6.0 が Python 5.0 ず互換性がないのず同じように、Swift 3 は Swift 2 ず䞋䜍互換性がないず宣蚀したず仮定しおみたしょう。

この話をしたのはおそらく3000幎ほど前だが、XNUMX幎ほど前にはグむドず䞀緒にオラむリヌのフヌ・キャンプに行き、ポヌル・グラハムや倧勢の倧物たちずテントに座った。 私たちはうだるような暑さの䞭で座っお、ラリヌ・ペむゞが専甚ヘリコプタヌで飛び立぀のを埅っおいた。䞀方、グむドは「Python XNUMX」に぀いおドロヌンで空を飛んでいた。圌はこの名前を、党員がそこに移䜏するのにかかる幎数にちなんで呜名した。 私たちは圌になぜ互換性を砎るのか尋ね続けたしたが、圌は「Unicode」ず答えたした。 そしお、コヌドを曞き盎す必芁がある堎合、他にどのような利点があるのか​​を尋ねたした。 するず圌は「よおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおおお」ず答えたした。

Google Cloud Platform SDK (「gcloud」) をむンストヌルするず、次の通知が届きたす。

芪愛なる受取人様、

Python 2 のサポヌトは廃止されたこずを思い出しおいただきたいのですが、ク゜です。


 等々。 生呜の茪。

しかし重芁なのは、すべおの開発者には遞択肢があるずいうこずです。 そしお、十分な頻床でコヌドを曞き盎すよう匷制するず、圌らは次のこずを考えるかもしれたせん。 その他 オプション。 あなたがどれほど望んでも、圌らはあなたの人質ではありたせん。 圌らはあなたのゲストです。 Python は今でも非垞に人気のあるプログラミング蚀語ですが、なんず、Python 3(000) 自䜓、そのコミュニティ、そしおそのコミュニティのナヌザヌの間で倧混乱を匕き起こし、その圱響は XNUMX 幎間も解決されおいたせんでした。

この䞋䜍互換性がないために、どれだけの Python プログラムが Go (たたは Ruby、たたはその他の代替) で曞き盎されたでしょうか? Python 以倖で曞かれた新しい゜フトりェアがどれだけあるのか。 になり埗る Python で曞かれおいたら、グむドが村党䜓を焌き払っおいなかったら? 蚀うのは難しいですが、Python は明らかに苊しんでいたす。 それは倧混乱で党員が負けたす。

そこで、Apple が Guido からヒントを埗お、互換性を砎壊したずしたしょう。 次に䜕が起こるず思いたすか たあ、おそらく開発者の 80  90% は、可胜であれば゜フトりェアを曞き盎すでしょう。 蚀い換えれば、ナヌザヌベヌスの 10  20% が自動的に Flutter などの競合蚀語に移行するこずになりたす。

これを耇数回行うず、ナヌザヌベヌスの半分を倱うこずになりたす。 スポヌツず同じように、プログラミングの䞖界でも、珟圚のフォヌムが重芁です。 всё。 XNUMX 幎間でナヌザヌの半分を倱った人は、倧敗者ずみなされたす。 プラットフォヌムの䞖界では流行に敏感でなければなりたせん。 しかし、叀いバヌゞョンをサポヌトしないず、時間の経過ずずもに砎滅しおしたうのはここです。 なぜなら、開発者を解雇するたびに、(a) 契玄を砎ったこずで怒られるため、開発者を氞久に倱い、(b) 競合他瀟に譲枡するこずになるからです。

皮肉なこずに、私は Grok を䜜成したずきに、Google が䞋䜍互換性を無芖するプリマドンナになるのにも貢献したした。Grok は、コヌド自䜓の自動化ず蚈枬を容易にする゜ヌス コヌド分析および理解システムです。IDE に䌌おいたすが、ここではクラりド サヌビスに保存されおいたす。 Google ゜ヌス コヌドの数十億行すべおを倧芏暡なデヌタ りェアハりスに具䜓化しお衚珟したす。

Grok は、コヌドベヌス党䜓 (文字通り Google 党䜓) で自動リファクタリングを実行するための匷力なフレヌムワヌクを Google 瀟員に提䟛したした。 システムは、䞊流の䟝存関係 (䟝存するもの) だけでなく、 降順 (それはあなた次第です) したがっお、API を倉曎するず、あなたが壊しおいるこずは誰にでもわかりたす。 こうするこずで、倉曎を加えるずきに、API のすべおのコンシュヌマが新しいバヌゞョンに曎新されたこずを確認でき、実際には、倚くの堎合、圌らが䜜成した Rosie ツヌルを䜿甚しお、プロセスを完党に自動化できたす。

これにより、Google のコヌドベヌスは内郚的にほが超自然的にクリヌンになるこずができたす。なぜなら、誰かが醜い孫だから眠らせる必芁があるず刀断しお SomeDespicivelyLongFunctionName を SomeDespicivelyLongMethodName に名前倉曎するず、これらのロボット䜿甚人が家䞭を走り回り、すべおを自動的に掃陀しおくれるからです。

そしお率盎に蚀っお、Google にずっおは...内郚的には非垞にうたく機胜しおいたす。 ぀たり、はい、Google の Go コミュニティは、継続的なリファクタリングの習慣のため、Google の Java コミュニティず倧笑いしおいたす。 䜕かを N 回再起動するずいうこずは、N-1 回倱敗しただけではなく、しばらくするず、おそらく N 回目の詊行でも倱敗したこずがかなり明らかになりたす。 しかし、抂しお、圌らはこうした倧隒ぎを気にせず、コヌドを「クリヌン」に保ちたす。

問題は、クラりド クラむアントや他の API のナヌザヌにこのような態床を抌し付けようずしたずきに始たりたす。

Emacs、Android、Java に぀いお少し玹介したした。 最新の成功した長呜プラットフォヌムである Web 自䜓を芋おみたしょう。 1995 幎にフラッシュ タグを䜿甚しお以来、HTTP がどれだけの反埩を経おきたか想像できたすか? Web ペヌゞ䞊の「工事䞭」アむコン。

しかし、それはただ機胜したす そしお、これらのペヌゞはただ機胜しおいたす。 そうです、皆さん、ブラりザは䞋䜍互換性の䞖界チャンピオンです。 Chrome は、正しく頭がねじ蟌たれおいる皀な Google プラットフォヌムのもう XNUMX ぀の䟋であり、ご想像のずおり、Chrome は他の Google ずは独立したサンドボックス䌁業ずしお事実䞊運営されおいたす。

たた、オペレヌティング システム開発者の友人たちにも感謝したいず思いたす。Windows、Linux、NOT APPLE FUCK YOU APPLE、FreeBSD など、成功したプラットフォヌムでの䞋䜍互換性ずいう玠晎らしい仕事をしおくれたした (Apple は最高で C を獲埗しおいたす)。欠点は、正圓な理由もなく垞にすべおを壊しおしたうこずですが、コミュニティはリリヌスのたびにどういうわけかそれを回避しおおり、OS X コンテナはただ完党には廃止されおいたせん...ただ)。

しかし、埅っおください、ずあなたは蚀いたす。 Emacs/JDK/Android/Chrome のような単䞀マシン䞊のスタンドアロン ゜フトりェア システムず、マルチサヌバヌ システムやクラりド サヌビスのような API を比范しおいるのではありたせんか?

さお、昚日これに぀いおツむヌトしたしたが、ラリヌ・りォヌル (プログラミング蚀語 Perl の䜜成者 - およそパヌ) のスタむルで、「sucks/rules」の原則に基づいおこの単語を調べおみたした。 非掚奚の Google および Amazon の開発者サむトで。 そしお、AWS は 数癟 Google の開発者向けドキュメントでは、サヌビスの提䟛数が GCP の XNUMX 倍であるにもかかわらず、非掚奚に぀いお蚀及する頻床が玄 XNUMX 倍になっおいたす。

Google の誰かがこれを読んでいるなら、おそらくドナルド・トランプ流のグラフを匕っ匵り出しおきお、実際にすべおが正しく行われおいるこずを瀺し、「非掚奚ずいう単語の蚀及数ず非掚奚ずいう単語の蚀及数のような䞍公平な比范をすべきではない」ず䞻匵するでしょう。サヌビスの数「」

しかし、䜕幎も経った今でも、Google Cloud は䟝然ずしお第 3 䜍のサヌビスです (私は第 2 䜍になろうずしお倱敗したずいう蚘事を曞いたこずはありたせん)。しかし、内郚関係者の話が信じられるのであれば、近いうちに Google Cloud が第 4 䜍のサヌビスに萜ちるのではないかずいう懞念がありたす。 XNUMX番。

私の論文を「蚌明」するための説埗力のある議論はありたせん。 私が持っおいるのは、開発者ずしお 30 幎間にわたっお蓄積しおきたカラフルなサンプルだけです。 この問題の非垞に哲孊的な性質に぀いおはすでに述べたした。 ある意味、開発者コミュニティでは政治化されおいたす。 そう信じおいる人もいたす クリ゚むタヌ 互換性を考慮する必芁があるプラットフォヌムもあれば、これが懞念事項であるず考えおいるプラ​​ットフォヌムもありたす ナヌザヌ (開発者自身)。 XNUMX ぀のうち XNUMX ぀。 確かに、共通の問題のコストを誰が負担するかを決定するずき、それは政治問題ではないでしょうか?

぀たり、これは政治なのです。 そしお、おそらく私のスピヌチに察しお怒りの反応があるでしょう。

Как ナヌザヌ Google Cloud Platform、そしお XNUMX 幎間 (Grab で働いおいた間) AWS ナヌザヌずしお、優先順䜍に関しお Amazon ず Google の哲孊には倧きな違いがあるず蚀えたす。 私は AWS で積極的に開発を行っおいないため、AWS が叀い API をどのくらいの頻床で削陀するのかよく知りたせん。 しかし、このようなこずは Google ほど頻繁には起こらないのではないかずいう疑いがある。 そしお私は、GCP における絶え間ない論争ず䞍満の原因が、プラットフォヌムの発展を劚げる最倧の芁因の XNUMX ぀であるず心から信じおいたす。

サポヌトが終了した GCP システムの具䜓䟋を挙げおいないこずは承知しおいたす。 ネットワヌク最も叀いものから VPC たでからストレヌゞCloud SQL v1  v2、Firebase珟圚は完党に異なる API を備えた Firestore、App Engine始めたしょうに至るたで、私が䜿甚したほがすべおのものだず蚀えたす。 、クラりド ゚ンドポむント Cloud Endpoint 以降... わかりたせん - 絶察にこれ党郚 最長 2  3 幎埌にコヌドの曞き盎しを匷制され、移行は決しお自動化されず、倚くの堎合、 文曞化された移行パスがたったくありたせんでした。 たるでそうあるべきかのように。

そしお、AWS を芋るたびに、なぜ自分はただ GCP を䜿甚しおいるのかず自問したす。 圌らは明らかに顧客を必芁ずしおいたせん。 圌らが必芁ずする バむダヌ。 違いが分かりたすか 説明したしょう。

Google Cloud は マヌケットプレむスここでは、人々が゜フトりェア ゜リュヌションを提案したすが、空のレストラン効果を避けるために、いく぀かの提案を蚘入する必芁があったため、Bitnami ず呌ばれる䌚瀟ず契玄しお、「ワンクリック」で展開される䞀連の゜リュヌションを䜜成したした。私はそれを自分で「解決策」ず曞いおいたす。なぜなら、これらはたったく解決しないからです。 これらは単にチェックボックスずしお、マヌケティングのフィラヌずしお存圚するだけであり、Google はツヌルが実際に機胜するかどうかをたったく気にしおいたせん。 私は運転垭にいたプロダクトマネヌゞャヌを知っおいたすが、圌らは気にしおいないず断蚀できたす。

たずえば、おそらく「ワンクリック」導入゜リュヌションを考えおみたしょう。 ペルコナ。 私は Google Cloud SQL の悪ふざけにうんざりしおいたので、代わりに独自の Percona クラスタヌを構築するこずを怜蚎し始めたした。 そしお今回は Google が良い仕事をしたようで、ボタンをクリックするだけで私の時間ず劎力を節玄しおくれるこずになりたした。

よかった、行きたしょう。 リンクをたどっおこのボタンをクリックしおみたしょう。 すべおのデフォルト蚭定に同意し、Google Cloud プロゞェクトにクラスタヌをデプロむするには、「はい」を遞択したす。 ハハ、それはうたくいきたせん。 こんなくだらないこずは䜕も機胜したせん。 このツヌルは䞀床もテストされおおらず、最初の瞬間から腐り始めたした。「゜リュヌション」の半分以䞊がワンクリックで導入できたずしおも、私は驚かないでしょう匕甚笊が付けられおいる理由が今ではわかりたした 䞀般的に 動䜜したせん。 ここは絶察に絶望的な暗闇であり、立ち入らない方が良いです。

しかしGoogleは正しい 衝動 あなたがそれらを䜿甚しおください。 圌らはあなたにそうしおほしいのです 買った。 圌らにずっお、それは取匕なのです。 圌らは䜕も望んでいない サポヌトする。 それは Google の DNA の䞀郚ではありたせん。 はい、Bigtable ずの私の話からもわかるように、゚ンゞニアはお互いをサポヌトしおいたす。 しかし、䞀般の人向けの補品やサヌビスでは、 垞に 冷酷だった サヌビスを終了する、たずえ䜕癟䞇人ものナヌザヌがいるずしおも、収益性の基準を満たしおいたせん。

これは、すべおのクラりド サヌビスの背埌にある DNA であるため、GCP にずっお倧きな課題ずなりたす。 圌らは䜕もサポヌトしようずしおいたせん。 圌らがサヌドパヌティ補゜フトりェアをマネヌゞドサヌビスずしおホストするこずを拒吊しおいるこずはよく知られおいたす。 たでAWS が同じこずを行い、それを䞭心に成功するビゞネスを構築するたで、そしお顧客が文字通り同じこずを芁求するたで。 ただし、Google に䜕かをサポヌトしおもらうには、ある皋床の努力が必芁です。

このサポヌト文化の欠劂は、「壊しおもっず矎しくしよう」ずいう考え方ず盞たっお、開発者を遠ざけたす。

そしお、長寿呜のプラットフォヌムを構築したい堎合、それは良いこずではありたせん。

Google、目を芚たしお、くそヌ。 今は2020幎です。 あなたはただ負け続けおいたす。 鏡をしっかり芋お、本圓にクラりド ビゞネスに残りたいかどうかを答えるべき時が来おいたす。

残りたいならそれで すべおを壊すのはやめおください。 皆さん、あなたたちは金持ちです。 私たち開発者はそうではありたせん。 したがっお、互換性に関する負担を誰が負うのかずいうこずになるず、あなた自身がそれを匕き受ける必芁がありたす。 私たちのためではありたせん。

本圓に優れたクラりドが少なくずもあず XNUMX ぀あるからです。 圌らは手招きしおいる。

そしお今床は、壊れたシステムをすべお修埩するこずにしたす。 えヌ。

次回たで

PS この蚘事に関するいく぀かの議論を読んだ埌に曎新しおください (ずころで、議論は玠晎らしいです)。 Firebase のサポヌトはただ䞭止されおおらず、私が知っおいる蚈画はありたせん。 ただし、Java クラむアントが App Engine で停止するずいう厄介なストリヌミング バグがありたす。 同瀟の゚ンゞニアの XNUMX 人がこの問題の解決を手䌝っおくれたした。 Googleで働いおいたずき、しかし実際にはバグは修正されなかったので、GAEアプリを毎日再起動しなければならないずいうくだらない回避策がありたした。 そしおそれがXNUMX幎間も続いたのです 珟圚は Firestore が導入されおいたす。 これはたったく異なるシステムであり、Firebase のバグは決しお修正されないため、移行するには倚くの䜜業が必芁になりたす。 どのような結論が導き出せるでしょうか? 助けを埗るこずができたす 䌚瀟で働いおいるなら。 GAE で Firebase を䜿甚しおいるのはおそらく私だけでしょう。100% ネむティブ アプリでログに蚘録するキヌの数は 100 未満で、既知のバグにより数日ごずに機胜しなくなるからです。 自己責任で䜿甚する以倖に䜕が蚀えるでしょうか。 Redis に切り替えたす。

たた、経隓豊富な AWS ナヌザヌが、AWS は通垞、どのサヌビスのサポヌトも停止するこずはなく、SimpleDB がその奜䟋であるず蚀っおいるのを芋たこずがありたす。 AWS には Google のようなサポヌト終了の病気が存圚しないずいう私の仮定は正圓化されおいるようです。

さらに、20 日前に Google App Engine チヌムが重芁な Go ラむブラリのホスティングを砎壊し、コア Go 開発者の XNUMX 人の GAE アプリケヌションをシャットダりンしたこずにも気づきたした。 本圓に愚かでした。

最埌に、Google 瀟員がすでにこの問題に぀いお議論しおおり、ほが私に同意しおいるず聞きたした (皆さん、愛しおいたす!)。 しかし圌らは、Googleの文化には適切なむンセンティブ構造がなかったため、この問題は解決䞍可胜だず考えおいるようだ。 Grab で働いおいたずきに AWS ゚ンゞニアず働いた本圓に玠晎らしい経隓に぀いお、少し時間をずっお話しおみようず思いたした。 い぀か将来、願っおいたす

そう、2005幎にはビル43の巚倧なビュッフェでさたざたな皮類のサメ肉が売られおいたのですが、私のお気に入りはシュモクザメの肉でした。 しかし、2006 幎たでに、ラリヌずセルゲむは䞍健康なスナックをすべおやめたした。 ぀たり、2007 幎の Bigtable の蚘事では実際にはサメは存圚せず、私はあなたを隙しおいたした。

私が XNUMX 幎前にクラりド Bigtable を怜蚎したずき (倚少なりずも)、コストがかかったのはここでした。 珟圚は少し䞋がったようですが、空のデヌタ りェアハりスにずっおはただひどい数字です。特に、私の最初の話では、空の倧きなテヌブルがその芏暡ではどれほど重芁ではないかが瀺されおいたす。

Apple コミュニティを気分を害し、Microsoft などに぀いお䜕も良いこずを蚀っおいなかったこずをお詫びしたす。倧䞈倫です。この蚘事が生み出したすべおの議論に本圓に感謝しおいたす。 でも、時には議論を始めるために少し波颚を立おる必芁があるこずもありたすよね

読んでくれおありがずう。

曎新 2、19.08.2020 幎 XNUMX 月 XNUMX 日。 ストラむプ APIを正しく曎新したす!

曎新 3、31.08.2020 幎 2 月 2 日。 Cloud Marketplace の Google ゚ンゞニアから連絡を受けたしたが、その゚ンゞニアは私の叀い友人であるこずが刀明したした。 圌は CXNUMXD が機胜しない理由を突き止めたいず考えおいたした。最終的に、それは私が䜕幎も前にネットワヌクを構築しおおり、テンプレヌトにサブネット パラメヌタヌが欠萜しおいるためにレガシヌ ネットワヌクで CXNUMXD が機胜しなかったためであるこずがわかりたした。 朜圚的な GCP ナヌザヌにずっお、Google の゚ンゞニアを十分に知っおいるかどうかを確認するのが最善だず思いたす...

出所 habr.com