「開発チヌムは自己完結型の生物です」Javaず遞択の自由に関するSEMrush





SEMrushはいく぀かの理由でゞョヌカヌのスポンサヌの䞭で際立っおいたす。 第䞀に、事業郚門同瀟はマヌケティング担圓者向けのプラットフォヌムを開発しおいたす。 第二に、圌女のCTOのJava䌚議ぞの䌚瀟の参加により、オレグ・クラスノフはCの愛で知られおいたす。第䞉に、圌女にずっお、このゞョヌカヌが最初になりたす。



これらすべおのため、䌚瀟がJavaをどのように䜿甚しおいるか、開発アプロヌチ党䜓、および䌚議からの期埅を尋ねるこずはより興味深いだけでした。 私たちが話したのは以䞋のずおりです。





゚レナ・ダニレンコ人事ゞェネラリスト



-SEMrushはJokerの最初のスポンサヌになりたす-䌚瀟は最初の経隓から䜕を期埅したすか



-圓瀟では、䜜業䞊の問題のほずんどは個人的なコミュニケヌションによっお決定されたす。 したがっお、私たちの目暙の1぀は、お互いに知り合い、自分自身に぀いお話し、興味のあるトピックに぀いおJava開発者ずチャットするこずです。 さらに、Joker Conferenceのような重芁なむベントのサポヌトに参加できるこずを倧倉うれしく思いたす。 私たちはより倚くのネットワヌキングのために、良いず異なる:)



-時にはIT専門家は「マヌケティング」の抂念を嫌いたす-マヌケティングプラットフォヌムを行っおいるずいう事実を恐れおいたすか



-「マヌケティング」の抂念そのものが抑止力である可胜性が高いですが、この蚀葉の背埌にあるものが明確ではありたせん。 しかし、私たちはマヌケティング䌚瀟ではなく、IT䌚瀟です。 私たち自身はマヌケティングに埓事しおいたせんが、この分野の専門家たたは垂堎での地䜍を理解したい人のためのハむテクオンラむンプラットフォヌムの開発に取り組んでいたす。



そしお私たちにずっお重芁なこずは、朜圚的な同僚が私たちに来る補品領域ではなく、圌が私たちの仕事のアプロヌチに同意するかどうかです。 私たちは開発チヌムに意思決定の最倧限の自由を䞎えようずしおいたす-そしお、補品ず開発プロセスに察しお完党な責任を負う準備ができおいる人々ずうたく協力し、䞡方の品質の改善に取り組んでいたす。 候補者ずコミュニケヌションをずる際には、この立堎をできる限り明確にしようずしたす。



-SEMrushには4か囜にオフィスがあり、開発者はどこにいたすか䞻にJavaに興味がありたす



-私たちは、サンクトペテルブルク、プラハチェコ共和囜、リマ゜ヌルキプロスで開発を進めおいたす。 サンクトペテルブルクで最も倚くのJavaコマンドがありたす。珟圚7぀のコマンドがありたす。 来幎はこの金額を倍にする予定です。 たた、Java開発者はリマ゜ヌルのオフィスで働いおいたす。



オレグクラスノフCTO





-䌁業のCTOがCを専門ずする堎合、Java開発者が仕事を遞ぶず、そのような䌁業での圹割をサポヌトするこずに䞍安を感じるかもしれたせん。 これで䜕がありたすか



-SEMrushの特異性はこの蚀語たたはその蚀語ではなく、次のずおりです。開発チヌムは自絊自足の開発生物であるず考えおいたす。 たた、開発蚀語を含め、チヌム自䜓が䜕を䜿甚するかを遞択できたす。



これは、自由を远加し、責任を远加したすが、状況を管理するプロセスをより困難にしたす。 レポヌトの収集ず「スティック」の䜿甚からの管理は、説埗ず動機付けに倉わりたす。 平等のコミュニケヌションは私の奜みです。



私たちは、Javaを倧芏暡なコミュニティず開発䞭の゚コシステムを備えた優れたプログラミング蚀語ず芋なしおいるこずを付け加えたす。 Javaで曞かれたプロゞェクトは、私たちは玠晎らしい存圚感ず発展を遂げおおり、その数を増やしたいずいう自信を䞎えおいたす。



-2014幎に、「デヌタベヌスを䜜成するタむミング 」ずいうプレれンテヌションを行いたした。 これに関連しお興味深いのは、SEMrushが「準備するか自分で行う」ずいう質問に察するアプロヌチです。



蚀語の遞択の堎合ず同じです。男は自分たちでどの方法に埓うか、自分で䜕かをするか、暙準的な゜リュヌションを䜿甚するかを決定したす。 歎史的に蚀えば、倚くの補品で暙準゜リュヌションから自己蚘述型ぞの移行がありたした。ご存じのように、適切に蚘述されたプラむベヌト゜リュヌションは暙準゜リュヌションよりも優れおいるためです。



レポヌトで提瀺された私の個人的な経隓に぀いお話すず、開発時には安定したHadoopもMongoもなかったので、状況に応じお行動したした:)



-Java vs C ++に関する最近の蚘事で 、150を超えるサヌバヌを搭茉した補品に぀いお蚀及したしたが、理解したいのは、SEMrushの芏暡ずは䜕ですか 他にどのような倧きな補品がありたすか、合蚈でいく぀のサヌバヌがありたすか



-ハヌドりェアから始めたしょう。 珟圚、玄440台の実サヌバヌず玄250台の仮想マシンがありたす。 蚀語に関する技術開発スタック-ANSI CからNode.js、そしおもちろんJavaたで。



私たちの最倧のプロゞェクトは、バックリンク、ドメむンずフレヌズ分析、远跡です。 「バックリンク」-最倧で最も重い150台を超える「マシン」。その意味は、Googleのようなすべおのむンタヌネットペヌゞのバックリンクのデヌタベヌスを構築するこずです。 「DomainPhrase Analytics」は、30を超えるロヌカルデヌタベヌスでの怜玢結果の分析、60を超えるサヌバヌ、䌚瀟の最も叀い補品です。 「トラッキング」は、最も動的に開発されおいる補品の1぀であり、28サヌバヌ、怜玢結果におけるサむトの䜍眮のダむナミクスです。



バック゚ンドからのこれら3぀の補品はC / C ++で蚘述されおいたすが、「SEO Ideas」や「Site Audit」など、十分な成功を収めたJava補品もありたす。これらに぀いおは、圓瀟のWebサむトで詳现をご芧ください 。



アナトリヌ・チチコフシニア開発者





-Javaの堎合個人的にも、䞀般的にSEMrushでも、どのテクノロゞヌ/ツヌルが䜿甚されおいたすか



-最小限の時間でナヌザヌぞの䟡倀の提䟛を促進するすべおのものを歓迎したす。 たた、垞に最新の状態に保ち、蚀語ずラむブラリの最新の安定バヌゞョンを䜿甚するよう努めおいたす。



私が関わったプロゞェクトに぀いお話をするず、もちろんJavaフレヌムワヌクの堎合、これはSpringBoot、Web、Data、AMQPです。 テキスト分析にはLuceneを䜿甚したす。 日垞生掻では、Lombok、Guava、およびJava 8ストリヌムを広く䜿甚しおいたすが、倖郚ストレヌゞメディアに関しおは、MongoDB、Redis、およびRabbitMQです。



他のJavaコマンドでは、タスクによっおテクノロゞが異なる堎合がありたすが、倚くの堎合、コアはSpringずJava 8です。誰かが倧量の情報をHDFSに保存し、凊理にHadoopを䜿甚したす。 誰かが耇雑なク゚リずトランザクションを気にしおいる-圌らの遞択はPostgreSQLです。 挿入速床ずク゚リの耇雑さの間のトレヌドオフのために、私たちのようにMongoDBを䜿甚するチヌムがありたす。



ビルドずデプロむ-Maven、Gradle、Fabric、Ansible。 倚くのチヌムが本番環境でDockerを䜿甚しおいたす。



ツヌル-Intellij IDEA、TeamCity、YouTrack、GitLab。 興味深いこずに、私たちのチヌムはXRebelを非垞にうたく䜿甚しおいたす。 たた、䌁業レベルでは、コマンド間レビュヌコヌドを導入しおいたす。Upsourceを詊しおいたす。



-最近話したい倧芏暡なタスクはありたすか



-私は「SEOのアむデア」ず呌べるような倧芏暡なタスクだず思いたす。私たちのチヌムが始めお、1幎ちょっずの間曞いおいるプロゞェクトです。 その目暙は、通垞のマヌケティング担圓者には理解できない䞀連のメトリックず競合他瀟のデヌタを、アクションに関する特定の掚奚事項に倉えるこずです。 人々はシンプルさが倧奜きなので、今のずころ着実に成長しおいたす。



これは、ストリヌミングデヌタ凊理甚の分散システムです。 䞊行凊理、ワヌドプロセッシングタスク、倖郚APIの操䜜、それらの負荷分散がありたす。 サヌバヌビゞネスロゞックは完党にJavaであり、クラむアント郚分はJavaScriptで蚘述されおいたす。 私の意芋では、Javaは蚀語ずしおもプラットフォヌムずしおも、パフォヌマンスず䜿いやすさの䞡面で、新しい誇倧広告テクノロゞヌNodeJS、Goなどの自信を持っおいたす。 それを倉曎する誘惑や必芁は生じたせんでした。



-SEMrushでは、C / C ++で倚くのこずが行われたした。そしお、Java開発者ずしお、「Javaの方が良い」ずいう気持ちがありたせんか :)



-C / C ++の䜿甚は、これらのチヌムが非垞にリ゜ヌスを消費するタスクに盎面するため、䞀郚のプロゞェクトでは必芁です。 最も顕著な䟋の1぀は、むンタヌネット党䜓のリンクグラフずドメむンランキングです。 Javaを䜿甚するず、ここで倚倧なコストがかかり、Cを䜿甚するずいう決定により、他の、それほど必芁ではない補品のためにより倚くのリ゜ヌスが解攟されたした。



-Javaは「自己組織化チヌム」アプロヌチでうたく機胜したすか



-はい、結構です。 私たちの堎合、チヌムは実隓ず補品の安定性に぀いお党責任を負いたす。ここでは、Javaずその成熟したラむブラリが最良の偎面を瀺しおいたす。



たた、可胜な限り、シンプルで明確なフラットモゞュヌルを䜜成しようずしたす。氎平接続ず倉曎に察する䞀定の準備が優先されたす。 そしお、ここでも、Javaは通垞、私たちを倱望させたせん。優れたリファクタリングツヌルず䟝存関係解決ツヌルを備えおいたす。



-蚀語ずテクノロゞヌを独自に遞択するチヌムの「異質性」により、盞互運甚性に問題はありたすか



-いいえ、問題はありたせん。 すべおのSEMrushは基本的にマむクロサヌビスのセットであり、JSONずRESTをそれらの間の「共通語」ずしお䜿甚したす。 堎合によっおは、倧量のデヌタたたはク゚リに関しおは、バむナリ゜リュヌションが可胜ですが、これらはルヌルよりも䟋倖である可胜性が高くなりたす。



-あなたはGroovyずScalaである皋床の経隓がありたすが、この経隓はSEMrushでの䜜業に関連しおおり、本番環境でこれらの蚀語を䜿甚しおいたすか



-私自身は、これらの蚀語でSEMrushでほずんど曞きたせんでした。 しかし、䞀般的に、Groovyは、あたり積極的ではありたせんが、倚くを䜿甚しおいたす。 私の知る限り、䞻にQAは圌を愛し、Spockに矎しいテストを曞いおいたす。 私自身はスクリプト蚀語ずしおGroovyに興味がありたした。 䞀般的に、それは快適で簡朔であり、人々が圌を愛しおいる理由を理解しおいたす。 それでも、私が曞いたスクリプトは䞻にPythonで曞かれおおり、雑甚の匂いがするずきは最高のツヌルだず思いたす。



そしお、私が知る限り、Scalaはただ私たちず定着しおいたせん。 しばらく前、私自身がこの蚀語を綿密に研究したしたが、キャラクタヌに同意したずは蚀えたせん。 この蚀語は単玔ではなく、孊ぶのに倚くの時間がかかり、各プログラマヌは非垞に異なる方法で蚘述したす。 ScalaテヌマでGitHubを閲芧するず、地球倖の知性の存圚を感じるこずがありたす。 私の意芋では、急速に倉化する芁件ずワンボタンむンタヌフェヌスの時代では、これらはマむナスの可胜性が高いです。



私自身もKotlinに興味を持ち、Javaで補品を積極的に曞き続けおいたす。 蚀語が単玔で簡朔で安党であり、プラグマティストがプラグマティストのために䜜成したこずを魅了したす。 圓瀟はそのようなツヌルを愛しおいたす。 詊しおみたいず思う人々の非垞に倚くが圢成される堎合、私たちはそれにプロゞェクトがあるこずを陀倖したせん。



-答えおくれおありがずう、ゞョヌカヌであなたを埅っおいたす



All Articles