ブックマーク / techblog.zozo.com (32)

  • ZOZOTOWNのWebホーム画面をNext.jsでリプレイスして得た知見 - ZOZO TECH BLOG

    はじめに ZOZOTOWN開発部の武井と申します。ZOZOTOWNのフロントエンドリプレイスプロジェクトを主に担当しております。ZOZO DEVELOPERS BLOG でも「ZOZOのリプレイスプロジェクトで得られる唯一無二の経験。大規模サービスを進化させるやりがいとは」というインタビュー記事を掲載しておりますので、もしよろしければこちらも併せてご覧ください。 さて、題です。現在ZOZOTOWNではオンプレミスかつ、モノリスだった既存システムをマイクロサービスAPIに責務を分割したり、インフラをクラウドに移行したりしています。しかし、いわゆるWebのUIを構築するためのシステムは現在も既存システムに新機能開発や機能改修を行なっており、リプレイスに着手できていませんでした。 そこで、まずホーム画面から段階的にリプレイスすべく設計・開発を昨年から行ない、無事リリースできました。ZOZOT

    ZOZOTOWNのWebホーム画面をNext.jsでリプレイスして得た知見 - ZOZO TECH BLOG
  • ディープラーニングを活用したレコメンドエンジン改善への取り組み - ZOZO TECH BLOG

    はじめに こんにちは、推薦基盤部の与謝です。ECサイトにおけるユーザの購買率向上を目指し、レコメンデーションエンジンを研究・開発しています。最近ではディープラーニングが様々な分野で飛躍的な成果を収め始めています。そのため、レコメンデーション分野でも研究が進み、精度向上に貢献し始めています。記事では、ディープニューラルネットワーク時代のレコメンド技術について紹介します。 目次 はじめに 目次 パーソナライズレコメンドとは 深層学習より前の推薦手法 協調フィルタリング Matrix Factorization SVD(Singular Value Decomposition) Factorization Machine 深層学習を使った推薦手法 ニューラルネットワーク推薦手法に対する警鐘 Recboleプロジェクト Recboleプロジェクトを用いた各アルゴリズムの検証 General Re

    ディープラーニングを活用したレコメンドエンジン改善への取り組み - ZOZO TECH BLOG
  • GCP Shared VPCを利用した全社共通ネットワークの運用におけるDedicated Interconnect利用設定の最適化手法 - ZOZO TECH BLOG

    はじめに こんにちは。気がつけば4月でZOZOTOWNに関わって9年目を迎えるSRE部の横田です。普段はSREとしてZOZOTOWNのリプレイスや運用に携わっています。 記事ではGoogle Cloud PlatformでShared VPCを採用し全社共通ネットワークを構築した背景とその運用方法について説明します。 ZOZOTOWNとパブリッククラウド専用線 まずはZOZOTOWNとパブリッククラウドを接続する専用線について説明します。 数年前まではZOZOTOWNを支える基盤は、ほぼ全てがオンプレミス環境で稼働しており、以下の課題がありました。 システムが密結合であること アジリティの低さ これらを解決するためにパブリッククラウドを活用したマイクロサービス化が日々進んでいます。 現在パブリッククラウドはAmazon Web Services(以下、AWS)とGoogle Cloud

    GCP Shared VPCを利用した全社共通ネットワークの運用におけるDedicated Interconnect利用設定の最適化手法 - ZOZO TECH BLOG
  • VAEとGANを活用したファッションアイテム検索システム - ZOZO TECH BLOG

    データサイエンティストの中村です。今回はイメージファーストなファッションアイテム検索システムを作ってみたのでそちらの紹介をしたいと思います。 記事で紹介する技術はIBIS2016でも報告しています。 概要 ファッションアイテムを探すとき、見た目の印象はとても大事な要素です。ファッションは感覚的なものなので、自分が欲しい服について言葉で説明することは難しいですが、そのアイテムの良し悪しは画像を見ただけで判断できるからです。 今回開発した検索システムは見た目の印象を大事にしたいので、画像をクエリとします。ただし、ただの画像検索では面白くないので、色や形状などの属性情報を付加した状態で検索を実行できるようにしました。 例えば、「シルエットは良いんだけど、これの赤いやつが欲しい」のような感覚的な注文を、以下のGIFのように画像に属性を付加する形で拾っています。 よくある検索システムではカテゴリに

    VAEとGANを活用したファッションアイテム検索システム - ZOZO TECH BLOG
  • 社内PCでホスティングされていたRedashをFargateに移行してみた - ZOZO Technologies TECH BLOG

    こんにちは、最近気になっている哺乳類はオリンギートな、開発部の塩崎です。 私の所属しているMarketingAutomationチームではRealtimeMarketingシステムの開発運用を行っております。 このシステムはZOZOTOWNのユーザーに対してメールやLINEなどのコミュニケーションチャンネルを使い情報の配信を行うものです。 メルマガの配信数や開封数などの数値は自動的に集計され、BIツールであるRedashによってモニタリングされています。 このRedashは社内PCによってホスティングされていましたが、運用面で辛い部分が多々あったためパブリッククラウドに移行しました。 移行先のクラウドはawsを選択し、RedashをホスティングするためのサービスはECS/Fargateを選択しました。 この記事ではawsに構築した環境や、移行作業などを紹介します。 移行前のRedash

    社内PCでホスティングされていたRedashをFargateに移行してみた - ZOZO Technologies TECH BLOG
  • Flex Slotsを用いたBigQueryのコストパフォーマンス改善と運用 - ZOZO TECH BLOG

    こんにちは、SRE部の谷口(case-k)です。私たちのチームではデータ基盤の開発や運用をしています。1年ほど前からBigQueryのコストパフォーマンス改善を目的にFlex Slotsを導入しています。 記事ではFlex Slotsの導入効果や運用における注意点、ワークフロー設計についてご紹介します。BigQueryのコストやパフォーマンスで課題を抱えているチームや管理業務を行っている方の参考になれば幸いです。 BigQuery Reservationsとは コミットメント 予約 割り当て なぜFlex Slotsを使う必要があるのか Flex Slotsを用いたコストパフォーマンス改善設計 管理プロジェクトの作成 月次コミットメントの活用 Flex Slotsの活用とワークフロー設計 ワークフロー タスク 「コミットメントの購入」タスク 「コミットメントの削除」タスク 「予約」タスク

    Flex Slotsを用いたBigQueryのコストパフォーマンス改善と運用 - ZOZO TECH BLOG
  • Fastlyのパスベースルーティングで実現するWEARのゆるやかなクラウド移行 - ZOZO TECH BLOG

    はじめに こんにちは。メディアプラットフォーム部 WEAR部 WEAR-SREの長尾です。 WEARは2013年にリリースされ、現在8年目のサービスです。そして、2004年にリリースされた当時のZOZOTOWNと同じアーキテクチャを採用しているため、比較的古いシステム構成で稼働しています。記事では、そのWEARのWebアプリケーション刷新とクラウド移行で実践している、Fastlyを活用したパスベースルーティングによる段階移行の取り組みを紹介します。 WEARをリプレイスする理由 WEARのWebアプリケーションは、データセンターでオンプレミス(以下、オンプレ)上で稼働しています。また、DBSQL Serverを利用しています。長年このアーキテクチャで成長を続けてきましたが、今後さらに成長を加速させていくためには以下の3点を実現する必要があります。その実現に向け、2年前からリプレイスに

    Fastlyのパスベースルーティングで実現するWEARのゆるやかなクラウド移行 - ZOZO TECH BLOG
  • KubeflowによるMLOps基盤構築から得られた知見と課題 - ZOZO TECH BLOG

    はじめに こんにちは。SRE部MLOpsチームの中山(@civitaspo)です。みなさんはGWをどのように過ごされたでしょうか。私は実家に子どもたちを預けて夫婦でゆっくりする時間にしました。こんなに気軽に実家を頼りにできるのも全国在宅勤務制度のおかげで、実家がある福岡に住めているからです。「この会社に入って良かったなぁ」としみじみとした気持ちでGW明けの絶望と対峙しております。 現在、MLOpsチームでは増加するML案件への対応をスケールさせるため、Kubeflowを使ったMLOps基盤構築を進めています。記事ではその基盤構築に至る背景とKubeflowの構築方法、および現在分かっている課題を共有します。 目次 はじめに 目次 MLOpsチームを取り巻く状況 MLOps基盤の要件 MLOps基盤技術としてのKubeflow Kubeflowの構築 ドキュメント通りにKubeflowを構

    KubeflowによるMLOps基盤構築から得られた知見と課題 - ZOZO TECH BLOG
  • React + microCMSで実現するZOZOTOWNキャンペーンページのノーコード化 - ZOZO TECH BLOG

    はじめに 2020年新卒入社で、現在ZOZOWEB部所属の武井です。ZOZOTOWNのWebフロントエンド開発を担当しています。私は入社以来オフィスに2度しか出社したことがありませんが、そのうちの1度はスタッフインタビュー記事の撮影のときでした。アートがたくさんある素敵なオフィスですが、それ以降出社できていません。まさか新卒1年目からフルリモート勤務をすると思っていませんでしたが、先輩スタッフが仕組み作りをしてくださっていたおかげで快適に働けています。 さて、題です。ZOZOTOWNではタイムセール、ショップ限定クーポン、抽選プレゼントなどのキャンペーンを期間限定で実施しています。このキャンペーンをより際立たせるためにキャンペーンページを作成し、ホーム画面やメルマガなどを通じてお客様にお届けしています。しかし、このキャンペーンページの作成が必要になった場合、エンジニアが都度実装しており、

    React + microCMSで実現するZOZOTOWNキャンペーンページのノーコード化 - ZOZO TECH BLOG
  • BigQueryの監査ログをリアルタイムに監視して使いすぎを防止してみる - ZOZO TECH BLOG

    こんにちは。SRE部の塩崎です。七味唐辛子の粉末を7種類に分類するという趣味を発展させて、おっとっとを新口動物と旧口動物に分類するという趣味を最近発明しました。 BigQueryは非常にパワフルなData WareHouse(DWH) SaaSであり、大容量のデータを一瞬で分析できます。しかし、課金額がスキャンしたデータ量に比例するという特徴があるため、意図せずに大量のデータをスキャンしてしまい大金を溶かしてしまうことを懸念する人もいます。 qiita.com そのため、課金額が大きすぎるクエリを発見した際にSlackへ通知する仕組みを作りました。GCP Organization内の全プロジェクトで実行されたBigQueryの監査ログをリアルタイムにチェックすることによってこの仕組みは実現されています。記事では作成したシステムを紹介します。 なお、記事は以下のQiita記事に着想を得た

    BigQueryの監査ログをリアルタイムに監視して使いすぎを防止してみる - ZOZO TECH BLOG
    whitecrane89200
    whitecrane89200 2021/01/12
    BigQueryのクエリ課金の監視大事。しかもリアルタイムなのがいい
  • 【ZOZOTOWNマイクロサービス化】API Gatewayを自社開発したノウハウ大公開! - ZOZO TECH BLOG

    はじめに こんにちは。ECプラットフォーム部のAPI基盤チームに所属している籏野 @gold_kou と申します。普段は、GoAPI GatewayやID基盤(認証マイクロサービス)の開発をしています。 ZOZOテクノロジーズでは、2020年11月5日にZOZO Technologies Meetup〜ZOZOTOWNシステムリプレイスの裏側〜を開催しました。その中で発表されたAPI Gatewayによるマイクロサービスへのアクセス制御に関して、当日話せなかった内容も含めて、API Gatewayについてこの記事で網羅的にまとめました。 API Gatewayやマイクロサービスに興味ある方、「API Gateway」という言葉は知っているけど中身はよく分からないという方向けの記事なので、読んでいただけると幸いです。 はじめに ZOZOTOWNのリプレイス マイクロサービス化の目的 ストラ

    【ZOZOTOWNマイクロサービス化】API Gatewayを自社開発したノウハウ大公開! - ZOZO TECH BLOG
  • FCMを使ったWEARプッシュ通知基盤リプレイス - ZOZO TECH BLOG

    こんにちは。WEARバックエンドエンジニアのid:takanamitoです。先日リリースしたWEARの新プッシュ通知基盤の紹介をしようと思います。 新プッシュ通知基盤開発の背景と目的 WEARでは既にiOS/Androidアプリに向けたプッシュ通知配信基盤が存在していました。 しかし、かなり昔につくられた基盤ということで運用にコストがかかったり、必要な機能が足りていなかったりします。 例えば、ユーザー全体にプッシュ通知を送りたい場合に以下のような問題が存在しました。 ログイン済みユーザーにしかプッシュ通知を送信できない プッシュ通知の送信開始から完了までに半日以上かかる 配信サーバーのスケールに手作業が発生する 1.についてはWEAR開発当初、はじめてプッシュ通知を導入するきっかけとなったキャンペーンが存在したものの、そのキャンペーンの対象がWEARアカウントを持っている人だったために、こ

    FCMを使ったWEARプッシュ通知基盤リプレイス - ZOZO TECH BLOG
  • ZOZOTOWNを支えるリアルタイムデータ連携基盤 - ZOZO TECH BLOG

    こんにちは、SRE部MA基盤チームの谷口(case-k)です。私達のチームでは、データ連携基盤の開発・運用をしています。 データ基盤には大きく分けて2種類あり、日次でデータ連携してるものとリアルタイムにデータ連携しているものがあります。記事ではリアルタイムデータ連携基盤についてご紹介します。 既存のデータ連携基盤の紹介 リアルタイムデータ連携基盤の紹介 なぜ必要なのか 活用事例の紹介 データ連携の仕組みと課題 リプレイス後のリアルタイムデータ連携基盤 SQL Serverの差分データの取り方を検討 アーキテクチャ概要と処理の流れ Fluentdのプラグインを使った差分データの取得 Dataflowでメッセージの重複を排除 Dataflowで動的にBigQueryの各テーブルに出力 Pub/Subのメッセージ管理 イベントログ収集基盤 個人情報の取り扱い ビルド・デプロイ戦略 監視 データ

    ZOZOTOWNを支えるリアルタイムデータ連携基盤 - ZOZO TECH BLOG
  • クローラー運用を楽にするためのクラウドサービス比較 - ZOZO TECH BLOG

    こんにちは!最近気になるニュースはスピノサウルスの尻尾の化石が発見されたこと1な、SRE部エンジニアの塩崎です。ZOZOテクノロジーズの前身となった会社の1つであるVASILYでは数多くのクローラーの開発・運用の担当をしてきました。 今回はその知見を生かして、クローラーを楽に運用するためのクラウドサービスを紹介します。 概要 データ解析を円滑に進めるためには、CSVやWeb APIなどの構造化されたデータが必要です。しかし全てのWebサイトにあるデータが構造化データを提供しているとは限りません。むしろ提供していないケースの方がはるかに多いです。そのため、Webクローラーを作成して構造化されていないWebページを解析し、構造化データを生成する必要があります。 しかし、Webクローラーの運用には数多くの「つらみ」があります。特に大量のWebページを1日1回などの頻度で定期的にクロールする際には

    クローラー運用を楽にするためのクラウドサービス比較 - ZOZO TECH BLOG
  • JP1で管理するジョブの異常終了をClojureを利用しSlack通知する - ZOZO TECH BLOG

    こんにちは、開発部SREの田島です。私達のチームでは、JP1というツールをワークフローエンジンとして利用しています。JP1のジョブの監視は今まで外部にお願いしていましたが、異常が発生してからすぐ連絡してもらうことができない等の問題がありました。そこでJP1の機能とClojureで作成したスクリプトを組み合わせて異常検知の仕組みを作成しました。記事ではJP1を使っている背景、並びに異常検知の仕組みをどのように実現したかについてご紹介します。 背景 JP1利用の背景 冒頭でも紹介しましたが私達のチームでは日立製作所が開発・発売しているJP1というツールをワークフローエンジンとして利用しています。多くのチームではDigdagやGCPのCloud Composerが主にワークフローエンジンとして採用されています。 実際私達のチームでもDigdagをフル活用しており、その運用の知見も得られているた

    JP1で管理するジョブの異常終了をClojureを利用しSlack通知する - ZOZO TECH BLOG
    whitecrane89200
    whitecrane89200 2019/12/17
    ClojureでのSlack通知の実装。実装としてはコンパクトだけど価値ある改善は普段と違う技術スタックを試すいいチャンスだと思う
  • 分散キャッシュサーバーのSplitBrainの再現とその調査 - ZOZO TECH BLOG

    こんにちは。ZOZOテクノロジーズ開発部SREの田島(@katsuyan121)です。 弊社ではJBoss Data Grid(以下JDG)という分散キャッシュサーバーをマーケティングオートメーションシステムに導入し、キャンペーンのリアルタイム配信を実現しています。 JDGは複数台のサーバーでクラスタを組んでおり、先日そのクラスタがSplitBrainを起こしました。 SplitBrainとは、1つのクラスタが2つ以上のクラスタに分断することをいいます。 例えば、クラスタのノード間で通信が分断された場合などに、ノード同士で通信できなくなりSplitBrainが発生します。 調査の過程でJDGはどのような仕組みで動作しているのか、どのような原因でSplitBrainが発生したのか知見が溜まったのでそれを紹介します。 また、実際にSplitBrainの再現を行い対策を行ったのでそれについても紹

    分散キャッシュサーバーのSplitBrainの再現とその調査 - ZOZO TECH BLOG
  • Ruby on Lambdaを使ってRubyKaigi用のデモアプリを作った話 - ZOZO TECH BLOG

    こんにちは、開発部の塩崎です。 最近はCloudFormation・Embulk・Digdagを使った仕事をすることが多く、一番使う言語がYAMLになりました。 今年福岡で開催されたRubyKaigi 2019ではZOZOテクノロジーズはRubyスポンサーとして協賛させていただきました。 カンファレンス中のスポンサーブースの出し物として、DroidKaigi 2019と同様にファッションチェックアプリの展示を行いました。 DroidKaigiの展示と全く同じでは芸がないと考え、今回のRubyKaigiのためにRuby on Lambdaランキング機能を作成しました。 記事では、そのランキング機能の説明をしたいと思います。 ファッションチェックアプリのランキング機能とは まず、ファッションチェックアプリの説明をします。 このアプリはDroidKaigi 2019のために作成されたデモアプ

    Ruby on Lambdaを使ってRubyKaigi用のデモアプリを作った話 - ZOZO TECH BLOG
  • CloudFormationとOpsWorksでインフラを育てる - ZOZO TECH BLOG

    こんにちは。インフラエンジニアの光野です。 弊社ではネットワークの構築と管理にAWS CloudFormationとAWS OpsWorksを導入しました。 記事では、その効果と導入に際しての工夫について紹介いたします。 目次 Before / After 効果 CloudFormarionとは CloudFormation or Terraform OpsWorksとは SSH/sudo管理 CloudFormationとOpsWorksの役割分担 CloudFormationテンプレートの分離方針 OpsWorksマルチレイヤーによるインスタンスの管理 OpsWorksでのdry-runとdiff YAML版CloudFormationでOpsWorks(Chef)を定義する場合の注意点 まとめ Before / After CloudFormationとOpsWorksを導入するま

    CloudFormationとOpsWorksでインフラを育てる - ZOZO TECH BLOG
  • Vue.js+Vuex+TypeScriptのWebフロントエンド開発現場を前向きに改善した話 - ZOZO TECH BLOG

    こんにちは。Webフロントエンドエンジニアの松井菜穂子です。 ZOZOテクノロジーズに入社して一年ほど経ちます。 あるサービスの立ち上げから運用まで、Webフロントエンドのチームリーダー・開発メンバーとして関わってきました。 当記事では、当社のWebフロントエンド開発現場にあった問題と、それぞれの課題に対して堅実に積み重ねた技術的な改善方法についてご紹介します。 はじめに モダンな技術でも負債は生まれる 負債を何故改善するのか 要因 その1: Vueコンポーネントを綺麗に分割する テンプレート コンポーネントクラス 使用例 解決策 テンプレート コンポーネントクラス 使用例テンプレート 使用例コンポーネントクラス コンポーネントカタログで汎用化を促す コード テンプレート(atoms.vue) コンポーネントクラス(atoms.vue) サンプル その2: Vuexをシンプルにする Sta

    Vue.js+Vuex+TypeScriptのWebフロントエンド開発現場を前向きに改善した話 - ZOZO TECH BLOG
  • ZOZOテクノロジーズの技術顧問 岸川氏、松田氏、Matz氏に聞くエンジニア人生。 〜とにかく書く、書くことを楽しむ〜 - ZOZO TECH BLOG

    こんにちは、広報の坂井です。ZOZOテクノロジーズ発足から1年。2019年4月現在、ZOZOテクノロジーズは3名の技術顧問を迎えています。iOSアプリ開発の第一人者である岸川克己氏、Ruby,Ruby on Railsコミッターの松田明氏、そしてRubyの生みの親であるまつもとゆきひろ氏です。 3名にインタビューを行い、ZOZOテクノロジーズの技術顧問になった背景や、エンジニア人生について語っていただきました。 岸川 克己 氏(@k_katsumi) iOS/macOSアプリケーションの開発者。様々な企業にテクニカルアドバイザーとして関わる。また、多数のオープンソースライブラリをGitHubで公開。2019年1月よりZOZOテクノロジー技術顧問。 松田 明 氏(@a_matsuda‏) Rubyコミッター。Ruby on Railsコミッター。kaminari、action_args、a

    ZOZOテクノロジーズの技術顧問 岸川氏、松田氏、Matz氏に聞くエンジニア人生。 〜とにかく書く、書くことを楽しむ〜 - ZOZO TECH BLOG