タグ

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

  • Learning materials | メルカリエンジニアリング

    技術トレーニングDevDojo メルカリには、専門分野を超え、幅広い知識を身につけることを目的とした「DevDojo」という社内技術トレーニングがあります。DevDojoは、すべて社内のエンジニアが作成・運営しています。実際に使用した講義資料や動画を一部こちらで公開しています。 ※ビデオについて 同時通訳で実施しています。少々聞き取りづらい可能性がある旨、ご了承ください。 [Basic] Machine Learning (Ver. 2024)At Mercari, AI is used to offer unique features such as Mercari AI Assist. This session goes over the general concepts of machine learning (“ML”) as well as the fundamentals of

    Learning materials | メルカリエンジニアリング
  • メルカリでのDetection EngineeringとSOAR | メルカリエンジニアリング

    記事は2022年5月13日に公開された記事の翻訳版です。 ※この記事はSecurity Tech Blogシリーズ: Spring Cleaning for Securityの一環で書かれています。 こんにちは。Security EngineeringチームのDavidです。 この記事では、メルカリが独自に実施しているSOC(セキュリティオペレーションセンター)の取り組みを紹介します。少しでも読者の脅威検出の取り組みをスタートするきっかけになれたらと思っています。 はじめに 一般的に、サイバーセキュリティは、防止(Prevention)、検出(Detection)、対応(Response)の3つの主要原則に分類されます。最近のブログ投稿やオンライン登壇では、SecurityチームとMicroservice Platformチームが主にセキュリティの防止の側面 [1] について触れてきま

    メルカリでのDetection EngineeringとSOAR | メルカリエンジニアリング
    koemu
    koemu 2022/06/15
    発見的統制について、日本企業の中ではわりと先を行っている事例だと思う。
  • Automation of Terraform for AWS | メルカリエンジニアリング

    投稿は DPE Camp blog series の一部です。 こんにちは。 Platform Infra の Kenichi Sasaki (@siroken3) です。メルカリでは主にAWSの管理を業務にしています。今回の投稿ではAWS構成管理リポジトリのセキュアなCI/CD環境を構築した件について紹介します。 背景 メルカリにおけるAWSの役割 メルカリにおけるAWSの利用の歴史は古く、商品画像を格納するためのストレージとしてS3をサービス開始当初から採用しています。その他S3はMySQLデータベースのバックアップ先、パートナー各社様とのデータ連携のための AWS Transfer Family のバックエンドとして使用しています。また2014年当時のUSメルカリのサービス開始時のメインインフラはAWS上にありました。 直近ではお客さま電話窓口やサポート担当の稼働管理ツールとして

    Automation of Terraform for AWS | メルカリエンジニアリング
    koemu
    koemu 2022/01/26
    CI/CDばかりでなく、AWS OrganizationsやAWS SSOを活用した内部統制の仕組みが参考になります。
  • マイクロサービスにおけるリコンサイルの話 | メルカリエンジニアリング

    この記事はMerpay Advent Calendar 2021 の23日目の記事です。メルペイPayment Platformチームの @foghost がお送りします。 記事は決済システム開発の観点でリコンサイルを通して防ぎたいリスクについて説明した後、メルペイでリコンサイルについての取り組みについてご紹介します。 リコンサイルとは リコンサイルで検索するとwikipediaではリスク管理の手法の1つと書かれています。人間の様々の活動においてミスが必ず発生するので、リコンサイルはそれら活動の結果が期待通りになっているかどうかを再度確認することで、誤差を検知して様々なリスクを回避することができます。 定義だけ説明してもピンと来ない方が多いかと思いますが、実は普段の生活でも広い意味でのリコンサイルが必要となる場面が多いです。例えば以下の売店で買い物するときの流れを考えてみましょう。 お客

    マイクロサービスにおけるリコンサイルの話 | メルカリエンジニアリング
    koemu
    koemu 2021/12/23
    foghostさんのスーパーノウハウ、それもリコンサイルの話が出てきて、読み応えがありました。
  • GitHub上のsensitive dataを削除するための手順と道のり | メルカリエンジニアリング

    Advent Calendar day 7 担当の vvakame です。 予告では Apollo Federation Gateway Node.js実装についてポイント解説 としていましたが、社内各所のご協力によりAdvent Calendarの私の担当日に間に合う形で公開できる運びとなりました。そのため告知とは異なりますが GitHub上のsensitive data削除の手順と道のり をお届けしていきたいと思います。 メルペイVPoE hidekによるday 1の記事で振り返りがあったように、今年、弊社ではCodecovのBash Uploaderに係る情報流出という事案が発生しました。当該インシデント対応において、プレスリリースにも記載のある通り、ソースコード上に混入してしまった認証情報や一部個人情報などの機密性の高い情報(sensitive data)について調査を実施し、対応

    GitHub上のsensitive dataを削除するための手順と道のり | メルカリエンジニアリング
  • OAuth2の次に来ると言われる認可プロトコルGNAPとはなにか | メルカリエンジニアリング

    Merpay Advant Calendar 2020、23日目の記事は、趣味で認証認可をやっている @nerocrux が送りいたします。 最近 GNAP という認可プロトコルのワーキンググループドラフトが出ていて頑張って細かく読みましたので、(次回はいい加減に仕事でやってることについてお話しますが)今回はその GNAP について紹介させてください。 GNAP とはなにか? GNAP は Grant Negotiation and Authorization Protocol の略で、認可のプロトコルです。Justin Richerさんという方を中心に策定しています。作者によると、GNAP の発音は げなっぷ になります。 認可(Authorization)プロトコルと言えば、OAuth 2.0 (RFC6749) が広く知られ、運用されています。GNAP は OAuth 2 の後継とし

    OAuth2の次に来ると言われる認可プロトコルGNAPとはなにか | メルカリエンジニアリング
    koemu
    koemu 2020/12/24
  • 決済サービスを閉じるときのやることリスト | メルカリエンジニアリング

    Merpay Advent Calendar 2020の20日目は、メルペイProduct EngineeringチームのVP of Engineeringを担当しているnozaqがお送りします。 2020年はメルペイEngineeringチームとして業務しながら、一方で年初からOrigami PayというQRコード決済サービスの提供終了に伴うシステム停止業務を計画・実行してきました。サービスの終わらせ方について詳しく説明されることは中々ないと思ったので、投稿では決済という外部影響が大きい種類のサービスを終了するにあたり、どのような検討がなされたのかを事例としてお伝えできればと思います。 取り組んだこと 決済サービスはお支払いを行う一般のお客さま・お支払いを受け付ける加盟店様・システム連携している金融機関様やパートナー様など多くのステークホルダーが存在します。また店頭でのお支払い方法をご

    決済サービスを閉じるときのやることリスト | メルカリエンジニアリング
  • どのようにPlatformチームの組織変更をしたか | メルカリエンジニアリング

    Platform チームの@deeeeeeeetです. Platform チームは2年前にMercariがMicroservicesの移行を始めたときに一緒に立ち上げられたチームです.Platform チームはMicroservicesを動かすための基盤や開発や運用のためのツールセットなど提供しています.立ち上げ時は自分を含めて2-3人で始まったチームですが2年が経ち10人を超えるチームにまで成長しました. チームのメンバーが増えるほど1チームとして動くには限界がきており,またMicroservices化が進めば進むほどチームの負う責任範囲も広くなりCognitive load (認知負荷) も高くなっていました.これらの課題を解決するために組織変更を行い,Platform チームを複数の専門性に特化したチームに分割しました. 記事ではチームのデザイン,チームが分離しても独立性を保ちつつ

    どのようにPlatformチームの組織変更をしたか | メルカリエンジニアリング
  • Mercari Microservices PlatformにおけるKubernetes Cluster移行 | メルカリエンジニアリング

    Microservices Platform Teamの@deeeeeeetと@dragon3です. Microservices Platform TeamではGoogle Kubernetes Engine(GKE)をメインのコンポーネントとして利用し,その上にメルカリとメルペイのMicroservicesを動かすための基盤を構築しています.メルカリのMicroservices化のプロジェクト自体は2年ほど前から始めており,GKEも当時に構築したものを今日まで運用し続けてきました. この2年間でGKEからは多くの機能がリリースされました.その中のほとんどはそのまま有効にすることができますが,中にはClusterを作り直す必要があるものもあります.例えばRoutes-based ClusterをVPC-native Clusterに,Zonal ClusterをRegional Clust

    Mercari Microservices PlatformにおけるKubernetes Cluster移行 | メルカリエンジニアリング
  • メルペイCTOと考える新しい経済学とエンジニアリング | メルカリエンジニアリング

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

    メルペイCTOと考える新しい経済学とエンジニアリング | メルカリエンジニアリング
    koemu
    koemu 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はこれからだ!〜
    koemu
    koemu 2019/12/17
  • メルペイにおける大規模バッチ処理 | メルカリエンジニアリング

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

    メルペイにおける大規模バッチ処理 | メルカリエンジニアリング
  • セキュリティの「衞り」の全国大会 Hardening II SU に出場してきたよ - Mercari Engineering Blog

    こんにちは、メルペイでバックエンドエンジニアをしている id:koemu です。 去る2019/07/04〜05の間、私を含めたメルカリグループ3名のエンジニアが、セキュリティの「衛り」の全国大会 Hardening II SU に参加してきましたので、報告します。 TL;DR セキュリティの「衛り」の技術を競う大会に参加してきた 自走できるレベルの高いメンバーが集まりOSSをはじめ成果物もできた 惨敗だったがセキュリティの衛りの知見をたくさん得ることができた Hardening とは Hardening とは、セキュリティの衛りの技術を競う大会です。日各地で開催されており、この Hardening Project が主催する Hardening II SU (以下、競技)は最も規模が大きく、競技の複雑度も高くなっています。 競技において、セキュリティに関するソフトウェア技術は衛りの

    セキュリティの「衞り」の全国大会 Hardening II SU に出場してきたよ - Mercari Engineering Blog
    koemu
    koemu 2019/07/11
    会社のブログを書きました。みなさんもぜひ挑戦してみてください!
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    koemu
    koemu 2019/06/07
    隣に座る同僚の渾身のエントリです
  • 外部APIと連携する機能のデータの持ち方のイチ事例 | メルカリエンジニアリング

    こんにちは。メルペイ バックエンドソフトウェアエンジニアの id:koemu です。 今日は、外部APIと連携する機能のデータの持ち方について、振込申請のシステムを事例に取り上げていきます。 基データ・拡張データに分ける 定義 まず、データを、「基データ」「拡張データ」に分けます。 ここで、「基データ」とは、提供する機能において最低限必要となる情報です。振込申請ですと以下のデータとなります。 名義 口座番号 申請日 申請受理日 振込完了日 ステータス(受付完了/送金完了/送金失敗/その他) 一方、「拡張データ」とは、基データでは網羅していない、外部APIが必要としているデータを指します。例えば、連携用のレコード別のIDや、ステータスの遷移などです。振込申請ですと次のデータになります。 ステータス(プロセッシング事業者が持つより詳細なステータス) IDのマップ(基データと拡張データ

    外部APIと連携する機能のデータの持ち方のイチ事例 | メルカリエンジニアリング
    koemu
    koemu 2019/06/03
    会社のブログを書きました
  • メルペイでの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で使

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    koemu
    koemu 2019/04/17
    会社のブログを書きました
  • お急ぎ振込の締め処理バッチの事例で見ていく バッチ処理の設計結果 | メルカリエンジニアリング

    こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 今回は、前回の記事でお話したことを踏まえ、私が開発を担当して実際に動いているバッチプログラム「お急ぎ振込 締め処理バッチ(以下、締め処理バッチ)」について、述べていきます。 記事では、「締め処理バッチについて」と「前回の記事に照らし合わせてどう設計されているか」の2点に分けて説明します。内容は、特に記載のない限り、記事執筆時点のものとなります。 締め処理バッチについて 事例の話に移る前に、これから説明する締め処理バッチの処理がどのようなサービスを提供するのか、ご案内します。 お急ぎ振込とは お急ぎ振込とは、メルカリの中で売り上げたお金を皆様の銀行口座に出金できる機能の1つです。当初から存在している振込申請機能より早く送金することができ、最短1営業日で出金することが可能です。2017年の夏の終わ

    お急ぎ振込の締め処理バッチの事例で見ていく バッチ処理の設計結果 | メルカリエンジニアリング
    koemu
    koemu 2019/03/20
    前回のバッチの設計の続編です。事例を書きました。実際にどうやって並列処理を実現しているかなど。
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

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

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    koemu
    koemu 2019/02/27
    会社のブログを書きました。バッチについて体系的にまとめられるかの挑戦です。
  • MTC2018 カンファレンスLPの裏話 〜インフラ編〜 - Mercari Engineering Blog

    こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 2018年10月4日にMTC (Mercari Tech Conf) 2018 が開催されました。ご来場された皆様、楽しんでいただけたでしょうか? 今回は皆様が最初に目にしたであろうカンファレンスLPの裏側について紹介したいと思います。 実はこのページはGitHub上でPublicなリポジトリとして公開されています。 気づかれた方もいらっしゃるかもしれませんが、これはイベント後に公開したわけではなく、リポジトリ作成時からずっとPublicな状態で開発を続けていました。 チーム構成 MTC2018では最初からWebでの公開だけではなくカンファレンスアプリを作ろうというのを決めていました。 そのため大きく分けてwebチームとappチームに分けて開発をすすめることになりました。 web/appチームはメルカリグループ

    MTC2018 カンファレンスLPの裏話 〜インフラ編〜 - Mercari Engineering Blog
    koemu
    koemu 2018/10/11
    Spannerの使いっぷりとかいろいろ