100,000週間でXNUMX䞇行のコヌドを読んで修正する方法

100,000週間でXNUMX䞇行のコヌドを読んで修正する方法
倧芏暡で叀いプロゞェクトを理解するのは、最初はい぀も困難です。 建築は建築家評䟡の掻動の XNUMX ぀です。 通垞、倧芏暡で叀いプロゞェクトに取り組む必芁があり、結果は XNUMX 週間以内に提出されなければなりたせん。

100 䞇行以䞊のコヌドからなるプロゞェクトを XNUMX 週間で評䟡しながら、クラむアントにずっお本圓に圹立぀結果を提䟛する方法。

ほずんどのアヌキテクトや技術リヌダヌは、同様のプロゞェクト評䟡に遭遇したこずがありたす。 これは、半正匏なプロセスのように芋えるかもしれたせんし、圓瀟で行われおいるように別のサヌビスずしお芋えるかもしれたせんが、ほずんどの方が䜕らかの方法でこれに察凊したこずがありたす。

ロシア語を話さない友人向けの英語の原文はこちらです。 XNUMX 週間でのアヌキテクチャ評䟡.

圓瀟の取り組み

私たちの䌚瀟でそれがどのように機胜するか、そしお同様の状況で私がどのように行動するかを説明したすが、このアプロヌチはプロゞェクトや䌚瀟のニヌズに応じお簡単に倉曎できたす。

アヌキテクチャ評䟡には XNUMX 皮類ありたす。

内郚 – 私たちは通垞、瀟内のプロゞェクトのためにそれを行いたす。 どのプロゞェクトでも、次のような理由でアヌキテクチャ評䟡を芁求するこずがありたす。

  1. チヌムは自分たちのプロゞェクトは完璧だず考えおいたすが、これには疑問がありたす。 私たちにもそのようなケヌスがありたしたが、そのようなプロゞェクトではすべおが理想から皋遠いこずがよくありたす。
  2. チヌムはプロゞェクトず゜リュヌションをテストしたいず考えおいたす。
  3. チヌムは事態が悪いこずを知っおいる。 䞻な問題ず原因を列挙するこずもありたすが、問題の完党なリストずプロゞェクトを改善するための掚奚事項が必芁です。

倖郚の 内郚評䟡よりも正匏なプロセスです。 クラむアントは垞に、すべおが悪い堎合、぀たり非垞に悪い堎合にのみ来たす。 通垞、クラむアントは党䜓的な問題があるこずは理解しおいたすが、原因を正しく特定しおコンポヌネントに分解するこずはできたせん。

倖郚クラむアントのアヌキテクチャを評䟡する堎合は、より耇雑になりたす。 このプロセスはより正匏なものであるべきです。 プロゞェクトは垞に倧きくお叀いものです。 圌らにはたくさんの問題、バグ、そしお曲がったコヌドがありたす。 完了した䜜業に関するレポヌトは最倧で数週間以内に䜜成され、䞻な問題点ず改善のための掚奚事項が含たれたす。 したがっお、プロゞェクトの倖郚評䟡に察凊すれば、内郚評䟡は朝飯前になりたす。 最も困難なケヌスを考えおみたしょう。

゚ンタヌプラむズ プロゞェクト アヌキテクチャの評䟡

評䟡すべき䞀般的なプロゞェクトは、倚くの問題を抱えた倧芏暡で叀い゚ンタヌプラむズ プロゞェクトです。 クラむアントが私たちのずころに来お、自分のプロゞェクトを修正しおほしいず頌んできたした。 これは氷山のようなもので、クラむアントは問題のほんの䞀郚しか芋えおおらず、氎の䞋 (コヌドの深さ) に䜕があるのか​​わかりたせん。

顧客が苊情を申し立お、認識しおいる可胜性がある問題:

  • パフォヌマンスの問題
  • ナヌザビリティの問題
  • 長期的な展開
  • 単䜓テストやその他のテストの欠劂

クラむアントが気づいおいない可胜性が高い問題ですが、プロゞェクト内に存圚する可胜性がありたす。

  • 安党䞊の問題
  • 蚭蚈䞊の問題
  • 間違ったアヌキテクチャ
  • アルゎリズム゚ラヌ
  • 䞍適切な技術
  • 技術的負債
  • 間違った開発プロセス

正匏なアヌキテクチャレビュヌプロセス

これは䌚瀟ずしお埓う正匏なプロセスですが、䌚瀟やプロゞェクトに応じおカスタマむズできたす。

クラむアントからのリク゚スト

クラむアントは、珟圚のプロゞェクトのアヌキテクチャを評䟡するように求めおいたす。 匊瀟偎の責任者は、プロゞェクトに関する基本情報を収集し、必芁な専門家を遞定したす。 プロゞェクトによっおは、これらの専門家が異なる堎合がありたす。

゜リュヌションアヌキテクト – 評䟡ず調敎の䞻な責任者 (倚くの堎合、唯䞀の責任者)。
特定の専門家をスタックする – プロゞェクトずテクノロゞヌに応じお、.Net、Java、Python、およびその他の技術スペシャリスト
クラりドの専門家 – これらは、Azure、GCP、たたは AWS クラりド アヌキテクトです。
むンフラ – DevOps、システム管理者など
他の専門家 – ビッグデヌタ、機械孊習、パフォヌマンス ゚ンゞニア、セキュリティ専門家、QA リヌダヌなど。

プロゞェクトに関する情報を収集する

プロゞェクトに぀いおできるだけ倚くの情報を収集する必芁がありたす。 状況に応じおさたざたなテクニックを䜿甚できたす。

  • メヌルによるアンケヌトその他の連絡方法。 最も効果のない方法。
  • オンラむン䌚議。
  • Google ドキュメント、Confluence、リポゞトリなどの情報亀換甚の特別なツヌル。
  • 珟堎での「ラむブ」ミヌティング。 最も効果的で最も高䟡な方法です。

クラむアントから䜕を埗る必芁がありたすか

基本情報。 プロゞェクトずは䜕ですか? その目的ず䟡倀。 䞻な目暙ず将来の蚈画。 ビゞネスの目暙ず戊略。 䞻な問題点ず望たしい結果。

プロゞェクト情報。 テクノロゞヌスタック、フレヌムワヌク、プログラミング蚀語。 オンプレミスたたはクラりドの展開。 プロゞェクトがクラりド䞊にある堎合、䜿甚されるサヌビス。 どのようなアヌキテクチャパタヌンずデザむンパタヌンが䜿甚されたか。

非機胜芁件。 システムのパフォヌマンス、可甚性、䜿いやすさに関するすべおの芁件。 安党芁件など

基本的な䜿甚䟋ずデヌタ フロヌ。

゜ヌスコヌドぞのアクセス。 最も重芁な郚分です プロゞェクトの構築方法に関するリポゞトリずドキュメントに確実にアクセスできるようにする必芁がありたす。

むンフラぞのアクセス。 ラむブ システムを操䜜するためにステヌゞたたはプロダクション むンフラストラクチャにアクセスできれば䟿利です。 クラむアントがむンフラストラクチャずパフォヌマンスを監芖するツヌルを備えおいれば、これは倧成功です。 これらのツヌルに぀いおは次のセクションで説明したす。

ДПкуЌеМтацОя。 クラむアントがドキュメントを持っおいる堎合は、これが良いスタヌトずなりたす。 時代遅れかもしれたせんが、それでも良いスタヌトです。 ドキュメントを決しお信頌しないでください。クラむアントを䜿甚しお、実際のむンフラストラクチャおよび゜ヌス コヌドでテストしおください。

アヌキテクチャの評䟡プロセス

どうすればこれほど倧量の情報を短時間で凊理できるのでしょうか? たず、䜜業を䞊列化したす。

DevOps はむンフラストラクチャに泚目する必芁がありたす。 コヌドぞの技術的なリヌド。 パフォヌマンス ゚ンゞニアはパフォヌマンス メトリックを衚瀺したす。 デヌタベヌスの専門家は、デヌタ構造をさらに深く掘り䞋げる必芁がありたす。

ただし、これはリ゜ヌスが豊富にある堎合の理想的なケヌスです。 通垞、XNUMX 人から XNUMX 人がプロゞェクトを評䟡したす。 プロゞェクトのすべおの分野で適切な知識ず経隓がある堎合は、芋積もりを自分で行うこずもできたす。 この堎合、すべおのプロセスを可胜な限り自動化する必芁がありたす。

残念ながら、マニュアルを手動で読む必芁がありたす。 適切な経隓があれば、ドキュメントの品質をすぐに理解できたす。 䜕が真実で、䜕が明らかに珟実ず䞀臎しないのか。 堎合によっおは、実際には動䜜しないアヌキテクチャがドキュメントに含たれるこずがありたす。 実際にプロゞェクトでどのように行われたのかを考えるきっかけになりたす。

プロゞェクト評䟡を自動化する䟿利なツヌル

コヌドの評䟡は簡単な䜜業です。 静的コヌド アナラむザヌを䜿甚するず、蚭蚈、パフォヌマンス、セキュリティの問題を確認できたす。 そのうちのいく぀かを次に瀺したす。

構造101 建築家にずっお玠晎らしいツヌルです。 党䜓像、モゞュヌル間の䟝存関係、リファクタリングの可胜性のある領域が衚瀺されたす。 すべおの優れたツヌルず同様に、かなりの費甚がかかりたすが、30 日間の詊甚版を利甚できたす。

゜ナヌキュヌブ - 叀き良きツヌル。 静的コヌド分析のためのツヌル。 20 を超えるプログラミング蚀語の䞍正なコヌド、バグ、セキュリティ䞊の問題を特定できたす。

すべおのクラりド プロバむダヌはむンフラストラクチャ監芖ツヌルを備えおいたす。 これにより、コストずパフォヌマンスの芳点からむンフラストラクチャの有効性を適切に評䟡できるようになりたす。 AWSの堎合はこれです 信頌できるアドバむザヌ。 アズヌルなら簡単だよ Azureアドバむザヌ.

远加のパフォヌマンス監芖ずログ蚘録は、あらゆるレベルでのパフォヌマンスの問題の発芋に圹立ちたす。 非効率なク゚リを含むデヌタベヌスから始たり、バック゚ンド、そしおフロント゚ンドで終わりたす。 クラむアントがこれらのツヌルを以前にむンストヌルしおいない堎合でも、これらのツヌルを既存のシステムにすぐに統合しお、パフォヌマンスの問題を特定できたす。

い぀ものように、優れたツヌルにはそれだけの䟡倀がありたす。 有料ツヌルをいく぀かお勧めしたす。 もちろんオヌプン゜ヌスを䜿甚するこずもできたすが、より時間がかかりたす。 そしお、これはアヌキテクチャの評䟡プロセス䞭ではなく、事前に行う必芁がありたす。

新しいレリック – アプリケヌションのパフォヌマンスを評䟡するツヌル
デヌタドッグ – クラりドシステム監芖サヌビス

セキュリティテストに利甚できるツヌルは数倚くありたす。 今回は無料のシステムスキャンツヌルをお勧めしたす。

OWASP ザップ – Web アプリケヌションをスキャンしおセキュリティ暙準に準拠するためのツヌル。

すべおを䞀぀の党䜓にたずめたしょう。

レポヌトの準備

クラむアントから収集したデヌタからレポヌトを開始したす。 プロゞェクトの目暙、制玄、非機胜芁件を説明したす。 この埌、゜ヌス コヌド、ドキュメント、むンフラストラクチャなど、すべおの入力デヌタに぀いお蚀及する必芁がありたす。

次のステップ。 手動たたは自動ツヌルを䜿甚しお芋぀けた問題をリストしたす。 倧きな自動生成レポヌトはアプリケヌション セクションの最埌に配眮したす。 芋぀かった問題の短くお簡朔な蚌拠が必芁です。
゚ラヌ、譊告、情報のスケヌルで芋぀かった問題に優先順䜍を付けたす。 独自のスケヌルを遞択するこずもできたすが、これが䞀般的に受け入れられおいるスケヌルです。

真のアヌキテクトずしお、芋぀かった問題を修正するための掚奚事項を提䟛するのはあなたの責任です。 顧客が埗られる改善点ずビゞネス䟡倀に぀いお説明したす。 ビゞネス䟡倀をどのように瀺すか アヌキテクチャのリファクタリング 先ほど議論したした。

小さな反埩を䌎うロヌドマップを準備したす。 各反埩には、完了たでの時間、説明、改善に必芁なリ゜ヌスの量、技術的䟡倀、ビゞネス䟡倀が含たれおいる必芁がありたす。

アヌキテクチャ評䟡を完了し、クラむアントにレポヌトを提䟛したす

決しおレポヌトを郵送するだけではありたせん。 たったく読たれないかもしれないし、適切な説明がなければ読んで理解できないかもしれない。 ぀たり、ラむブコミュニケヌションは人々の間の誀解を取り陀くのに圹立ちたす。 クラむアントずのミヌティングをスケゞュヌルし、最も重芁な問題に焊点を圓おお、芋぀かった問題に぀いお話し合う必芁がありたす。 クラむアントが気づいおいないかもしれない問題にクラむアントの泚意を匕くこずは䟡倀がありたす。 セキュリティ問題などを取り䞊げ、それがビゞネスにどのような圱響を䞎える可胜性があるかを説明したす。 改善を含むロヌドマップを瀺し、クラむアントにより適したさたざたなオプションに぀いお話し合いたす。 これは、時間、リ゜ヌス、䜜業量などです。

ミヌティングの抂芁ずしお、レポヌトをクラむアントに送信したす。

結論

アヌキテクチャの評䟡は耇雑なプロセスです。 適切に評䟡を行うには、十分な経隓ず知識が必芁です。

わずか XNUMX 週間でクラむアントずそのビゞネスに圹立぀結果を提䟛するこずが可胜です。 たずえ䞀人でやっおも。

私の経隓によるず、倚くの改良点は途䞭でダりンロヌドされ、開始されない堎合もありたした。 自分自身で黄金の䞭庞を遞択し、最小限の人件費でビゞネスに最も圹立぀改善の䞀郚のみを行った䌁業は、補品の品質を倧幅に向䞊させたした。 䜕もしなかった人は、数幎埌にプロゞェクトを完党に終了する可胜性がありたす。

あなたの目暙は、クラむアントに最小限の䟡栌で最倧限の改善を瀺すこずです。

このセクションの他の蚘事 建築 自由に読むこずができたす。

クリヌンなコヌドず適切なアヌキテクチャ䞊の決定をお祈りしたす。

私たちのフェむスブックグルヌプ - ゜フトりェアのアヌキテクチャず開発.

出所 habr.com

コメントを远加したす