タグ

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

  • AppEngineの旧Log APIを脱却したい話 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの3日目の記事です。 メルペイ ソリューションチームで毎日コード書いたりして遊んでいるvvakameです。 TL;DR AppEngine 2nd genでロックインAPIから解放され大脱出できるようになった AppEngine Log APIはオーパーツ(完全には真似できない) プラットフォーム出力のrequest logを使う アプリではapplication logだけ出力する 高度なフィルターの使い方を覚える 05/23 もらった情報をもとに追記をしました。 AppEngineはいいものだよ & 2nd genの台頭 メルペイではプロダクト提供のためにAppEngineはほぼ使われていません。だいたいのものがGKE上で動いていて、だいたいのDBSpannerです。しかし、お客様に提供するものではない、internalな

    AppEngineの旧Log APIを脱却したい話 | メルカリエンジニアリング
    alcus
    alcus 2019/05/22
  • メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング

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

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

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

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
  • メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング

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

    メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

    日コーポレートサイトでお知らせした通り、Web版のメルカリにおいて一部のお客さまの個人情報が他者から閲覧できる状態になっていたことが判明しました。原因はすでに判明して修正が完了しております。また、個人情報を閲覧された可能性のあるお客さまには、メルカリ事務局より、メルカリ内の個別メッセージにてご連絡させていただきました。 お客さまの大切な個人情報をお預かりしているにも関わらず、このような事態に至り、深くお詫びを申し上げます。 エントリでは技術的観点から詳細をお伝えさせていただきます。 2017年6月27日 CDNのキャッシュの動作について、CDNプロバイダと仕様について確認し検証を行いました。その結果一部記述に実際と異なる箇所があり、加筆修正いたしました。 概要 メルカリWeb版のコンテンツキャッシュをしているCDNのプロバイダ切り替えを行いました。 その際来キャッシュされるべきでない

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

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

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
  • 半球面型ディスプレイを用いた疑似3Dディスプレイの作り方 | メルカリエンジニアリング

    Mercari Advent Calendar 2018 の11日目はMercariのR&D部門 R4DでXR Researcherをしている @satomi がお送りします。 私は主にVR(Virtual Reality)やAR(Augmented Reality)方面の研究開発を行っているのですが、それ以外にも直接的に仮想空間を現実世界に召喚する技術として、ホログラム等の3Dディスプレイ技術にも興味を持っています。 今年の8月頃に一部の3Dディスプレイマニアの間で話題になった製品 Looking Glass をご存じの方も多いと思うのですが、私自身 Kickstarter 経由で出資をしたものの 予定の12月になってもまだ届かないという事で、記事では手元に有った半球面型ディスプレイを用いて擬似的な3Dディスプレイを作ってみました。 疑似3Dディスプレイ レシピ ハードウェア 半球面型

    半球面型ディスプレイを用いた疑似3Dディスプレイの作り方 | メルカリエンジニアリング
  • 第一回 『ライブ配信 Meetup 〜メルカリ × SHOWROOM〜 』を開催しました! | メルカリエンジニアリング

    こんにちは@oqruskです。メルカリチャンネルを開発運用しているチームでBackendエンジニアをやっています。 先日、SHOWROOM様と合同でライブ配信サービスをテーマとしたMeetupを開催しました。 第一回のテーマはライブコマース。 各社のPMエンジニアが登壇し、ライブコマース市場の状況や可能性について、システムアーキテクチャや開発の裏話、などについて話しました。 mercaridev.connpass.com プレゼンテーション 弊社メルカリからは私@oqruskが、メルカリチャンネルのアーキテクチャ全体について発表しました。 speakerdeck.com メルカリチャンネルは少人数かつ短い期間で開発したため、クラウドサービスをフル活用したアーキテクチャになっています。 また、SHOWROOMからはSHOPROOM担当の牧野様より、『ライブコマース開発秘話』についての発表が

    第一回 『ライブ配信 Meetup 〜メルカリ × SHOWROOM〜 』を開催しました! | メルカリエンジニアリング
  • 機械学習ツールキット KubeflowについてGDG DevFest18 で登壇してきました

    メルカリ機械学習エンジニアの @hurutoriya です。 2018/09/01 に開催された GDG Dev Fest 2018 で Kubeflow について登壇してきました。 ML Sessions | GDG DevFest 2018 Tokyo 発表資料 www.slideshare.net Kubeflowについての基礎的な説明は発表資料で行っているので、ぜひご覧ください。 発表内容は、機械学習をサービスとして提供する際にいろんな壁が存在していますが、その壁をぶっ壊すのが Kubeflow だ! という流れで発表をしてきました。 僕自身が機械学習エンジニアということもあり、k8sを知り尽くしているわけではなく、あくまで機械学習エンジニアとして Kubeflowの所感を共有させていただきました。 僕自身がKubeflowに興味をもった背景としては、メルカリでは機械学習基盤の開発

    機械学習ツールキット KubeflowについてGDG DevFest18 で登壇してきました
  • Android Lunch and Learn LT大会を実施しました  | メルカリエンジニアリング

    こんにちは。メルカリでAndroidエンジニアをしているAtsuko (@muumuumuumuu) とMatthew (@callipan)です。 日はメルカリAndroidチームで実施したLunch and Learn LT大会を紹介します。 I’m Matthew (@callipan) from the Mercari Android team. I’m co-writing this blog along with Atsuko (@muumuumuumuu) to introduce the Lunch and Learn Lightning Talk tournament that we recently held with the Mercari Android team. Android Lunch and Learn LT大会とは 現在メルカリでは、30人ほどのAnd

    Android Lunch and Learn LT大会を実施しました  | メルカリエンジニアリング
    alcus
    alcus 2018/09/06
  • プロダクトのリリース前から新ダッシュボード「Looker」の導入に踏み切ったわけ | メルカリエンジニアリング

    こんにちは。メルペイのデータアナリストチームです。 メルペイはプロダクトの開発フェーズにあり、リリースに向けて全社で頑張っています。 「プロダクトがないのに、データ分析?」と思う方もいらっしゃるはずなので、メルペイのデータアナリストの業務と、力を入れているダッシュボードツール「Looker」の活用について紹介させて頂きます。 Lookerの公式ページはこちら プロダクトがないフェーズでの仕事 Lookerの話をする前に、まずは私達の状況を簡単に説明します。 分析チームを抱える企業は沢山ありますが、「プロダクトができる前から活動しているケース」は少ないと思います。 そういった意味では、私達のチームは他の会社と比べてユニークなポジションになっています。 一言で言えば「事業を作るための分析」を行っています。 メルペイの事業が成り立つには「良いプロダクト」を作り、「ステークホルダーとの関係」を築き

    プロダクトのリリース前から新ダッシュボード「Looker」の導入に踏み切ったわけ | メルカリエンジニアリング
  • mercari.go #1 を開催しました | メルカリエンジニアリング

    はじめに こんにちは、mercari.go オーガナイザーの@morikuniです。 7月3日にメルカリ主催のGo勉強会 mercari.go #1 を開催しました。 最終的に300を超える応募をいただき、多くの方に関心をもっていただけたことを大変嬉しく思っています。 残念ながら全ての方に参加いただくことはできなかったので、この記事で当日の発表の様子などをお伝えします! API GatewayによるMicroservices化 1つめのセッションは @deeeet による「API GatewayによるMicroservices化」です。 API Gatewayがどのような思想で作られ、Microservices化を進めるにあたってどのように使われているのかを紹介しました。 スライドはこちらから https://go-talks.appspot.com/github.com/tcnksm/t

    mercari.go #1 を開催しました | メルカリエンジニアリング
  • マルチモーダルモデルによる不正出品の検知 | メルカリエンジニアリング

    はじめまして、メルカリで機械学習エンジニアとしてインターン中の@shidoです。 今回はメルカリ内部で使用する機械学習プロダクトにマルチモーダルモデルを用いることで、予測精度の向上に成功した話をご紹介いたします! マルチモーダルとは マルチモーダル(Multimodal)なデータは、「ひとつのデータに対する情報が複数(multi)の形式(mode)で存在しているデータ」と説明できます。 例えば動画配信サイトで配信されている動画には、映像・音声・説明文と、ひとつのビデオについて少なくとも3つの形式で情報が存在していると考えることが出来ます。 メルカリに出品されている商品について考えると、ひとつの商品について写真・説明文・値段など複数の形式で情報が存在しているので、これもまたマルチモーダルなデータといえます。 メルカリでの応用:不正出品検知 現在メルカリでは1日100万品以上が出品され、売れて

    マルチモーダルモデルによる不正出品の検知 | メルカリエンジニアリング
  • pvpool〜メルカリの商品閲覧数カウントアップの裏側〜 | メルカリエンジニアリング

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

    pvpool〜メルカリの商品閲覧数カウントアップの裏側〜 | メルカリエンジニアリング
    alcus
    alcus 2018/02/26
  • https://engineering.mercari.com/entry/2017/12/18/deadlock

    https://engineering.mercari.com/entry/2017/12/18/deadlock
  • US版Mercariのリニューアルと今後 (サーバサイド)

    この記事はMercari Advent Calendar10日目の記事です。昨日は@syu_creamのメルカリのデータ分析基盤の紹介〜BigQuery周辺の話〜でした。 日はUSサンフランシスコのサーバサイドエンジニア@deme0607が、今年2017年にリニューアルしたUS版Mercariのサーバサイドについてご紹介します。 現在のアーキテクチャ Brand new US Mercari (Android 編)でもご紹介したように、US版Mercariは今年、より一層USマーケットにフィットしたアプリを提供しUSでの成長を加速すべく、大きなリニューアルが実施されました。前述の記事はAndroidアプリのリニューアルに関するものですが、iOSアプリやAPIサーバも同様にリニューアルしています。 以下の図は、リニューアル後のUS版Mercariのサーバサイドアーキテクチャです。 ここでは

    US版Mercariのリニューアルと今後 (サーバサイド)
  • メルカリの分析チームとは?その全ての疑問にひとつひとつ答えます | メルカリエンジニアリング

    この記事はMercari Advent Calendar 6日目の記事です。 メルカリのBIチームのアナリスト/マネジャーの @hikaru が、メルカリの分析チームの事情についてお送りします。 ※ BIチーム…メルカリ内の分析を一手に担うチーム。Business Intelligenceチーム。 この記事について イベントやカジュアル面談などでメルカリの分析チームの内幕についてよく聞かれる質問があります。 いえ、それどころか場合によっては社内であまり一緒に仕事する機会がない方々からも、チームに関して質問されることがあります。 ※ カジュアル面談…メルカリでは、社内のポジションに興味ある方にオフィスに来ていただいて1on1でざっくばらんに話す会を頻繁に行っています。 正直、分析チームというのは外部から何をやっているか見えづらい面もあるため、理解できます。 よく頂く質問としては、 組織的なこ

    メルカリの分析チームとは?その全ての疑問にひとつひとつ答えます | メルカリエンジニアリング
  • 分散ファイルシステムはブロックチェーンの夢を見るか | メルカリエンジニアリング

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

    分散ファイルシステムはブロックチェーンの夢を見るか | メルカリエンジニアリング
  • 主要データベースの増え続けるdisk容量の対応事例

    こんにちは、SRE の @masartzです。 今回は最近取り組んだ、メルカリの主要データベースの容量削減のお話をしようと思います。 TL;DR 主要データベースの容量を20%以上削減しました どういう状況だったか? 何をしたか? メルカリでは2017年11月現在、出品数は1日100万件を超えています。 なので、単純に日々多くのデータが増えていっています。 そのためデータベースのスケーリングは常に検討し、取り組まなければならない課題です。 今回扱ったデータベースはいくつかあるデータベースの中で商品テーブルを持つ、メルカリの主要データベースになります。 増え続けるデータに対応するための、テーブル分割を変則的な形で対応したのでその過程を紹介します。 前提:データベース分割方法 メルカリのデータベースには 会員情報や商品情報など、基要素となるデータから、通知やお知らせメッセージなど付加的な機能

    主要データベースの増え続けるdisk容量の対応事例
    alcus
    alcus 2017/11/29
  • 退屈なブラウザ作業はSeleniumにやらせようーーはじめてでもできるブラウザ操作自動化 | メルカリエンジニアリング

    こんにちは、メルカリのQA-SETチームで自動化をぶりぶりしている tadashi0713 です。 これまではモバイルアプリ・WebアプリのE2Eテストを中心に自動化をしていましたが、最近ではプロダクト部門・カスタマーサポート部門・コーポレート部門の業務自動化にも挑戦しています。 今回はSelenium WebDriver (以下 Selenium) を使って簡単にできるブラウザ作業自動化についてご紹介します。 10/25にGitHub JapanでLT発表した資料もありますので、合わせてご覧ください。 english-lt.connpass.com 意外と多い、ブラウザを使った繰り返し作業 社内の色々な職種・チームの方々とコミュニケーションをしていると、ブラウザを使った繰り返し作業が多く感じました。 例えば 社内で使用しているWebサービスのアカウントを社員に付与する Chartio(h

    退屈なブラウザ作業はSeleniumにやらせようーーはじめてでもできるブラウザ操作自動化 | メルカリエンジニアリング