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

  • gRPC Federation: gRPC サービスのための Protocol Buffers を進化させるDSL | メルカリエンジニアリング

    Merpay Engineering Productivity Team の goccy です。 gRPC Federation は、gRPC で通信する複数のサービスから得た結果を合成して返すようなサービスを簡単に作成するための仕組みです。DSL ( Domain Specific Language ) を Protocol Buffers 上で記述することで利用します。まずは、GraphQL(Apollo) Federation の gRPC 用のものだと考えるとわかりやすいと思います。2023年8月に OSS として公開し、先日 Public Roadmap を公開しました。2024/6月末を目標に Version 1.0 ( GA版 ) をリリースする予定です。また、最近は Protocol Buffers のエコシステムに参加しました。Protobuf Global Extens

    gRPC Federation: gRPC サービスのための Protocol Buffers を進化させるDSL | メルカリエンジニアリング
    yuitang
    yuitang 2024/04/02
    すごっ!
  • Mercari’s passkey adoption | Mercari Engineering

    Mercari, Inc. offers C2C marketplace services as well as online and mobile payment solutions. Users can sell items on the marketplace, and make purchases in physical stores. Mercari is actively working on preventing phishing attacks. This is the driving force behind the adoption of passkey authentication. To enhance phishing resistance, several factors need to be considered, leading to the introdu

    Mercari’s passkey adoption | Mercari Engineering
    yuitang
    yuitang 2023/08/14
  • メルカリShopsを支えるMonorepo ML開発環境 | メルカリエンジニアリング

    こんにちは!SouzohのMLチームでSoftware Engineerをしているwakanaです。 SouzohのMLチームは2021年4月にスタートし、ちょうど2年が経ちます。当時1人だったメンバーも、今では4人になり、レコメンデーションを中心に5, 6個の機能を提供するようになりました。MLOpsも成熟し、より新しく高度なML機能開発に集中して取り組める環境が整ってきていると感じています。 そこでこの記事では、立ち上げから2年たった今SouzohのPython, ML環境がどのようになっているか紹介しようと思います。これからPythonやMLのMonorepoでの開発環境を整えようとしている方、特に少人数での運用を考えてる方の参考になれば嬉しいです。 TL;DR SouzohではPoetry, Bazel, VertexAI Pipelinesで快適なMonorepo開発環境を実現

    メルカリShopsを支えるMonorepo ML開発環境 | メルカリエンジニアリング
    yuitang
    yuitang 2023/04/11
    とても参考になる
  • Learning materials | メルカリエンジニアリング

    技術トレーニングDevDojo メルカリには、専門分野を超え、幅広い知識を身につけることを目的とした「DevDojo」という社内技術トレーニングがあります。DevDojoは、すべて社内のエンジニアが作成・運営しています。実際に使用した講義資料や動画を一部こちらで公開しています。 ※ビデオについて 同時通訳で実施しています。少々聞き取りづらい可能性がある旨、ご了承ください。 Introduction to Machine LearningOne of Mercari's unique features is the photo search function. This is achieved by utilizing AI machine-learning for a vast amount of data. In this course, we will explain the basi

    Learning materials | メルカリエンジニアリング
    yuitang
    yuitang 2023/01/05
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer (CTO) の @suguru です。連載:「メルカリShops」プレオープンまでの開発の裏側の1日目を担当させていただきます。 7月末にメルカリShopsという新しいサービスが公開されました。メルカリShops は、2021年1月にメルカリのグループ会社として設立したソウゾウが新たに立ち上げたサービスです。 この記事では、メルカリShops を作るにあたり、どういった技術、アーキテクチャを選定したのか、その背景と意思決定をまとめて共有したいと思います。 monorepo まず最初にプロジェクトをスタートしたときに、サービスのリポジトリを作るのですが、迷わず monorepo による構成を選択しました。monorepo は、システムを構成する複数のコンポーネントの独立性を保ちつつ、全ての構成を1つのリポジトリで管理する手法です。今

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
    yuitang
    yuitang 2021/08/10
    “Code Server”
  • メルペイCTOと考える新しい経済学とエンジニアリング | メルカリエンジニアリング

    12月1日にhidekさんの記事から始まったメルペイアドベントカレンダーも今日で最後です。締めくくりを私(@sowawa)が務めさせていただきます。私からはメルカリやメルペイの振り返りと「新しい経済学エンジニアリング」の話をしたいと思います。 はじめに 2019年は兎にも角にも「メルペイのリリース」の年でした。2017年ごろからメルカリの決済基盤をマイクロサービスで作り直していき、メルペイの会社の設立を経て今年2月のリリースに至りました。最初のリリース後もまさに五月雨のようなリリースを五月雨が降る5月、6月まで積み上げていきました。リリースを積み重ねながら改善やキャンペーンが始まり、気づいたら12月を迎えていました。 ベスト・オブ 2019 表彰された時の様子 今年の最後にやってきたハイライトは、メルカリがGoogle Playのベスト・オブ2019に選ばれたことです。メルカリ・メルペイ

    メルペイCTOと考える新しい経済学とエンジニアリング | メルカリエンジニアリング
    yuitang
    yuitang 2019/12/25
  • Maintain SLO 〜俺たちのSLOはこれからだ!〜

    Merpay Advent Calendar 2019 の14日目は、メルペイSREチームの@Tがお送りします。 記事では、メルペイSREチームのSLO運用状況について、紹介いたします。 メルペイリリース前 去年のAdventCalendar 2018で、メルカリのWeb MicroservicesにおけるSLI/SLOについて紹介がありました。 メルペイでは新規のMicroserviceをリリースする前に、各MicroserviceチームがSLOを定義し、品質保持の一指標を決めるルールがあります。 メルペイSREチームでは、Microserviceチームと一緒にSLOを考え、各MicroserviceにSLOを定義していますが、一からSLOを定義するのはとても難しいです。 幸いなことにGoogle社からSLOの説明や定義方法などSREに関する素晴らしい記事がたくさん共有されており、SL

    Maintain SLO 〜俺たちのSLOはこれからだ!〜
    yuitang
    yuitang 2019/12/16
    めっちゃよい
  • メルペイ社内ツールのお話 | メルカリエンジニアリング

    Merpay Advent Calendar 2019の5日目です。 メルペイ社内ツールのお話をしようと思います。 “個人事業主の集まりかよ”と評されることもある、メルペイソリューションチームの一員である、vvakameさんが開発・管理しているツールやシステムの紹介をします。今まであんまり外に出したことがなかったので。 mercari/datastoreなどのオープンになっているものや、OSSへのPRなどの社外からも観測可能なものは今回は割愛します。 そもそも、ソリューションチームとは? vvakame(TypeScript, Go, GraphQLなど)、sinmetal(GCPほぼ全部 最近Spanner)、orfeon(Dataflowなど)の3名で構成される、何かを適当にいい感じにするチームです。 メンバー募集中なので興味がある方は適当にアポイントを取ってください。Job Desc

    メルペイ社内ツールのお話 | メルカリエンジニアリング
    yuitang
    yuitang 2019/12/05
    “何かを適当にいい感じにするチーム” 最高かよ。
  • マイクロサービス環境でのメルカリ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のリリースフロー
    yuitang
    yuitang 2019/10/30
    弊チームです。育休帰りのうらさんによるアーキテクチャとリリースフローのわかりやすーいありがたーい記事です☺
  • Chrome DevToolsを用いたメルカリWebのパフォーマンス計測 - Mercari Engineering Blog

    フロントエンドチームの @urahiroshi です。Mercari Advent Calendar 2018 12日目を担当します。 今年の8月から12月にかけて,メルカリ・メルペイのフロントエンドチーム有志で「超速!Webページ速度改善ガイド」の社内輪読会を行いました。 このの中で,「推測するな,計測せよ」という言葉が紹介されていますが,今回の記事は,輪読会で学んだことのまとめとして,Chrome DevToolsを用いてメルカリWebのパフォーマンス計測と簡単な分析を行ったものです。 なお,現在メルカリWebのアーキテクチャを刷新するための開発が進んでいるため,ここで計測したパフォーマンスの値は大幅に変化していく可能性が高いです。アーキテクチャの刷新後に振り返って見られる楽しみが増えることも、この記事を書いた目的の一つです。 計測方法,環境 計測はGoogle Chrome 71.

    Chrome DevToolsを用いたメルカリWebのパフォーマンス計測 - Mercari Engineering Blog
    yuitang
    yuitang 2019/10/24
  • メルカリのWeb MicroservicesにおけるSLI/SLO - Mercari Engineering Blog

    Mercari Advent Calendar 2018の24日目はメルカリBackendエンジニアの@sota1235がお届けします。 現在、私はWebのシステムをリプレースしMicroservicesアーキテクチャに移行するチームで働いています。 メルカリのMicroservicesアーキテクチャでは各Microserviceチームが責任を持ってSLI/SLOを定め、運用する必要があります。 このSLI/SLOを決める過程でいくつかの学びや難しさがあったのでそれをお話しようと思います。 SLI/SLOとは SLI(Service Level Indicator)とはサービスの品質を測るための指標です。 そしてSLO(Service Level Objective)とは各SLIに対しての目標数値です。 例えばSLIを全リクエストの50xエラー以外の割合として、SLOは99.99%とする、

    メルカリのWeb MicroservicesにおけるSLI/SLO - Mercari Engineering Blog
    yuitang
    yuitang 2019/10/24
  • 写真検索の近傍探索ServiceをPythonからC++に置き換えた話 | メルカリエンジニアリング

    この記事は、Mercari Bold Challenge Month の 8 日目の記事です。 こんにちは。メルカリのAI EngineeringでSoftware Engineerをしている@wakanapoです。私は、2019年4月にメルカリに新卒入社して、6月にAI Engineering teamに配属されました。今回は、配属されてから私が最初に担当したタスク「写真検索の近傍探索Service実装のPythonからC++への置き換え」について紹介します。 写真検索システムについて メルカリでは、今年の3月からiOSで写真検索の機能を提供しています。 about.mercari.com メルカリの写真検索は過去のMercari Engineering Blogで詳しく説明されていますが、図1のようなアーキテクチャで動いています。 tech.mercari.com 図1 今回、この中の

    写真検索の近傍探索ServiceをPythonからC++に置き換えた話 | メルカリエンジニアリング
    yuitang
    yuitang 2019/09/04
  • 「社員体験」を追求したWi-Fi打刻システムWIASを開発、メンテナンスしている話 | メルカリエンジニアリング

    Icon made by Freepik from www.flaticon.com こんにちは。 今年度、新卒で株式会社メルペイに入社し、SREチームの配属になったkeke(Twitter: @_k_e_k_e)です。 記事では、メルカリの社内サービスであるWi-Fi打刻システムWIAS(Wi-Fi Attendance System)のお話をします。 会社に所属すると出退勤を記録する必要があります。その中で面倒に感じる、忘れてしまう、記録方法が分からない……など色々な問題が出てきます。しかし、Wi-Fiと勤怠システムをうまく組み合わせることによって社員体験を向上させることができた私達のチャレンジを紹介します。 目次 記事は以下のセクションで構成されています。ご興味のあるセクションだけでもご覧ください。 目次 WIASとは 「社員体験の向上」というゴール WIASの開発背景 旧システ

    「社員体験」を追求したWi-Fi打刻システムWIASを開発、メンテナンスしている話 | メルカリエンジニアリング
    yuitang
    yuitang 2019/08/31
    ここ全く本質と関係ないのだけど、こんな優秀なメンバーと働ける幸せね。"新卒研修を受けながらも空いた時間に、フルスクラッチで、仕様からインフラ設計、QA対応フロー設計まで開発できて、非常に勉強になりました。
  • マイクロサービスのTelepresenceを使ったローカル開発環境の話 | メルカリエンジニアリング

    理論編: Telepresenceってなに Telepresenceとはリモートクラスタに対してより早く、ローカルで開発することを支援するツールです。現時点(2019/05/28)での最新バージョンは0.99です。 「より早く、ローカルで開発するのを支援するツール」ができることは、大きくまとめると以下の2つです。 クラスタのDeploymentをローカルサーバーと置き換える クラスタにローカルからアクセスをする これらの恩恵として ローカルサーバーのリモートクラスタの他サービスへアクセス ローカルサーバーのKuberenetesクラスタのリソースであるsecretsやConfigMapのアクセス リモートクラスタのローカルサーバーへのアクセス が挙げられ、より簡単に開発をできるようになります。 0. 今回のサービス例 例えば以下のようなサービスがあるとします。このサービスがやることは以下の

    マイクロサービスのTelepresenceを使ったローカル開発環境の話 | メルカリエンジニアリング
    yuitang
    yuitang 2019/07/04
  • Google Kubernetes Engine上のGoアプリケーションでのHTTPリクエストを行う方法 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの最後の記事です。 こんにちは、メルペイのバックエンドエンジニアの@gia.nguyenです。 私は第3回のGopher道場を卒業してから2018年12月に入社しました。 他の記事にも記載されましたが、メルペイのバックエンドは、Google Kubernetes Engine(以下、GKE)を使用して、マイクロサービスアーキテクチャを採用した多数のマイクロサービスから構成されています。マイクロサービスは主にGo言語を使って、開発しています。マイクロサービス間のコミュニケーションはgRPCでやり取りしていますが、外部サービスに対してはほとんどHTTPで通信を行っています。記事はGKE上のGoアプリケーションでHTTPリクエストを投げる際、いくつか工夫した点を紹介したいと思います。 TL;DR httptraceはデバッグに役立つ

    Google Kubernetes Engine上のGoアプリケーションでのHTTPリクエストを行う方法 | メルカリエンジニアリング
    yuitang
    yuitang 2019/06/14
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    yuitang
    yuitang 2019/06/07
    この知見公開されるのすごい...!!
  • メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング

    こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 メルペイではメインのデータベースとしてGoogle Cloud Spannerを利用しています。 マイクロサービスによっては秒間数千リクエストをSpannerで処理しています。 いかにSpannerをスケールできるようにして安定させられるかが会社全体として重要になっています。 記事では数ヶ月間戦ってきたSpannerのレイテンシが高くなる問題とその解決法について紹介したいと思います。 社内への調査報告も含めて書いているため、かなり詳細で長い内容になっています。 なおこの問題の大部分はGoSpannerを使ったときにだけ発生する問題のため、Javaなどの他の言語では該当しない可能性があります。 CreateSession問題 ここで紹介しなくても良いくらい基的なところですが、CreateSessionが非常

    メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング
    yuitang
    yuitang 2019/04/18
  • フロントエンドエンジニアは 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
    yuitang
    yuitang 2018/12/06
    夢を見ながらそっちに向かっていくの大事。
  • 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を作るときにハマるポイント | メルカリエンジニアリング
    yuitang
    yuitang 2018/12/05
  • マイクロサービスチーム編成のベストプラクティスとメルカリでの構想 - Mercari Engineering Blog

    今年もMercari Advent Calendar 2018 が始まりました。初日は @stanaka がお送りします。 メルカリでは創業以来開発してきたPHPのアプリケーションから(主に)Goで実装されたマイクロサービスアーキテクチャへの移行を進めています。これまでにMercari Tech Conferenceやその他のカンファレンスでMicroservice化の意義、移行の方法、基盤となるMicroservice Platformの概要などについて様々な発表をしてきました。 現在、来年からの格的なマイクロサービスアーキテクチャでの開発に向けて、これまでのサービスの施策ドリブンのチーム編成から、マイクロサービスを軸としたチーム編成に移行しようとしています。 しかし、マイクロサービスアーキテクチャを成功させるためには、各種プラットフォームの機能を揃え、それらを利用したマイクロサービス

    マイクロサービスチーム編成のベストプラクティスとメルカリでの構想 - Mercari Engineering Blog
    yuitang
    yuitang 2018/12/02