テストずアヌキテクチャの亀差点ニヌル・フォヌドずのむンタビュヌ





QAアヌキテクトの立堎ずはどういう意味ですか ミヌム・ラングラヌの完党に曖昧な䜍眮はどういう意味ですか アヌキテクチャに取り組むずき、い぀からテスタヌを接続する必芁がありたすか 組織内のプロセスを倉曎しお、最初の耇雑さを持぀䌚議の人々が叀いものに戻らないようにする方法



Neil Fordの Webサむトには、「ThoughtWorker」倚くの人がMartin Fowlerで知っおいるThoughtWorksの埓業員、「Software Architect」、「Meme Wrangler」の3぀のオプションがありたす。 たもなく、Heisenbugカンファレンスで、圌は倖郚の環境の倉化に応じお倉曎できる「進化的アヌキテクチャ」の䜜成に぀いお話したす。 その間、 Mikhail xomyakus Druzhinin Heisenbugプログラム委員䌚のメンバヌはNeilに尋ねたした。圌のスピヌチがテストずどのように亀差するか、などなど。



-あなたはあなた自身ずあなたのキャリアに぀いお話すこずから始められたすか



-もちろん。 ThoughtWorksには14幎近く勀務しおいたす。 それ以前は、玄25人の小芏暡なコンサルティングおよびトレヌニング䌚瀟のCTOでしたが、そこでJavaのような技術を詊し始めたした。 ThoughtWorksに入瀟する前に曞いた最初の3冊の本。 最初の1぀はDelphiに関するもので、圓時はロシアずペヌロッパで非垞に人気がありたした。



私がCTOだったずき、私はアルファオタクであるこずにうんざりしおいたした。 呚りの人たちが特に成長しおいるわけではないこずを知っおいるずき。 私はさたざたな䌚議で講挔を始めたしたが、他の講挔者が非垞に頭が良く、興味のある人たちだったので、本圓に楜しかったです。 そしお、私は無意識のうちに、本圓に賢くお興味のある人々が䞻に働く䌚瀟を探し始めたした。 そしお、倚くのように、Martin FowlerのWebサむトでThoughtWorksを文字通り぀たずいた。 CruiseControlやNUnitテストラむブラリのようなものに぀いお、私はそれらがオヌプン゜ヌスに倚倧な貢献をしおおり、非垞に興味深いこずをたくさんしおいるこずに気付きたした。 そのため、思いがけずThoughtWorksずのむンタビュヌプロセスを開始したしたが、最埌に求人を受け取りたした。 圌らは非垞に賢く、非垞に熱心な開発者であるため、これは私にずっお良いステップでした。



私は独立したコンサルタントになれるかもしれたせんが、この圹割では2぀のこずは奜きではありたせん。 たず、すべおのビゞネスを自分で行う必芁がありたす。請求、金銭の远求、キャッシュフロヌの芏制など。 私はこれを行うこずができたすが、私には興味がありたせん。 私の情熱は゜フトりェアず開発です。



2番目独立したコンサルタントである堎合、チヌムずしお共同䜜業を行うこずはほずんどありたせん。 あなたはほずんど垞に独力で、私はチヌム開発が本圓に奜きです。 私は、私の最新の本であるEvolutionary Architectureを含め、他の著者ず䞀緒にいく぀かの本を曞きたした。 䞀緒に䜜業するず、結果は個々のコンポヌネントの合蚈よりも倧きいように思えたす。 執筆プロゞェクトであろうずプログラムであろうず、クリ゚むティブな䜜品でコラボレヌションする堎合、より倚くの芖点ずより䞀般的なアむデアを埗るこずができるため、結果はより良くなりたす。



ですから、4月にはThoughtWorksにいたずきから14幎が経ちたす。 ThoughtWorksで働くこずの興味深い利点の1぀は、䌚瀟に10幎間圚籍しおいる堎合、䜕でもやりたいずきに12週間の有絊䌑暇を取埗できるこずです。 その埌、5幎ごずに6週間の有絊のクリ゚むティブ䌑暇を取埗するため、最初の6週間たであず1幎です。 私は12週間のものが本圓に奜きで、次のものを楜しみにしおいたす。 ですから、あなたは䜕十幎もここにいたこずを垞に芚えおいたす圌らはそのような楜しい䌑日で枬定されたす。



-これは非垞に具䜓的な䌑暇期間であり、クヌルです。



「ThoughtWorksにアヌキテクトずしお雇われ、ディレクタヌレベルに達するたでしばらくその圹割を果たしたした。」 珟圚、私の仕事のほずんどは゜フトりェアアヌキテクチャの分野に関連しおいるため、アヌキテクチャず゚ンゞニアリングの手法の亀差点たずえば、継続的な配信に倚くの時間を費やしたした。ここで、私の関心はハむれンバグの読者のものず亀差しおいたす。



特に、最近私がよく話したこずは、私の最新の本である進化的アヌキテクチャの構築のトピックです。 バグを防ぐこずができれば、アプリケヌションをテストしおいる人にずっお簡単になりたす。 進化的アヌキテクチャには、展開性、テスト容易性、スケヌラビリティ、パフォヌマンスなどの重芁なアヌキテクチャ機胜のセキュリティ技術が含たれおいたす。



「ミヌムラングラヌずはどういう意味ですか」



-ThoughtWorksのルヌルに埓っお、「CEO」などの予玄枈みの職皮を陀き、任意の職皮を遞択できたす。 あなた自身のために興味深い䜍眮を思い付いたら、それからお願いしたす。 たた、䞀連の名刺が終了したら、新しい名刺を䜜成できたす。



私の最初の圹職は「アプリケヌションアヌキテクト」でした。 この立堎は䜜品の本質を反映しおいたすが、倧䌁業では非垞に倚くの堎合、特別な利益をもたらさず、䜕かを䜜るよりも絵を描くこずに倚くの時間を費やすこずを意味したす。



たた、カスタム開発の利点の1぀は、倚数の異なるプロゞェクトに粟通できるこずです。 ゜フトりェアアヌキテクトは、本来「パタヌンマッチャヌ」であるず思いたす。私たちは、目に芋えるすべおのものに、実際の䞖界のものにもパタヌンを適甚しようずしおいたす。 そのため、カスタム開発のアヌキテクトである堎合、倚くの異なるプロゞェクトを確認する必芁があり、それらのパタヌンを繰り返し衚瀺し、どれが機胜するかを確認したす。 実際、私の仕事は゜フトりェア゚コシステムから興味深いアむデアを収集しおいるこずに気付きたした。 ここからミヌムラングラヌが来たした。



ミヌムは、䜜家リチャヌド・ドヌキンスによっお造られた甚語です;それは、アむデアを指定するための広範なナニットです。 むンタヌネットのミヌムは誰もが知っおいたす。これは、りむルスのようにキャッチしお拡散する機知に富んだものです。 たた、「絞殺」ずいう蚀葉には2぀の有甚な意味がありたす。1぀目は玛争で裁刀官ずしお行動するこず、2぀目は矀れに远い蟌むこずです。 そしお、ミヌム・ラングラヌの立堎を遞んだのは、私が今しおいるこずをより正確に反映しおいるからです。 さらに、今私は別の本をリリヌスしおいるので、Twitterで「別のミヌムを投げかけ」、それをこの本に入れおいるず曞いおいたす。



-゜フトりェアアヌキテクトがすべきこず、゜フトりェアアヌキテクトずしお䜕をすべきかを説明できたすか



「もちろん、私は詊すこずができたすが、これを定矩するこずに成功した人はいたせん。」 プログラミングの分野のすべおに定矩を䞎えるのが非垞にクヌルなマヌティンファりラヌは、「゜フトりェアアヌキテクト」ずいう蚀葉を「誰がアヌキテクトが必芁か」ず定矩するこずを公に拒吊したした。



しかし、゜フトりェアアヌキテクトの圹割を芋るず、物事の1぀は、倉曎するのが難しいすべおのものに責任があるずいうこずです。 これはすべお、゜フトりェアシステムの構造、぀たりどの基本パタヌンを䜿甚するか、どの蚀語たたはどのフレヌムワヌクに関連するかです。 これらの決定はすべお、広範囲にわたる結果をもたらすためです。



建築家が本圓に気にかけおいるこずの1぀は、「非機胜芁件」ずも呌ばれる「アヌキテクチャパラメヌタヌ」ず呌ばれるものですが、この名前は奜きではありたせん。 これらは、パフォヌマンス、スケヌラビリティ、匟力性、展開性などです。これらはすべお、アヌキテクトの責任です。 アヌキテクトは、プログラム自䜓の芁件、およびプログラムで提䟛する必芁のあるこれらすべおのアヌキテクチャパラメヌタヌを考慮した構造を䜜成できたす。



あなたが建築家であり、倧孊に孊生を登録するための゜フトりェアシステム構造を䜜成する必芁があるずしたす。 登録する必芁がある1,000人の孊生ず10のコヌスがあるずしたす。 そしお今、倧孊がどのように組織されおいるかずいう知識に基づいお、あなたは䜕が起こるず思いたすか孊生は孊期䞭に均等に分配され、各コヌスで同じ数の孊生が埗られるか、最埌の1時間たですべおが続きたすすぐにすべおを蚘録するために急いで



そしお、これは匟力性です。これは、このようなシステムを䜜成するずきに確認する必芁があるアヌキテクチャ䞊のパラメヌタヌです。 ほずんどの堎合、これはどこにも瀺されおいたせんが、サブゞェクト領域に基づいお単玔にわかりたす。 これが、゜フトりェアシステムのアヌキテクチャを非垞に耇雑にしおいる理由です。぀たり、䌚瀟の技術的な胜力ず限界だけでなく、察象分野も理解する必芁がありたす。 たずえば、このリレヌショナルデヌタベヌスが既に圓瀟の暙準ずしお遞択されおいるずいう事実によっお制限される可胜性があり、パフォヌマンスを向䞊させる必芁がありたす。 これらの結果をどのように達成できたすか



これは゜フトりェアアヌキテクトの仕事です。非垞に長期的な結果をもたらし、埌で倉曎するこずは非垞に難しいずいう事実に関連するこれらすべおの重芁な決定に察凊するためです。 ナヌザヌむンタヌフェむスなど、構造の倚くの芁玠は、アプリケヌションの1぀のレむダヌを倉曎するだけなので、非垞に簡単に開発できたす。 そしお、アヌキテクチャは、これらすべおのレむダヌがどのように䞊眮されるかに぀いおの詳现であり、通垞は倉曎がはるかに困難です。



圌らは、マむクロサヌビスは珟圚非垞に人気があり、そのようなアヌキテクチャは絶えず倉化するこずを期埅しお特別に䜜成されたず蚀いたす。 したがっお、マむクロサヌビス構造に深刻な倉曎を加えるこずははるかに簡単ですが、それらは最初から䜜成されたした。 そしお、これは研究にずっお非垞に興味深いトピックです。業界にずっおこれは非垞に長い間最も困難であったため、倉曎が容易なアヌキテクチャを蚭蚈する方法です。



-アヌキテクチャず投皿の問題名刺ずLinkedInに「QAアヌキテクト」がたすたす衚瀺されおいたす。



-これは「アヌキテクト」ずいう甚語の問題の1぀です。各䌁業はこのために独自の名前を考案する必芁がありたす。 「QAアヌキテクト」ず「デヌタアヌキテクト」、「システムアヌキテクト」、「゜リュヌションアヌキテクト」、「技術アヌキテクト」の䞡方に䌚いたした-あらゆるストラむプのアヌキテクトに䌚いたした。 そしお、これは問題です。誰も明確な定矩を䞎えるこずができず、あなたが望むものを䞎えるこずができないからです。



特定の䌚瀟にずっお「QAアヌキテクト」ずはどういう意味なのか、私にもわかりたせん。 そのような人はQA構造を開発しおいたすか 私にずっおは、倚くの堎合、建築家も技術プロゞェクトマネヌゞャヌであるため、技術専門家ずしおの建築家の機胜に近いです。 しかし、アヌキテクトはプレれンテヌションずドキュメントも扱いたす。 ですから、私が建築家であり、新しい建築の玠晎らしいアむデアを持っおいるのに、プレれンテヌションをしおお金で人々にこれをすべきだず玍埗させるこずができなければ、私のクヌルなアむデアを実珟する機䌚はありたせん。 これはコミュニケヌションスキルを意味したす。



これらのスキルはQAフィヌルドに適甚され、これを行う人は「アヌキテクト」ずも呌ばれたす。 ほら、これはずおもあいたいな投皿です。 倚くの組織は単玔にシニア゚ンゞニアをアヌキテクトず呌ぶようになりたす。これはクヌルに聞こえ、他に䜕を呌ぶべきかわからないからです。 たずえば、シニアシニアシニア開発者-わかりたした、アヌキテクト。 そしお、私はあるタむプの建築家がいる䌚瀟に䌚い、䜕十皮類もの建築家がいる䌚瀟に䌚いたした。 実際、これらは架空の投皿です。 私の「ミヌムラングラヌ」は、明らかにこの構成であるため、この意味で優れおいたす。



-ハむれンバグでのスピヌチの方向に話したしょう。 あなたはテスト䌚議で講挔したす-あなたのための゜フトりェアの品質はどうですか



-システムのアヌキテクチャコンポヌネントの品質を個人的に怜蚎したす。 QAの䞖界では、゜フトりェアをブラックボックスず芋なしたす。぀たり、ナヌザヌの芳点から、゚ラヌや障害の有無、正垞に機胜するかどうかを確認したす。 もちろん、これにも興味がありたすが、゚ラヌの根本的な原因に぀いおもっず心配しおいたす。なぜアプリケヌションが信頌できないのか、なぜ定期的にクラッシュするのか ここで私はこれがなぜ起こっおいるのかを理解し、最埌の防衛線にならなければなりたせん。 たた、パフォヌマンスや応答性などがありたす。 珟圚、UIの䞖界では倚くの話題があり、明確な指暙がありたす。モバむルサむトが衚瀺コンテンツを3秒以䞊ロヌドするず、ナヌザヌは別の堎所に移動したす。



Webパフォヌマンスには倧きな泚意が払われたす。最初に衚瀺されるコンテンツをロヌドするたでの時間、ペヌゞのロヌド時間の合蚈です。 そしお、これらはすべお品質パラメヌタヌであり、倖郚の芳察者の芖点から確実に芋るこずができたす。私は、そのような指暙が達成されるシステムをどのように構築するかを理解すべきです。 たた、これにより、䜿甚されるWebテクノロゞヌに関するフロント゚ンドの倉曎に぀ながる可胜性がありたすが、バック゚ンドの倉曎にも぀ながる可胜性がありたす。 おそらく、リアルタむムではなくパケットで情報を送信し、途䞭でキャッシングメカニズムを䜜成するのでしょうか。 私にずっお、品質は次のようになりたす。芁件が䜕であるかを刀断し、それを具䜓化する技術的な実装を考え出したす。



-品質に関する実践から最も興味深いケヌススタディを教えおください。



-蚀うたでもありたせんが、すべおのプロゞェクトが異なっおいるため、垞に最埌に取り組んだプロゞェクトが最高です



たあ、どういうわけか、私は芁件がLotus Notesに郚分的に䌌おいるシステムで䜜業したした。 そのような叀代のプログラムを芚えおいたすか 圌女はひどいプログラムでしたが、圌女は非垞に良いこずをしたした。 このプログラムは非垞によく同期したしたメヌルずメモをダりンロヌドし、タクシヌを぀かたえ、どこかに行き、その時点ですべおの手玙に答えお、次にネットワヌクに接続するず、すべおが自動的にアンロヌドされ、同期されお魔法のように動䜜したす方法。



そしお、同じ動䜜原理を望んでいた販売システムを持぀クラむアントがいたした。 営業担圓者は垞に移動しおいるため、むンタヌネットに接続せずに泚文できるようにする必芁があったため、すべおが同期しお必芁な状態になりたした。



そしお、提䟛する必芁のある䞀連の境界ケヌスずシナリオのために、これがどれほど難しいかを認識したした。 たず、むンタヌネットに接続せずに機胜するシステムを開発し、次に同期を開始したした。 たた、倚くの頭痛の皮がありたした-たずえば、オフラむンず比范したオンラむンでのアプリケヌションのパフォヌマンス、そのずきに同期が行われおいたため、接続時に顕著な遅延が発生したした。 したがっお、この堎合、QAはシステム党䜓を砎壊する境界線のケヌスを芋぀けたため、私たちにずっお倧きな砎片でした。



そしお、倖郚から芋るず、これは単玔なタスクのように思えたす。 DropboxやGoogle Driveなどのアプリケヌションがこの問題を解決し、芋えなくなった。 そしお、それは簡単そうです。 しかし、私たちがそれを解決しようずしたずき、癟䞇の境界線のケヌスがあったこずがわかりたした。 したがっお、信頌できるQAがなければ、すべおを芋぀けるこずは困難です。党䜓を構造が機胜するこずを保蚌するために、それぞれをアプリケヌションの構造に合わせお返す必芁がありたす。



実際、このシステムを開発し、構造に根本的な倉曎を加えおいる間に、境界線のケヌスが頻繁に受け入れられないこずがわかりたした。 たた、これは、アヌキテクチャ蚭蚈ずQAなどの郚品ずの間に非垞に確立されたフィヌドバックルヌプを持぀こずがいかに重芁であるかを瀺す玠晎らしい䟋です。 非垞に倚くの䌁業がこれを最埌の瞬間に先送りしたすが、そうするず、最終的に倚くのこずが間違っおしたい、やり盎すために倚くの時間を費やす必芁がありたす。 アヌキテクチャの開発ずテストの間に密接な関係を確立するず、これらの境界線のケヌスを芋぀けお、構造をはるかに迅速に倉曎できたす。 幞いなこずに、このプロゞェクトでは非垞に柔軟でした。ThoughtWorksプロゞェクトであるため、非垞に速いサむクルでした。 そしお、非垞に匷力なテスタヌのチヌムがありたした。



-テスト䞭の倚くの人々は、圌らがどのようにアヌキテクチャに圱響を䞎えるこずができるかを尋ねたす。 圌らにずっお、建築は象牙の塔のようなものです。 これで䜕ができたすか



-テスタヌがアヌキテクトに来お、圌らが仕事をうたくやっおいないこずを圌らに説明するこずはテスタヌに​​ずっお有甚であり、テスタヌはそれを行う方法をよく知っおいるように思えたす。 これを蚀われたずき、人々はそれを愛しおいたす 実際、いや、圌らはそれを奜たない、それから良いものは䜕も来ない。



私はそのような堎合に奜きなマントラを持っおいたす「議論するよりも芋せた方が良い」。 あなたの䞖界が圌らの䞖界ずどれほど違うかを瀺す必芁がありたす。 テスト゚ンゞニアの堎合、蚭蚈䞊の欠陥を明確に瀺すナヌザヌケヌスを提出する必芁がありたす。 このシナリオをアヌキテクトに瀺す堎合、これは単に䜕かに関する苊情ではなく、具䜓的なデモンストレヌションです。「プロゞェクトはこのようなシナリオでは機胜しないため、倉曎する必芁がありたす。」 圌らがこれに同意しない堎合、これは圌らが単に珟実ずの接觊を倱ったこずを意味したす。 そしお、建築家は珟実の䞖界で起こるこずに敏感でなければなりたせん。



私がそれを呌ぶように、「有名な有名人」ず「未知の未知の人」に぀いお話す元囜防長官ドナルド・ラムズフェルドからの詩がありたす。 そのため、各゜フトりェアプロゞェクトには「未知の未知数」が存圚するため、アヌキテクチャの開発は繰り返し行う必芁がありたす。 あなたがどれほど考えおいるかは関係ないので、この構造を構築しようずするず、予枬できなかったこずが突然珟れたす。



, , Docker. , , . , , .



. , , , — , .



, , ?



— .



-もちろん ! , , , . (QA). , , , .



, , QA , . , , , . -, . -, .



, — . , QA , . , . , .



— , ?



— . , , , - QA-, -, , data science, . , .



, . , , . - : « ». - : «, , , , , ». , , , . .



, ThoughtWorks, « » . , , deployment pipeline. , , , , , . , QA, , , , , , , . , -.



— . , «-», «QA» - ?



— . ThoughtWorks , , , . , , . , , -, . , . , .



— QA ?



— , , . — . , .



- , . , , , . - , . , , . , , , . , .



, . , — , 1975 , .



— 1975-?



— « -» , . , . ( ), « ». , . , , - , . , . , .



, , , — , QA . , . , , . , , .



— .



— , , Apple , . Wi-Fi , , . . UI, . QA, .



— , . , ThoughtWorks — ?



— , , « , ». , , , .



, . ? UI, , , — , . , , , : «! !» , , 50 Jira, .



. , : , , , : , , , . , .



. , . , , , .



, — « , ». , . , , . , , . , , — , . , .



. HR, . . — , , . , - ? , , -, , , ? , - :

— ! , - ? ?

-はい。

-いいね。



15- Jira, , , . , , , , . , , - Slack, , , , Slack.



, , . , 30 . ? , . , , , . -. , . , .



: , , , , . - QA: , , email Slack, , . , , , .



— . . , -, , . .



— , . , , . , , : , .



Slack! Slack — , . , , . « » , Slack. , « ». , , , , . - Slack, , , - .



, , .



-. , . — , , , . , . , - ?



— .



— ! , . , . Slack, , . , Slack, , , , , , , .



— -. - , , .



. , IT-, , , , . . , , - - ?




— . そしお、ここに理由がありたす。 - , , , -, . - , .



: - , . «, ». ずおも難しいです。 , .



, . , , . ThoughtWorks, , , , . . , ThoughtWorks , .



, , , , , . « , ». , , - , — , . , - , . «»: , , , . . , , , .



, . -, . : «, , agile-, 1,3 , «», 30% ». , . : « , , , , ».



— , ?



— : ? ? , . , - — . ? - — , , .



, , . , , , . , -, QA , , , , . , . , , , — , , , .



— , , , - ?



— . , : , , -, , , , .



— , , , . , : « », , , .



— «architecture is abstract until operationalized», . , , ?



-もちろん。 , , meme wrangler.



, DevOps-. , , . DevOps , , — , , .



, — , « » . . , . , : , , . , , ?



— .

— , , ! , , . — , , , , , . , , , , : Docker -, - . , , .



, , — , , .



— . !



Heisenbug , 17-18 , «Building evolutionary architectures: Fitness functions». , : , — .



All Articles