タグ

ブックマーク / engineering.mercari.com (13)

  • Elasticsearchのパフォーマンス問題をプロファイラを使って解決する | メルカリエンジニアリング

    search infra teamのmrkm4ntrです。我々のチームではElasticsearchをKubernetes上で多数運用しています。歴史的経緯によりElasticsearchのクラスタは全てElasticsearchクラスタ専用のnode pool上で動作していました。ElasticsearchのPodは使用するリソースが大きいため、このnode poolのbin packingが難しくコストを最適化できないという問題がありました。そこで全てのElasticsearchクラスタを専用のnode poolから他のワークロードと共存可能なnode poolへ移行しました。ほとんどのクラスタが問題なく移行できたのですが、唯一移行後にlatencyのスパイクが多発してしまうものがありました。 この記事では、その原因を調査する方法と発見した解消方法について説明します。 発生した現象 共

    Elasticsearchのパフォーマンス問題をプロファイラを使って解決する | メルカリエンジニアリング
    bootJP
    bootJP 2024/02/15
  • 人間によるKubernetesリソース最適化の”諦め”とそこに見るリクガメの可能性 | メルカリエンジニアリング

    Platformチームでエンジニアをしているsanposhihoです。メルカリのPlatformチームでオートスケーリング周りの課題の解決を担当しており、Kubernetes UpstreamでもSchedulingやAutoscaling周りの開発に参加しています。 メルカリでは全社的にFinOpsに取り組んでおり、Kubernetesリソースは最適化の余地があるエリアです。 メルカリではPlatformチームとサービスの開発チームで明確に責務が分かれています。Platformではサービス構築に必要な基礎的なインフラストラクチャを管理し、それらを簡単に扱うための抽象化された設定やツールなどの提供を行っています。サービスの開発チームは、それらを通してサービスごとの要件に応じたインフラストラクチャの構築を行います。 サービスやチームの数も多く、そのような状況での全社的なKubernetes

    人間によるKubernetesリソース最適化の”諦め”とそこに見るリクガメの可能性 | メルカリエンジニアリング
  • Elasticsearch運用ノウハウ | メルカリエンジニアリング

    こんにちは、メルカリMicroservices SREチームの藤(@jimo1001)です。 私は現在、Embedded SRE として サーチインフラチームに入り活動しています。このサーチインフラチームは、Elasticsearchを使用した検索基盤を管理し、様々なマイクロサービスに検索機能を提供するチームです。この検索基盤は非常に巨大なプラットフォームで、メルカリ全体のマシンリソースの高い割合を占めており、メルカリの検索を支える非常に重要なものです。私の Embedded SRE としてのミッションは検索基盤の信頼性の向上と自動化を推進することです。 今回は、メルカリの検索基盤で利用している Elasticsearch における運用のノウハウを紹介したいと思います。 Elasticsearch とは Elasticsearch は、Elastic社が開発する Apache Lucen

    Elasticsearch運用ノウハウ | メルカリエンジニアリング
    bootJP
    bootJP 2022/03/13
  • メルカリの検索基盤の変遷について | メルカリエンジニアリング

    ※この記事は、"Blog Series of Introduction of Developer Productivity Engineering at Mercariの一環で書かれています。 はじめに こんにちは、メルカリ、サーチインフラチームのshinpeiです。今回はメルカリの検索基盤の裏側について、そのアーキテクチャ変遷について書こうと思います。2018~2021年の4年間で、大きく3回、変化をしました。設計の段階では希望と期待にあふれているアーキテクチャでも、問題は後からやってきます。設計には良し悪しがあり、変化することで知見を得ながら、改善を続けています。え、これだと危ないのでは?、、あぁ、やはりそうなるのね。などと、ご笑覧いただければ幸いです。 前回までのお話 メルカリの検索は、創業時から、Solrをベースにしたシステムで組まれてました。その変遷はこちらのスライドにまとめてあ

    メルカリの検索基盤の変遷について | メルカリエンジニアリング
    bootJP
    bootJP 2022/02/08
  • 長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の15日目は、メルペイスマート払いの開発を担当しているCredit Designチーム/Backend Engineer の 柴田 がお届けします。 はじめに 私が1984年に社会人になった頃は、ソフトウェア開発を行うためには会社に行くしかありませんでした。当時は、共用のVAXマシンで4.2/4.3 BSD Unixを使って開発していました。その後は、コンピュータハードウェアの発達に伴い、開発者ごとにワークステーションを用いて開発するようになり、デスクトップPCを用いた開発、そして今日のMacBook ProといったノートPCによる開発と時代が変わってきています。 2000年代には、安価で高性能なコンピュータの恩恵により、テスト駆動開発が徐々に広まってきました。そして、継続的インテグレーション(Continuous Integrati

    長時間ランニングテストの勧め 〜開発用ノートPCの活用〜 | メルカリエンジニアリング
    bootJP
    bootJP 2020/12/15
  • 料率計算における小数点数の扱いについて | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の3日目です。 メルペイでバックエンドエンジニアをしている iwata です。 メルペイスマート払いの開発をしている Credit Design というチームに所属しています。 私は2019年の入社以来、「メルペイスマート払い(定額払い)」(以下、定額払い)の開発を担当しており、今年の7月にようやくリリースすることができました。 この定額払いの手数料計算のために、「1万分の1を1とする単位」であるベーシスポイントを扱うGo言語のパッケージ go.mercari.io/go-bps を作成しました。 ちょうど1年前に、 mercari.go #12 で「料率計算における小数の扱いについて」として発表しましたが、当時はオープンソースとして公開していませんでした。 今回オープンソースとして公開しましたので、改めてパッケージを紹介します。 料

    料率計算における小数点数の扱いについて | メルカリエンジニアリング
    bootJP
    bootJP 2020/12/03
  • 回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog

    メルカリバックエンドエンジニアの@yagi5です。 Mercari Advent Calendar 2018の23日目を担当します。 モノリシックなシステムは、障害が発生するとシステムが全停止してしまうことが一般的です。 しかし、Microservicesアーキテクチャでは様々なテクニックを用いて、サービス全体が停止するような障害に対処することができます。 この記事では、Microservicesにおけるシステムの回復性を高めるための技術について書いていきます。 回復性とは、障害が起こらないことを意味しません。 高い回復性を備えたシステムは、障害が発生するということを前提に、システム全体のダウンを避け、データのロスが回避されるように設計されています。 Microservicesの世界では、システムは自律的に動作する複数のサブシステムによって構成されます。 ひとつのサービスに障害が発生しても

    回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog
    bootJP
    bootJP 2018/12/24
  • Goでproxy serverを作るときにハマるポイント | メルカリエンジニアリング

    Mercari Advent Calendar 2018 の5日目はSREチームの @catatsuy がお送りします。 メルカリではGoで書かれたproxy serverをサービスの各所で使っています。今回はGoでproxy serverを作るときにハマりそうな、標準ライブラリの挙動や特徴について紹介します。 エントリーは2018/12/04現在の最新であるGo 1.11.2を元にして書きます。 Hostヘッダーはreq.Header.Set(“Host”, “example.com”)しても上書きできない https://github.com/golang/go/blob/e8a95aeb75536496432bcace1fb2bbfa449bf0fa/src/net/http/request.go#L1023 https://github.com/golang/go/blob/e8

    Goでproxy serverを作るときにハマるポイント | メルカリエンジニアリング
    bootJP
    bootJP 2018/12/05
  • GCPでStreamなデータパイプライン始めました - Mercari Engineering Blog

    こんにちは、はじめまして。メルカリでデータエンジニアをしている、しゅう (@shoe116)です。Mercari Advent Calendar 2018の3日目を担当することになりました。 メルカリではデータの活用が盛んな一方で、実はデータ処理を専門にやるエンジニアが最近まで存在しておらず、そんなこんなで僕がSREチームにデータエンジニア第1号としてjoinしました(実はこのあたりはメルペイのが少し先んじていて、あっちにはすでにデータプラットフォームチームがあって、僕は今彼らと一緒に並んでコードを書いている)。今日は僕らがGoogle Cloud Platform(以下GCP)に作っている、メルカリ(とメルペイ)の新しいログ収集基盤について簡単に紹介しようと思います。 メルカリの既存ログ収集基盤について 「新しいログ収集基盤を紹介しようと思います」と書いた数行後にこの章を持ってくるのは自

    GCPでStreamなデータパイプライン始めました - Mercari Engineering Blog
    bootJP
    bootJP 2018/12/04
  • pvpool〜メルカリの商品閲覧数カウントアップの裏側〜 | メルカリエンジニアリング

    メルカリでは出品されている商品の閲覧数を「出品した商品」の一覧や「いいね!した商品」の一覧画面から見ることができます。以下は「いいね!した商品」の一覧画面です。(開発版アプリの画面になります) 赤い枠で囲まれている部分がそれぞれの商品の閲覧数になります。今回紹介する閲覧数のカウントアップのバックエンドはGoで開発されています。 データベース上の商品閲覧数のカウントアップ メルカリでは日々大量のリクエストを処理していますが、そういった中でもデータベースへのアクセスはINSERTやUPDATE等の書き込み処理よりもSELECTによる読み込み処理が圧倒的多数を占めます。(メルカリでは、データベースには主にMySQLを利用していますが、サービスやリージョンによってはGCPが提供しているCloud DatastoreやCloud Spannerを利用している箇所もあります) 商品が閲覧される時に実行

    pvpool〜メルカリの商品閲覧数カウントアップの裏側〜 | メルカリエンジニアリング
    bootJP
    bootJP 2018/02/26
  • ImageFluxを利用した画像配信の最適化〜動的リサイズとWebP変換〜 | メルカリエンジニアリング

    SREチームの@cubicdaiyaです。今回はメルカリにおける画像配信とImageFluxを利用した画像の動的なリサイズとWebP変換の導入によってアプリのデータ通信量を大幅に削減した事例について紹介します。 ImageFluxはクラウド画像変換サービスです。URLに画像変換用のパラメータを組み込むことで画像データの拡大・縮小やオーバレイ、フォーマット変換等が実現できます。 メルカリにおける画像データ メルカリのアプリ上で発生するデータ通信の大部分はタイムラインや検索結果に表示される画像データが占めています。種類はいろいろありますが例えば、 商品画像 プロフィール画像 バナー画像 といったものが挙げられます。特に商品画像はデータ量がとにかく多く、毎日百万個単位で増加するほか、タイムラインや検索結果をはじめ、多くの機能で活用されています。 ImageFluxを利用した画像変換でデータの通信

    ImageFluxを利用した画像配信の最適化〜動的リサイズとWebP変換〜 | メルカリエンジニアリング
    bootJP
    bootJP 2018/01/31
  • 分散ファイルシステムはブロックチェーンの夢を見るか | メルカリエンジニアリング

    今年からメルカリでもMercari Advent Calendar 2017と称してAdvent Calendarを始めることとなりました。 初日は id:stanaka / @stanaka がロンドンよりお届けします。 分散ファイルシステムという言葉を聞くと、トラウマを刺激され、うっと頭を抱える人も多いかと思います。私もその一人で、以前にPBクラスまではいかずとも数TBのHDDを数百台並べたシステムのお守りをしたことがあり、日々壊れ続けるHDDに負荷に悲鳴を上げるメタデータDBなどネタには困らない状況でした。そういう時にAWS S3を触ると、「ああ、これは天国だ..」ともはや過去には戻れない思いをしたものです。 最近では分散ファイルシステムを運用しているところもめっきり減っていて*1もう過去の分野かな、と思っていたのですが、ここ数年で「ブロックチェーン x 分散ファイルシステム」という

    分散ファイルシステムはブロックチェーンの夢を見るか | メルカリエンジニアリング
    bootJP
    bootJP 2017/12/01
  • 「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング

    はじめましてこんにちは。SREの@masartzです。 私は最近joinしたのですが、今回は番環境に古くからあるテーブルの掃除作業をした案件をご紹介します。 tl;dr; 番の住所情報テーブルを消したけど問題なかった話 絶対要らないハズだけど、なかなか削除できずにいるもの を対処する話 番環境の住所情報テーブルをdropするまでの作業 今回、番環境の住所情報テーブルをdropしました。 と言っても、事故でもうっかりでもなく、既に使われていなかったものの整理という作業でした。 何故使われていなかったかというのは、メルカリの住所情報の保持の仕方の変遷が関係しています。 初期にはuser情報と住所情報は1対1の関係でした。イメージとしては以下です。 CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED NOT NULL, name VARC

    「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング
    bootJP
    bootJP 2017/05/26
  • 1