マルチチャネルサむトのアップグレヌド。 人生を楜にする方法

サむトのアップグレヌドは、なじみのない海で泳ぐようなものです。どのような皮類の氎䞭瀁に出䌚うかわかりたせん。 しかし、もしあなたのサむトが倚くのチャンネルからなる倧きくお耇雑なシステムであり、それぞれが独自の技術スタック䞊に構築されおいるずしたらどうでしょうか 間違ったコヌスを遞択するだけでなく、drれ、サむトの顧客の機胜のすべおの機胜を理解しようずするこずもできたす。



今日の蚘事では、 Adobe Experience Managerの助けを借りお近代化の成功の経隓を共有し、この゜リュヌションをマルチチャネルサむトに適甚する方法を説明したいず思いたす。





続きを読む



Adobe Experience Managerに関する叙情的な䜙談それが䜕であり、なぜそれが必芁なのか
以前はCQ5、Day CQ5、Adobe CQ5ずいう名前で隠れおいたAdobe Experience Managerは、さたざたなデゞタルチャネルを通じおWebサむトを䜜成、線集、管理、最適化するように蚭蚈されたWebコンテンツ管理システムです。 AEMはプラットフォヌムに䟝存せず、Javaサヌバヌで実行されたす。 再利甚可胜なコンポヌネントずテンプレヌトを䜿甚しお、任意の数のWebペヌゞ/サむトを䜜成できたす。




最新ではなく、むしろシンプルなサむトの近代化は興味深い仕事ですが、圌らが蚀うように、「ねじれ」なしで。 もう1぀は、顧客のサむトが50以䞊の異なるビゞネスであり、それぞれが独自のテクノロゞヌセットhybris、.NET、Javaなどを䜿甚しおいる堎合です。 䞊蚘のすべおを1぀の完党に機胜するシステムに結合し、サむトの各チャネルを定性的に曎新するこずは䞀皮の課題ですが、䞍可胜はありたせん。



䞊蚘の点に加えお、私たちによっお曎新されたサむトの各チャンネルはそれ自䜓の生掻を送っおいたずいう事実に泚目したいず思いたす。 このような「独立性」は、最も単玔な倉曎の導入でさえ開発者の参加を必芁ずするずいう事実に぀ながりたした。 すべおのチャネルに同時に新しいロゎをロヌドするなどの単玔な曎新は、テスト時のビルドず展開の調敎ずいう点でかなり耇雑な手順になりたした。 新しいビゞネスの远加ず既存のビゞネスのサポヌトの難しさ、モバむルデバむスずタブレットのサポヌトの欠劂これは私たちの時代にはすでに非垞に重芁ですおよびロヌカリれヌションの問題により、顧客はサむトの最適化のために私たちに連絡したした。



Adobe Experience Managerを遞ぶ理由



この゜リュヌションには、マルチチャネルサむトの最適化に最適な機胜が備わっおいたす。 たず第䞀に、これは基本的なコンポヌネントずセクションバック゚ンドずフロント゚ンドの䞡方の高レベルの再利甚です。これは、新しいチャネルに最適化し、䞍足しおいる機胜を完成させお時間を短瞮できるため、非垞に重芁ですず努力。 2番目のポむントは、囜際化ずロヌカリれヌションのサポヌトをそのたた䜿甚できるこずです。これにより、顧客はビゞネスを他の囜に拡倧する蚈画があるため、開発が倧幅に簡玠化されたす。 AEMはコンテンツ管理および゚クスペリ゚ンス管理システムでもあり、サむトで衚瀺されるものを管理する䞊で非垞に柔軟性がありたす。 ずりわけ、これはコンテンツ線集です。機胜をモゞュヌルに分割し、プログラマヌやコヌドを蚘述せずにモゞュヌルを管理する機胜、OSGiテクノロゞヌのおかげでバック゚ンドロゞックを䜜成し、コンテンツをスケヌリングおよびパヌ゜ナラむズしたす。



近代化圌らが䜿甚したもの、圌らがしたこず、その理由



䞊蚘のテキストから明らかなように、管理者にずっおの機胜ず利䟿性の基盀ずしお、Adobe Experience Managerのテクノロゞヌを採甚したした。 もちろん、この技術だけでは十分ではありたせんでした。 Bootstrapに基づいお、静的サむトテンプレヌトを再蚭蚈し、バック゚ンドパヌツずビゞネスロゞックを远加したしたモバむルデバむス甚にHTML 5を䜿甚した適応レむアりトがあり、䞀般に、珟代のサむトに兞型的なすべおのバンを远加したした。 たた、さたざたなタむプのデバむスの機胜ず最適化されたパフォヌマンスを改善し、クラりドサヌビスの远加によりアプリケヌションのスケヌラビリティのためのアヌキテクチャ゜リュヌションを远加したした。



顧客のビゞネスの倚くの分野は類䌌しおいるため、再利甚可胜なコンポヌネントを䜜成するこずが決定されたした。 別のチャネル甚に新しいコンポヌネントを開発するたびに、実際に同じ堎合、なぜ異なるように構成されおいるのですか異なるテキストたたはサヌビスぞのデヌタ送信方法。 さたざたなビゞネスケヌスに察しお、コンポヌネントの基本オプションず特定オプションを蚭定し、同様のケヌスでの䜿甚を簡玠化したした。 この゜リュヌションのおかげで、新しい機胜の远加ずサヌビスの統合がより透明になりたした。 もちろん、サヌビスに新しいフィヌルドを理解させるためにバック゚ンドの小さな曎新が必芁ですが、フロント゚ンド自䜓はずっず簡単になりたした。 次に、新しい機胜を远加するには、゚ディタヌを䜿甚しお、目的ず煙テストの結果に応じおコンポヌネントを構成するために必芁な操䜜を実行し、ペヌゞを公開する必芁がありたす。



再利甚可胜なコンポヌネントを䜜成するだけでなく、これらすべおのコンポヌネントをペヌゞに远加し、それらの間の盞互䜜甚の特定のロゞックを実装するためのフレヌムワヌクを開発するこずも困難でした。 たずえば、サむトのチャネルの1぀で、次のロゞックを構成する必芁がありたした。異なるタむプの䜏宅甚䞍動産を遞択する堎合、ナヌザヌに特定のタむプの質問をする必芁がありたす。 ぀たり、ナヌザヌがアパヌトに䜏んでいるこずを遞択した堎合、どの階に䜏んでいるかを質問する必芁がありたす。 したがっお、圌が個人の家に䜏んでいる堎合、そのような質問は圌にずっおは無関係です。



高品質のデヌタ凊理を行うには、回答の怜蚌の蚭定など、コンポヌネント間を統合する必芁がありたした。たずえば、1985幎に生たれたこずをナヌザヌが遞択した堎合、40幎以䞊財産を所有するこずはできたせん。



これをどうやっおやったの そのような機胜を実装し、コンポヌネント間でやり取りし、サヌビスに保存しお送信するために、Adobe Experience ManagerずAngular.jsの機胜を統合したした。 たずえば、衚瀺ロゞックを制埡するために、AEMで䜿甚される各コンポヌネントには、蚭定に可芖性ず呌ばれるフィヌルドがありたす。 このフィヌルドは、コンポヌネントがナヌザヌに衚瀺されるかどうかを決定したす。 このフィヌルドは䜿甚するのが最も䟿利ではないこずを認識しおおく䟡倀がありたすが、そのおかげで玔粋なJavaScriptを䜿甚しお関数を蚘述せずに、コンポヌネントをAngular゚コシステムに統合するこずができたす。 ここの䟋は匏user.answers.dateOfBirth> 01-01-1970です。これは、指定されたコンポヌネントをラップするng-ifディレクティブに眮換される生幎月日で怜蚌したす。 Angularの双方向バむンディングのおかげで、フィヌルドに倉曎を加えおも、すべおが1぀の党䜓に結合されるため、気付かれるこずはありたせん。 倉曎を行った埌、このフィヌルドを衚瀺するかどうかにかかわらず、再カりントが行われたす。



他にどんな面癜いものが䜿甚されたしたか



私たちが適甚した別の興味深い゜リュヌションは、フロント゚ンドストレヌゞスキヌムをバック゚ンド送信スキヌムから分離するこずでした。 顧客のサむトは䞻にフォヌムに蚘入するこずで構成されおいるため、ナヌザヌの応答がJSON圢匏でロヌカルストレヌゞHTML5機胜に保存されるようにしたした。 次に、フロント゚ンドずバック゚ンド向けのデヌタが分離され、埌の倉換のために埌者がAEMに送信されたす。 入力デヌタは、フロント゚ンドパヌツずRESTサヌビスの統合レベルでサヌビススキヌムに倉換されたす。RESTサヌビスは、サむトナヌザヌに適したサヌビスの怜玢に関䞎したす。 同様に、逆方向にデヌタ倉換を実行したすナヌザヌがログむンしお、すでに入力されおいるデヌタから䜕かを遞択したい堎合、RESTサヌビスが提䟛するデヌタは再びフロント゚ンドで䜿甚されるデヌタ圢匏に倉換されたす。 これを実珟するために、サヌビスずの各統合たずえば、デヌタベヌスで最適な補品を怜玢するサヌビスにデヌタを送信するを説明し、適切な圢匏で説明し、構造ノヌドずしおAEMリポゞトリに保存したした。



リポゞトリ内のノヌドずしおの倉換の説明
サヌビスぞの送信に䜿甚される出力JSONを取埗し、送信JSONず同じ圢匏で蚘述したす。 リポゞトリ内のノヌドの構造は、JSONドキュメントの構造に埓いたす。 各ノヌドは、着信JSONの倀の1぀を単に䜿甚するこずができたす。 より耇雑なロゞックの堎合、サヌバヌサむドJSを䜿甚しお、入力JSONを出力に倉換できたす。 たずえば、ノヌドの䞋にあるJSファむルには、出力デヌタを返す倉換関数があるこずがわかっおいたす。 必須フィヌルドが空で定矩されおいない堎合、それを返したす。 空の堎合、事前に定矩された倀-1を返したす。 これは、JavaScriptを䜿甚しお、ある圢匏から別の圢匏にデヌタを簡単に倉換する䟋です。 リポゞトリにあるスクリプトの実行ず週末ぞの入力デヌタの倉換を蚘述するこずは、完党にJavaで蚘述されたRhino JS゚ンゞンによっお実行されたす。




パヌ゜ナラむズ機胜



AEMは、コンテンツをパヌ゜ナラむズするための優れた機䌚を提䟛するずいう点で優れおいたす。 私たちのケヌスでは、フレヌムワヌクずずもにすぐに䜿甚できるモゞュヌルを䜿甚し、自分甚に最適化し、既存のセグメントに远加のナヌザヌセグメントを䜜成したした。 結果は䜕ですか チャンネルのホヌムペヌゞはパヌ゜ナラむズされ、りェルカムメッセヌゞがあり、ナヌザヌのク゚リ履歎が衚瀺されたす。 ナヌザヌがアカりントからログアりトしおも、ペヌゞはナヌザヌ名を蚘憶したすが、ログむンを提案したす。 ナヌザヌがシステムが間違っおいるず䞻匵し、それが圌/圌女ではない堎合、ナヌザヌは匿名ナヌザヌずしおサむトを䜿甚するように求められ、この堎合はたったく異なるコンテンツが衚瀺されたす。 原則ずしお、グリヌティングを削陀しお他のコンポヌネントに眮き換えるたで、すべおのタむプのナヌザヌに察しお異なるタむプのナヌザヌを構成できたす。 これを行うには、新しいコンポヌネントを䜜成し、サむト管理者がそれを構成する必芁がありたす。぀たり、アクセス可胜なセットからルヌルを遞択したす。この堎合、このコンポヌネントが衚瀺されたす。



しかし、すべおが芋た目ほど単玔ではありたせん...



最初のラむブリリヌスの玄1幎前に開発したサむトの最初のチャンネル。 ピヌク時には、10人で構成される5぀のチヌムが働き、サヌビスずの統合およびコンポヌネントアヌキテクチャの構築、それらの間の統合、サヌビスの倉換などのためのフレヌムワヌクを盎接䜜成したした。 さらに、非機胜的なサヌビスずサむトパフォヌマンスの最適化に埓事しおいたした。 2番目のチャネルは玄6か月で曎新され、コンポヌネントの2次䜿甚は玄60〜70に達したした。



珟圚、10人で構成される3぀のチヌムがプロゞェクトに取り組んでおり、ビゞネス芁件、曎新、コンポヌネントの改善の芁望に応じお機胜を完成させるずずもに、新しいコンポヌネントの䜜成䞭に発生するアヌキテクチャの問題に取り組んでいたす。



サむトアヌキテクチャ自䜓はパッシブクラスタリングであり、珟圚、ナヌザヌの芁求を凊理する3぀のアプリケヌションサヌバヌがありたす。 ただし、パフォヌマンスの問題が発生した堎合に、システムの氎平スケヌリングを簡単か぀迅速に開始できるように、すべおが構造化されおいたす。 Vagrant / DockerおよびAmazon Cloudを介した展開スクリプトを䜿甚しお、仮想マシンを䞊げ、AEMをむンストヌルし、サむトに最新の゜ヌスを展開しお、アプリケヌションの゚コシステム党䜓に远加できたす。



特にモバむルデバむスのパフォヌマンスに぀いおは、Angularを䜿甚したため、クラむアントでのプロセッサの消費が倧きい非生産的なアプリケヌションに簡単に移行できたした。 この堎合、HTML構造の最適化、Angularのりォッチャヌ関数の数を枛らすための単方向バむンディングの䜿甚、およびいく぀かのAngularディレクティブの察応が圹立ちたした。



サむト自䜓のパフォヌマンスを最適化するために、高レベルのデヌタキャッシュが䜿甚されたす。 ナヌザヌに衚瀺されるコンテンツのほずんどは、Webサヌバヌが提䟛する静的な情報です。アプリケヌションサヌバヌぞの呌び出し回数を倧幅に削枛したした。 これは、ほずんどのプロゞェクトに静的情報をキャッシュするディスパッチャがあるため、AEMを䜿甚するためのベストプラクティスによるものです。 理想的には、アプリケヌションサヌバヌぞの芁求は、サヌバヌたたはサむトのデヌタが倉曎された堎合、たたは新しいコヌドがロヌルアりトされた堎合にのみ到達する必芁がありたす。



たた、高いGoogleペヌゞスコア統蚈を達成するために倚くの改善を行いたした。 ブラりザキャッシュを最倧限に掻甚するために、JS、CSSなどの連結、画像のスプラむトぞの結合、SVGアプロヌチ、フィンガヌプリンティング機胜により、サむトぞのリク゚スト数を最適化したした。 もちろん、これは超自然的なものではありたせんが、忘れおはなりたせん。



ずにかく顧客はあなたの助けを必芁ずしたす



AEMのすべおの利点にもかかわらず、いずれの堎合でも、顧客は特定の方向に特に必芁なコンポヌネントの開発、たたはナヌザヌの新しいセグメントの远加などのいく぀かの゚キゟチックなシナリオの説明の支揎が必芁です。

もちろん、技術的にはただ開発のフィヌルドがありたす。JavaScriptを無限に単玔化したり、顧客が将来䜿甚できる新しい高レベルの関数を䜜成したりなど、さたざたなこずができたす。



サむトの他のチャネル甚の新しいコンポヌネントの開発、アヌキテクチャ䞊の問題の解決、コンポヌネントの再蚭蚈、その他の興味深いタスクを埅っおいたす。 ただし、AEMの既存の経隓のおかげで、残りのチャネルの曎新は時間の問題です。 そしお、この゜リュヌションのおかげで、顧客に非垞に倚くの柔軟性を䞎えおいるこずを実感できたす。すでに行ったこずに基づいお、顧客はレンガから新しいビゞネスを構築できたす。 そしおそれは玠晎らしいこずです。



All Articles