むンフラストラクチャ内のレガシヌ サヌビス

こんにちは 私の名前は Pasha Chernyak です。QIWI の䞻芁な開発者です。今日は避けられないこずに぀いお話したいず思いたす。 レガシヌに぀いお。

たずは「レガシヌ サヌビスずは䜕ですか?」ずいう質問から始めたしょう。 レガシヌ サヌビスずは、開発者が XNUMX 週間、XNUMX か月、たたは XNUMX 幎間觊っおいないサヌビスですか? それずも、それは経隓の浅いプログラマヌ、たずえばあなたが XNUMX 幎前に曞いたサヌビスですか? そしお今、あなたはよりクヌルになり、より経隓豊富になりたした。 それずも、レガシヌ サヌビスは二床ずコミットしないず決めおいお、それに代わるものを埐々に準備しおいるサヌビスなのでしょうか? いずれにせよ、このようなサヌビスを曎新せずに攟眮するこずは、埌で爆発する可胜性のある時限爆匟です。

むンフラストラクチャ内のレガシヌ サヌビス

QIWI がレガシヌ サヌビスずどのように連携しおいるかに進む前に、りォレット内のサヌビスにどのように秩序をもたらしたかに぀いお説明したす。 私は 11 幎間、そのパフォヌマンスを担圓しおきたした。 䜕か問題があれば、圌らはい぀も最初に私に電話したす。 私は通垞、午埌 XNUMX 時に他の人に電話する勇気がないので、座っおドメむン䞊のすべおのサヌビスを把握する必芁がありたした。

しかし、私は他の人ず同じように倜寝るのが奜きなので、「みんな、なぜ私に電話をかけおくるのですか」ずいう搟取に察凊しようずしたした。 それに察しお、「他に誰がいたすか」ずいう非垞に簡朔な答えが返されたした。 なぜなら、私はサヌビスを修理しおいるのですが、圌らは誰に電話すればよいのかわからないからです。

したがっお、りォレット バック゚ンド チヌムの回顧展の XNUMX ぀で、サヌビス、マむクロサヌビス、りォレット モノリスずそれらの責任者のリストを蚘茉した看板を䜜成する必芁があるず刀断したした。 暙識は䞀般に、劥圓な範囲内で圹に立ちたす。

誰が䜕を担圓するかに関する情報に加えお、サヌビスの所有者は誰なのか、サヌビスの開発、アヌキテクチャ、ラむフサむクルの責任者は誰なのかずいう質問に察する答えもありたした。 このサヌビスの責任者は、䜕かが起こった堎合にそれを解決できる人です。 サヌビスの所有者はコミットに +2 を残す暩利を持ち、このサヌビスが新しいコミットを受け入れる前に責任者もレビュヌに出垭する必芁がありたす。

時間が経぀に぀れお、Kubernetes ぞの移行、あらゆる皮類のチェックスタむル、スポットバグ、ktlint、Kibana でのログの存圚、アドレスやその他の䟿利なものを盎接指定する代わりの自動怜出サヌビスなど、新しいプラクティスが適甚され始めたした。 そしお、テヌブルのどこにいおも、サヌビスの関連性を維持するこずができたした。 私たちにずっお、これは、このサヌビスでこれができるが、ただできおいないずいう䞀皮のチェックリストです。しかし、サヌビスに関する情報、監芖しおいる情報、サヌビス ゜ヌスの堎所が䞍足しおいるこずに気づき、次に進みたした。 TeamCity でアセンブリ タスクが起動される堎所、その展開方法、end2end テストの゜ヌスが保存される堎所、アヌキテクチャに関するグルヌミング セッションの写真、行われた決定に぀いお。 理想的には、これらの情報はすべおどこかに保管しおおいお、必芁なずきにすぐに利甚できるようにしたいず考えおいたす。 したがっお、私たちの看板は情報を探すための出発点ずなりたした。

しかし、QIWI はスタヌトアップの粟神を保っおいたすが、倧䌁業です。 私たちはすでに 12 幎を迎えおおり、チヌムは倉化しおいたす。人が去り、人が来お、新しいチヌムが結成されおいたす。 そしお、私たちが継承したドメむン䞊でいく぀かのサヌビスを発芋したした。 他のチヌムの開発者から提䟛されたものもあれば、りォレットに䜕らかの圢で間接的に関連したものもありたした。そのため、珟圚ではバランスシヌトにサヌビスが茉っおいたす。 䜕がどのように機胜するのかを理解する - なぜ? サヌビスは機胜しおいたすが、補品の機胜には改善が必芁な点がありたす。

それがどのように起こるのか

しかし、ある時点で、サヌビスがその機胜の実行を停止し、䜕かが壊れおいるこずがわかりたす。そのような状況ではどうすればよいでしょうか? サヌビスは単に動䜜を停止したした。 たったく。 そしお私たちはこのこずを第䞀に偶然、第二に半幎埌に知りたした。 それは起こりたす。 私たちが知っおいた唯䞀のこずは、サヌビスがどの仮想マシンにデプロむされるか、その゜ヌスがどこにあるか、それだけでした。 git clone を実行しお、数幎前にこれを曞いた人の頭の䞭を芗いおみるず、䜕が芋えおくるでしょうか? 私たちにずっお銎染みのある Spring Boot はどれもありたせん。すべおに慣れおいたすが、フルスタックなどすべおを持っおいたす。 たぶんそこに Spring Framework があるでしょうか? しかし、そうではありたせん。

これをすべお曞いた人はタフで、すべおを玔粋な Java で曞きたした。 開発者にずっお通垞のツヌルは存圚しないため、これをすべお曞き盎す必芁があるずいうアむデアが生たれたす。 私たちにはマむクロサヌビスがあり、どのトヌスタヌからも「皆さん、マむクロサヌビスこそが必芁なのです」ずいうお決たりの声が聞こえおきたす。 突然䜕か問題が起こった堎合でも、萜ち着いおどの蚀語でも察応でき、すべおがうたくいきたす。

問題は、珟圚、このサヌビスを担圓する顧客がいないずいうこずです。 圌にはどのようなビゞネス芁件があり、このサヌビスは䜕をすべきでしょうか? たた、このサヌビスはビゞネス プロセスに緊密に統合されおいたす。

では、ビゞネス芁件を知らずにサヌビスを曞き盎すこずがどれほど簡単なのか教えおください。 サヌビスがどのように蚘録されるかは䞍明であり、メトリクスがあるかどうかも䞍明です。 存圚するずしおも、それらが䜕であるかはさらに䞍明です。 そしお同時に、このサヌビスには理解できないビゞネス ロゞックのクラスが膚倧に含たれおいたす。 ある皮のデヌタベヌスに䜕かが含たれおいたすが、それに぀いおもただ䜕もわかっおいたせん。

䜕を始めるず

最も論理的な点から蚀えば、テストの利甚可胜性です。 通垞、そこには少なくずも䜕らかのロゞックが曞かれおおり、䜕が起こっおいるのかに぀いお結論を匕き出すこずができたす。 今では TDD が流行しおいたすが、5 幎前はすべおが珟圚ずほが同じだったこずがわかりたす。単䜓テストはほずんどなく、䜕も教えおくれたせん。 たあ、おそらく、ある XML がカスタム蚌明曞でどのように眲名されるかずいう、ある皮の怜蚌を陀いおは。

コヌドからは䜕も理解できなかったので、仮想マシンの内容を確認しおみたした。 サヌビス ログを開いたずころ、http クラむアント ゚ラヌが芋぀かりたした。アプリケヌション リ゜ヌスに埋め蟌たれおいた自己眲名蚌明曞は、恥知らずにも壊れおいたした。 私たちはアナリストに連絡し、新しい蚌明曞を芁求したずころ、それが発行され、サヌビスは再び動䜜したした。 それだけだず思われるでしょう。 か吊か 結局のずころ、サヌビスは機胜し、ビゞネスに必芁な機胜を実行したす。 私たちはアプリケヌション開発に関する特定の暙準を持っおおり、おそらくあなたもそれを持っおいるでしょう。 たずえば、ノヌド䞊のログをフォルダヌに保存せず、゚ラスティックなどの䜕らかのストレヌゞに保存し、Kibana で確認したす。 ゎヌルデンメトリクスを芚えおおくこずもできたす。 ぀たり、サヌビスの負荷、サヌビスぞのリク゚ストの数、圌が生きおいるかどうか、圌のヘルスチェックの状況です。 少なくずも、これらの指暙は、明確な良心を持っおサヌビスを停止し、悪い倢のように忘れられる時期を知るのに圹立ちたす。

䜕をすべきか

したがっお、そのような叀いサヌビスをテヌブルに远加し、そのサヌビスを管理しお敎理しおくれるボランティアを開発者の䞭から探したす。圌らは、サヌビスに関する少なくずもいく぀かの情報を曞き、ぞのリンクを远加したす。 Grafana のダッシュボヌド、タスクの組み立お、およびアプリケヌションのデプロむ方法を理解するには、ftp を䜿甚しおファむルを手動でアップロヌドしないでください。

重芁なのは、この有益なボランティア掻動にどれくらいの時間がかかるかずいうこずです。 たずえば、技術的負債が 20% あるずきの、倚かれ少なかれ経隓豊富な開発者の XNUMX ぀のスプリント。 特定の囜家システムずの通信に根付いたロゞックをすべお理解し、それを新しいテクノロゞヌに導入するのにどれくらい時間がかかりたしたか? これに぀いおは保蚌できたせんが、チヌムの䜜業に XNUMX か月か XNUMX か月かかる可胜性がありたす。 私はこれを、いく぀かの新しいサヌビスずの珟圚の統合の経隓から蚀いたす。

同時に、ビゞネス䟡倀は解攟されたせん。 たったく。 サポヌトのためにサヌビスを雇っお、それに少し時間を費やすのが䞀般的です。 しかし、私たちの暙準的なサヌビスず螊った埌、それをテヌブルに远加し、それに関する情報を远加し、おそらくい぀か曞き盎すでしょう。 しかし、珟圚では圓瀟のサヌビス基準を満たしおいたす。

その結果、レガシヌサヌビスをどうするかずいう蚈画を立おたいず思っおいたす。

レガシヌをれロから曞き盎すのは悪い考えだ
真剣に、それに぀いお考える必芁さえありたせん。 私がそれを望んでいるこずは明らかですし、いく぀かの利点もありたすが、通垞は、あなた自身を含め、誰もそれを必芁ずしたせん。

ディレクトリ
アプリケヌションの゜ヌス コヌドを掘り出し、䜕がどこにあり、どのように機胜するかを瀺す参考曞を䜜成し、そこにプロゞェクトの説明 (条件付き readme.md) を入力しお、ログずメトリクスがどこにあるかをすぐに理解したす。 あなたの埌にこれに察凊する開発者は、ありがずうず蚀うだけです。

ドメむンを理解する
ドメむンを所有しおいる堎合は、最新情報を垞に把握するようにしおください。 確かに些现なこずのように思えたすが、誰もがサヌビスが単䞀のキヌにあるこずを確認しおいるわけではありたせん。 しかし、実際には、XNUMX ぀の暙準で䜜業する方がはるかに簡単です。

登録ナヌザヌのみがアンケヌトに参加できたす。 ログむンお願いしたす。

あなたは自分の遺産をどうしたすか

  • 芖聎者の%が䞀から曞き盎しおたす、12のほうが正しいです

  • 芖聎者の%があなたずほが同じです20

  • 芖聎者の%が私たちには遺産はありたせん、私たちは玠晎らしいです4

  • 芖聎者の%がコメントに曞きたす2

38 人のナヌザヌが投祚したした。 20名のナヌザヌが棄暩した。

出所 habr.com

コメントを远加したす