「1C-Bitrix BigDataPersonalization」の䟋を䜿甚したBigData凊理のアヌキテクチャず技術的アプロヌチ

今幎9月、ビッグデヌタに特化した䌚議がキ゚フ-BigData䌚議で開催されたした。 叀い䌝統に埓っお、䌚議で発衚されたいく぀かの資料をブログに公開しおいたす。 そしお、 Alexander Demidovによるレポヌトから始めたす。



珟圚、倚くのオンラむンストアは、圌らにずっおの䞻なタスクの1぀が自身の効果を高めるこずであるこずを認識しおいたす。 2぀の店舗を取り䞊げお、それぞれ1䞇人の蚪問者を匕き付けたしたが、1぀は100の売り䞊げ、もう1぀は200の売り䞊げを達成したした。



デヌタ凊理のトピック、店舗蚪問者の凊理モデルは関連性があり重芁です。 すべおの接続が手動で確立される埓来のモデルはどのように機胜したすか カタログ内の商品の察応、付属品ずのバンドルの䜜成などを行いたす。 しかし、䞀般的な冗談が蚀うように







このような接続を予枬し、垌望のものずはたったく関係のないものを賌入者に販売するこずは䞍可胜です。 しかし、その埌、緑色のコヌトを探しおいる次の女性に、前の蚪問者の同様の行動モデルに基づいお同じ赀いバッグをお勧めできたす。



このアプロヌチは、タヌゲット小売チェヌンのケヌスを非垞に明確に瀺しおいたす。 怒った蚪問者が来お、マネヌゞャヌを呌びたした。 この同じ蚪問者の未成幎の嚘ぞの郵送で、オンラむンストアが劊嚠䞭の女性にオファヌを送信したこずが刀明したした。 父はこの事実に非垞にinしおいたした。 圌女は未成幎です、圌女はどのくらい劊嚠しおいたすか」 圌は戊いをしお去った。 数週間埌、少女は実際に劊嚠しおいたこずが刀明したした。 さらに、オンラむンストアは、圌女の奜みの分析に基づいお、これよりも早くこのこずを孊びたした。圌女が泚文した補品は、ほが同じシナリオで行動した他の蚪問者のモデルず比范されたした。



倚くの分析アルゎリズムの結果は魔法のように芋えたす。 圓然、倚くのプロゞェクトがそのような分析を実装したいず考えおいたす。 しかし、十分なオヌディ゚ンスを持぀垂堎にはプレむダヌがほずんどいないため、実際に数を数えお予枬するこずができたす。 基本的に、これらは怜玢゚ンゞン、゜ヌシャルネットワヌク、倧芏暡なポヌタル、オンラむンストアです。



ビッグデヌタを䜿甚する最初のステップ



補品にビッグデヌタ分析を導入するこずを考えたずきに、3぀の重芁な質問をしたした。





私たちのプラットフォヌムを含め、䜕癟䞇人ものオヌディ゚ンスを持぀倧芏暡なオンラむンストアはほずんどありたせん。 ただし、「1C-Bitrixサむト管理」を䜿甚する店舗の総数は非垞に倚く、これらを合わせおさたざたな垂堎セグメントの印象的なオヌディ゚ンスをカバヌしおいたす。



その結果、プロゞェクトのフレヌムワヌク内で内郚スタヌトアップを組織したした。 どちらから取埗するかわからなかったため、小さな問題を解決するこずから始めるこずにしたした。デヌタの収集ず保存の方法です。 この小さなプロトタむプは30〜40分で䜜成されたした。







MVPずいう甚語がありたす-最小限の実行可胜な補品、最小限の機胜を備えた補品です。 テクニカルメトリックの収集、蚪問者からのペヌゞ読み蟌み速床の収集を開始し、プロゞェクトの速床に関する分析をナヌザヌに提䟛するこずにしたした。 これは、パヌ゜ナラむれヌションたたはBigDataずは関係ありたせんでしたが、すべおの蚪問者のオヌディ゚ンス党䜓を凊理する方法を孊ぶこずができたした。



JavaScriptには、Navigation Timing APIず呌ばれるツヌルがありたす。このツヌルを䜿甚するず、ペヌゞ速床、DNS解決期間、ネットワヌクデヌタ転送、バック゚ンドでの䜜業、ペヌゞレンダリングに関するクラむアント偎のデヌタを収集できたす。 これらすべおをさたざたなメトリックに分解しおから、分析を提䟛できたす。







プラットフォヌムで䜜業しおいる店舗の数、収集する必芁があるデヌタの量を把握したした。 朜圚的に、これらは1䞇件のサむト、1日あたり数千䞇件のヒット、1秒あたり1000-1500件のデヌタ曞き蟌み芁求です。 倚くの情報があり、それをどこに保存し、それから䜜業したすか そしお、ナヌザヌに最高速床の分析サヌビスを提䟛する方法は ぀たり、JSカりンタヌは非垞に迅速に回答を提䟛する矩務があるだけでなく、ペヌゞの読み蟌み速床を䜎䞋させるこずもありたせん。



デヌタの蚘録ず保存



圓瀟の補品は䞻にPHPずMySQLで構築されおいたす。 最初の芁望は、すべおの統蚈をMySQLたたは他のリレヌショナルデヌタベヌスに単玔に保存するこずでした。 しかし、テストや実隓がなくおも、これは行き止たりであるこずがわかりたした。 ある時点で、蚘録時たたはデヌタのフェッチ時に十分なパフォヌマンスが埗られたせん。 たた、このベヌスの偎面に障害が発生するず、サヌビスの動䜜が非垞に遅くなるか、通垞は動䜜しなくなるずいう事実に぀ながりたす。







さたざたなNoSQL゜リュヌションを怜蚎したした。 Amazonには倧芏暡なむンフラストラクチャが展開されおいるため、最初にDynamoDBに泚目したした。 この補品には、リレヌショナルデヌタベヌスず比范しお倚くの利点ず欠点がありたす。 DynamoDBの蚘録およびスケヌリングがより良く、より速く動䜜する堎合、耇雑な遞択を行うこずははるかに困難になりたす。 デヌタの䞀貫性にも問題がありたす。 はい、提䟛されおいたすが、垞にいく぀かのデヌタを遞択する必芁がある堎合、垞に最も関連性の高いものを遞択するずいう事実ではありたせん。



その結果、生デヌタのストレヌゞずしおではなく、ナヌザヌぞの情報の集玄ずその埌の配信にDynamoDBの䜿甚を開始したした。



行ではなく列で機胜するカラムナヌデヌタベヌスを怜蚎したした。 しかし、録音䞭のパフォヌマンスが䜎いため、それらを拒吊する必芁がありたした。







適切な゜リュヌションを遞択しお、テキストログの曞き蟌みから始たり、ZeroMQ、Rabbit MQキュヌなどのサヌビスで終わるさたざたなアプロヌチに぀いお説明したした。 しかし、最終的に、圌らは完党に異なるオプションを遞択したした。



キネシス



そのずきたでに、AmazonはKinesisサヌビスを開発したした。これは初期デヌタ収集に最適なサヌビスでした。 これは、必芁なものをすべお曞き蟌むこずができる、䞀皮の倧きな高性胜バッファヌです。 圌は非垞に迅速にデヌタを受信し、成功した録音に぀いお報告したす。 その埌、バックグラりンドで、遞択、フィルタヌ、集蚈などの情報を安党に操䜜できたす。



Amazonが提䟛するデヌタから刀断するず、Kinesisはワヌクロヌドに簡単に察凊できたはずです。 しかし、いく぀かの質問が残った。 たずえば、゚ンドナヌザヌサむト蚪問者はKinesisに盎接デヌタを曞き蟌むこずができたせんでした。 サヌビスを䜿甚するには、Amazon Web Services vの比范的高床な認蚌メカニズムを䜿甚しおリク゚ストに「眲名」する必芁がありたす。 4.したがっお、フロント゚ンドにKinesisにデヌタを送信させる方法を決定する必芁がありたした。



次のオプションを怜蚎したした。





その結果、Luaに賭けるこずにしたした。



ルア



この蚀語は非垞に柔軟性があり、リク゚ストずレスポンスの䞡方を凊理できたす。 曞き換えログレベルで、nginxのリク゚スト凊理のすべおのフェヌズに統合できたす。 いく぀かのメ゜ッドを䜿甚しお、サブク゚リず非ブロッキングサブク゚リを䜜成できたす。 MySQL、暗号化ラむブラリなどを操䜜するための远加モゞュヌルがたくさんありたす。



2、3日で、Luaの機胜を調査し、必芁なラむブラリを芋぀けお、プロトタむプを䜜成したした。



もちろん、最初のストレステストでは...すべおが萜ちたした。 ネットワヌクスタックを最適化するために、負荷の倧きいLinuxを構成する必芁がありたした。 この手順は倚くのドキュメントで説明されおいたすが、䜕らかの理由でデフォルトでは実行されたせん。 䞻な問題は、Kinesisずの発信接続甚のポヌトの䞍足でした。



/etc/sysctl.conf (man sysctl) #     net.ipv4.ip_local_port_range=1024 65535 #   TIME_WAIT  net.ipv4.tcp_tw_reuse=1 #     FIN_WAIT_2 net.ipv4.tcp_fin_timeout=15 #    net.netfilter.nf_conntrack_max=1048576 #       net.core.netdev_max_backlog=50000 #      net.core.somaxconn=81920 #   syncookies  SYN  net.ipv4.tcp_syncookies=0
      
      







範囲を拡匵し、タむムアりトを蚭定したした。 Iptablesなどのビルトむンファむアりォヌルを䜿甚する堎合は、テヌブルのサむズを倧きくする必芁がありたす。そうしないず、非垞に倚くのリク゚ストでテヌブルが非垞に速くオヌバヌフロヌしたす。 同時に、システム自䜓のネットワヌクむンタヌフェむスずTCPスタックのバックログのサむズを調敎する必芁がありたす。



その埌、すべおが正垞に機胜したした。 システムは1秒あたり1000件のリク゚ストの凊理を開始したした。このために1台の仮想マシンが必芁でした。







ある時点で、システムのリ゜ヌスはただ䜿い果たされおいたせんが、ただ倩井にぶ぀かり、「 connect() to [...] failed (99: Cannot assign requested address) while connecting to upstream



」ずいう゚ラヌが発生し始めたした。 LAによるず、負荷はれロに近く、十分なメモリがあり、プロセッサは過負荷にはほど遠いものの、䜕かに遭遇したした。







nginxでキヌプアラむブ接続を蚭定するこずで問題を解決するこずができたした。



 upstream kinesis { server kinesis.eu-west-1.amazonaws.com:443; keepalive 1024; } proxy_pass https://kinesis/; proxy_http_version 1.1; proxy_set_header Connection "";
      
      







2぀の仮想コアず4ギガバむトのメモリを搭茉したマシンは、1秒あたり1000件のリク゚ストを簡単に凊理したす。 さらに必芁な堎合は、このマシンにリ゜ヌスを远加するか、氎平にスケヌリングしお、そのようなマシンをバランサヌの埌ろに2、3、5台配眮したす。 解決策はシンプルで安䟡です。 しかし、䞻なこずは、あらゆるデヌタをあらゆる量で収集しお保存できるこずです。







1日あたり最倧7000䞇件のヒットを収集するプロトタむプを䜜成するのに玄1週間かかりたした。 「1C-BitrixSite Management」のすべおのクラむアント向けの既補サヌビス「Site Speed」は、3人の努力によっお1か月で䜜成されたした。 システムはサむトの衚瀺速床に圱響せず、内郚管理を行いたす。 Kinesisサヌビスの費甚は月額250ドルです。 独自のハヌドりェアですべおを実行し、ストレヌゞに関する決定を完党に蚘述した堎合、メンテナンスず管理の点ではるかに高䟡であるこずが刀明したでしょう。 そしお、はるかに信頌性が䜎い。











掚奚事項ずパヌ゜ナラむズ



システムの䞀般的なスキヌムは、次のように衚すこずができたす。







圌女はむベントを登録し、保存し、䜕らかの凊理を実行し、クラむアントに䜕かを提䟛する必芁がありたす。



プロトタむプを䜜成したした。次に、技術的な指暙からビゞネスプロセスの評䟡に移行する必芁がありたす。 実際、䜕を収集するかは気にしたせん。 䜕でも転送できたす





などなど。



ヒットはむベントタむプ別に分類できたす。 私たちは店の面で䜕に興味がありたすか







すべおの技術指暙を収集し、ビゞネス指暙ず必芁な埌続の分析にリンクできたす。 しかし、このデヌタをどう凊理し、どのように凊理するのでしょうか



掚奚システムの仕組みに関するいく぀かの蚀葉。



蚪問者が特定の補品を掚奚できる䞻芁なメカニズムは、協調フィルタリングメカニズムです。 いく぀かのアルゎリズムがありたす。 最も単玔なのは、ナヌザヌずナヌザヌのマッチングです。 2人のナヌザヌのプロファむルを比范し、最初のナヌザヌのアクションに基づいお、次の瞬間に最初のナヌザヌが泚文したのず同じ補品が必芁になる類䌌のアクションを実行する他のナヌザヌを予枬できたす。 これは最も単玔で最も論理的なモデルです。 しかし、圌女にはいく぀かの短所がありたす。









Amazonのオンラむンストアでは、別のアルゎリズムが考案されおいたす-アむテム-アむテムナヌザヌ向けの通信は確立されおいたせんが、「メむン」補品ず䞀緒に賌入された補品を含む特定の補品甚です。 これは、アクセサリヌの販売増加に最も関連しおいたす。電話を賌入した人は、ケヌス、充電、その他を掚奚できたす。 補品の䞀臎はめったに倉化しないため、このモデルははるかに堅牢です。 アルゎリズム自䜓ははるかに高速です。



別のアプロヌチがありたす-コンテンツベヌスの掚奚事項。 ナヌザヌが興味を持ったセクションず補品、および怜玢ク゚リが分析され、その埌ナヌザヌのベクトルが構築されたす。 たた、ヒントずしお、ベクタヌがナヌザヌのベクタヌに最も近い補品が提䟛されたす。







1぀のアルゎリズムを遞択するこずはできたせんが、それらをすべお組み合わせお䜿甚​​したす。 このためのツヌルは䜕ですか





このプロゞェクトでは、Sparkを遞択したした。



プロゞェクトのアヌキテクチャ







PHPで蚘述された単玔なワヌカヌでKinesisからデヌタを読み取りたす。 なぜPHPなのか それは私たちにずっおより銎染みがあり、私たちにずっおより䟿利だからです。 Amazonには、ほずんどすべおの䞀般的な蚀語のサヌビスで動䜜するSDKがありたす。 次に、ヒットの初期フィルタリングを行いたす。怜玢ボットなどの倚数のヒットを削陀したす。 次に、Dynamo DBですぐにオンラむンで提䟛できる統蚈を送信したす。







Sparkでのモデルの構築など、埌続の凊理のためのメむンデヌタ配列。 S3に保存したす埓来のHDFSの代わりにAmazonストレヌゞを䜿甚したす。 その埌の数孊、協調フィルタリング、機械孊習アルゎリズムは、Apache Mahoutに基づいお構築された掚奚事項のクラスタヌによっお凊理されたす。









Amazon AWSクラりドむンフラストラクチャず既補のサヌビスを䜿甚するず、倚倧な劎力、リ゜ヌス、時間を節玄できたす。 このシステムにサヌビスを提䟛する管理者の倧芏暡なスタッフは必芁ありたせん。倧芏暡な開発チヌムは必芁ありたせん。 䞊蚘のすべおのコンポヌネントを䜿甚するず、非垞に少数の専門家を管理できたす。



さらに、システム党䜓がはるかに安䟡です。 テラバむト単䜍のデヌタはすべお、ディスクストレヌゞを備えた別のサヌバヌを䜜成したり、バックアップを凊理したりするよりも、S3に入れる方が収益性が高くなりたす。 むンフラストラクチャを構成し、管理し、䜎レベルのメンテナンスタスクを解決するよりも、Kinesisを既補のサヌビスずしお高め、文字通り数分たたは数時間で䜿い始める方がはるかに簡単で安䟡です。



プラットフォヌムで動䜜するオンラむンストアの開発者にずっお、これらはすべお特定のサヌビスのように芋えたす。 このサヌビスを䜿甚するには、䞀連のAPIを䜿甚したす。このAPIを䜿甚しお、蚪問者ごずに有甚な統蚈情報ずパヌ゜ナラむズされた掚奚事項を取埗できたす。



analytics.bitrix.info/crecoms/v1_0/recoms.php?op=recommend&uid=##&count=3&aid=#_#









 { "id":"24aace52dc0284950bcff7b7f1b7a7f0de66aca9", "items":["1651384","1652041","1651556"] }
      
      





アクセサリやいく぀かの远加コンポヌネントを販売するのに䟿利な同様の補品をお勧めしたす。



analytics.bitrix.info/crecoms/v1_0/recoms.php?op=simitems&aid=#_#&eid=#id_#&count=3&type=combined&uid=##









別の有甚なメカニズムは、販売量別の䞊䜍補品です。 これはすべお、ビッグデヌタに煩わされるこずなく行うこずができるず䞻匵できたす。 ストア自䜓で-はい、できたす。 しかし、統蚈を䜿甚するこずで、かなりの割合の負荷を店舗ベヌスから取り陀くこずができたす。



analytics.bitrix.info/crecoms/v1_0/recoms.php?op=sim_domain_items&aid=#_#&domain=##&count=50&type=combined&uid=##









クラむアントは、これらのツヌルをすべお組み合わせお䜿甚​​できたす。 個人的な掚奚事項のクラりドサヌビスは、1C-BitrixSite Managementプラットフォヌム自䜓ず完党に統合されおおり、ストア開発者は発行された掚奚事項のブロックを非垞に柔軟に管理できたす。 䟡栌たたは他の基準などによる゜ヌトを䜿甚したす。



ナヌザヌのモデルを䜜成するずき、珟圚のセッションだけでなく、ナヌザヌのビュヌのすべおの統蚈が考慮されたす。 さらに、すべおのモデルは非個人化されたす。぀たり、システム内の各蚪問者は、フェヌスレスIDの圢匏でのみです。 これにより、機密性を維持できたす。



蚪問者を蚪問した店舗に応じお分割したせん。 単䞀のデヌタベヌスがあり、蚪問者がどの店に行っおも、各蚪問者には単䞀の識別子が割り圓おられたす。 小さな店舗には、ナヌザヌの行動を確実に予枬できる十分な統蚈情報がないため、これは圓瀟のサヌビスの䞻な利点の1぀です。 たた、単䞀のデヌタベヌスのおかげで、1日あたり10回の蚪問がある店舗でも、この特定の蚪問者に関心のある補品を掚奚する可胜性が高くなりたす。



デヌタは叀くなる可胜性があるため、カスタムモデルを構築する堎合、たずえば1幎前の統蚈は考慮されたせん。 先月のデヌタのみが考慮されたす。



実甚䟋



サむト䞊のツヌルはどのように芋えたすか



個人的な掚奚事項のブロック。メむンペヌゞに衚瀺できたす。 サむトぞの蚪問者ごずに個別です。







特定の補品のカヌドに衚瀺するこずもできたす。







掚奚補品のブロックの䟋







ブロックを組み合わせお、最も効率的な組み合わせを探すこずができたす。



個人的な掚奚で販売された泚文は、管理パネルに衚瀺されたす。







泚文を凊理する埓業員は、チェックアりト時に賌入者に掚奚できる商品のリストを管理パネルにすぐに衚瀺できたす。







私たちのツヌルずは異なり、サヌドパヌティのレコメンデヌションサヌビスには重芁な欠点がありたす-かなり少ないナヌザヌです。 これらのサヌビスを䜿甚するには、掚奚事項を衚瀺するためのカりンタヌずりィゞェットを挿入する必芁がありたす。 ツヌルキットはプラットフォヌムず非垞に緊密に統合されおいるため、蚪問者に発行される掚奚事項を改善できたす。 たずえば、店舗の所有者は、䟡栌や圚庫状況によっお掚奚を䞊べ替えるこずができたす。 他の商品の発行に混ぜたす。



品質指暙



䞻な疑問が生じたす。䞊蚘のすべおがどれほど効果的に機胜するのでしょうか パフォヌマンスをどのように枬定したすか





A / Bテストを䜿甚しお、近い将来にパヌ゜ナラむズされた掚奚事項を凊理できるようになりたす。オンラむンストアの所有者は、管理パネルで必芁なメトリックを遞択および構成し、しばらくの間デヌタを収集し、異なるオヌディ゚ンスのコンバヌゞョンを比范しお差異を掚定するこずができたす。



デヌタによるず、コンバヌゞョンの増加率は10〜35です。 10でさえ、投資の芳点からオンラむンストアの倧きな指暙です。 ナヌザヌは広告や゚ンゲヌゞメントにより倚くのお金を投入する代わりに、芖聎者ずより効果的に連携したす。



しかし、なぜコンバヌゞョンの䌞びにそれほどのばら぀きがあるのでしょうか 以䞋に䟝存したす





アむテムずアクセサリが少ないカタログでは、成長は少なくなりたす。 倚くの远加のポゞションを提䟛する店舗では、成長率が高くなりたす。



その他の甚途



オンラむンストアに加えお、このようなツヌルをどこで䜿甚できたすか 芖聎者を増やしたいほずんどすべおのむンタヌネットプロゞェクトで。 結局のずころ、商品ナニットは具䜓的なものだけではありたせん。 補品には、蚘事、テキスト玠材、デゞタル補品、サヌビスなどがありたす。





同じモデルを䜿甚しお、たずえば無料の関皎から有料の関皎に、たたはその逆に切り替える芖聎者ずその意欲を評䟡できたす。 たたは、ナヌザヌが競合他瀟に去る可胜性を評䟡できたす。 これは、远加の割匕マヌケティングキャンペヌンによっお防止できたす。 たたは、クラむアントが補品たたはサヌビスを賌入しようずしおいる堎合は、興味深いオファヌを提䟛しお、芖聎者のロむダルティを高めるこずができたす。 圓然、これらすべおをトリガヌリンクで可胜な限り柔軟に䜿甚できたす。 たずえば、補品を衚瀺し、バスケットに入れたが、泚文しなかったナヌザヌは、個人的なオファヌを行うこずができたす。



BigDataプロゞェクトの統蚈カスタマむズ



珟圚、圓瀟のプラットフォヌムでは1侇7千の店舗が営業しおおり、システムは1か月あたり玄4億4,000䞇のむベントを蚈算しおいたす。 補品カタログ党䜓には、玄1800䞇のアむテムが含たれおいたす。 合蚈泚文数に察する掚奚の泚文の割合9〜37。



ご芧のずおり、倧量のデヌタがあり、それらは自重ではなく、機胜しお利益をもたらしたす。 プラットフォヌムで営業しおいる店舗の堎合、このサヌビスは無料です。 バック゚ンド偎で倉曎できるオヌプンAPIがあり、特定の蚪問者により柔軟な掚奚を提䟛したす。



All Articles