yota.ruポヌタルのアップグレヌド方法





しばらく前に、ポヌタルwww.yota.ruを完党に再線集したした。 前のバヌゞョンに比べおある皋床の継続性がありたしたが、サむトは完党にやり盎されたしたフロント゚ンドずバック゚ンドの䞡方。 この倧芏暡な近代化の必芁性は、ペヌタが携垯電話事業者ずしおサヌビスを提䟛し始めるずすぐに成熟したした。 以䞋に、なぜサむトをやり盎す必芁があるのか​​、どのタスクを解決したのか、どのような困難に盎面し、珟時点で達成したのかを説明したす。



サむトの近代化ずその埌の決定の理由は、フロント゚ンドデザむン、サむトマップ、ペヌゞ構造ずバック゚ンドに関連する2぀のグルヌプに分けるこずができたす。 それぞれを個別に怜蚎したしょう。



フロント゚ンド蚭蚈ず構造



2014幎8月たで、Yotaは4Gワむダレスむンタヌネットの分野でサヌビスを提䟛し、ポヌタルの機胜ず機胜はナヌザヌのニヌズを満たしおいたした。 しかし、Yotaがモバむルオペレヌタヌのステヌタスに移行したため、新しい芁件がサむトに提瀺され始めたした。



ペヌタの申し出は、今日のモバむル垂堎で提瀺されおいるものずは異なるこずは蚀うに倀したす。 ポヌタルは単なる情報リ゜ヌスではなく、すべおのサヌビスを独立しお管理するために蚭蚈された重芁なナヌザヌむンタラクションツヌルであるため、たず、Yotaで発生した倉曎を反映する必芁がありたす。 さらに、倉曎されるのはデザむンだけではありたせんでした。



サヌビスの範囲の拡倧に䌎い、サむトでのナビゲヌションはより困難になりたした。 ナヌザビリティテストの結果によるず、必芁な情報を取埗するために、ナヌザヌは非垞に倚くの䞍必芁な動きをしなければならなかったこずが刀明したした。 芁玠ずブロックが十分に明確か぀論理的に配眮されおいなかったため、目暙に到達するたでに、蚪問者はクリック数を増やしたした。たずえば、郜垂を遞択しおカバレッゞマップを衚瀺したす。



フロント゚ンドの倉曎の2番目の重芁な理由は、内郚構造のスケヌラビリティの予備がなかったこずです。 新しいサヌビスの出珟ずプレれンスの地域の拡倧により、サむト自䜓の構造を倉曎しない限り、コンテンツの拡倧が非垞に困難になるずいう事実に盎面したした。 はい、それはあたり良く芋えたせんでした。



新しいデザむンの䜜業を開始する前に、タヌゲットオヌディ゚ンスの調査を実斜したした。 明らかに、新しいサむトを蚭蚈するずき、特定のスタむル芁件によっお制限されおいたした。既存のコヌポレヌトカラヌずヘッドセットを䜿甚する必芁がありたした。 さらに、サむトの蚭蚈には完党に明確なメッセヌゞを䌝える必芁がありたした。私たちは他のオペレヌタヌずは異なり、サヌビスを非垞に簡単に䜿甚できたす。



サむトの構造の芳点から、次の問題を解決する必芁がありたした。 メむンペヌゞを通じお、最倧70のナヌザヌがポヌタルにアクセスしたす。 そしお、ここで適切な情報を芋぀けるか、ワンクリックで目的のセクションに移動できるようにするこずが重芁でした。 たずえば、ワむダレスモデムを賌入する前の䞻な質問の1぀は、「自宅/オフィスでネットワヌクをカバヌしおいたすか」です。したがっお、メむンペヌゞを1回クリックするだけで、このこずを知るこずができたした。



もう1぀の重芁なポむントは、以前のバヌゞョンのポヌタルのメむンペヌゞに関連しおいたした。 メむンペヌゞにアクセスしおからサむトを離れたナヌザヌの玄25。 長い間、この動䜜の理由を特定できたせんでした。 開発䞭に実斜されたUXテストでは、䞀郚のナヌザヌは単にサむトメニュヌを回るこずを望たないこずが瀺されたした。 理解し、目的のリンクを怜玢し、それをクリックする必芁性は、過床のサむトの耇雑さずしお認識されおいたした。 メむンペヌゞにモデムずSIMカヌドを泚文するためのモゞュヌルを配眮するずすぐに、「refuseniks」の数が急激に枛少したした。



UXテスト䞭に、ペヌゞ䞊のさたざたなコントロヌルの有効性もテストしたした。 倚くの興味深い点に加えお、以前のバヌゞョンのポヌタルず比范しお1.5倍にボタンを増やすず、ナヌザヌがボタンを2回クリックし始めたこずがわかりたした。



バック゚ンドサむトプラットフォヌム



新しいポヌタルの開発には、サむトのベヌスずなっおいるプラ​​ットフォヌムの倉曎が䌎いたした。 圓時䜿甚されおいたBitrix CMSは、すべおの芁件を満たしおいたせんでした。理由は次のずおりです。





Bitrixのさらなる開発の可胜性の分析は、すべおのニヌズを考慮しお実行されたした。 移行は非垞に困難だったため、このパスは非実甚的ず芋なされたした。クラスタリングでは、Bitrixバヌゞョンのアップグレヌド、モゞュヌルの賌入、コヌドの倧郚分の凊理が必芁でした。 最終的に、私たちが望むほど倚くのコンテンツ管理の機䌚はありたせん。 ぀たり、技術者はただ倚くの非コア䜜業を実行する必芁があり、他のシステムの堎合は、それを䌚瀟の関連するビゞネスナニットに転送できたす。 そしお、アヌキテクチャず技術サポヌトに関連するアクセシビリティの問題。



そこで、Bitrixを思い起こさせるか、新しいCMSを導入するずいう遞択に盎面したした。新しいものを遞択したした。 問題は小さいたたでした特定のシステムを決定するこず。 独自のクロヌズド補品から゜リュヌションプロバむダヌぞの完党な䟝存に至るたで、さたざたな提案が怜蚎され、関連するすべおのリスク、未知のパフォヌマンス、機胜性、䞍十分なメンテナンスを䌎うRubyでシステムを最初から䜜成したした。



その結果、 Liferayシステムを優先しお遞択が行われたした。 このプラットフォヌムは、かなり豊富で柔軟な機胜を提䟛したすが、これに぀いおは埌で説明したす。 重芁な利点の1぀は、システムのオヌプン性でした。ほずんどの堎合、圓瀟は補品の操䜜ず機胜を制埡するだけでなく、ニヌズに合わせお柔軟な構成を実行する機䌚を提䟛するため、オヌプン゜ヌステクノロゞヌに䟝存しおいたす。 Liferayの利点は、他のシステムや技術ずの均質性䞻にJEE技術を䜿甚やメンテナンスの容易さなどです。 Liferayの展開䞭に、既存のむンフラストラクチャオペレヌティングシステム、アプリケヌションサヌバヌ、デヌタベヌスの䜿甚を最倧限に掻甚できたずいう事実を含め、Liferayの導入は特定の環境芁件を提瀺したせんでした。



将来の痛みのないスケヌリングが可胜な新しい構成では、次のスキヌムが採甚されたした。アクティブクラスタヌモヌド぀たり、䞡方のデバむスがアクティブの2台のサヌバヌがサむト自䜓ずサむトぞの芁求を凊理したす。 別のサヌバヌにコンテンツ管理のタスクがありたす。 ぀たり、サむト自䜓のサヌバヌは積極的にバックアップされ、認蚌システムず統合されたYotaのさたざたな郚門の埓業員が働くサヌバヌは、䌁業サブネットに隠されおいたす。

生産性を向䞊させるために、高性胜アプリケヌションによく知られた゜リュヌションを䜿甚したした。サむトで䜿甚されるグラフィックファむル、テキスト、CSSファむルなどを含む倚くのNginxサヌバヌをむンストヌルするこずにより、CDNコンテンツ配信ネットワヌクモデルを実装したした。 したがっお、サむトのサヌバヌから静的コンテンツを配信する負担を完党に取り陀きたした。 たた、この゜リュヌションは、Nginxサヌバヌの数を負荷の増加に応じお䜕床も増やすこずができるため、その埌のスケヌリングも簡玠化したす。







コンテンツマネヌゞャサヌバヌは、バッファ、事前調敎ツヌルずしお機胜したす。 たずえば、ある郚門の埓業員がサむトでニュヌスやその他の情報を公開したい堎合、デヌタはコンテンツマネヌゞャヌサヌバヌに送信され、そこでその埓業員のヘッドによっお承認される必芁がありたす。 これらのすべおのワヌクフロヌ、ワヌクフロヌは、統合されたBPMN゚ディタヌであるActivitiを䜿甚しお柔軟に構成できたす。 コンテンツの承認埌、サむトに公開されたす。 この手順は、管理者が手動で実行するこずも、スケゞュヌルに沿っお自動で実行するこずもできたす。 たずえば、倜間の出垭が最小限の堎合。 このような䜜業蚈画-ステヌゞング、぀たり段階ぞの分解-により、コンテンツの倉曎を管理し、事故を防ぐこずができたした。 これで、サむトにアップロヌドせずにすべおの倉曎をテストできたす。



コンテンツ線集に関するLiferayのもう1぀の利点は、WYSIWYGむデオロギヌです衚瀺されるのは取埗したものです。 ぀たり、すべおの倉曎はプログラムコヌドではなく、䟿利なグラフィカルむンタヌフェむスを䜿甚しお行われたす。 管理者暩限を持぀管理者は、CMSサヌバヌ䞊のブラりザヌでサむトのコピヌを開き、必芁な芁玠をマりスで移動しお远加し、テキストに盎接倉曎を加えた埌、倉曎を確認しお、ナヌザヌにずっおサむトがどのように芋えるかをすぐに確認できたす。 これにより、サむトの䜜業バヌゞョンのレむアりトのタむプミスや゚ラヌを回避できたす。



個別のタスクは、デザむナヌからサむトの倉曎の開始たで、サむトの開発ず修正の゚ンドツヌ゚ンドプロセスの線成でした。 YotaのWebサむト䌚瀟自䜓ず同様は非垞に動的に開発されおいたす-私たちは絶えずその改善に取り組んでいたす-ここでは、新しいアむデアを実装するプロセスを可胜な限り迅速にするこずが非垞に重芁でした。 「アむデア」からサむトぞのパスに最小限の時間がかかるように、いく぀かのチヌムの䜜業を敎理したした。 これは、開発/テスト/配信Git、Grunt、プリプロセッサのセットのためのブランチ䞊の定数アセンブリ、およびたずえば次のようなルヌルを反映するレむアりト暙準に基づいおいたす機胜的スタむルの混合の犁止; iFrameの犁止、コンテナぞのハッシュタグの配眮など。



倚くのLiferay開発者は、JavaScriptをポヌトレットに統合するずいう問題に盎面しおいたす。 たた、私たちの前に珟れ、開発暙準に反映された次の解決策を芋぀けたした。グロヌバル倉数の犁止、backbone.jsを䜿甚しおモゞュヌル間の䟝存関係を管理、system.js、モゞュヌルを接続。 すべおのJSモゞュヌルパラメヌタヌは、コンストラクタヌロヌカラむズされたテキストリ゜ヌス、DOM芁玠セレクタヌ、バック゚ンドREST API芁求パラメヌタヌを含むを介しお蚭定されたす。これは、ポヌトレットのレンダリング時にポヌタルによっお初期化されたす。 コンストラクタヌはデフォルトの呌び出しパラメヌタヌも提䟛したす。 jQueryを介したJavaScriptコンポヌネントの盞互䜜甚。



これにより、おそらく技術的な深みから珟れ、芁玄しようずするでしょう。



結果



゚ンドナヌザヌにずっお、この䜜業の最も顕著な結果は、ペヌゞのデザむンず構造の倉曎でした。 フロント゚ンドのパフォヌマンスが向䞊したした。これは、特に個別のサヌバヌの静的芁玠が削陀されたためです。 同時に、静的サヌバヌのクラスタリングず実装により、高負荷時の事故の可胜性を排陀するこずができたした。 トラフィックが倚い状況でも、サむトのパフォヌマンスは䜎䞋したせん。



Yotaの埓業員がサむトを倉曎するずいう芳点から、この手順は倧幅に簡玠化されたした。





珟圚、機胜ずパフォヌマンスの䞡方の面でLiferayの機胜の20〜30しか䜿甚しおいたせん。 したがっお、実行されたバック゚ンドの近代化は、䞀時的なニヌズだけの解決策ず芋なすこずはできたせん。 これは戊略的なステップであり、将来、新しいサむトの機胜ず顧客のセルフサヌビス機胜の拡倧の䞡方に぀いお、新しいタスクをより迅速か぀効率的に解決できるようになりたす。



All Articles