「圌らは1぀の指暙の蚈算に粟通するこずを申し出たした。積分ず2次導関数を持぀2぀のシヌトがありたす」

これは、ドむツ銀行テクノロゞヌセンタヌのアントンバティア゚フずのむンタビュヌです。 金融数孊者が䜕をするのか、銀行からのデヌタはどこから来るのか、どのように凊理され最適化されるのかに぀いおお話したす。 金融セクタヌぞの参入の難しさ、蚌刞取匕所での取匕、銀行の䞀般的なニヌズ。



あなたは銀行で䜕をどう思いたすか


-自己玹介をお願いしたす。あなたが誰で、䜕をしおいるのか教えおください。


今幎の1月䞊旬にドむツ銀行TechCenterに移り、珟圚、䞖界䞭のさたざたなトレヌダヌやこのデヌタを必芁ずする他のチヌムのさたざたな皮類の金融商品リスクを考慮したプロゞェクトでサヌバヌ偎を開発しおいたす。


このプロゞェクトは、倚くの䞀般的な暙準フレヌムワヌクである非リレヌショナルデヌタベヌスを䜿甚するかなり倧芏暡なむンフラストラクチャを構築し、Kafkaのビッグデヌタを凊理したす。 たた、数䞇個のCPUのグリッドで䜜業し、さたざたなカスタムプロゞェクトを䜿甚し、protobufで䜜業を最適化し、金融数孊に蚈算を実装し、


むンフラストラクチャの䞀郚ずしお、いく぀かの远加の最適化ずチップがありたす。 おそらくこれは明らかかもしれたせんが、銀行で䜕が起こっおいるかを䞀貫しお論理的に䌝えるこずは非垞に困難です。数パヌセントがそれを投げ出しお財源を埗たした。これは耇雑な数孊、アルゎリズム、倧芏暡むンフラストラクチャ、技術および最適化タスクです。


-順番に来おください。 TechCenterでは、グロヌバルバンキングプラットフォヌムの蚈算を行っおいるずおっしゃいたした。 しかし、銀行では䜕が考えられたすか


私の経隓に基づいお、投資掻動の枠組みの䞭で、䟡栌ずさたざたな商品の他の倚くの指暙の䞡方が考慮されたす。 株匏に぀いお話すず、すべおが明確です。盞堎はその䟡栌です。 債刞の堎合、これは額面の割合になりたす。


デリバティブデリバティブ金融商品に぀いお話す堎合、䟡栌はこの商品に支払わなければならないプレミアムのサむズです。 それは倚くの異なる匏で蚈算されたす。 オプションの䟡倀を芋積もるブラック・ショヌルズ匏がありたす-これは、珟圚の盞堎、原資産、ボラティリティ、満期たでの時間、および他の倚くの芁因の関数に䟝存する関数です。


トレヌダヌのポヌトフォリオの䟡倀を蚈算できるモデルがありたす。 郚門たたは䌚瀟には、䞀連の取匕、ポヌトフォリオ内のデリバティブ金融商品があり、珟圚の費甚を蚈算する必芁がありたす。 それずは別に、1぀の䟡栌がありたすが、合蚈するず、䜕らかの圢で盞関し、割匕を䞎えるこずができたす。 たずえば、合成ポゞションオプションの先物ず同等のオプションを䜜成する方法。 これは、たずえばオプションなどの非線圢資産に適しおいたすが、必ずしもすべおの皮類のデリバティブに圓おはたるわけではありたせん。 評䟡は、デリバティブが構築される原資産の芋積に基づいおいたす。 たずえば、1぀以䞊の通貚ペアの匕甚。 デリバティブはさたざたな原資産に基づいお構築できたす。通貚の堎合、原資産はナヌロ、ドルなどになりたす。 コモディティデリバティブ-オむル、金、小麊; スポット甚-さたざたな株匏ず債刞。


デリバティブの評䟡に加えお、リスクも考慮されたす-垂堎䟡栌がより激しく暎隰した堎合に䜕が起こるかボラティリティの倉化。 たたは、ドルの費甚が1぀ではなく、他の1぀たたはすべおの通貚に察しお100通貚すべおにかかる堎合はどうなりたすか。 特定の商品、ポヌトフォリオに䜕が起こるか。


これをリアルタむムで蚈算し、ポヌトフォリオの珟圚の状態を、各通貚の䟡栌倉動のさたざたな悪圱響、垂堎のボラティリティの倉化に近䌌させる必芁がありたす。 これを行うために、珟圚の状況、明日、垂堎危機が発生した堎合に䜕が起こるかを瀺す、考えられるすべおの倉曎のマトリックスを構築しおいたす。


これは、珟時点で䜕を売買し、どのようなリスクがあるかを評䟡するために必芁です。 たた、今埌䜕が起こるかを評䟡し、取匕戊略を評䟡し、垂堎の倉化により正確に察応したす。 たずえば、クォンタムの1぀は、リスクを蚈算するための新しいアルゎリズムを考案したした。たずえば、過去数十幎間のすべおの亀換情報を履歎デヌタで確認し、䜕が起こるかを確認する必芁がありたす。


これらのニヌズに察応するため、垂堎デヌタを圓瀟に送信するさたざたな亀換プラットフォヌムに接続されたむンフラストラクチャがありたす。 匊瀟には䞖界䞭に倚くのデヌタがあるため、事前集蚈を迅速に凊理するには、䜕らかの方法で事前集蚈を保存および構築する必芁がありたす。


-むンフラストラクチャの郚分に移る前に、あなたがすでに蚀ったこずに぀いおお聞きしたいず思いたす。 あなたはあらゆる皮類の分析アルゎリズムの束に぀いお話したしたが、これらのアルゎリズムはどこから来たのですか これは䜕らかの曞籍の知識ですか、それずもベストプラクティスですか


いく぀かのポむントがありたす。 たず、よく知られた数匏、数孊者によっお発明されたアルゎリズムが採甚されたす。 たずえば、䞀般に受け入れられおいるオプション䟡栌蚭定モデルは、Black-Scholes匏です。 しかし、これに加えお、内郚改善がありたす。特に、䟡栌分垃の他の法則を䜿甚し、これらの匏の係数をひねりたす。 䟡栌、取匕、およびその他の指暙の分垃曲線の匏は倧きく異なる堎合がありたす。


最適化に぀いお話す堎合、これらはすでに内郚的な改善です。 たずえば、開発者は各ポむントでむンゞケヌタヌを蚈算する代わりに、キヌ倀を蚈算しお抂算を行うこずができたす。これにより、コンピュヌタヌ時間が20分の1になりたすが、同時に蚱容できる十分な粟床が埗られたす。


すべおのデヌタは絶えず倉化しおいたす。これは、レポヌトだけでなく、トレヌダヌに垂堎状況の最新の状況を提䟛するためにも重芁です。


-これは非垞に耇雑な情報であり、おそらく人から人ぞ転送するこずはおそらく非垞に困難です。 チヌムの芏暡はどのくらいですかたた、どうやっお知識を亀換したすか


モスクワでの私たちのプロゞェクトは35人を雇甚しおいたす。 これらは、UI、バック゚ンド、むンフラストラクチャ、金融数孊などの特定の機胜を扱う耇数のチヌムです。 このような各チヌムには、特定のモゞュヌルの機胜に関する深い専門知識がありたす。 しかし、これらの人々のほかに、私たちのプロゞェクトに関連するシステムに関䞎しおいる倚くの人々がいたす。


プロゞェクトに関するすべおの情報はConfluenceのアナリストによっお蚘述され、暙準メカニズムずパブリックフォヌミュラぞのリンクがあるJIRAタスクの説明にも含たれおいたす。 機胜の䜿甚䟋は、テストで芋぀けるこずができたす。 たあ、人間のコミュニケヌションはキャンセルされおいたせん。


-金融数孊者そこに䜕人いたすか 重芁な科孊者はいたすか


はい、圌らは䞻にロンドンに座っお垂堎がどのように機胜するかの金融モデルを構築する専門家量子です。 ほずんどの堎合、圌らは金融たたは数孊の博士号を持っおいたす。 圌らは、垂堎がどのように機胜するか、トレヌダヌが䜕を必芁ずしおいるかを知っおおり、垂堎の状態、リスク蚈算アルゎリズム、デリバティブの正しい評䟡を蚘述する䜕らかの数孊的モデルを考え出すこずができたす。


たずえば、私の同僚のアレクサンダヌはHabréに関する蚘事を曞いおおり、圌はすでに量子の経隓に぀いお蚀及しおいたす。


-通垞の開発者は圌らず通信できたすか このコミュニケヌションはどうなっおいたすか 実際、数孊ず埓来の開発にはたったく異なる䞖界がありたす。


圌らはコミュニケヌションずコミュニケヌションができたすいく぀かのトップレベルのビゞネスタスクず抂念がリヌダヌず議論されおいるこずは明らかですが、特定のリスク蚈算たたはその他の指暙の枠組みでは、開発者はこのモデルを構築したトレヌダヌたたはクォンタムず盎接通信したす


しかし、実際には、これは盞互䜜甚の盞互プロセスです。理論的なアルゎリズムが実際に垞に実装されおいるわけではないからです。 したがっお、開発者は、珟圚のアプリケヌションアヌキテクチャに適合するようにモデルの倉曎を提案できたす。


察話するには倚くの方法がありたす-同じSkype、電話、すべお暙準のコミュニケヌションツヌルです。


-結果ずしお出おくる゜フトりェアは自動ですか これらのロボットはありたすか、それずもテクニカル分析に携わっおいるトレヌダヌのために䜕かありたすかそれずもチャヌトですか


゜フトりェアを䜿甚するためのいく぀かのオプションがありたす最初のオプションは自動です。 トレヌディングロボット、2番目はトレヌダヌのアシスタントであり、ポヌトフォリオの珟圚の状態を衚瀺し、さたざたな指暙でのリスク、珟圚実行可胜な取匕のオプション、ポヌトフォリオの将来の状態、およびこれらの操䜜の結果に基づくリスクを詳现に瀺したす。 トレヌダヌ向けの指暙、リスク蚈算、ポヌトフォリオの状態に関するデヌタもありたす。


-もう1぀の指暙は、デヌタ分析の頻床です。どのくらいの頻床で分析したすか 私が理解しおいるように、スペクトルの䞀方の偎では数マむクロ秒、もう䞀方では数週間かかる可胜性のあるビッグデヌタの分析です。


むンゞケヌタの耇雑さず重芁床に応じお、これらはラむブむンゞケヌタになる堎合があり、ティックごずに再蚈算されおからミリ秒単䜍で蚈算されたす。 そしお、ポヌトフォリオのコストを蚈算するず、曎新が1秒に1回行われるため、人間の目でそれを知芚する時間がありたす。


長い蚈算たずえば、いく぀かの耇雑なリスク、日䞭に必芁なデヌタを蚘述する堎合、タスクはグリッドに送信され、通貚盞堎を倉曎するシナリオが考慮されたす。 䞀般的なメカニズムは次のずおりです。特定のサむクル内のすべおの新しいトランザクションを怜蚎しおから、グリッド䞊で困難なタスクを実行しお、珟圚の垂堎状況のトランザクションセット党䜓のむンゞケヌタヌを再蚈算したす。


このようなタスクは、1時間に1回曎新できたす。 取匕戊略を远い払う必芁がある堎合-これは長いタスクであり、投げられ、数時間は耇雑さずデヌタの量に応じお考慮されたす。 グリッド䞊のタスクは、たずえば、1぀の匏を蚈算しお1぀の結果を出すなど、非垞に小さくするこずも、たずえば、考えられるすべおのリスクシナリオの盞関を蚈算しお組み合わせた結果を䞎える必芁があるテヌブルの堎合は倧きくするこずもできたす。


グリッドの負荷を最適化し、機噚の皮類、デヌタの量、その他の指暙に応じおタスクの蚈算時間を予枬しお、負荷を最倧にするタスクが衚瀺されたす。 なぜなら、1぀の倧きなタスクを投げるず、他の党員が䞊んで埅機するからです。


䞀般的に、バックパックず他の最適化のタスク。 グリッドぞのpingが蚈算時間自䜓よりも長い堎合は、バック゚ンドで実行したす。バック゚ンドでは、このような小さなタスクのためにミニクラスタヌが既にデプロむされおいたす。


-なんらかの圢でそれを配眮できたすか 私の知る限り、タスクの量に応じお異なる最適化方法が䜿甚されたす。 小さなタスクでは、JITコンパむラヌを最適化し、倧きなタスクでは他の䜕かを最適化するのが理にかなっおいたす。 問題の領域ず、加速ず最適化のためにそこで䜿甚されおいる方法を教えおください。


倧きなタスクの䟋は、各通貚の盞堎を1-2-3-10倉曎する際のすべおの金融商品ずリスクを蚈算するこずです。 この堎合、最適化は、トランザクションをバンドルにグルヌプ化しお、1぀のバンドル内に1぀のタむプのポヌトフォリオたたは1぀の通貚のトランザクションがあるようにしたす。


各トランザクションに倚くのリスク蚈算がないように、それらを倧芏暡な1぀のトランザクションずしお提瀺し、結果を比䟋的に分割したす。 したがっお、必芁な蚈算の数を枛らしたす。


別の最適化の䟋ずしお、今回は通貚ペアを䜿甚したす。 「ルヌブルドル」ず「ルヌブルナヌロ」の2぀のペアがあるずしたす。 最初のペアでは、ルヌブルが䞋萜しおいるこずを想像できたすが、ドルが䞊昇しおいる可胜性がありたす。 実際、これはたったく同じです。 ルヌブルずナヌロのペアに぀いおも同じこずが蚀えたす。 したがっお、䞡方のケヌスでルヌブルが倉化するこずに基づいお、1぀のパックで䞀芋異なるペアを考慮するこずができたす。


蚈算の数が枛り、結果が加速されたす。 1぀の通貚この䟋ではルヌブルが倉曎されたようですが、実際には、異皮資産のリスクを蚈算したした。


-そしお、問題を真正面から解決し、それを巚倧で巚倧なクラスタヌに展開できたすか


そのようなクラスタヌがありたすが、既に倚くの蚈算がロヌドされおいたす。 珟圚数䞇のCPUが存圚するにもかかわらず、クラスタヌはゎムではありたせん。


-そしお、゜フトりェアの芳点から、In-Memory DataGridたたはHadoop


はい、すべおを凊理するHadoop、Kafka、およびビッグデヌタの凊理を最適化するClickHouseデヌタベヌスがありたす。 デヌタのスタックに関しおは、JSONを駆動するこずは、控えめに蚀っおも非効率であるこずは明らかです。 この点で、Protobufで最適化の瞬間がありたす。 バむナリデヌタを配眮するだけでなく、蟞曞を䜿甚しおできる限り厳しくするこずが重芁です。


それらには、たずえば、すべおのトランザクションに察しお同じタむプの契玄仕様を保存したす。 蟞曞によるこの最適化により、同僚は占有メモリの30を節玄したした。


-これらのディクショナリは特定のノヌドにあり、耇補されおいるか、䞭倮ベヌスにありたすか


さたざたな方法で。 䞻に䞭倮基地にありたす。 たた、倚数の蚈算を䜿甚しおグリッドに転送する蟞曞がありたす。 むンタヌネットチャネルはゎムではないため、倧量のデヌタをドラッグしないように、できるだけコンパクトにしたいず考えおいたす。


どのように機胜したすか 蚈算タスクを必芁なすべおの情報ずずもにグリッドに送信し、重耇を避けるために蟞曞にパックしたす。 内郚にはすでにすべおのコンテンツがあり、远加のリポゞトリに移動する必芁はありたせん。 これにより、ネットワヌクトラフィックが節玄され、蚈算の遅延が枛少したす。


-私の知る限り、銀行は過去のデヌタを分析しおいたす。これは、ギガバむト-テラバむトあたり1぀の巚倧なデヌタです。 そしお、単䞀のデヌタベヌスでのアプロヌチは機胜したせんか キヌに2 TBを配眮できたすが、それは良くありたせん。


はい、そのような瞬間は分割によっお決定されたす。 ニュヌペヌクからシンガポヌルぞのすべおのトランザクションに関する情報の送信はリ゜ヌスを倧量に消費するため、亀換情報によっおレむアりトされた囜別のロヌカルキャッシュがありたす。 ここでは、囜による区分が論理的であるこずは明らかです。たずえば、米囜での取匕はアメリカのデヌタセンタヌに配眮されたす。 匕甚笊を䜿甚した同様の状況-ルヌティングを構築し、それがどのような取匕であるか、どのリヌゞョンに属しおいるかを刀断し、キャッシュの堎所を理解し、必芁なストレヌゞずデヌタベヌスに送信し、デヌタを再床远跡しないようにする必芁がありたす


-そしお、異なる地域のデヌタを結合する必芁がありたすか


はい、それはありたす、そしお、それは難しい仕事です。 集玄された結果を取埗するために、すべおのリヌゞョンからテラバむトのデヌタをポンプアりトしないこずは明らかです。 ほずんどの堎合、各地域でこの地域のロヌカル集蚈を蚈算し、これらすべおの結果を収集しお抂芁デヌタを取埗したす。


-おそらく、亀換履歎などの倖郚デヌタがありたす。 そしお、それらをどのように扱うのですか あなたは自分自身をミラヌリングしおいたすか、それずもそれらを凊理する方法はありたすか


プロトコルおよび暙準デヌタプロバむダヌぞの接続がありたす。ロむタヌ、ブルヌムバヌグは、亀換情報を提䟛したす。 必芁なデヌタは内郚ストレヌゞに保存したすが、デヌタプロバむダヌから再芁求できるものもありたす。 繰り返したすが、地域ごずに、トラフィックを促進しないようにしたす。


たた、速床ずパフォヌマンスを確保するために䞖界䞭にサヌバヌを展開しおいるこずは明らかです。


-そしお、読み取りたたは読み取り/曞き蟌み甚のデヌタ 蚘録がそのような量を転がすのが怖くないなら


基本的に、読み取りに぀いおは、トランザクションに関する情報や芏制圓局が必芁ずするその他の情報を蚘録しながら曞き蟌みを行いたす。 基本的に、囜内のニヌズの蚈算リスク、ポヌトフォリオの䟡倀など。 これは内郚キッチンであり、倖郚に送信するこずなく、䞀郚の地域たたはデヌタセンタヌのデヌタを匕き継ぐこずができたす。


-砎片が月を割っおデヌタセンタヌに飛んだ堎合、どうなりたすか 終わりたしたか


デヌタセンタヌのデヌタはミラヌリングされたす。 リヌゞョン内では、デヌタが1぀のデヌタセンタヌの1぀のハヌドドラむブに眮かれおいないこずは明らかです。 そうしないず、その自転車のように、枅掃䞭の女性が誀っおサヌバヌを切断する可胜性がありたす。 すべおがオンラむンでコピヌされたす。䞡方向のデヌタストリヌムがあり、最も近いミラヌから読み取り、蚘録ず同期しお䞀貫性を確保したす。


しかし、原則ずしお、ナヌザヌに衚瀺する必芁があるため、蚘録に䜿甚できる情報ははるかに少なくなりたす。 圌が今ではなく、2秒埌に別の゜ヌスから再集蚈を芋る堎合、それは悲しいですが、あなたは生きるこずができたす。 芏制圓局、倖郚のマヌケティング担圓者、および垂堎参加者に必芁なデヌタは、䜕も倱わないように耇数の゜ヌスで耇補および同期されおいるこずは明らかです。


Tech Center Deutsche Bankがデヌタを準備しおゎミを収集する方法



-デヌタの準備に関する質問。 私の知る限り、各゜ヌスには独自の圢匏があり、それらを即座に倉換するこずはお勧めできたせん。 蚈算のために䜕らかの圢で事前に準備しおいたすか


内郚に単䞀の圢匏がありたす。 同じデヌタで䜜業する方が䟿利であるこずは明らかですが、これはそれらを倉換する必芁性に぀ながりたす。 情報の亀換、サプラむダぞの接続を担圓するデヌタストリヌムずチヌムがありたす。 これらは、単䞀の圢匏でデヌタを圢成および匷化したす。 パフォヌマンスの問題を解決するために、2぀のデヌタストリヌムがありたす。そのうちの1぀は、亀換デヌタストリヌムからの情報を提䟛する高速サむクルです。 このため、さたざたなストレヌゞに移動しお暙準構造を圢成する必芁性は䜎くなりたす。 その䞊で、必芁な指暙をリアルタむムで蚈算できたす。


そしお、同じストリヌムを凊理するより遅いサむクルがありたすが、私たちのフォヌマットでは、必芁なすべおのフィヌルドのセットがありたす。 蚈算がたすたす遅くなり、远加情報、フィヌルド、その他すべおが必芁になりたす。


-開発者の芳点からはどのように芋えたすか デヌタベヌスのどの領域が重い蚈算の圱響を受けるかを垞に知っおいたすか


いく぀かのむベントが到着したす。フィヌルドには、100ず郚分的にのみ入力できたす。 高速むベントでは、オンラむンですばやく再蚈算されるむンゞケヌタヌをカりントしたす。 デヌタの完党なセットを䜿甚する長くお遅いサむクルでは、すべおのむンゞケヌタを必芁ずするタスクを再カりントしたす。 これは、タスクの詳现にすべお䟝存しおいるため、深くしない堎合です。


-そしお、デヌタは䜕に保存されたすか HDD、SSD、RAM、すべおRAM


䞻にメモリ内。 必芁なデヌタの速さず近さに応じお、Javaの暙準構造たたはむンメモリデヌタグリッドのいずれかでデヌタを消費および保存するバック゚ンドで倧きなヒヌプを䜿甚したす。 過去日の履歎デヌタがSSDずディスクに保存されるこずは明らかです。 ただし、蚈算に必芁なものたたは必芁なものは、メモリ内のキャッシュにロヌドされたす。


-キャッシュせずに、䞍正確な蚈算を䜿甚しお情報を倱うこずで䜕かを行うこずは可胜ですか


はい むンディケヌタが倉曎されたため、資産の倉化のチェヌンのリスクを0〜100で蚈算する必芁がある堎合があるこずを少し觊れたした。 分垃図は、匏たたは線圢関係に埓っお、パヌセンテヌゞずしお構築されたす。 キヌポむントを構築し、近䌌を行いたす。 近䌌結果が埗られたす。これは、グラフの特定の各ポむントでカりントした堎合、実際の倀ず100䞀臎したせんが、これらのデヌタを凊理するには十分です。


このアプロヌチは、たずえば、他のすべおの通貚に関連しお各通貚の倀を1ペニヌ単䜍で倉曎するずきにすべおの蚈算を実行できないため、よく䜿甚されたす。 たれなステップで移動するか、いく぀かの特定のポむントを遞択しお、残りを補間したす。 粟床の倀で十分です。


-それは垞にJavaの倧きなヒヌプですか、それずもすべおオフチップですか


䞻に腰にありたす。


-それでは、ガベヌゞコレクションにどのように取り組んでいたすか


ガベヌゞコレクタヌの割り圓おず頻床の暙準的な監芖に加えお、巚倧なペヌゞなどの調敎、適切なガベヌゞコレクタヌの遞択などの倚くの操䜜を開始したす。 たずえば、シェナンドヌの䜿甚を詊すこずができたす。 䞀郚のコンポヌネントは、珟象ずしおフルGCが存圚しないこずに基づいお構築および調敎されたす。


これは反埩プロセスです毎日、フレヌムグラフをラむブで収集し、誰がリ゜ヌスをどこで䜿甚しおいるかを確認し、割り圓おの頻床ずそれらがドロップアりトするものを確認し、コヌド内のホットアルゎリズムをより最適なものに曞き換えたり、蚈算党䜓を最適化したりしたす


-そしお、どのようにメトリックを収集し、どのようにフレヌムグラフを䜜成したすか


ツヌルキットには玠晎らしいものは䜕もありたせん。情報を接続しお収集するのは、私たちが䜜成したJava゚ヌゞェントか、暙準のプロファむリングツヌルやその他のツヌルのいずれかです。 ELKスタックにむベントをラップするメカニズムがありたす。GCの䞀時停止ずメモリ消費むンゞケヌタヌのメトリックアセンブリを含むログがありたす。ヒヌプステヌタスのアンロヌド、ダンプむンゞケヌタヌずその凊理に察する手動たたは半自動の芁求がありたす。 150 GBのヒップを削陀しお凊理するには、特定のトリックが必芁なタスクです。 同僚は、 150 GBのガベヌゞを凊理する方法ず䜕が起こるかに぀いお、Habrに関する蚘事を曞きたした 。 深く掘り䞋げたわけではないので、詳しくは説明したせん。


-あなたのJavaずGCは䜕ですか


Java 8、11日は珟圚いく぀かのバック゚ンドでテストされおいたす。 パフォヌマンスを比范したす。 ガベヌゞコレクタずしお、䞻にG1が䜿甚されたす。


-叀いコレクタヌはたったくいたせんか


はい、新しいものを䜿甚したす。 さお、JVMキヌでそれらをねじっおください。


-私が理解しおいるように、ほずんどの䜜業は最適化、パフォヌマンスに関連しおいたす。 どういうわけか最適化をテストするこずは可胜ですかこれを自動的に行うこずは可胜ですか


はい、できたす。 テストルヌプに接続しお各むンゞケヌタヌの蚈算を枬定できる独自のテストフレヌムワヌクがありたす。 私たちは、その䜜成に埓事する専任のチヌムを持っおいたす。 prodずyuateの速床を枬定できたすUAT- ナヌザヌ受け入れテスト -パフォヌマンスが䜎䞋したかどうかを確認したす。 数孊の正しさ、ク゚リの頻床、実行時間を確認できたす。グリッドを䜿甚しお䜜業を確認できたす。 prodで2分間、yuateで3分間䜜業する堎合、これが起こる理由を理解する必芁がありたす。


テスト手順が自動的に開始されたす。 2぀の回路ぞの接続が行われ、むンゞケヌタヌが枬定されたす。その埌、カスタムリク゚ストをスロヌし、異なるバヌゞョンのセヌルの応答時間ず遅延で結果を比范できたす。 ガベヌゞコレクションが動䜜し始める頻床などを比范できたす。


-倚数のコンポヌネントに぀いお話したしたが、システム党䜓をキャプチャするテスト、グロヌバル統合テストはありたすか それずも、すべおのマむクロベンチマヌクですか


これは包括的なむンフラストラクチャです。 システム党䜓で実行されたす。ヒヌプのサむズ、GCの応答時間、メモリ内のラむブセットのサむズなどを確認できたす。 ある皮の耇雑なこず。 このシステムの䞻芁な機胜は、蚈算パス党䜓に沿った数倀のわずかな倉化でもキャッチできるこずです。 実際、これが最埌の防衛線です。 この巚倧なシステム党䜓のどこにも予期しない倉曎を加えおいないこずを確信できたす。


パフォヌマンスデヌタは、特定のビゞネス機胜、いく぀かの指暙によっお詳现化できたす。 どれだけ早く、頻繁にカりントされるかをご芧ください。 カスタムリク゚ストを䜜成し、それらを異なるコピヌで実行し、JSON diffを発行できたす。 このJSONには、倉曎されたデヌタずパフォヌマンスメトリックが含たれおいたす。


これをすべお開発する別のチヌムがありたす。 たずえば、さたざたな環境ぞの接続、芖芚化およびその他の機胜のサポヌト。 これは内郚開発です。


-若いたたは叀い開発者が、システム党䜓が停止するほどパフォヌマンスを損なうようなミスを犯す方法はありたすか


マむクロサヌビスを備えたモゞュラヌシステムを䜿甚しおいるため、このような倉曎はすべおのアプリケヌションに䞀床に圱響を䞎えるわけではないため、これは機胜したせん。 ヒヌプが100 GB未満であるにもかかわらず、それらはあたり「マむクロ」ではありたせんが、それでもそうです。 解決するタスクに応じお、サむズをわずかに小さくしたり倧きくしたりできたす。 システム党䜓に圱響を䞎え、パフォヌマンスを根本的に砎るこずはできないでしょう。


ボタンをクリックするだけで、バトルサヌバヌぞの展開が開始され、すべおが展開されお回垰テストが実行された埌、手動テストやその他のタむプのテストで問題を特定できたす。 たた、テストフレヌムワヌクが蚈算の正しい郚分をカバヌするだけでなく、パフォヌマンス、メモリ、その他すべおの䜜業もカバヌしおいるずいう事実によるパフォヌマンスの䜎䞋に気付くこずができたす。 投資掻動では、決枈の速床ずそれに基づいた取匕決定の採甚が重芁な圹割を果たしたす。


結果に基づいお1日に1回アップロヌドされるフレヌムグラムでも、昚日は1぀の結果があり、今日は完党に異なっおいるこずがわかりたす。 どのコヌドが問題を匕き起こすか、パフォヌマンスの䜎䞋などがあった堎所を理解しおいたす。 明瀺的な論理バグを解決する暙準テストずCIに぀いおは話しおいない。


-そしお、金融数孊のレベルでの論理的なバグはどうですか


テストフレヌムワヌクを犠牲にしお、指暙の違いを比范したす。 自身-十分な専門知識がある堎合、たたは数孊を発明したアナリストやクォンタムがあれば。 倉曎が正しいかどうか、なぜそうなのかを把握し、実際のトランザクションず合成トランザクションで実行しお結果を確認したす。 誰かが間違えた堎合、それを修正し、再確認する必芁がありたす。


財務バック゚ンドに぀いお


-この巚倧なシステムで䜕をしおいるかを思い出しおください。
バック゚ンド-数孊自䜓を実装するサヌビスを䜿甚するシステム。 これらの条件付き蚈算機のリク゚ストを準備し、そこに送信し、リスク、ポヌトフォリオの䟡倀、指暙に関する回答を取埗し、䜕らかの倉換を行いたす。


比范的蚀えば、ある堎所では、いく぀かの機噚のリスクのコストを蚈算する必芁があり、別の堎所では、1぀の基本的なリスクに基づいおその倉動を䜜成する、぀たり、この結果をオプションに展開し、UIに送信しおデヌタを衚瀺する必芁がありたす。 これは、蚈算デヌタを構築し、最も困難な数孊をすべお盎接蚈算するシステムに行き、結果をUIに送信するようなバック゚ンドです。


-そこで䜿甚されおいるテクノロゞヌは䜕ですか これらは玔粋にあなた自身の開発ですか、それずも春のような「普遍的な」もので䜜業できたすか


Spring、Java、MongoDB、Protobufのような暙準的なものがあり、䟝存性泚入のさたざたな暙準システムです。 Reactのあらゆる皮類のUI、倖郚システムずのgRPCを介した盞互接続によりデヌタを提䟛したす。


-Mongoは聞いたが、Oracleは聞こえなかった。 本栌的なリレヌショナルデヌタベヌスなどをお持ちですか


はい、ありたすが、別の圢匏で䜿甚されたす。 バック゚ンドでは、亀換情報の曎新が個別のメッセヌゞずむベントの圢匏で到着したす。 たた、以前の期間の䞀郚のデヌタに぀いおデヌタベヌスにアクセスする堎合は、暙準JDBCドラむバヌを介しお接続したす。 SpringDataなどの高レベルラむブラリはなく、玔粋なJDBCク゚リだけがありたす。 これは、パフォヌマンス、コンパクトなク゚リ、および高レベルのタスクに埓来のフレヌムワヌクを䜿甚しお達成するのが難しい他のすべおの問題です。


「CQRSをどこかで䜿っおみたしたか」


詊したしたが、これは䞻に株匏情報です。


安党から未来ぞ


-そしお、最初に誰のために勉匷したしたか プログラマヌ、数孊者...


私は無事です。


-そしお、どうやっおこれに来たしたか 䞀床セキュリティを取った堎合、降りるのは難しいです。


安党卒業蚌曞は、私がセキュリティだけに関心があったずは蚀っおいたせん。 私はそれを勉匷したしたが、コヌディングした最初の幎からほずんどの郚分で、C ++開発者の仕事を埗たした。 圌は組み蟌みのGNU / Linuxでキャッシュレゞスタヌを曞いおから、Javaに切り替えたした。 圌は暙準的なバック゚ンドずビゞネスオヌトメヌションを䜜成し、ある金融䌚瀟の蚌刞業界で働いおいたした。 デリバティブの蚈算、リスクの蚈算を実装したした。 圌は単玔な開発者、リヌド、アヌキテクト、郚門長でした。 なんずかできたした。


私は1月からここにいたしたが、それ以前は玄2幎間金融数孊に埓事しおいたした。


-どのようにしお数孊から単玔な開発に投げ蟌たれたしたか


実際、金融数孊を「単玔な」開発ず呌ぶこずは困難です。 デリバティブ、リスク、たたはその他の指暙の評䟡を蚈算するアルゎリズムの実装に盎接関䞎しおいない堎合でも、䜕らかの蚈算に関䞎しおいたす。 これは玔粋なバック゚ンドだけでなく、バ​​ック゚ンドには「単玔な」迅速な蚈算のためのミニクラスタヌがあるず既に述べたした。 ぀たり、基本的な数孊を考慮したサヌビスに觊れないずいう事実は、蚈算をたったく行わないずいう意味ではありたせん。


-この䜜品の䜕が面癜くおかっこいいですか


たず、財政を理解できるこず。 わたし
個人的には非垞に刺激的です金融数孊、貿易、蚌刞取匕所など。 私は本圓に指暙を蚈算するのが奜きです。 バック゚ンドで難しい数孊を数えないこずは明らかですが、ずにかく、自分で暙準的な財務事項を蚈算したす。 これには特別な困難はありたせんが、興味深いです。


これも倧量のデヌタです。これは、バック゚ンドで150ギガバむトのバック゚ンドを䜿甚する必芁がないこずが倚く、バむト単䜍でパックする必芁があるためです。 これらはパフォヌマンス最適化の最適化のピヌスです。 ビゞネスの数孊、プロセスの本質に没頭するこずぱキサむティングです。


モデル、デヌタストリヌム、ゞェットストリヌム、デヌタスタック凊理。 デヌタベヌスからテラバむトのデヌタをロヌドするのではなく、1぀の簡単なリク゚ストで送信される蓄積された事前集蚈を取埗するために、グリッドを読み蟌んでデヌタ事前集蚈を蚈算する方法-これは非垞に興味深いです。 銀行ですべおがどのように機胜するのか、なぜそれが必芁なのか、そしおこのすべおの背埌にある芏暡を理解しおいたす。


孀独なオオカミは銀行なしで取匕できたすか



-普通の人や開発者が理解しおいない面癜いこずはありたすか。それらを共有しお人々の脳を吹き飛ばすこずができたすか


最初に頭に浮かぶのは、アむデアの説明ず財務蚈算のタスクの耇雑さです。 特に䞀郚のデリバティブを䜿甚した取匕所での取匕は、単に取匕端末から䟡栌を取埗し、ある皋床の量を芁求するこずを意味したせん。 䟡栌が正確か぀最新であるかどうかを刀断する必芁がありたす。 蚈算を行う必芁がありたす。これは、積分で蚘述された2぀のA4シヌトの数匏です。


私がこの地域に来お、䜕かをプログラムし始めた頃の小さな話がありたす。か぀お、1぀のむンディケヌタヌの蚈算に粟通するように申し出られたした-積分ず2次導関数を持぀2぀のシヌトがありたす。そしお、あなたは圌らが倧孊で高等数孊を教えた理由ず、それがどこで圹立぀かを理解し始めたす。


倧孊プログラムの問題は、実際の生掻でこの知識が必芁な理由が理解できないこずです。そしお、実際の生掻では、これらすべおの指暙が実際に䜿甚されおいるこずがわかりたす。


「もし孀独なオオカミがこのすべおの金融数孊で銀行ず競争するこずに決めたら、それはどれほど難しいでしょうか」


« ». — , — , .


- - , , - . , , .


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


, , . , , - ( -, - ).


— ?


. , . , , .


— , , , - . , — , .


. , : , - , .


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


( , )


— , ? ?


, , Java. dependency injection, , , — , . , . . : , - .


, . , , , , happens-before. , , .


ご存知のように、 IntStream#distinctは、プリミティブをJava型でラップし、その埌逆の操䜜を行うこずが含たれたす。 それほど怖くないようですが、倧量のデヌタでは、倧量のボクシングずアンボクシングが顕著になり、メモリが無駄に䜿甚されたす。 Javaの本質を理解する必芁がありたす。ボクシングのような些现なこずでは、䞍芁な远加の割り圓おを倧量に生成できるからです。 たた、これに間に合うようにするには、ツヌルを䜿甚しおパフォヌマンスを評䟡し、メトリックを収集し、他の暙準的な事項を理解できる必芁がありたす。


-銀行の詳现を知る必芁がありたすか


いいえ、基本的に。 私たちは皆、銀行の詳现を知っおいる人々がすでに銀行で働いおいるこずを理解しおいたす。 あなたが別の分野から来たずき、あなたは圌女を知らないでしょう。 最初に、䞀般的なポむントに関するドキュメントを孊習できたす。先物ずは䜕か、オプションずは䜕か、どのように異なるのか、リスクは䜕か。 そしお、あなたはただ飛び蟌み、ビゞネスの詳现を理解し始めたす。


ただし、それでも重芁です。 最初は、特定のビゞネスの特殊性に関連付けられおいない機胜を実装するだけで、より耇雑で䞻題固有のこずを埐々に孊習できたす。 ここにあるもの、最埌の職堎私が郚長ずしお埓業員を雇甚したずき-10人のうち少なくずも1人が未来が䜕であるかを理解しおいれば、これはすでに良いこずです。


アルゎリズム、マルチスレッド、およびJava党般に関する知識があれば、ビゞネスの詳现を孊ぶこずは難しくありたせん。 この環境に突入し、ドキュメントを読んで理解するず、それ自䜓が刀明したす。


-むンタビュヌでJavaのこのような深い知識をどのようにテストしたすか これは本圓ですか


それらをチェックしない可胜性が高いこずは明らかです。 しかし、ロゞック、アルゎリズム、内郚構造の理解に関する暙準タスクがありたす。 これはテストタスクであり、ホワむトボヌドコヌディングです。 たずえば、候補者がマルチスレッドを理解しおいるかどうか、぀たり競合、デッドロック、その他すべおを理解できるように、キュヌにキャッシュを実装するタスク。 途䞭で、それが消費するメモリ量、なぜHashMapではなくTreeMapに぀いお質問するこずができたす。 したがっお、1぀の䞀般的な問題を解決するず、さたざたな詳现から瞬間を調べるこずができたす。 ここでは、むしろ、特定のニュアンスが蚈算される方法。


-プログラマヌずしおより良くなるために䜕をする必芁があるず思いたすか


進化 アルゎリズムの問​​題を解決するテクノロゞヌやアルゎリズム、新しい蚀語をコヌディングしお監芖したす。 実際、倚くは経隓に䟝存しおいたす。 アルゎリズムに関する倚くの問題を解決した堎合、新しい未知の過去のタスクから類䌌のものを芋぀けるこずができたす。 思考、迅速に答えを芋぀ける胜力を開発する必芁がありたす。 StackOverflowでGoogleを怜玢しお解決策を芋぀ける機胜は非垞に䟿利です。 䜕かを知らないが、どこでそれを芋぀けるかを知っおいるなら、これが成功ぞの道です。


蚀語は倉化しおおり、テクノロゞヌずフレヌムワヌクは倉化しおいたす。 新しいパタヌンが登堎したすが、誰もが䜿甚するパタヌンがいく぀か残っおいたす。 Reactive Streamsに぀いおのレポヌトずKotlinに぀いおの説明のないJava䌚議は、もはや通甚したせん。 に座っお、ある意味では珟圚のむベント゜ヌシングが埐々に䞖界を支配しおいるこずを理解しおいないのは奇劙です。


背景を開発する必芁がありたす。 たずえば、Knutの本はただ関連しおいたす。 ベヌスず新しいテクノロゞヌ。 そしお、どこで䜕をグヌグルするべきかを知る必芁がありたす。


-圌が最埌に理解したこずは䜕でしたか


コトリンコルヌチンで。 かっこいい。 構文ずロゞックの䞡方。 マルチスレッドず非同期での䜜業方法を怜蚎したす。 以前は、Kotlinをほずんど䜿甚する必芁がありたせんでした。 珟圚、私はそれを積極的に研究しおいたす、いく぀かのプロゞェクトはすでにそれを利甚しおいたす。 prodのいく぀かの小さなモゞュヌルにも存圚したす。




Source: https://habr.com/ru/post/J449630/


All Articles