タグ

tekgraphixxのブックマーク (1,214)

  • GoでSQLの複雑なクエリのテストを書いてみた - ZOZO TECH BLOG

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

    GoでSQLの複雑なクエリのテストを書いてみた - 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
  • Swift 6に向けた準備:Strict Concurrency CheckingをTargeted設定にした際に発生した問題と解決方法 - ZOZO TECH BLOG

    こんにちは、フロントエンド部の中島です。FAANSのiOSアプリの開発を行なっています。 FAANSの由来は「Fashion Advisors are Neighbors」です。「ショップスタッフの効率的な販売をサポートするショップスタッフ専用ツール」で2022年8月に正式ローンチしました。 はじめに FAANS iOSチームではAPI通信においてSwift Concurrencyを利用しています。Swiftに限らず並行処理を扱う場合には実装次第でデータ競合を起こす恐れがあるのに対して、Swiftではデータ競合を防ぐ仕組みとしてActorが導入されています。そして、Actor間で扱うデータがデータ競合を起こさない型であるかコンパイラでチェックされます。Swift 6ではこのデータ競合のチェックにより既存のコードでコンパイルできなくなる可能性があります。Xcode 14ではSwift 6まで

    Swift 6に向けた準備:Strict Concurrency CheckingをTargeted設定にした際に発生した問題と解決方法 - 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
  • ZOZOTOWNアプリHome画面再設計の軌跡~10年以上歴史を持つアプリはどのようにして生まれ変わったのか~ - ZOZO TECH BLOG

    はじめに こんにちは、ZOZOアプリ部でZOZOTOWN iOSアプリを開発している小松です(@tosh_3)。 気づけば、ZOZOテクノロジーズに新卒入社して1年が過ぎていました。オフィスの近くに引っ越したのですが、オフィスに出社する前に、オフィスが移転しました。 さて突然ですが、最近ZOZOTOWNに大きな変化があったことをみなさんお気づきでしょうか。2021年3月18日よりZOZOTOWN全体が大幅リニューアルされ、コスメモールがオープンされるなどの大きな変化がありました。アプリも7.0.0とメジャーバージョンの更新を行い、ほとんど全ての画面が新デザインになりました。 そこで、記事ではHome画面のリニューアルを担当した私が、そこで使用した技術とその背景について触れながら、ZOZOTOWN iOSアプリのHome画面リニューアルの裏側をお伝えします。 ZOZOTOWNアプリの新旧デ

    ZOZOTOWNアプリHome画面再設計の軌跡~10年以上歴史を持つアプリはどのようにして生まれ変わったのか~ - ZOZO TECH BLOG
  • ZOZOTOWNリニューアルで実施したCache Stampede対策 - ZOZO TECH BLOG

    はじめに こんにちは。マイグレーションチームの藤です。 この記事では、先日のリニューアルに伴って導入したBackends For Frontends(以下、BFF)で、Redisを使ったキャッシュの事例をご紹介します。キャッシュを導入する際に起きる問題とその回避策について、サーバーサイドのアプリケーションで行った対策をもとに紹介していきます。 ZOZOTOWNリニューアルとBFF ZOZOTOWNで導入したBFFは、複数のAPIのレスポンスをフロントエンドが必要とする形式に集約して返却することを主な目的としています。これまでの実績から、大規模セール時のアクセス数は通常時の何倍にもなることがわかっており、BFFもそれに耐えられるパフォーマンスが必要です。 しかし、BFFに来たすべてのアクセスをそのままAPIに流すと、パフォーマンスに影響する恐れが出てきました。そのため、APIからのレスポン

    ZOZOTOWNリニューアルで実施したCache Stampede対策 - ZOZO TECH BLOG
  • BigQueryでの集計結果をノーコードでSlackに定期投稿してみた - ZOZO TECH BLOG

    こんにちは、DATA-SREチームの塩崎です。最近気になるニュースは「ネコがマタタビを好む理由が蚊を避けるためだった1」です。 さて、皆さんはデータ基盤で集計した結果をどのようにして確認していますか。LookerやPower BIなどのBIツールを使って綺麗なダッシュボードを作成している方も多いかと思います。しかし、全員が毎日確認すべき数値はSlackなどの全員が日常的に目にする場所へ掲げたいです。記事ではBigQueryとSlackを連携させる機能をノーコードで作成する方法を紹介します。 従来手法 BigQueryで集計した結果をSlackに通知するためにはGoogle Apps Script(以下、GAS)を用いるやり方が現在では主流です。GASの文法はJavaScriptとほぼ同じであり、普段分析をメインで担当している人たちには馴染みの薄い言語です。また、Cloud Functio

    BigQueryでの集計結果をノーコードでSlackに定期投稿してみた - ZOZO TECH BLOG
  • EC2 Image Builderを用いたRedashの運用改善 - ZOZO TECH BLOG

    こんにちは、SRE部の谷口(case-k)です。 記事では、EC2 Image Builderを使いRedashの運用改善を行った事例をご紹介します。運用しているRedashについてご紹介し、その後、Redashの運用課題に対してEC2 Image Builderでどのように解決したかTipsも踏まえご紹介します。 余談ですが全国どこでも働けるようになったので沖縄に住めています(感謝!) https://press-tech.zozo.com/entry/20210118_zozotechpress-tech.zozo.com 目次 目次 運用しているRedashの紹介 役割 インフラ構成 クエリ実行の流れ EC2インスタンス起動時の処理 Redashの運用課題 EC2 Image Builderによる課題解決 EC2 Image Builderの紹介 各リソースのTips 事前準備 コ

    EC2 Image Builderを用いたRedashの運用改善 - ZOZO TECH BLOG
  • ZOZOTOWNマイクロサービスの段階的移行を支えるカナリアリリースとサービス間通信における信頼性向上の取り組み - ZOZO TECH BLOG

    はじめに SRE部プラットフォームSREチームの川崎 @yokawasa です。 ZOZOTOWNではモノリシックなアーキテクチャーから、優先度と効果が高い機能から段階的にマイクロサービス化を進めています。記事では、そのZOZOTOWNの段階的なマイクロサービス移行で実践しているカナリアリリースとサービス間通信の信頼性向上の取り組みについてご紹介します。 なお、ZOZOTOWNのリプレイス戦略ついてはこちらのスライドが参考になります。 speakerdeck.com さて、ZOZOTOWNマイクロサービスプラットフォーム(以下、プラットフォーム)はAWS上に構築しており、コンテナーアプリ基盤にマネージドKubernetesサービスであるEKSを採用しています。また、複数サービスを単一Kubernetesクラスターで稼働させる、いわゆるマルチテナントクラスター方式を採用しています。 下記イ

    ZOZOTOWNマイクロサービスの段階的移行を支えるカナリアリリースとサービス間通信における信頼性向上の取り組み - ZOZO TECH BLOG
  • 「ガチ対話」でエンジニアチームのエンゲージメントを高める1on1の工夫 - ZOZO TECH BLOG

    はじめに BtoB開発部の増田です。 BtoB開発部は、主にFulfillment by ZOZO(以下、FBZ)の開発を担当しているエンジニアチームです。FBZの初回ローンチから間もなく3年経過しますが、サービスの拡大、拡張とともに見直すべき課題も増えてきました。日々の運用負荷の増大や、それに伴う開発効率の低下の話しを耳にする機会も増えています。そこで、今期の開発計画では、運用改善のための開発も優先度を上げて取り組むこととしていました。 一方で、新型コロナウィルスの影響もありチーム全体がリモートワークに移行して1年が経過しました。リモートワークが浸透する過程にはさまざまなコミュニケーション課題があり、上記の運用改善の施策を進める上でもコミュニケーションの円滑化が急務でした。 そのようなコミュニケーション課題の対策のひとつとして1on1に力を入れているチームも多いでしょう。この記事では、1

    「ガチ対話」でエンジニアチームのエンゲージメントを高める1on1の工夫 - ZOZO TECH BLOG
  • GitHub+CircleCIによる業務要件の記述精度向上の取り組み - ZOZO TECH BLOG

    こんにちは。MSP技術推進部の手塚(@tzone99)です。 この記事では、エンジニア向けのツールを周囲のエンジニア以外のチームにも導入し、チームを跨いだコミュニケーション上の課題を解決した事例をご紹介します。 普段エンジニアとしてプロダクトを開発する中でも、エンジニア同士のやり取りだけで業務が完結しないケースも多いかと思います。周囲のチームとやり取りする中でコミュニケーションのずれが発生した場合の対応として、今回の事例が参考になれば幸いです。 MSP技術推進部の活動について興味のある方はこちらの記事もぜひご覧ください。 techblog.zozo.com techblog.zozo.com techblog.zozo.com techblog.zozo.com 目次 目次 背景 コミュニケーション上の課題 業務要件のMarkdown/PlantUML化 運用の初期対応 自作のLinter

    GitHub+CircleCIによる業務要件の記述精度向上の取り組み - ZOZO TECH BLOG
  • SQL Serverの障害調査フローと事例のご紹介~原因不明な障害の調査から解決まで~ - ZOZO TECH BLOG

    こんにちは。ECプラットフォーム部の廣瀬です。 弊社ではサービスの一部にSQL Serverを使用しています。今回は2020年度に発生していたSQL Serverに関連する障害について、調査から対策実施までの流れを紹介したいと思います。これまでも弊社テックブログにて、SQL Serverに関するトラブルシューティングをいくつか紹介してきました。 techblog.zozo.com techblog.zozo.com techblog.zozo.com これらの記事と今回の記事の最大の相違点としては、「最後まで明確な原因の特定はできなかった」という点です。できる限り詳細な調査を実施しましたが、最後まで原因の特定には至りませんでした。そのような状況下において、どのようなフローで調査を実施し、最終的に障害が発生しない状況を作ることができたか紹介します。 SQL Server以外のデータストアを運

    SQL Serverの障害調査フローと事例のご紹介~原因不明な障害の調査から解決まで~ - ZOZO TECH BLOG
  • FBZにおけるサーバーレス監視で実施したアラート通知の最適化 - ZOZO TECH BLOG

    はじめに こんにちは。BtoB開発チームの中島です。Fulfillment by ZOZO(以下、FBZ)で提供しているAPIシステムの開発・運用を担当しています。 FBZの運用では、エラーログ発生時にアラートを通知させ、エラー内容をチェックして対応要否を判断しています。しかし、アラート通知が多すぎると運用負荷が高くなったり、重要なアラートを見落とすリスクもあるため、適切な量で通知することが重要になってきます。 記事では、FBZで実施した例を紹介しながらアラート通知の最適化について解説します。 FBZにおけるサービス監視 FBZでは、ログ解析によるサービス監視を実施しています。 AWS Lambda(以下、Lambda)から出力されたログを解析し、外部サービスのPagerDutyやDatadogに連携して監視しています。必要に応じてフィルタリングを行い、ログの通知量を都度調整しながら運用

    FBZにおけるサーバーレス監視で実施したアラート通知の最適化 - ZOZO TECH BLOG
  • High Level Rest ClientによるElasticsearch本番運用ガイド - ZOZO TECH BLOG

    こんにちは。ZOZOテクノロジーズZOZOTOWN部 検索チーム 兼 ECプラットフォーム部 検索基盤チームの有村(@paki0o)です。 ZOZOTOWNではこれまで度々紹介してきた通り、検索エンジンとしてElasticsearchを利用しています。リクエスト元のサーバーサイドのアプリケーションはJava(Spring Boot)で書かれており、クライアントにはHigh Level Rest Client(以下、HLRC)を使用しています。 www.elastic.co techblog.zozo.com HLRCを実際にプロダクション環境で運用していく中で、サービスのSLAを満たすために安定稼働させるための設定や、効率的に通信するための設定などを細かく指定しました。現在の設定にたどり着くまで、ドキュメント上で表現されていなかったり機能が用意されていなかったり等様々な苦労があったので、ま

    High Level Rest ClientによるElasticsearch本番運用ガイド - ZOZO TECH BLOG
  • Hardening 2020 H3DXから学ぶ「インシデント対応訓練」の重要性 - ZOZO TECH BLOG

    こんにちは。SRE部の横田・秋田です。普段はZOZOTOWNのリプレイスや運用に携わっています。 私たちは2020年11月13日から14日にかけてフル・オンラインで開催されたHardening 2020 H3DXに参加しました。記事では、過去にオフライン開催のHardening Projectに参加経験のある秋田と、今回が初のHardening Project参加となった横田の体験を振り返り、「サービスを守る訓練」の重要性を再確認してみます。 Hardening 2020 H3DXについて WASForum Hardening Projectにより開催されたイベントです。 Hardening 2020 H3DX技術競技会であるHardening Dayが1日、全参加チームの施策発表などを聴講形式で進行するSoftening Dayが1日という、合計2日の2部構成で開催されました。 それ

    Hardening 2020 H3DXから学ぶ「インシデント対応訓練」の重要性 - 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
  • リアルタイムマーケティングシステム検証環境の構築ビフォーアフター - ZOZO TECH BLOG

    はじめに こんにちは。2020年5月に入社しましたMA基盤チームの辻岡です。 MA基盤チームでは、マーケティングに関わる様々なプロダクトやシステムの施策開発・運用を行っています。その中の1つにリアルタイムマーケティングシステムというものがあります。 これまでこのシステムには検証環境が存在しませんでした。そこで、検証環境を新たに作る事でシステムの開発や運用の効率化並びに品質の担保に貢献した事について紹介します。 また、検証フェーズの効率化手段としてDigdagを利用したデータ転送機能は使ってみると想像以上に便利だったので、実装方法について詳しく紹介します。効率化手段の1つとして参考にして頂けたら幸いです。 目次 はじめに 目次 リアルタイムマーケティングシステムの概要 リアルタイムマーケティングシステム バッチ配信システム analyzer バッチ配信システムの処理の流れ ユーザ抽出・コンテ

    リアルタイムマーケティングシステム検証環境の構築ビフォーアフター - ZOZO TECH BLOG
  • アドベントカレンダー 記事100本公開 - 年末恒例アウトプット強化月間 - ZOZO TECH BLOG

    こんにちは、ZOZOテクノロジーズ CTO室の池田(@ikenyal)です。 エンジニアが12月に思い浮かべるキーワードは何でしょう。「アドベントカレンダー」ですね。 弊社も毎年アドベントカレンダーに参加しており、今年も記事100の公開を完走しましたので、概要をお伝えします。 ZOZOテクノロジーズ Advent Calendar 2020 今年は合計4個のカレンダーを実施したため、12/1-25の期間に合計100の記事を公開しました。 qiita.com qiita.com qiita.com qiita.com 実施概要 アドベントカレンダーは任意参加で実施しています。 アドベントカレンダーはエンジニアアウトプットの練習に適したイベントです。弊社ではテックブログをアウトプットの主軸に置いていますが、「テックブログを書く自信が無い」「テックブログに書くにはネタが小粒」のような場合に

    アドベントカレンダー 記事100本公開 - 年末恒例アウトプット強化月間 - ZOZO TECH BLOG
  • GitHub ActionsによるWindowsタスクスケジューラの自動反映 - ZOZO TECH BLOG

    はじめに こんにちは。SRE部BtoBチームの田村です。BtoBチームが担当してるサービスには、クラウドで構成されているFBZ、オンプレ環境で稼働しているブランド様の自社ECシステム支援事業もあります。その自社ECシステムでは、バッチ処理が多数稼働しています(執筆時点でバッチ214)。 バッチ処理のスケジュールはWindowsのタスクスケジューラで管理しており、定期メンテナンスや新規サービスリリースの際に運用者が手作業でタスクスケジューラの設定を更新していました。 手作業を伴い、繰り返される要素もあったため、我々のチーム内で「バッチの運用」はトイルの1つとして認識されていました。また、前回の記事と同様に、設定戻し漏れのリスク、作業工程の履歴を別帳票で管理する煩雑な運用があり、万全とは言えない状態でした。そこで、前回の記事をヒントにトイル撲滅運動としてタスクスケジューラ設定の自動反映の仕組

    GitHub ActionsによるWindowsタスクスケジューラの自動反映 - ZOZO TECH BLOG
  • AWS re:Invent 2020 注目リリース5選 〜2020開催分より〜 - ZOZO TECH BLOG

    こんにちは、CTO室兼SRE部テックリードの光野(kotatsu360)です。AWS・ウィスキー・葉巻が好きです。 普段はAWSのアカウントが複数ある状況(マルチアカウント環境)において、セキュリティや品質の維持をどのように行うかについて取り組んでいます。色々と資料も公開しているので、よろしければご覧ください。 speakerdeck.com さて、記事ではAWS re:Invent 2020を取り上げます。今年もre:Inventに合わせ大量のリリース・アップデートが行われました。リリースは180を超え、楽しくもキャッチアップに奔走しております。この大量のリリースの中から、弊社の状況を鑑みて特に目を引いたものをピックアップします。 AWS re:Invent 2020 今年のアツいアップデート5選 VPC Reachability Analyzer S3で強い書き込み後の読み込み整合性

    AWS re:Invent 2020 注目リリース5選 〜2020開催分より〜 - ZOZO TECH BLOG