タグ

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

  • Elasticsearchのshard数の増加により発生するオーバーヘッドの正体 | メルカリエンジニアリング

    Mercari Search Infra Teamのmrkm4ntrです。 Elasticsearchは1ノードに載り切らない量のデータも複数のshardに分割し、複数のノードに載せることで検索が可能になります。shard数を増やすことで並列にスキャンするドキュメントの数が増えるためlatencyが改善します。ではshard数はいくらでも増やせるのでしょうか?もちろんそのようなことはなく、Elastic社の公式ブログ(https://www.elastic.co/jp/blog/how-many-shards-should-i-have-in-my-elasticsearch-cluster )にもあるようにshard数を増やすことによるオーバーヘッドが存在します。ただしそのオーバーヘッドが具体的に何を指すのかは、先ほどの記事では明らかにされていません。記事ではそのオーバーヘッドの正体を

    Elasticsearchのshard数の増加により発生するオーバーヘッドの正体 | メルカリエンジニアリング
    komlow
    komlow 2024/10/11
  • Elasticsearchのパフォーマンス問題をプロファイラを使って解決する | メルカリエンジニアリング

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

    Elasticsearchのパフォーマンス問題をプロファイラを使って解決する | メルカリエンジニアリング
    komlow
    komlow 2024/02/15
  • Zero Touch Productionへの移行 | メルカリエンジニアリング

    記事は2022年1月26日に公開された記事の翻訳版です。 筆者:Dylan Lau (@aidiruu), Platform DXチーム Zero Touch Production (ZTP)は、番環境に加えられるすべての変更が、自動化、安全なプロキシ、または監査可能なBreak-glass(緊急アクセス)システムによっておこなわれるという概念です。人為的ミスに起因する番環境での障害には、次のようなさまざまな種類があります。 構成エラー スクリプトエラー 間違った環境でのコマンド実行 ZTPはこれらのエラーによる障害発生のリスクを軽減できます。メルカリでは、ZTP環境への移行に取り組んでいます。最初のステップは、一時的な役割付与システムであるCarrierを実装することです。 この記事では、以下について説明します。 ZTPの重要性 ZTPを実装するプロセスとCarrierを始めた理

    Zero Touch Productionへの移行 | メルカリエンジニアリング
    komlow
    komlow 2024/02/02
  • Elasticsearch運用ノウハウ | メルカリエンジニアリング

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

    Elasticsearch運用ノウハウ | メルカリエンジニアリング
    komlow
    komlow 2024/01/09
  • TerraformモノレポCIのセキュア化 | メルカリエンジニアリング

    記事は2022年1月22日に公開された記事の翻訳版です。 この記事は、Developer Productivity Engineering Campブログシリーズの一環として、Platform Infraチームの Daisuke Fujita (@dtan4)がお届けします。 メルカリでは、すべてのクラウドインフラを宣言的構成で管理することがプラットフォームの中核となる考え方の一つです。メインのクラウドプロバイダーはGoogle Cloud PlatformGCP)であり、HashiCorp Terraformを使用してインフラをコードとして管理しています。Platform Infraチームは、すべてのTerraformワークフローを安全に管理するための社内CIサービスを提供しています。 Terraformはリソースプロビジョニングのためにクラウドプロバイダーのクレデンシャルを必要と

    TerraformモノレポCIのセキュア化 | メルカリエンジニアリング
  • メルペイDataPlatformのCDC DataPipeline | メルカリエンジニアリング

    こんにちは、メルペイ DataPlatformチーム(@rerorero, @darklore, @laughingman7743)です。 この記事は、Merpay Tech Openness Month 2022 の14日目の記事です。 今日はメルペイ DataPlatformで取り組んでいるCDCパイプラインについて紹介します。 CDCパイプラインとは何か CDCとは Change Data Capture の略称で、データベース内のデータの変更(新規作成、削除、変更など)を追跡するシステムです。データソースで発生した変更は、ニアリアルタイムでデータシンクに反映させることができます。 CDCの実現方法にはいくつかあるのですが、メルペイ DataPlatformでは以下の2つの方法を使ったパイプラインを構築しています。 Striim社のブログ がよくまとまっていたので、こちらから引用させ

    メルペイDataPlatformのCDC DataPipeline | メルカリエンジニアリング
    komlow
    komlow 2022/04/22
  • Knuth multiplicative hash が最小完全ハッシュ関数であることの証明 | メルカリエンジニアリング

    こんにちは!サーチチームの @metal_unk です。普段はサーバーサイドエンジニアとして、メルカリの検索を改善する仕事をしています。 メルカリには Be Professional Day という「普段できないことをやろう」をテーマとする日があり、その日は業務に直接関係のないことや、普段は手をつけられないリファクタリングなどがされます。Be Professional Day の様子はこちらで紹介されています。 tech.mercari.com わたしは今回の Be Professional Day で、Knuth multiplicative hash が最小完全ハッシュであることを証明しました。このブログはその証明についての記事です。 「普段できないことをやろう」という Be Professional Day では、証明もアリです。 Knuth multiplicative hash

    Knuth multiplicative hash が最小完全ハッシュ関数であることの証明 | メルカリエンジニアリング
    komlow
    komlow 2021/09/12
  • メルペイのシステム運用とPlaybookの共通管理への挑戦 | メルカリエンジニアリング

    こんにちは、メルペイでSREとして従事している @myoshida です。この記事は Merpay Tech Openness Month 2021 の8日目の記事です。 SREチームはお客さまへよりよいサービス利用体験を提供するため、日々様々な改善活動に取り組んでいます。その活動の一環としてPlaybookの概念を導入し、運用者の運用負担を減らす取り組みを始めました。今回はそのことについて説明してみたいと思います。 概要 メルペイではアプリケーションエンジニアとSREの双方がオンコール制度のもと運用に携わっています。 運用の悩みは様々ですが、そのうちの1つに手順書の取り扱いがあります。 どこに置くべきか、更新はされているのか、何を書けばいいのか、どの場面でどの手順書を利用すればよいのかというような悩みはどこの現場でも少なからず存在すると思います。 そこで、Playbookと呼ばれる体系的

    メルペイのシステム運用とPlaybookの共通管理への挑戦 | メルカリエンジニアリング
    komlow
    komlow 2021/09/10
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
  • マイクロサービス環境でのメルカリWebのリリースフロー | メルカリエンジニアリング

    メルカリJP Webチームの@urahiroshiです。 Webチームでは、メルカリWebのマイクロサービス化や機能開発を行なっています。メルカリWebのマイクロサービス化の概要については、昨年のTech Conferenceの資料がよくまとまっているので、そちらを参照していただけると良いかと思います。 https://speakerdeck.com/mercari/mtc2018-web-application-as-a-microservice-3a161f5c-07fa-4dca-99e9-bd0e8feeeddf 現在、メルカリWebのトップページはマイクロサービス環境から配信されており、他のページも随時マイクロサービス環境に移行していく予定です。 この記事では、マイクロサービス環境で導入した、メルカリWebの新しいリリースフローについて記載します。 まずメルカリWebのマイクロサ

    マイクロサービス環境でのメルカリWebのリリースフロー | メルカリエンジニアリング
  • Microservices と会計システム | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Month の18日目の記事です。 こんにちは。メルカリで Product Manager として働いている津田と申します。私は社内で「会計システム」と呼ばれる、会社が運営するサービスに付随して発生した債権債務の増減を記録・集計するシステムを開発するチームで働いています。 はじめに メルカリでは、お客さまの行動に応じて日々さまざまなお金の流れが発生しています。たとえばメルカリで商品が出品され購入された(取引が行われた)場合を考えてみます。 この取引は、会社から見るとそれぞれの相手先に対する債権債務関係の変化と捉えることができます。メルカリにとっては、購入したお客さまに対する債権(= 商品代金)と出品したお客さまに対する債務(= 売上金)が発生します。このとき、商品代金の一定割合(通常は 10%)が販売手数料としてメルカリの売上とな

    Microservices と会計システム | メルカリエンジニアリング
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの15日目の記事です。 こんにちは。メルペイのPayment PlatformチームでPaymentServiceの開発を担当するエンジニアの @foghost です。 メルペイではマイクロサービスのアーキテクチャで決済システムを開発しています。その中でPaymentServiceは決済トランザクション管理の基盤サービスとして、下位層のサービス(外部サービスも含め)が提供する各種決済手段を利用して、上位層のサービス(メルカリ、NFC,コード払いなど)に必要な決済フローを共通APIとして提供しています。PaymentServiceが提供する決済処理に複数のサービスを跨いでお金の動きを正確に管理する必要があるので、作り始めた頃から決済トランザクション管理を最も重要な課題として、サービスを跨いでもデータの整合性が取れる仕組みを作ってき

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
  • メルペイにおける大規模バッチ処理 | メルカリエンジニアリング

    この記事は MERPAY TECH OPENNESS MONTH の 13日目の記事です。 こんにちは、メルペイ ソフトウェアエンジニアの laughngman7743 です。 メルペイではマイクロサービスにおけるデータストアのデータや、アプリケーションのログを有効活用できるような基盤づくりをデータプラットフォームチームとして行っています。 データプラットフォームではラムダアーキテクチャに基づき、スピードレイヤとして Cloud PubSub と Cloud Dataflow を利用した仕組みに加え、バッチレイヤとして Cloud Composer と Cloud Dataflow を利用した仕組みを構築しています。 この記事ではバッチレイヤのアーキテクチャについてご紹介します。 スピードレイヤのアーキテクチャについては 「GCPでStreamなデータパイプライン始めました」 を参照くださ

    メルペイにおける大規模バッチ処理 | メルカリエンジニアリング
    komlow
    komlow 2019/06/05
  • バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング

    こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 バッチプログラムのお話、今回は運用・監視についてお話したいと思います。当社はすべての業務が24時間行われていますので、システムがオンラインのときに動作するバッチプログラムについてのみ議論します。 過去の記事はこちらにあります。 運用に備えて バッチプログラムの運用について、「プリモーテム」「実行管理」そして「ログ管理」の3点について述べていきます。 プリモーテム ポストモーテムという言葉を聞いたことがある方はいらっしゃるかと思います。ポストモーテムとは、GoogleのSREの15章*1によれば、障害などの失敗を振り返り、今後に活かすプロセスの総称と捉えることができます。 さて、プリモーテム(プリモータム)とは何でしょうか。この言葉は、私が最近読んだThe Manager’s Path*2*3で使

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    komlow
    komlow 2019/04/18
  • TB越えのMySQL 巨大テーブルを 1日で BigQueryへLOADする | メルカリエンジニアリング

    こんにちは!! 私はメルカリでSREをしている k-oguma ( ktykogm ) です。 ちょうど1年くらい前にジョインしました。 よろしくお願いします! 今日は、タイトルの件で対応した方法をご紹介したいと思います。 それはある日突然やってきた TL;DR BigQueryへLOADさせる方法を考える 初期の検討 見直し Embulk Embulk 説明 Digdag Digdag 説明 Digdag呼び出し処理 Dry-run いざ、実行 補足: もっと高速化させたいなら 終わったあとは 最後に 参考にしたURL それはある日突然やってきた ある日、ETL作業 (データ分析基盤運用)の依頼がUSチームからやってきました。 要件は次のようなものでした。 1.4TB サイズの MySQL innodb tableを1つをBigQueryに上げる 約1年分。期間指定。 期限数日、なる早

    TB越えのMySQL 巨大テーブルを 1日で BigQueryへLOADする | メルカリエンジニアリング
    komlow
    komlow 2018/12/27
  • 回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog

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

    回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog
  • Microservicesにジョインするには知らない技術が多すぎたので一通り触ってみた話 - Mercari Engineering Blog

    Mercari Advent Calendar 2018 の2日目はCrossUXチームの@mkazutaka(twitterは@makazutaka)がお送りします 昨日のアドベントカレンダーに@stanakaさんが取り上げているようにメルカリではMicroservices化に向けて開発が進んでおります。その流れに乗るように前QまでPHPを使って開発していた自分も今QからMicroservicesで実現されているサービスでの開発を行っております メルカリではMicroservicesの実現にあたってGoogleCloudPlatform(GCP)、TerraformDockerKubernetes、Halyard、gRPCGoといったさまざまなサービスからフレームワーク、言語を利用しています メルカリでのMicroservices上での開発をする以上、これらに対して多少なりとも理解

    Microservicesにジョインするには知らない技術が多すぎたので一通り触ってみた話 - Mercari Engineering Blog
  • 僕たちはどうマイクロサービスのログを収集するのか | メルカリエンジニアリング

    Mercari Advent Calendar 2018 の14日目はメルペイ DataPlatform チームの @syu_cream がお送りします。 記事では表題の通り、メルカリとメルペイにおける、マイクロサービスのログ収集に関する課題と取り組みについて記載します。 メルカリとメルペイでは、現在クライアントアプリやサーバサイドのログを効率的に収集してサービスの他機能で活用するための基盤の開発を共同で行っています。 メルカリ・メルペイ間では、一部提供するサービスの差異やデータ管理のポリシーの都合によりインフラ構成が異なる部分はありますが、少なくとも思想や設計、実装は共有しています。 これの具体的な内容については、今回の Advent Calendar の 3 日目の記事に掲載しています。 記事では、サービスを提供するサーバサイドアプリケーションから、この構成図における “A Ser

    僕たちはどうマイクロサービスのログを収集するのか | メルカリエンジニアリング
  • フロントエンドエンジニアは Micro Frontends の夢を見るか - Mercari Engineering Blog

    Mercari Advent Calendar 2018 の6日目はフロントエンドチームの @vwxyutarooo がお送りします。 このタイトルが言いたくて Micro Frontends の記事を書きました。皆さんは Micro Frontends という言葉を聞いたことがあるでしょうか? 私は数ヶ月前まで全く知りませんでした。メルカリのフロントエンドチームにて Micro Frontends に関して考える機会があったので、Micro Frontends とはなんなのか。何をどのように解決しようとしているのかという内容を紹介します。 Micro Frontends とは Micro Frontends という考え方は ThoughtWorks Technology Radar にて2016年に初めて登場したと言われています。日語で言うときは複数形は無視して "マイクロフロントエン

    フロントエンドエンジニアは Micro Frontends の夢を見るか - Mercari Engineering Blog
    komlow
    komlow 2018/12/07
  • GCPでStreamなデータパイプライン始めました - Mercari Engineering Blog

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

    GCPでStreamなデータパイプライン始めました - Mercari Engineering Blog
    komlow
    komlow 2018/12/04