アヌキテクチャ-宣蚀的。実装-必須。他のすべおはBureaucracyです

アヌキテクチャずは䜕ですかアヌキテクチャはデザむンずどう違うのですかアヌキテクチャず実装の境界はどこにありたすか建築が芋えたすかアヌキテクチャをテストできたすかアヌキテクチャに察する゚ンゞニアリングアプロヌチず進化的アプロヌチの違いは䜕ですか良いアヌキテクチャずは䜕ですかアヌキテクトの仕事は䜕ですか開発者の仕事ずどう違うのですかアヌキテクトはどのようなツヌルを利甚できたすか実装ずは別にアヌキテクチャを倉曎するこずは可胜ですかアヌキテクチャにはDNAがありたすか







tomaszjaniakブログからの画像



あなたのアヌキテクチャを芋せおください



たたたたプロゞェクトに数幎取り組んでいお、今はコヌドのひじに腰を䞋ろしおいお、テストが燃えおいお、ラップトップクヌラヌが音を立おお、コンパむラヌによっお過熱されたプロセッサヌの熱を冷华しようずしおいたす。あず数時間で、リファクタリングは終了したす。そしお、私たちは緊急にすべおを削陀し、プロゞェクトのアヌキテクチャを描く必芁がありたす。倧芏暡なクラむアントが蚈画されおおり、取匕を成立させるためには監査を受ける必芁がありたす。そしおこの堎合、建築図なしではどこにもありたせん。それで、プロゞェクトがただ小さく、実際の䜜業で数十人の開発者がそこにアヌキテクチャを必芁ずしなかった堎合はどうなるでしょうか。これがコヌドです-すべおが明確です。しかし、逃げ道はありたせん。それは必芁です-そしおそれは必芁です。



すべおがどのように機胜するかを知っおいれば、どの補品のアヌキテクチャも1時間で描くこずができたす。そしお、これは通垞、監査には十分です。結局のずころ、監査のポむントは、郚倖者が補品アヌキテクチャを実際に理解するこずではありたせん。問題の芁点は、補品開発者自身が自分たちのしおいるこずを理解しおいるかどうかを刀断するこずです。そしお、自信を持っお話し、ためらうこずなく質問に答えれば、すべおがスムヌズに進みたす。しかし、それでも、この話が終わるず、ワヌムがどこかに萜ち着き、問題が明確になりたす。それでも、補品には実際にどのようなアヌキテクチャがありたすか結局のずころ、圌らが尋ねれば、おそらく他の人はアヌキテクチャを持っおいたす。そしお、私たちがそれを持っおいない堎合、これは明らかに混乱です。次回のアヌキテクチャに責任を持぀ために、すべおをうたくやりたいずいう倧きな願望がありたす。



どうやっおそれを正しくしたすか図を描き、ドキュメントの機胜を説明しおから、これらすべおを最新の状態に保぀必芁がありたす。次に、アヌキテクチャになりたす。しかし、䜜業の範囲を提瀺した埌、これはすべお時間を費やす䟡倀がないこずがすぐに理解されたす。これがコヌドです-すべおが明確です。そしお、別のクラむアントが来た堎合、さらに1時間以内に、新しい図を描くこずが可胜になりたす。



そしお、数幎埌、あなたは反察の状況に陥る可胜性があり、別の補品のアヌキテクチャを説明するドキュメントはこれ以䞊良くなるこずはありたせん。もちろん、他の人も非垞に悪いアヌキテクチャを持っおいるこずを知っおおくず䟿利です。しかし、プロゞェクトのサむズが数癟䞇行のコヌドで枬定され始め、開発者の数が数癟行になるず、アヌキテクチャの必芁性の問題は䟝然ずしお重芁になりたす。



ここでは、ワヌクフロヌのフレヌムワヌク内で、さたざたなアヌキテクチャ図が衚瀺され始め、アヌキテクチャ提案が機胜に぀いお蚘述し始めたす。これらすべおが議論、レビュヌ、怜蚌、承認され、もちろん、これらのプロセスが終了する前でも時代遅れになりたす。そのような文曞がアプリケヌションコヌドの実際の構造を反映しおいるず蚀う必芁はありたせん。そしお、実装に関しおは、開発者がこれらのドキュメントをたったく読んでいないこずがありたす。たたは、曞かれたものずはたったく異なる䜕かが実装されおいたす。誰かが誰かを誀解したか、それをするこずが急務であり、議論する時間がありたせんでした。



倚分すべおがそうあるべきである。たぶん、建築は、珟実から切り離された投機的な文曞を取り巻く事務局ですかしかし、盎感によれば、結局のずころ、違いたす。では、「建築」ずは䜕でしょうか。



アヌキテクチャは...



「アヌキテクチャずは」ずいう質問をするずどうなりたすか10人のプロの開発者りィキペディアをこじ開けない堎合、圌らは同じ答えを出したすか



アヌキテクチャは、䞀連の重芁な決定であり、芁玠の構造ずそのむンタヌフェむス、および芏定、ルヌル、合意のシステムであり、秩序を維持するアプロヌチ、グロヌバルな問題の解決策、盞互䜜甚による分解、システムずそのラむフサむクルの高レベルの説明の䞡方です。パヌツ、構造ず動䜜のパタヌン、倉曎たたは削陀が困難たたは費甚がかかるもの、基本的な決定ずトレヌドオフなど。



アヌキテクチャは、アプリケヌションがその目的を果たす方法でもありたす。



APIはアヌキテクチャであり、デヌタスキヌマもアヌキテクチャであり、モゞュヌルずサヌビスの構造です。アプリケヌションスケヌリングアヌキテクチャ、アプリケヌション信頌性アヌキテクチャ、コンポヌネント盞互䜜甚アヌキテクチャ、およびセキュリティアヌキテクチャがありたす。そしおもちろん、各機胜には独自のアヌキテクチャがありたす。そしお、これらすべおが䞀緒になっおアヌキテクチャでもありたす。



これはすべお、「アヌキテクチャずは」ずいう質問に察する答えず芋なすこずができたすか -おそらくそうです。すべおが正しいようで、すべおが明確であるようです。しかし、この回答は実際に圹立ちたすか実際のワヌクフロヌで䜿甚できるものですかあんたり。



決定が重芁であるか基本的であるかをどうやっお知るのですかグロヌバルな課題は䜕ですか高いたたは安いずはどういう意味ですか耇雑さをどのように掚定したすか高レベルず䜎レベルの境界はどこにありたすか泚文ずは䜕ですかシステムの目的は䜕ですか



これらはすべお、あなたが答えるこずもできる質問です。定矩を策定し、䟋を挙げお説明し、最悪の堎合、意思決定プロセスを敎理したす。しかし、それでも、個人的な認識に応じお、物議を醞すもの、盎感的なものが残り、すべおの人が独自の方法で少し理解したす。これは、異なる人々が同じ状況を根本的に異なる方法で解釈するずいう事実に基づいお、垞に察立が存圚するこずを意味したす。開発者は、アヌキテクトが実装の詳现を改ざんしおいる、アヌキテクトが開発者がアヌキテクチャを砎っおいるず䞍平を蚀うでしょう。明確な境界がない堎合、衝突は避けられたせん。



おそらく誰もがアヌキテクチャずは䜕かに぀いおある皋床の䞀般的な理解を持っおいたす。しかし、正匏に怜蚌され、数孊的に正確な単䞀の定矩に名前を付けるこずは困難です。



䞀方、「実珟ずは」ず聞くず-答えは明癜である可胜性が高いです「ここにコヌドリポゞトリぞのリンクがありたす」そしお、あなたはそれに぀いお議論するこずはできたせん。そしお、この答えの解釈には疑いや曖昧さはありたせん。 1 + 1 = 2、実装はコヌドです。



たた、コヌドの操䜜は非垞に簡単です。実装を理解したい堎合は、開発環境でプロゞェクトを開くこずができたす。コヌドの倉曎を確認する必芁がある堎合は、リポゞトリにブランチがありたす。アプリケヌションの新しいバヌゞョンをリリヌスするずきが来たら、テストが開始されたす。



もちろん、プロゞェクトの構造は混乱を招く可胜性があり、レビュヌの質は䜎く、テストの察象範囲は䞍完党です。しかし、少なくずもコヌドを操䜜するずきは、䜕をい぀行うかが垞に明確です。



しかし、実装のように、アヌキテクチャがコヌドで衚珟された堎合はどうなるでしょうか。





倚くの䞻流のプログラミング蚀語が珟代の開発で䜿甚されおいたす。それらのほずんどはずっず前たたは非垞にずっず前に珟れたした。そしお、圌らはただ良いですが、圌らは少し時代遅れになっおいたす。これらは、匱く型付けされた蚀語JavaScript、Python、PHP、Ruby、および匷く型付けされた蚀語Java、C / Objective-C / C ++、Cです。それらは、同じプラットフォヌムのフレヌムワヌク内で、構文䞊の砂糖をたき散らしお、長幎の問題を解決しようずする新しい蚀語に眮き換えられおいたすが、グロヌバルに芋るず根本的に新しい抂念を導入するこずはありたせんSwift、Kotlin、TypeScript、Go。これらはすべお、オブゞェクト指向のパラダむムに基づいお構築された蚀語です。たた、プログラミングぞの機胜的アプロヌチは成熟した人気を埗おおり、リストされた蚀語で実装され、特殊な蚀語で提瀺されおいたすが、あたり人気がありたせんErlang、F。実質的に新しい抂念を実装する蚀語も人気を集め始めおいたすRust、Haskell。



この倚様性にはすべお共通点が1぀ありたす。それは、すべお実装蚀語であるずいうこずです。これらのプログラミング蚀語はどれもアヌキテクチャの衚珟ではありたせん。ただし、䟋倖が1぀ありたす。それはSQLです。



SQLは、宣蚀型である唯䞀の䞻流のプログラミング蚀語です。これは、リレヌショナル代数モデルに基づいお構築されおおり、保存されたデヌタを凊理するずいう狭い専門分野を持っおいたす。しかし、それでも、なぜSQLをアヌキテクチャの蚀語ず芋なすこずができるのでしょうか。



たず、SQLはデヌタスキヌマに関するメタ情報ぞのアクセスを提䟛したす。デヌタベヌスから、テヌブル、列、関係、むンデックス、ビュヌ、ロヌルなどのリストを簡単に取埗できたす。ストレヌゞスキヌマを文曞化し、それを芖芚化できるこずは、アプリケヌションの構造を理解する䞊で非垞に圹立ちたす。デヌタスキヌマ蚘述は、高レベルのアヌキテクチャ蚘述の䞀皮です。



次に、SQLは、クラむアントがスキヌマに蚘述されおいるデヌタの任意の組み合わせを照䌚できるようにするデヌタ照䌚蚀語を提䟛したす。ク゚リ蚀語がない堎合は、クラむアントが必芁ずするデヌタモデルごずに、個別のAPIメ゜ッドを実装するか、クラむアントがデヌタスキヌマのさたざたな郚分に察しお耇数のAPI呌び出しを行い、必芁なモデルをその偎で組み合わせる必芁がありたす。ク゚リ蚀語の存圚により、アヌキテクチャの説明から、䞀般的なスキヌムに埓っお特定のデヌタモデルを取埗するためのAPIメ゜ッドの列挙に関連する実装の詳现を陀倖するこずができたす。ク゚リ蚀語は、アヌキテクチャの説明から実装の詳现を陀倖したす。



SQLは、アヌキテクチャを説明するために重芁な3぀の䞻芁なプロパティを提䟛したす。



  1. 宣蚀性-SQLを䜿甚するず、アヌキテクチャの説明をその実装から分離できたす。
  2. 分析可胜性-SQLは、デヌタスキヌマのメタ情報ぞのアクセスを提䟛したす。これにより、その衚珟を芖芚化、文曞化、および分析できたす。
  3. 正確性-SQLを䜿甚するず、デヌタモデルに制玄を定矩できたす。これにより、実装によるさたざたなデヌタ敎合性違反を防ぐこずができたす。


おそらく、SQLはデヌタストレヌゞの芳点からアヌキテクチャを説明するためのツヌルず呌ぶこずができたすが、補品の完党なアヌキテクチャを説明するには明らかに十分ではありたせん。



アヌキテクチャを説明する他の手段



SQLの盎接の類䌌物はGraphQLです。これにより、デヌタスキヌマを定矩し、ク゚リ蚀語を介しおデヌタスキヌマにアクセスするこずもできたす。同時に、GraphQLは、リレヌショナル代数モデルではなく、グラフ理論に基づいお構築されおいたす。これにより、階局の操䜜が困難なSQLずは察照的に、より自然な方法で階局デヌタモデルを操䜜できたす。



GraphQLは、クラむアントずサヌバヌの通信゜リュヌションずしお宣䌝されるこずがよくありたすが、そのアプリケヌションの領域はこれだけではありたせん。同様に、GraphQLを介しお、サヌバヌ間通信、さらにはサヌバヌ間通信を提䟛できたす。最新のデヌタベヌスはSQLむンタヌフェむスのみを提䟛したすが、階局ク゚リを操䜜するための䟿利なAPIを提䟛しないずいう事実は、䞍快な省略です。



SQLがデヌタストレヌゞスキヌマのアヌキテクチャを蚘述する手段である堎合、GraphQLを䜿甚するず、特定のアプリケヌション領域の芳点から、すでにビゞネスレベルでデヌタスキヌマのアヌキテクチャを蚘述するこずができたす。この意味で、GraphQLを䜿甚するず、補品の実際のアプリケヌション領域に近い、より高いレベルでアヌキテクチャを定矩できたす。



コヌドモゞュヌルずマむクロサヌビスは、それらのAPIず䟝存関係ずずもに、構造ず関係の芳点からアヌキテクチャを衚珟するための手段でもありたす。



アヌキテクチャず実装



数十人の開発者が取り組んでいる小さなプロゞェクトの堎合、アヌキテクチャの個別の説明は必芁ないこずがよくありたす。プロゞェクトコヌドがきちんず構造化されおいれば、党䜓像ず開発の方向性を理解するのに十分かもしれたせん。



プロゞェクトが成長するに぀れお、その䞀般的なアヌキテクチャず新しいパヌツの詳现および䞻芁な改善の䞡方を説明するさたざたなドキュメントが衚瀺されたす。これは、数十人がプロゞェクトに取り組んでいる堎合、非垞に実甚的なアプロヌチです。



しかし、かなり倧芏暡なプロゞェクトの堎合、開発者が数癟人いるず、このアプロヌチは倱敗し始めたす。ドキュメントが倚すぎお、その内容が実装からたすたす分岐し始めおいたす。誰もが同じように考えを衚珟するこずはたすたす難しくなっおいたす。䜕十人もの人々のための集䌚は、倚くのプラむベヌトトピックを議論するために組織されおいたすが、本圓に重芁な倉曎は、たったく議論するこずなく実装できたす。これはすべお、䜕かを提䟛しなければならない堎合、フォロヌする堎合、レビュヌする堎合、さらには行う堎合に、たすたす倚くのプロセスを線成する必芁性に぀ながりたす。官僚。その結果、開発者はより倚くのドキュメントずより少ないコヌドを曞き始めおおり、これは最も重倧な問題ではありたせん。



もちろん、ビュヌロヌクラシヌ自䜓には䜕の問題もありたせん。どんな仕事でも、その組織は重芁です。問題は、有甚な仕事の単䜍あたりの事務局の量です。 1぀を行うために、さらに2぀、3぀、4぀、5぀のラリヌを開催する必芁がある堎合、これはどこでも良くありたせん。



これは実装であるため、開発者が自分でどのような倉曎を加えるこずができるか、たた、これはアヌキテクチャであるため、レビュヌを芁求する必芁があるかどうかずいう単玔な質問でさえ、問題を匕き起こし始めたす。さたざたなアヌキテクチャのトリガヌを考え出す必芁がありたす。デヌタスキヌマを倉曎したり、暗号化やセキュリティの問題に觊れたりした堎合は、アヌキテクチャを確認する必芁があり、他のトピックはそうではないようですが、これは確かではありたせん。これはすべお、䜕癟人もの開発者に策定しお説明するだけでなく、説明されおいるルヌルに確実に埓う必芁がありたす。このようなプロセスは垞に倱敗したす。



これらの問題はすべお、アヌキテクチャの明確な定矩の欠劂に関連しおいたす。



リポゞトリ内の「.java」ファむルを倉曎するず実装の倉曎が明確に瀺されるのず同様に、「。architecture」ファむルを倉曎するずアヌキテクチャの倉曎を瀺すこずができたす。もちろん、「。architecture」ファむルは自然界には存圚したせん。ただし、プロゞェクトごずに、プロゞェクトのどの特定の偎面がそのアヌキテクチャに関連しおいるかを定矩し、明瀺的にするこずができたす。



デヌタスキヌマの倉曎がアヌキテクチャの倉曎ず芋なされる堎合、SQL移行を含むファむルはアヌキテクチャを参照する必芁がありたす。 APIもアヌキテクチャの䞀郚である堎合は、同じスワッガヌファむルの圢匏でAPIを定矩し、それらに䟝存するこずができたす。モゞュヌルの構造がアヌキテクチャである堎合、モゞュヌルの説明の倉曎はアヌキテクチャの倉曎です。等。



アヌキテクチャのすべおの偎面を暙準的な方法で衚珟できるわけではありたせん。各プロゞェクトには独自の詳现がありたす。たずえば、補品が特定の暩利、圹割、サブスクリプションの皮類、アドオンなどのモデルを䜿甚しおいる堎合は、補品のこの偎面のアヌキテクチャを適切な宣蚀圢匏で定矩し、実装の詳现からアヌキテクチャの本質を匷調するこずを怜蚎する必芁がありたす。もちろん、そのような倉曎には倧幅なコヌドのやり盎しが必芁になる堎合がありたす。しかし、これは、ドキュメントでその暩利モデルを説明しようずするよりも、補品アヌキテクチャを定矩する䞊で実質的に優れた投資です。



コヌドでアヌキテクチャを正匏に衚珟するこずは可胜であり、これだけがアヌキテクチャずは䜕かを明確に定矩したす。このビュヌを䜿甚するず、アヌキテクチャを分析しお、垞に最新のドキュメントを自動的に生成できたす。残りのすべお手䜜業で線集されたドキュメント、図、図-ビュヌロヌクラシヌ。



アヌキテクチャはコヌド内で正匏な衚珟を持぀こずができ、これだけがアヌキテクチャず実装の間の明確な境界を定矩したす。そしお、そのような境界線が必芁です。



建築における工孊的および進化的アプロヌチ



過去半䞖玀にわたっお、開発業界は滝のモデルから反埩的な開発ぞず長い道のりを歩んできたした。そしお今、業界はこの問題で行き過ぎおいるようです。ある堎所では、建築家の仕事はもはや゚ンゞニアや庭垫の仕事に䌌おおらず、ベッドの陀草のみを目的ずしお雇われた季節劎働者の仕事にたすたす䌌始めおいたす。



゚ンゞニアリングずクラフトを区別するのは、自然の法則、぀たり、実隓ではなく、蚈算ず結論を出し、解決策を蚭蚈するための法則を理解するこずです。倧工なら誰でも完党に受け入れられるスツヌルを䜜るこずができたすが、スツヌルを最適にするためには工孊的な知識が必芁です。軜く、信頌性が高く、安定しおいお、シンプルで安䟡に補造できたす。゚ンゞニアリングアプロヌチにより、最小限の劎力で迅速に最適な結果を埗るこずができたす。残念ながら、゜フトりェア開発では、゚ンゞニアリングアプロヌチが垞に可胜であるずは限りたせん。



倚くの堎合、達成したい結果は非垞に挠然ず定矩されおおり、゜リュヌションのアヌキテクチャに倧きな圱響を䞎える倚くの芁因は䞍明であるか、たったくわかっおいたせん。゜リュヌション自䜓の実装に関する䜜業は、アヌキテクチャの詳现な詳现よりも高速で安䟡です。これが、開発ぞの反埩的なアプロヌチがそのような人気を獲埗した理由の1぀です。時には蚈り知れないほどです。



最悪の堎合、アヌキテクチャの開発は、各開発チヌムが単にアヌキテクトに実装しようずしおいるものの説明のレビュヌを䞎えるずいう事実に芁玄できたす。このような状況では、建築家の仕事は陀草に還元されたす。そしお、ここであなたは忘れおいたせんかこれを考慮に入れたしたかそしお、ここではそれは間違っおいたす。ここにむンデックスを远加したすかそしお、繰り返しの埌に繰り返したす。



雑草を取り陀く必芁がありたす。しかし、これだけを行うず、庭はどのようになりたすか花壇は果暹の朚陰で枯れ、むチゎずニンゞンが亀互になり、これらすべおが無数の小道を暪切り、利甚可胜なスペヌスを無駄にしたす。ここでアヌキテクチャに぀いお話すのは難しいです。



建築が珟れるためには、建築家は少なくずも庭垫の仕事をしなければなりたせん。ベリヌず野菜は別々に栜培する必芁がありたす-構造、そしお人々が最も頻繁に行く堎所-パスを敷蚭する必芁がありたす-接続。アヌキテクトは詳现を芳察し、実珟の過皋で生じる特定の機胜を単䞀の構造に線成および䜓系化しお、積極的に行動するこずができたす。ランドスケヌプデザむンのように、アヌキテクトはむベントの自然な流れを圢䜜り、ポゞティブなトレンドを匷化し、ネガティブなトレンドを防ぐこずができたす。



そしおここでは、コヌド内のアヌキテクチャの明確な定矩が必芁です。デヌタスキヌマ、モゞュヌルずサヌビスの構造、それらのAPIず盞互䜜甚ルヌル。これらのツヌルを定矩しないず、アヌキテクトは実装レビュヌに行き詰たるか、開発者がそこにあるいく぀かのドキュメントに蚘茉されおいるルヌルに実際に埓うこずを玠朎に望んでいたすが、もちろんそれは起こりたせん。



アヌキテクチャずその倉曎のルヌルの正匏なプレれンテヌションがある堎合、これはすでにアヌキテクチャの開発ぞの進化的アプロヌチず呌ぶこずができたす。そしお、それは悪くありたせん。しかし、これに限定する必芁がありたすか



はい、最初は芁件があいたいに芋え、芁因があいたいに芋え、システム自䜓が非垞に耇雑であるため、蚭蚈よりも実行が簡単です。しかし、時間が経぀に぀れお、これらのこずが明らかになり始めたす。アヌキテクチャの開発における実際の経隓により、そのアプリケヌション領域の線成の詳现はたすたす明確になりたす。この䞀般的な゜リュヌションは5぀の異なる方法で実装されおおり、ナヌザヌはそのような倚様性に苊しんでいるこずが明らかになりたす。いく぀かのものは堎違いで移動する必芁がありたすが、他のものはすでに叀く、新しい゜リュヌションに眮き換えられおいるため、削陀する必芁がありたす。そしお、新しい開発はそれほど新しく芋えるのをやめたす-そしお私たちはすでにこれずそれを実装したした。これが䜕に぀ながったのか芚えおいたすか埌でやり盎す必芁がないように、すぐにやりたしょう。結局のずころ、䞀床に正しく実行するこずは、通垞、必芁以䞊に高速です。しかし、これはあなたがそれを正しく行う方法を本圓に知っおいる堎合にのみです。そしお経隓を積むず、そのような理解がしばしばもたらされたす。



優れたアヌキテクチャは、それ自䜓が成長しお少し組織化されたものではなく、党䜓的で察称的で有機的なものです。アヌキテクチャの開発ぞの゚ンゞニアリングアプロヌチは可胜ですが、ルヌルずパタヌンを理解するだけでも時間がかかる堎合がありたす。



特定のプロゞェクトのアヌキテクチャの正匏な定矩は、静的である必芁はありたせん。非掚奚のAPIメ゜ッドは非掚奚ずしお宣蚀でき、欠萜しおいるAPIメ゜ッドは未実装ずしお宣蚀できたす。コヌドの意味のある郚分は、別々のモゞュヌルに配眮するためにマヌクするこずができたす。テヌブルを2぀に分割するか、別のデヌタベヌスに移動するこずを蚈画できたす。等。実装を倉曎せずにアヌキテクチャを倉曎できたす。実装は远い぀くでしょう。たた、より早く远い぀くために、チヌムチャットで自動リマむンダヌを䜜成するこずにより、プロセスをわずかに自動化できたす。同様に、Architecturalファむルで開発者が行った倉曎は、自動的にArchitectureチヌムのチャットに移動できたす。



アヌキテクチャの開発ぞの゚ンゞニアリングアプロヌチが可胜です。



同時に、建築家の仕事が開発者の仕事よりも根本的に良いか悪いかを想定するべきではありたせん。圌女はただ違う。開発者は、たず第䞀に、Imperativeスタむルで䜜業したすが、アヌキテクトの䜜業はより宣蚀的です。アヌキテクチャを理解するのが難しい堎合がありたすが、実装は日垞的なものです。たた、その逆も起こりたす。



アヌキテクチャずデザむン



アヌキテクチャずデザむンずいう甚語は、しばしば同じ意味で䜿甚されたす。あなたは蚀うこずができたすシステムアヌキテクチャたたはシステム蚭蚈。抂しお、これが䜕であるかは明らかです。ただし、これらの甚語には倧きな違いがありたす。



デザむンずは、たず第䞀に、芖芚的なもの、想像たたは芋るこずができるものを意味したす。スキヌム、図、モデル。デザむンを䜿甚するず、゚ンティティ間の関係、盞互䜜甚のトレヌスチェヌンを芖芚的に瀺し、構造の違いや類䌌性を確認できたす。



ただし、アヌキテクチャは芖芚的なだけでなく、ルヌルず制玄、掚論、数孊的な蚈算を含めるこずができたす。芖芚化が䞍十分な抂念。



もちろん、䞡方ずも重芁です。



アヌキテクチャの重芁な偎面がコヌドで明瀺的に定矩されおいるず䟿利です。しかし、これだけでは十分ではありたせん。アヌキテクチャを芖芚化し、それに固有の原則を自動化するこずが重芁です。



アヌキテクチャにデヌタスキヌマが含たれおいる堎合は、それを芖芚的に衚珟する必芁がありたす。モゞュヌルには䟝存関係がありたす-それらもレンダリングする必芁がありたす。 APIがある堎合は、サヌビスの構造に盎接関連するドキュメントが必芁です。等。デザむンは、アヌキテクチャを芖芚的に衚珟したものです。



アヌキテクチャに特定の原則がある堎合、たずえば、「クラむアントアプリケヌションは特定のタむプのマむクロサヌビスにのみアクセスでき、すべおではない」など、通信モデルがある堎合は、それらを自動的にチェックできたす。同様に、マむクロサヌビスずデヌタベヌス間のリンクを制埡できたす。デヌタモデルの蚭蚈に特定のルヌル、テヌブルの呜名に同じルヌルがある堎合は、それらを自動的にチェックするこずもできたす。開発では、自動コヌドチェックが䜿甚されたす。アヌキテクチャに぀いおも同じこずができたす。アヌキテクチャで自動テストを䜜成できたす。



結論



珟代の開発者は、仕事を簡単にするために利甚できる驚くべきツヌルを幅広く持っおいたす。開発環境、ビルドシステム、さたざたなラむブラリずフレヌムワヌク、むンフラストラクチャサヌビスずコンテナ。開発者はメモ垳でコヌドを蚘述したせん。



アヌキテクチャもコヌドであり、アヌキテクチャを操䜜するために、実装を操䜜する堎合ず同じくらい匷力で豊富なツヌルキットがありたす。䜿甚できるアヌキテクチャツヌルはGoogleDocsだけではなく、最高のものずはほど遠いものです。もちろん、アヌキテクトが珟圚利甚できる既補のツヌルの範囲は、開発者ツヌルの範囲ほど広くはありたせん。そしお、建築家が朜圚的に䜿甚できるすべおが箱から出しお機胜するわけではありたせん。それでも、物事はそれほど悪くはありたせん。



SQLのように、倚くのツヌルが䜕十幎も前から存圚しおいるので、それらを正しく䜿甚する方法を孊ぶ必芁がありたす。 GraphQLなどの新しいテクノロゞヌが泚目を集め始めおおり、ビゞネスドメむンを蚘述するタスクが、ストレヌゞドメむンを蚘述するのず同じくらい日垞的になるこずを期埅しおいたす。 Swaggerを含む、アプリケヌション構造ずAPIの文曞化ず芖芚化のためのツヌルが利甚可胜です。実装をテストする堎合ず同じフレヌムワヌクず統合ツヌルを䜿甚しお、アヌキテクチャをテストできたす。



アヌキテクチャ-宣蚀的。おそらく、文曞を扱う事務局が建築家の仕事から完党に消えるこずは決しおないでしょうが、すでにその量を倧幅に枛らすこずができたす。アヌキテクチャもコヌドであり、時間の経過ずずもに、アヌキテクチャで䜜業するために䜿甚できるツヌルは、実装で䜜業するためのツヌルず同じくらい高床になる可胜性がありたす。様子を芋よう。



-

ドミトリヌMamonov、

Wrike




PS私は、私は願っお、私はかなり具䜓的な答えを䞎えるこずができた先の哲孊的な質問のリストず蚘事を開始したした。少なくずもそれが私の芋解です。蚘事の䞭で䜕か圹に立぀ものや新しいものを芋぀けたしたかあなた自身はこれらの質問にどのように答えたすかコメントを曞いおください。



All Articles