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

  • gRPCと手動テスト | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの5日目の記事です。 merpayでNFC決済のmicroservice (nfc-service) を開発担当している @Hiraku です。メルペイのバックエンドシステムは、各microserviceが主にgRPCを主な通信プロトコルとして用意しています。当然、各チームはgRPCサーバーを開発しています。この記事では、ちょっとした開発の日常をお見せしたいと思います。 とあるエンドポイントの場合 そもそもgRPCサーバーだけで、iOS/Androidのバックエンドができるのか?と思う方がいるかもしれません。 下図は、典型的なリクエスト経路を示しています。 merpay-gateway … 主にプロトコルの変換を担う merpay-api … BFF(Backend for Frontend)的な役割を担い、他のmicroser

    gRPCと手動テスト | メルカリエンジニアリング
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

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

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
  • 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
  • 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を作るときにハマるポイント | メルカリエンジニアリング
  • Custom Controller で Kubernetes の上の TLS 証明書を監視する | メルカリエンジニアリング

    こんにちは!Summer Internship 2018 にて Microservices Platform Team でインターンをしていた @everysick です*1。この記事ではインターン期間中に実装を行い、OSS として公開した Certificate Expiry Monitor Controller の紹介をします。 github.com 背景 有効期限監視の限界 TLS 証明書の運用では有効期限が来る前に TLS 証明書を更新をする必要があります。 これまでのメルカリでは mackerel.io の URL 外形監視機能に登録したエンドポイントの TLS 証明書を監視することで、有効期限が切れる前に通知をする運用を行っていました。 しかしながら、Microservices Platform 環境では日々新しいサービスが立ち上がっているため、従来の運用を適用するのであれば下

    Custom Controller で Kubernetes の上の TLS 証明書を監視する | メルカリエンジニアリング
  • メルペイにおけるプロダクトKPI改善のための Machine Learning Architecture | メルカリエンジニアリング

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

    メルペイにおけるプロダクトKPI改善のための Machine Learning Architecture | メルカリエンジニアリング
  • Microservice で実現するメルカリオファー機能 | メルカリエンジニアリング

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

    Microservice で実現するメルカリオファー機能 | メルカリエンジニアリング
  • Mercari Web / Frontend meetup #1 を開催しました | メルカリエンジニアリング

    フロントエンドエンジニアの @nullpoo です。 2/19(月)にメルカリで外部登壇者の方々をお招きして Mercari Web / Frontend meetup #1 を開催したので、その様子をお届けします。 mercari.connpass.com @uskay 氏による、「Modern Webを作ろう / Progressive Web Apps と AMP」 宇都宮 佑亮氏(@uskay) – グーグル合同会社 gTech シニア モバイル ソリューションズ コンサルタント AMPやPWAの他に、表示速度やプッシュ通知許可の求め方など、ユーザーの体験を向上させるためのテクニックが満載の発表でした InstagramやSnapchatで提供されているストーリーと似たAMP Storyや、AMP内でもworker経由でJavaScriptが実行できるようになるかもしれないという話

    Mercari Web / Frontend meetup #1 を開催しました | メルカリエンジニアリング
  • 技術書を作るための技術スタック | メルカリエンジニアリング

    Mercari Advent Calendar 2017の3日目はmhidakaがお送りします。 Advent Calendarで空いてるところに収まったら12月3日は日曜日ということで、エンジニア趣味的な話です。 筆者は技術的なブログや書籍を書くかたわら、技術書のためのイベントなどを開いてます。 技術を追求すること、プログラミング、まとめることが好きでモバイル分野で継続的に書籍を出版しています。 内容はおおむね同人誌作りへ適用している技術の話です。 書籍の作り方は出版社によっても違いますが、紹介する内容と同様の作り方をしている商業書籍もたくさんあります。 ここでは著者の目線から出版業界のテクノロジーをのぞいてみましょう。 作る楽しみと読者の視点 著者がを書く動機は人それぞれですが技術を広めたい、たくさん売れたい、自分の知識をまとめたいなど目的を持って書き始めます。 また一方で書籍の目

    技術書を作るための技術スタック | メルカリエンジニアリング
  • Gitのつくりかた | メルカリエンジニアリング

    はじめまして。サーバサイドエンジニアの @DQNEO です。 今日はGitのつくりかたをご紹介します。 C言語学習教材としてのGit Gitと同じものをゼロから作って何の意味があるのか?と思いますよね。 私がこの再発明をやり始めた動機は「C言語を書けるようになりたい」でした。 実際に途中までやってみたところ、 C言語がチョットデキるようになった Gitの内部構造に詳しくなった というメリットが得られました。 C言語を勉強する題材は、テトリスとかWebサーバとか他にいくらでもあるのですが、Gitを実装してみるのはかなりおすすめです。理由は下記の通りです。 内部構造が意外と単純 (ローカルで動かす分には)ネットワークの知識が不要 普段使っているツールで外部仕様がわかっているので、やるべきことが明確 余談ですが、家Gitのソースコードを参考にしようと思って読んでいたら、Linus Tovals

    Gitのつくりかた | メルカリエンジニアリング
  • 1