タグ

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

  • 1つのアプリケーションを分割するためのコンポーネント管理方法 | メルカリエンジニアリング

    はじめに こんにちは、メルペイでフロントエンドエンジニアをしているnaughtLdyです。 メルペイではお客さまや加盟店さまからのお問い合わせに対応するために、専門のチームと専用のアプリケーション(以降、カスタマーサービスツール)があります。カスタマーサービスツールはメルペイの Frontend チームで開発しており、お客さまからのお問い合わせなどに対応するための機能(CS)と加盟店さま向けの機能(MS)を持っています。 当初はそのアプリケーションをお客さまと加盟店さまそれぞれの体験に責任を持つ2チームで開発をしていました。そのため、それぞれのリリーススケジュールを考慮しながら開発する必要がありました。 カスタマーサービスツールは、メルペイの機能追加に合わせて柔軟にオペレーターに機能を提供する必要があります。アプリケーションを分けた方が開発効率が上がり、安定して機能提供ができると判断しアプ

    1つのアプリケーションを分割するためのコンポーネント管理方法 | メルカリエンジニアリング
    honeybe
    honeybe 2019/08/26
  • WebAuthnことはじめ | メルカリエンジニアリング

    こんにちは。株式会社メルペイのID Platformチームでエンジニアをしている @nerocrux です。この記事はMERPAY TECH OPENNESS MONTHの12日目の記事です。 はじめに WebAuthnについて 概要 システム構成 登録と認証 登録 認証 Attestation について Attestation検証の概要 AttestationObject のフォーマット AttestationObject の検証 1. AttestationObject のデコード 2. authenticatorData について 3. credentialPublicKey のパース 4. verificationData の準備 5. 証明書フォーマットの変換 6. 署名検証 Assertion について Assertion の検証 1. authenticatorData につ

    WebAuthnことはじめ | メルカリエンジニアリング
  • 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リクエストを行う方法 | メルカリエンジニアリング
    honeybe
    honeybe 2019/06/15
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    honeybe
    honeybe 2019/06/08
  • Datadogを使って感じた、問題調査/対応における変化とその要因 | メルカリエンジニアリング

    はじめに この記事はMERPAY TECH OPENNESS MONTHの4日目の記事です。 こんにちは。株式会社メルペイで backendエンジニアをしている cowsys です。 プロダクト/システムで発生した「問題」をいかにして解決するか。 いかに素早く原因を特定/解消し、正常化させるか。 上記のような「問題の調査と対応」は、backendエンジニアとして持ち続けている、大きなテーマの一つとしてあります。 メルペイの開発で初めてDatadogを利用してみて、このテーマが、大きく前進したような手応えを感じました。 ここでは最もインパクトのあった変化に絞り、どのような変化が起き、それは何によってもたらされたのか。 Datadogの導入事例として、また「問題の調査と対応」を考えるエンジニアとして、感じたこと、考えたことをお伝えできればと思います。 目次 はじめに 目次 利用しているData

    Datadogを使って感じた、問題調査/対応における変化とその要因 | メルカリエンジニアリング
    honeybe
    honeybe 2019/05/23
  • メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング

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

    メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング
    honeybe
    honeybe 2019/04/18
  • バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング

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

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    honeybe
    honeybe 2019/04/17
  • メルカリWeb版のUIテスト自動化で目指している世界と、そのために作った Selenium Grid・Zalenium 環境 on Azure Kubernetes Service(AKS) | メルカリエンジニアリング

    メルカリWeb版のUIテスト自動化で目指している世界と、そのために作った Selenium Grid・Zalenium 環境 on Azure Kubernetes Service(AKS) メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)の 根 征 です。 私は普段、テスト自動化・CI / CD 改善・その他社内の生産性を上げるための自動化を行っています。 今回は、最近私たちが行なっているメルカリWeb版のUIテスト自動化と、その自動テスト環境についてご紹介したいと思います。 メルカリWeb版のUIテスト自動化について UI自動テスト環境に関する課題 Selenium Grid を Azure Kubernetes Service(AKS) 上で構築する Zaleniumを試す Azure Kubernetes Service(AKS)で受け

    メルカリWeb版のUIテスト自動化で目指している世界と、そのために作った Selenium Grid・Zalenium 環境 on Azure Kubernetes Service(AKS) | メルカリエンジニアリング
    honeybe
    honeybe 2019/04/16
  • メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング

    メルカリのAI EngineeringでTech Leadを務めている中河です。今回は3/18に正式リリースされた「写真検索機能」を支えるバックエンド・インフラをシステム側からの視点でご紹介します。 写真検索とは 所謂、画像検索機能で商品名を知らなくても画像から商品を検索できる機能の事です。詳しくは下記の公式リリースをご覧ください。 about.mercari.com 基的な写真検索の仕組みは、Deep Neural Networks (DNN)を使用して商品画像から特徴ベクトルを取得し、取得した特徴ベクトルをApproximate Nearest Neighbor Index(ANN Index)に追加して画像indexを構築。 検索時には同じく商品画像からDNNを介して特徴量ベクトルを取得し、ANN Indexから検索します。 アーキテクチャの概要 Figure1 上記がアーキテクチ

    メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング
    honeybe
    honeybe 2019/03/25
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

    こんにちは。メルペイで、決済・振込申請のバックエンドソフトウェアエンジニアをしている id:koemu です。 今日は、バッチ処理を行う理由について、考察を深めて設計に活かしていく話をしたいと思います。 はじめに バッチ処理とは、ある決まったタイミングで1つのプログラムが複数のデータを 一括処理 することを指します。この反対の言葉として、オンライン処理があります。オンライン処理とは、お客様の操作を初めとしたイベントをもとに 逐次処理 されるものです。OLTP(Online Transaction Processing)とも言います。 エントリでは、バッチ処理を採用するにあたり、どういったユースケースが適切なのかを整理して、今後のソフトウェアの設計の指針にできることを目指しています。今回は、「バッチ処理を採用するとき」と「バッチ処理の設計」の2つについて取り上げます。 バッチ処理を採用する

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    honeybe
    honeybe 2019/02/27
  • 僕たちはどうマイクロサービスのログを収集するのか | メルカリエンジニアリング

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

    僕たちはどうマイクロサービスのログを収集するのか | メルカリエンジニアリング
    honeybe
    honeybe 2018/12/15
  • 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
    honeybe
    honeybe 2018/12/13
  • 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を作るときにハマるポイント | メルカリエンジニアリング
    honeybe
    honeybe 2018/12/05
  • マイクロサービスチーム編成のベストプラクティスとメルカリでの構想 - Mercari Engineering Blog

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

    マイクロサービスチーム編成のベストプラクティスとメルカリでの構想 - Mercari Engineering Blog
    honeybe
    honeybe 2018/12/01
  • SeleniumConf Chicagoに参加してきました - Mercari Engineering Blog

    こんにちは。メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)でQAエンジニアとしてテスト自動化をぶりぶりしている @arminmin です。 先日、シカゴにて開催された SeleniumConf Chicago に参加してきましたので、その様子をレポートします。 SeleniumConfについて SeleniumConf は Selenium や、その関連技術に関するカンファレンスです。 Selenium や Appium などを使ってテスト自動化を推進または検討している人々が集まって最新の動向を共有します。 今年は約600人が参加しました。 また2019年4月には東京にて SeleniumConf が開催されることが決定しています。 なぜ SeleniumConf にいったのか メルカリの AQA では Android アプリケーションのテスト

    SeleniumConf Chicagoに参加してきました - Mercari Engineering Blog
    honeybe
    honeybe 2018/11/01
  • RBMにおける既存手法と量子アニーリング実装の性能比較 - Mercari Engineering Blog

    こんにちは! メルカリ量子アニーリングインターン @shitian-ni です。 2018/09/13 ~ 14 に開催された GPU Technology Conference Japan で "Performance comparison on CFRBM between GPU and Quantum Annealing" についてポスター発表をしてきました。 このポスターの話を今回のブログで紹介したいと思います。 GTCに展示されたポスター ポスターファイル: https://github.com/mercari/CFQIRBM/blob/master/doc/QRBM_vs_GPU_Poster.pdf 背景 筑波大学大学院と野村アセットマネジメント株式会社が2018年度人工知能学会全国大会で発表した論文"半教師学習と特異値分解によるCold-Start問題へのアプローチ"とSe

    RBMにおける既存手法と量子アニーリング実装の性能比較 - Mercari Engineering Blog
    honeybe
    honeybe 2018/09/22
  • メルペイにおけるプロダクトKPI改善のための Machine Learning Architecture | メルカリエンジニアリング

    こんにちは。メルペイ Machine Learning Team の @dama_yu です。 記事では、メルペイの Machine Learning Team におけるプロダクト改善を加速させるための、機械学習基盤について紹介します。 背景 メルペイでは、最近、社内の課題をデータサイエンスを用いて解決するための組織である、Machine Learning Team が設立されました。 チームが注力していく課題としては主に、信用スコア、不正検知、レコメンデーションが挙げられます。 メルペイ Machine Learning Team では、個人プレーになりがちなデータサイエンス系プロダクト開発を、 チームでスムーズに行うことができるよう意識した、機械学習基盤開発に取り組んでいます。 その取り組みについて、記事では説明していきたいと思います。 (この基盤が実装されているプロダクトに関する

    メルペイにおけるプロダクトKPI改善のための Machine Learning Architecture | メルカリエンジニアリング
    honeybe
    honeybe 2018/08/29
  • メルカリが、builderscon tokyo 2018の謎ガジェット「電子名札」のスポンサーに! #builderscon | メルカリエンジニアリング

    メルカリが、builderscon tokyo 2018の謎ガジェット「電子名札」のスポンサーに! #builderscon みなさん、こんにちは!メルカリEngineering Operations Team (EOT) の安藤こと@kikoです。 日は、メルカリがスポンサーしているbuilderscon tokyo 2018の謎ガジェット「電子名札」についてお伝えします! 登場人物 石田さん(@uzulla) フリーランスのSystem Engineer/Technical Director。builderscon tokyo 2018コアスタッフ。メルカリがスポンサーしている「電子名札」の制作を進めている関係で、今回対談者として登場いただいています。 七島(@jollyjoester) メルカリEngineering Operations Team (EOT) のメンバー。buil

    メルカリが、builderscon tokyo 2018の謎ガジェット「電子名札」のスポンサーに! #builderscon | メルカリエンジニアリング
    honeybe
    honeybe 2018/08/15
  • 「ノンプログラマーでも、自動化はできる」Zapier Automation Meetup Tokyo #0 を開催しました | メルカリエンジニアリング

    「ノンプログラマーでも、自動化はできる」Zapier Automation Meetup Tokyo #0 を開催しました こんにちは、メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)の 根 征 です。 私は普段、テスト自動化・CI / CD改善・その他社内の生産性を上げるための自動化を行っています。 今回は、7/10に Zapier Automation Meetup Tokyo #0 を行いましたので、その様子をご紹介したいと思います。 zapier.connpass.com 開催にいたった背景 私は去年から、社内勉強会やZapierの導入を通じて、社内の業務自動化をサポートしています。 詳細についてはこちらの記事をご覧ください。 seleck.cc 「実際にZapierを試してみたい、導入してみたい」などの反応も多くありました。 しかし、

    「ノンプログラマーでも、自動化はできる」Zapier Automation Meetup Tokyo #0 を開催しました | メルカリエンジニアリング
    honeybe
    honeybe 2018/07/13
  • Microservice で実現するメルカリオファー機能 | メルカリエンジニアリング

    こんにちは、 Backend Engineer の @vkgtaro です。 メルカリでは今まで PHP で開発されたモノリシックな API に対して機能を追加してきたのですが、今後メルカリのシステムを Microservices 化していくその先駆けとして、Offer という新機能を Microservices Platform 上で開発・リリースしました。Offer は今までコメント欄でなされていた値下げ要求を機能としてできるようにしたもので、出品者から承諾が得られれば Offer した金額で購入できるというものです。受け取った人はもちろん断ることもできます。 2018/07/10 現在、「インテリア・住まい・小物」カテゴリーにて使用可能になっています。 今回はこの機能を実装するにあたってやったことをいろいろ振り返ってみようと思います。 ざっくり全体像はこんな感じになってます。 端末と

    Microservice で実現するメルカリオファー機能 | メルカリエンジニアリング
    honeybe
    honeybe 2018/07/11