タグ

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

  • FinOpsへの取組 地道な計数管理とデータ加工の日々 | メルカリエンジニアリング

    こんにちは。メルカリ Infrastructure & Procurement Management Team(IPM)の@bungoです。約1年前の2021年夏からメルカリにJoinして、エンジニア組織のお金の問題に取り組んでいます。 昨日に引き続き、この記事はMercari Advent Calendar 2022 の7日目の記事です。 前回の記事でも冒頭からドル円レートの話でしたが、2022年はロケットのように上昇する為替レートとの戦いでした。クラウド費用の算定根拠になっている為替レートがどんどん変わるので、日円で見ると短期間でものすごい費用増になります。 2022年の始めは1米ドルが115円近辺、これが2022年11月には147円まで円安に振れました。例として簡単に言うと1,150万円のクラウド費用を毎月払っていたとすると、年末には1,470万円に値上がりしたことになります。 ち

    FinOpsへの取組 地道な計数管理とデータ加工の日々 | メルカリエンジニアリング
    murashit
    murashit 2022/12/07
  • 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を削除するための手順と道のり | メルカリエンジニアリング
    murashit
    murashit 2021/12/09
  • 機械学習とHuman-in-the-Loopで優勝する違反検知の話 | メルカリエンジニアリング

    こんにちは。AIチーム所属ソフトウェアエンジニアの@shidoです。 機械学習は様々なサービスの中で強力な武器となりますが、データパイプラインの構築や学習のための計算リソースの確保など、リーズナブルにシステムに組み込むには機械学習特有の困難を克服しなければなりません。 またその困難は機械学習の応用先によっても様々だと思っています。今回の記事ではデータパイプラインの構築に「Human-in-the-Loop (HITL)」と呼ばれる機構を違反出品検知のための機械学習システムへ取り入れた実例と、この仕組みについての考察をお話します。 もくじ 違反出品検知システムについて メルカリの安心・安全・公正な取引環境への取り組み ポリシーの変更について 不正取引の潮流の変化について 機械学習システムによる違反出品の検知 機械学習による違反出品検知の強みと課題 継続的なモデルアップデートの重要性 Huma

    機械学習とHuman-in-the-Loopで優勝する違反検知の話 | メルカリエンジニアリング
    murashit
    murashit 2020/03/26
  • Swiftにおける末尾再帰とCompilerによる最適化を探る | メルカリエンジニアリング

    SwiftのCompilerはOSSとして公開されているので、興味のある方はぜひチェックしてください。 github.com また、Swift Compilerのアーキテクチャについては、こちらの記事がとても分かりやすいです。 qiita.com 末尾再帰にしたとして、最適化を無効にしたときと有効にしたときで実行結果が変わってくるのであれば、Compilerの生成物も当然異なっているはずです。 それでは、最適化を無効にしたときと有効にしたときで、上記のどのタイミング(Component)でどのような生成物の違いがあるのか、見ていきます。 各Componentにおける差分 次の内容をsum.swiftとして保存し、生成物の差分を実際に見ていきます。 func sum(_ n: Int, _ res: Int) -> Int { if n == 0 { return res } return

    Swiftにおける末尾再帰とCompilerによる最適化を探る | メルカリエンジニアリング
    murashit
    murashit 2019/12/17
    SILでの最適化じゃなくてSIL→LLVM IRのフェーズでやるんだ
  • マイクロサービス環境でのメルカリ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のリリースフロー
    murashit
    murashit 2019/10/31
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    murashit
    murashit 2019/06/11
    古式ゆかしい話だ
  • 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と手動テスト | メルカリエンジニアリング
    murashit
    murashit 2019/05/27
    こういう泥臭いやつ好き
  • バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング

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

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    murashit
    murashit 2019/04/18
    このシリーズすごいいいな
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

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

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    murashit
    murashit 2019/02/28
    めっちゃ良いこと書いてある
  • 1