タグ

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

  • RubyKaigi 2024 参加レポート - ZOZO TECH BLOG

    こんにちは、DevRelブロックのikkouです。2024年5月15日から17日の3日間にわたり沖縄県は那覇市で「RubyKaigi 2024」が開催されました。ZOZOは例年同様プラチナスポンサーとして協賛し、スポンサーブースを出展しました。 technote.zozo.com ZOZOとWEARとRubyKaigi エンジニアによるセッション紹介 Generating a custom SDK for your web service or Rails API Namespace, What and Why YJIT Makes Rails 1.7x Faster Using Ruby in the browser is wonderful. An adventure of Happy Eyeballs Embedding it into Ruby code Unlocking Pot

    RubyKaigi 2024 参加レポート - ZOZO TECH BLOG
    tsuwatch
    tsuwatch 2024/05/23
    RubyKaigiのだいたいがわかる
  • GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部FAANSバックエンドブロックの佐野です。普段はサーバーサイドエンジニアとして、FAANSのバックエンドシステムを開発しています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗で働くショップスタッフの販売サポートツールです。例えば、コーディネート投稿機能や成果確認機能などを備えています。投稿されたコーディネートはZOZOTOWNやWEAR、Yahoo!ショッピング、ブランド様のECサイトへの連携が可能です。成果確認機能では、投稿されたコーディネート経由のEC売上やコーディネート閲覧数などの成果を可視化しています。 記事では、成果データの集計処理におけるBigQueryのクエリ実行処理のユニットテストをGoで実装した取り組みと、その際の工夫についてご紹介します。 目次 はじめに 目次 成果データの集計処理とは 抱え

    GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG
  • ワークフロー実行基盤をFargateからEC2へ変更したらコストもパフォーマンスも改善できて幸せになった話 - ZOZO TECH BLOG

    はじめに こんにちは、ブランドソリューション開発部バックエンド部SREブロックの小林(@mirai_kobaaaaaa)です。普段はWEARやFAANSというサービスのSREとして開発、運用に携わっています。 WEARではAmazon Elastic Kubernetes Service(以下、EKSと呼ぶ)を用いて複数システムのインフラ基盤を構築・運用しています。その中の1つとして、ワークフロー処理の実行基盤が存在しています。 記事では、そのワークフロー実行基盤が抱えていた課題と、それらをどのように解決したのかを紹介します。また、付随して得られたメリットについても紹介いたします。 目次 はじめに 目次 WEARにおけるワークフロー ワークフロー処理内容 ワークフロー実行基盤の構成 ワークフロー実行基盤の課題 コスト内訳の調査 過剰なPodスペック Fargate実行時間の増大 ワーク

    ワークフロー実行基盤をFargateからEC2へ変更したらコストもパフォーマンスも改善できて幸せになった話 - ZOZO TECH BLOG
  • WEARにおけるKubernetesネイティブな負荷試験基盤の導入とその効果 - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部バックエンド部SREの山岡(@ymktmk)です。普段はファッションコーディネートアプリ「WEAR」のSREとしてクラウドの運用やリプレイスをおこなっています。 昨年から、私たちのチームでは分散した技術スタックをKubernetesへ統一するリプレイスプロジェクトを開始し、先月ついにKubernetesへの移行が完了しました。 techblog.zozo.com また、Kubernetesへの段階的な移行と並行して、Kubernetesの柔軟性を活かした運用改善や開発者体験の向上に取り組んできました。その一環として、k6-operatorを活用した負荷試験基盤を作成しました。 記事ではWEARにKubernetesネイティブな負荷試験基盤を導入した背景とその効果についてご紹介します。Kubernetes環境における負荷試験基盤の導入を検

    WEARにおけるKubernetesネイティブな負荷試験基盤の導入とその効果 - ZOZO TECH BLOG
  • WEARをリノベ!Objective-CからSwiftへのリプレイス戦略でも使えるスナップショットテスト - ZOZO TECH BLOG

    目次 目次 はじめに マイページ画面リプレイスに伴う課題 使用したライブラリ Objective-Cでリファレンス、Swiftでテスト リファレンス画像のファイルサイズを小さく デバイスも言語も一気にテスト 複数言語のテスト自動化 複数デバイスを一気にテストする方法 いにしえVCのためのスタブデータの用意 おわりに はじめに みなさん、こんにちは! 松井です。普段はWEAR iOSアプリ開発で、コードを書く筋肉をパンパンに鍛えています。WEARアプリは、長い歴史を持っており、まだまだObjective-Cで書かれたレガシーなコードも居座っているんです。そんな中、私たちは地道にリファクタリングを進めています。そうしたObjective-CからSwiftへのリプレイス戦略において、スナップショットテストを活用したお話をしたいと思います。 スナップショットテストと聞くと、一般的にはコードの修正前

    WEARをリノベ!Objective-CからSwiftへのリプレイス戦略でも使えるスナップショットテスト - ZOZO TECH BLOG
  • 効率的な運用を実現するWEARコンテンツのモジュール化 - ZOZO TECH BLOG

    こんにちは、WEARバックエンドエンジニアの三浦です。WEARのバックエンドの開発、保守運用に携わっています。個人ではおよそ2年ぶりのテックブログ執筆となります。 さて、今回はWEAR上のコンテンツを運用チームが自由にカスタマイズできるようモジュール化した話をご紹介します。 目次 目次 モジュール概要 導入背景 モジュールの設計 要件と課題 リプレイスとの競合 負荷対策 管理ツール API まとめ さいごに モジュール概要 まず最初にWEARのモジュール化はどのようなものか説明します。 今回導入したモジュール化は、WEARのアプリ上の一部コンテンツをUIモジュールとして扱えるようにすることです。1つ目の画像に表示されているシアーシャツや雨の日コーデといったテーマ別のコンテンツ1つ1つがモジュールとなっており、テーマに合わせて絞られたコーディネート画像が表示されます。モジュール右上のすべてを

    効率的な運用を実現するWEARコンテンツのモジュール化 - ZOZO TECH BLOG
  • 【イベントレポート】After RubyKaigi 2023〜メドピア、ZOZO、Findy〜を開催しました - ZOZO TECH BLOG

    こんにちは。ZOZO DevRelブロックの@wirohaです。RubyKaigiではじめて協賛ブースに立ち、知り合いも増えて嬉しく感じている今日この頃です。 はじめに 5/18にAfter RubyKaigi 2023〜メドピア、ZOZO、Findy〜をオフライン・オンラインのハイブリッドで開催しました。RubyKaigi 2023のスポンサー企業であるメドピア株式会社、株式会社ZOZO、ファインディ株式会社の3社合同でのRubyKaigi Afterイベントです。 イベント概要 3社の社員によるLT、RubyKaigi SpeakerによるLT、パネルディスカッションを行い、その後は懇親会で盛り上がりました! LT REPLとデバッガを取り巻く環境の変化 -Pry, IRB, そしてdebug.gem- / メドピア株式会社 古川健二 @frkawa_ ruby.wasm + unlo

    【イベントレポート】After RubyKaigi 2023〜メドピア、ZOZO、Findy〜を開催しました - ZOZO TECH BLOG
    tsuwatch
    tsuwatch 2023/06/03
    みなさん、ありがとうございました
  • RubyKaigi 2023参加レポート 〜エンジニアによるセッション紹介〜 - ZOZO TECH BLOG

    こんにちは、バックエンドエンジニアの近です! 2023/5/11〜13に長野県にて開催されたRubyKaigi 2023でプラチナスポンサーとして協賛し、スポンサーブースを出展しました。 また、今年は我々が運営しているファッションコーディネートアプリ「WEAR」のサービス紹介CMを作成し、RubyKaigiの会場にて放映させていただきました。 technote.zozo.com technote.zozo.com 実際に放映されたCMは以下になります! www.youtube.com 我々が運営・開発しているファッションコーディネートアプリ「WEAR」のバックエンドはRuby on Railsで開発しています。2013年にVBScriptで作られたシステムですが、2020年頃からVBScriptのシステムをコードフリーズし、リプレイスをはじめました。現在もリプレイスを進めながら、新規の機能

    RubyKaigi 2023参加レポート 〜エンジニアによるセッション紹介〜 - ZOZO TECH BLOG
  • SonarCloudと始める静的コード解析 〜ソフトウェア品質向上のための第一歩〜 - ZOZO TECH BLOG

    はじめに こんにちは。FAANSバックエンドエンジニアの浜口(@xlgorbylx)です。普段はFAANSのバックエンドシステムの開発をしています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗のショップスタッフの販売サポートツールです。例えば、ZOZOTOWN上で実店舗の在庫取り置きができる機能や、コーディネート投稿の機能などを備えています。投稿されたコーディネートはZOZOTOWNやWEAR、Yahoo!ショッピング、ブランド様のECサイト等に連携が可能です。これによりお客様のコーディネート選びをサポートし、購買体験をより充実したものにします。機能の詳細に関しましては、下記プレスリリースをご覧ください。 corp.zozo.com 稿では、Go言語で実装されたFAANSのバックエンドシステムについて、SonarSource社の提供するSaaSである「Sonar

    SonarCloudと始める静的コード解析 〜ソフトウェア品質向上のための第一歩〜 - ZOZO TECH BLOG
  • RailsConf 2023 参加レポート - ZOZO TECH BLOG

    こんにちは、バックエンドエンジニアの近です! 4/24〜4/26にかけてアトランタで開催されたRailsConf 2023にWEARバックエンドブロックから近・小山・高久の3人が参加しました。 去年はコロナの影響もあってオンラインの開催だったのですが、今年はオフラインでの開催となり、大勢が参加していて大盛況でした。 我々が開発・運営しているファッションコーディネートアプリ「WEAR」のバックエンドはRuby on Railsで開発しています。現在では、新機能の開発やリプレイスなど、チームメンバーの全員がRuby on Railsに関わっているため、今回RailsConfにて様々なセッションを聞けたことはとても有意義な経験でした。 RailsConfとは 1年に1回開催されるRuby on Railsに関する世界最大のカンファレンスとなります。(公式サイト) 2020〜2022年はコロナの影

    RailsConf 2023 参加レポート - ZOZO TECH BLOG
    tsuwatch
    tsuwatch 2023/05/24
    いいな〜
  • DynamoDBによるOutboxパターンとCDCを用いたCQRSアーキテクチャの実装〜ZOZOMOでの取り組み - ZOZO TECH BLOG

    こんにちは。ブランドソリューション開発部プロダクト開発ブロックの岡元です。普段はFulfillment by ZOZOとZOZOMOのブランド実店舗の在庫確認・在庫取り置きサービスの開発、保守をしています。 記事では、ブランド実店舗の在庫確認・在庫取り置きサービスで実装したCQRSアーキテクチャについて紹介させていただきます。 CQRSの実装においては、データベース(以下、DB)分割まで行い、コマンド側DBにはAmazon DynamoDB(以下、DynamoDB)、クエリ側DBにはAmazon Aurora MySQL(以下、Aurora MySQL)を用いています。また、コマンド側DBとクエリ側DBの橋渡しを担うメッセージングにおいてはOutboxパターンと変更データキャプチャを用いました。DBとメッセージングシステムへの二重書き込みを避けることで障害などのタイミングで顕在化する潜在

    DynamoDBによるOutboxパターンとCDCを用いたCQRSアーキテクチャの実装〜ZOZOMOでの取り組み - ZOZO TECH BLOG
  • 10年続くWEARにおける、デザインシステム事始め - ZOZO TECH BLOG

    こんにちは、WEAR Webフロントエンドチームの吉田と大脇です。 現在WEARではNext.jsでのリプレイスが進行中です。今回はリプレイスのデザイン面における課題と解決に向けて行った取り組みを紹介します。 リプレイスの経緯や技術選定については、弊社の藤井の記事をご覧ください。 techblog.zozo.com 10年の歴史のあるアプリケーションと向き合う リプレイスにおける課題 他部署との連携 デザイナーとエンジニアの歩み寄り ミーティングで話し合ったこと ミーティングを行って得た気づき デザインツールの変遷 未来のこと、これからやっていきたいこと デザイントークンの定義 デザイン周りの負荷軽減 技術面でやりたいこと Tailwind CSS Storybook 終わりに 10年の歴史のあるアプリケーションと向き合う WEARは今年で10年目となります。Webサービスとしては長期間に

    10年続くWEARにおける、デザインシステム事始め - ZOZO TECH BLOG
  • WEARにおけるプッシュ通知システムのリプレイスを全て完了した話 - ZOZO TECH BLOG

    こんにちは、WEARバックエンドブロックの天春です。バックエンドの運用・開発に携わっています。記事では、以前公開したWEARにおけるプッシュ通知システムのリプレイス のフェーズ2を終え、旧環境のプッシュ通知システムのリプレイスを完了したのでシステム構成や移行手順をご紹介します。 目次 目次 1:Nのプッシュ通知システム リプレイス前の1:Nのプッシュ通知システム リプレイス前のシステム構成 問題点 リプレイス後の1:Nのプッシュ通知システム リプレイス後のシステム構成 1:Nキュー(Sidekiqダッシュボード) 負荷テスト 目標 対象 事前準備 負荷テスト実施 負荷テスト結果 負荷テスト実施後の改善内容 大量の通知の遅延を減らす 同時実行数の調整 500件単位でFCM通知配信 1:N通知配信の親ジョブ 500件単位でFCM配信を行う1:N通知配信の子ジョブ 500件単位でDynamoD

    WEARにおけるプッシュ通知システムのリプレイスを全て完了した話 - ZOZO TECH BLOG
  • OpenAPI Generatorに適したOpenAPIの書き方 - ZOZO TECH BLOG

    はじめに こんにちは! WEARバックエンドブロックの高久です。 WEARではOpenAPI(Swagger)を使って、アプリやWebのクライアントが利用するAPIを定義しています。そして先日、開発効率化のためにOpenAPI GeneratorでOpenAPIからAPIクライアントコードを自動生成、活用できるように整備をしました。その中でOpenAPI Generatorに適したOpenAPIの書き方のポイントがいくつかあったので、内容を紹介していきます。 想定読者 OpenAPIを現在利用している、またはこれから利用する予定の方 OpenAPI Generatorを利用したコード自動生成を検討している方 背景 当初WEARではAPIクライアントコードはOpenAPIでのAPI定義を基に各クライアントが手動で実装していました。しかし手動で実装すると初期の実装コストや変更時の追従コストがか

    OpenAPI Generatorに適したOpenAPIの書き方 - ZOZO TECH BLOG
  • Cloud FirestoreからPostgreSQLへ移行したお話 - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部FAANSバックエンドブロックの田村です。普段はサーバサイドエンジニアとしてFAANSのバックエンドシステムの開発をしています。 FAANSとは、弊社が2022年8月に正式ローンチした、アパレル店舗のショップスタッフの販売サポートツールです。FAANSでは、データベースとしてGCPのサーバレスでドキュメント指向のNoSQLデータベースであるCloud Firestoreを当初採用していました。Cloud Firestoreはサーバレスなので運用負荷が掛からず、また安価でスケーラビリティにも優れたハイパフォーマンスなデータベースです。 しかし、Cloud Firestoreを使用して開発・運用していく中で直面した様々な課題からGCPのフルマネージドのリレーショナルデータベースであるCloud SQLのPostgreSQLにデータベースのリプ

    Cloud FirestoreからPostgreSQLへ移行したお話 - ZOZO TECH BLOG
  • WEARにおけるSLOを用いた信頼性改善の取り組み - ZOZO TECH BLOG

    こんにちは、WEAR部バックエンドブロックの小山とSREブロックの繁谷です。 WEARでは日々システムの信頼性を向上させるため改善に取り組んでいます。今回はその中でもSLOに基づいた改善について紹介いたします。 WEARリプレイスの歩み WEARでは2019年から格的にリプレイスを開始しましたが、当初は専属のSREはおらずインフラ構築など緊急度の高いものをバックエンドのエンジニアや、プロダクト横断のSREが担っていました。 WEARのSREとして活動に割ける時間も短かったためSLI(Service Level Indicator)1やSLO(Service Level Objective)2の指標もありませんでした。WEARにおけるリプレイスの変遷についてはこちらのスライドに詳しく載せられているため、ご興味のある方は是非ご覧ください。 WEARの組織における課題 WEARでは2021年4

    WEARにおけるSLOを用いた信頼性改善の取り組み - ZOZO TECH BLOG
  • RubyKaigi 2022参加レポート 〜エンジニアによるセッション紹介〜 - ZOZO TECH BLOG

    こんにちは!バックエンドチームマネージャーの@tsuwatchです! 2022/9/8〜10に三重県にて開催されたRubyKaigi 2022でプラチナスポンサーとして協賛し、スポンサーブースを出展しました。 technote.zozo.com technote.zozo.com 弊社からはWEARを開発するバックエンドエンジニア、SRE、PdMなど合計10名ほどが現地で参加しました。 我々が運営しているファッションコーディネートアプリ「WEAR」のバックエンドはRuby on Railsで開発しています。2013年にVBScriptで作られたシステムですが、2020年くらいからVBScriptのシステムをコードフリーズし、リプレイスをはじめました。現在もリプレイスを進めながら、新規の機能もRubyでどんどん開発しています。 また弊社ではRubyコミッタのsonotsさんがいたり、顧問とし

    RubyKaigi 2022参加レポート 〜エンジニアによるセッション紹介〜 - ZOZO TECH BLOG
    tsuwatch
    tsuwatch 2022/09/21
    書いた
  • WEARにおけるPUSH通知システムのリプレイス - ZOZO TECH BLOG

    こんにちは、WEARバックエンドブロックの天春(@AmagA001)です。バックエンドの運用・開発に携わっています。WEARはサービス開始から10年ほどの古いVBScriptを使った環境からRuby on Rails環境にシステムリプレイスを行なっています。記事では、リプレイスの中でも既存環境が複雑で問題や課題が多くあったPUSH通知システムのリプレイスについてご紹介します。 目次 目次 PUSH通知システムとは リプレイス前のPUSH通知システム リプレイス前のPUSH通知システムの問題点 通知送信バッチのスケールアウトが出来ない 障害対応・運用が難しい状況 複数の開発言語による運用・改修コストが高い ステージング環境で通知確認ができない リプレイスの背景 リプレイス後のPUSH通知システム 非同期システム・EKS導入 既存システムの問題解決 バッチのスケールアウトが出来ない 障害対応

    WEARにおけるPUSH通知システムのリプレイス - ZOZO TECH BLOG
  • WEARにおけるKubernetes導入と改善の歩み - ZOZO TECH BLOG

    はじめに こんにちは。ブランドソリューション開発部 WEAR部 SREの和田(@wadason)です。普段は「ファッションコーディネートアプリ WEAR」のSREとしてクラウドの運用やリプレイスをおこなっています。 WEARはサービス開始から10年が経ち、クラウドやオンプレミスを含む大小様々なシステムが稼働しています。アプリケーションを動かすための基盤にはAmazon ECSのようなコンテナを前提としたものから、オンプレミスのAPIやBatchを動かすIISまで幅広く扱っています。そうした中で、約1年前にSREチームが結成され、技術負債の脱却やクラウドを中心としたインフラの運用を行なってきました。当初取り組んでいた大規模なリプレイス案件も落ち着き、チームメンバーが増えてきたので、現在では分散した技術スタックをKubernetesへ統一するリプレイスプロジェクトを開始しています。 記事で

    WEARにおけるKubernetes導入と改善の歩み - ZOZO TECH BLOG
  • WEAR Webフロントエンドリプレイスのアーキテクチャ選定とNext.jsへの移行 - ZOZO TECH BLOG

    はじめに こんにちは。WEAR部フロントエンドブロックの藤井です。WEARでは現在、Webサイトのリプレイスを進めています。記事では、リプレイスに至った背景や課題と、課題解決のために行ったリプレイスのアーキテクチャ選定についてご紹介します。 なぜリプレイスするのか WEARはサービスローンチしてから約10年が経ちます。これまでローンチ当時の技術スタックのまま開発を続け、サービスを成長させてきました。今後もより継続的にスピード感を持ってユーザーへ価値を届けていくにあたってさまざまな課題があったため、新たな技術スタックでリプレイスを開始することにしました。 リプレイス前の環境 リプレイス前の環境はオンプレミスの環境にロードバランサー、Windowsサーバー(IIS)があり、そこでVBScriptが動いています。VBScriptでテンプレートHTMLにデータを流し込み、ブラウザに表示する仕組み

    WEAR Webフロントエンドリプレイスのアーキテクチャ選定とNext.jsへの移行 - ZOZO TECH BLOG