タグ

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

  • 【書き起こし】BigQueryのコンピューティングリソース管理の取り組み – Go Kojima【Merpay & Mercoin Tech Fest 2023】 | メルカリエンジニアリング

    Merpay & Mercoin Tech Fest 2023 は、事業との関わりから技術への興味を深め、プロダクトやサービスを支えるエンジニアリングを知ることができるお祭りで、2023年8月22日(火)からの3日間、開催しました。セッションでは、事業を支える組織・技術・課題などへの試行錯誤やアプローチを紹介していきました。 この記事は、「BigQueryのコンピューティングリソース管理の取り組み」の書き起こしです。 @gouki:「BigQueryのコンピューティングリソース管理の取り組み」にと題して発表します。 株式会社メルペイ ソフトエンジニアGo Kojimaです。よろしくお願いします。私は2年前にメルペイにジョインし、当初は機械学習システムの基盤開発に携わりました。その後、現在も所属しているデータマネジメントチームに異動し、主に今回発表するBigQueryコンピューティングリソ

    【書き起こし】BigQueryのコンピューティングリソース管理の取り組み – Go Kojima【Merpay & Mercoin Tech Fest 2023】 | メルカリエンジニアリング
  • テストコードの改革を進めている話 | メルカリエンジニアリング

    はじめに この記事は、Merpay Tech Openness Month 2023 15日目の記事です。 こんにちは。メルペイ加盟店精算チームのバックエンドエンジニア@r_yamaokaです。 今日は現在自分がリードして取り組んでいるテストコードの改善について紹介したいと思います。 抱えている課題 私が所属している加盟店精算チームのマイクロサービスは加盟店さま向けサービスとして欠かせないものであり、メルペイ最初期から存在するサービスです。他のマイクロサービスにあまり無い特徴として多数のバッチ処理を行っている点が挙げられます。 お客さま(メルペイユーザー)がお店で行った決済は、一定の頻度で集計し決済手数料を差し引いた上で加盟店さまの銀行口座へ振り込むことになります。 最終的な振込金額を算出するまでの流れとしては 個々の決済金額のリコンサイル(会計マイクロサービスとの金額照合) 日次集計 締

    テストコードの改革を進めている話 | メルカリエンジニアリング
  • 協調フィルタリングとベクトル検索エンジンを利用した商品推薦精度改善の試み | メルカリエンジニアリング

    こんにちは、メルカリのレコメンドチームで ML Engineer をしている ML_Bear です。 以前の記事 [1] では、item2vecと商品メタデータを用いた、メルカリのホーム画面のレコメンド改善のお話をさせていただきました。今回は商品詳細画面でレコメンド改善を行ったお話をさせていただきます。商品詳細画面の例は図1の通りです。ユーザーはアイテムの詳細な説明を見たいときにこの画面に来訪するため、同様の商品を推薦する自然な接点として非常に重要です。 まず、私たちが商品詳細画面で行った改善の概要を示します。各部の詳細については次節以降で詳しく触れます。 日有数の大規模ECサービスにおいてベクトル検索ベースの商品推薦アルゴリズムを実装し、推薦精度の大幅な改善を実現しました。 協調フィルタリングとニューラルネットワーク (以下、NN) を利用した商品推薦アルゴリズムを構築し、コールドスタ

    協調フィルタリングとベクトル検索エンジンを利用した商品推薦精度改善の試み | メルカリエンジニアリング
  • SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の21日目の記事です。 こんにちは。メルペイBackendエンジニアのfivestar(@fivestr)です。 記事では「SOLID原則」と呼ばれる設計原則に沿って実際に行ったリファクタリングについて、メルペイの「あと払い」サービスの開発現場事情を踏まえながらご紹介していきます。 あと払いの歴史とコード負債 私が所属するCredit Designチームではメルペイの「あと払い」や「メルペイスマートマネー」といった与信サービスの開発を行っています。中でも「あと払い」はメルカリが2017年にリリースした「メルカリ月イチ払い」を前身とする歴史の長いプロダクトであり、単純な機能追加だけでなく、設計上大掛かりな変更を伴う修正を繰り返しながら今日まで成長してきました。 例えば、あと払いをメルカードの決済・清算のバックエンドとして統

    SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング
  • メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング

    こんにちは!ソウゾウの Software Engineer の @dragon3 です。 連載:「メルカリShops」プレオープンまでの開発の裏側の8日目を担当させていただきます。 この記事では、メルカリShops 開発において、日々バリバリに利用されている CI/CD 環境と Pull Request 毎のデプロイ環境について紹介します。 CI/CD 環境 メルカリShops では、CI/CD (テスト・ビルド・デプロイ)やその他自動化のために GitHub Actions を使っており、ほとんどのワークフロー・ジョブを Self-hosted runners で実行しています。 Self-hosted runners は、専用の VPC ネットワーク 内の GCE インスタンス上で動かしており、Managed Instance Group 等を使い、そのプロビジョニングや起動・停止等は

    メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング
  • マイクロサービスのTelepresenceを使ったローカル開発環境の話 | メルカリエンジニアリング

    理論編: Telepresenceってなに Telepresenceとはリモートクラスタに対してより早く、ローカルで開発することを支援するツールです。現時点(2019/05/28)での最新バージョンは0.99です。 「より早く、ローカルで開発するのを支援するツール」ができることは、大きくまとめると以下の2つです。 クラスタのDeploymentをローカルサーバーと置き換える クラスタにローカルからアクセスをする これらの恩恵として ローカルサーバーのリモートクラスタの他サービスへアクセス ローカルサーバーのKuberenetesクラスタのリソースであるsecretsやConfigMapのアクセス リモートクラスタのローカルサーバーへのアクセス が挙げられ、より簡単に開発をできるようになります。 0. 今回のサービス例 例えば以下のようなサービスがあるとします。このサービスがやることは以下の

    マイクロサービスのTelepresenceを使ったローカル開発環境の話 | メルカリエンジニアリング
  • PHPStanで始めるPHPのための静的解析 #phperkaigi

    こんにちは。最近メルペイに異動になった @hiraku です。 2018年3月10日(土)に、PHPerKaigi 2018というイベントで登壇してきました。「PHPStanで始める継続的静的解析」ということで、メルカリで使用しているPHPStanというツールについて解説しました。 phperkaigi.jp 発表内容を短くまとめると メルカリではPHPStanというツールをCIフローに組み込み、PHPコードの静的解析を行ってコードの信頼性向上に努めています。 PHPStanはautoloadファイルを解釈し、一部のコードを実行することで解析の高速化を行っており、よくできています。 とはいえ、PHPに対して可能な解析に限界はあるので、テストも合わせて行っていきましょう。 大事なのは、品質向上のアプローチが用意され、心配せずにリリースできることです。 autoloadを認識するということ ス

    PHPStanで始めるPHPのための静的解析 #phperkaigi
  • nginxによるTCPロードバランサー | メルカリエンジニアリング

    SREチームの@cubicdaiyaです。今回はnginxによるTCPレイヤーでのロードバランスについて解説します。 ロードバランサーとしてのnginx nginxはHTTPやTCP、UDP等の複数のレイヤーでロードバランサーとして稼働させることができます。(TCPロードバランサーは1.9.0以降、UDPロードバランサーは1.9.13以降で利用可能です) また、ngx_http_ssl_module や ngx_stream_ssl_module を利用することでそれぞれのレイヤーでTLSを有効化することも可能です。 TCPロードバランサー用のモジュールを有効にする HTTPレイヤーでロードバランスするためのモジュールはデフォルトで組み込まれますが、TCP(とUDP)レイヤーでロードバランスするにはnginxのconfigureスクリプトに--with-stream(あるいは --with

    nginxによるTCPロードバランサー | メルカリエンジニアリング
  • 3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜

    OpenRestyはnginxのほかにngx_luaをはじめとするCで書かれた各種サードパーティモジュールとngx_luaのAPIを利用したrestyモジュール、そしてLua/LuaJITで構成されています。 OpenRestyに含まれているnginx自体は家のnginxと基同じなので、別にOpenRestyを利用しなくても自分でngx_luaを組み込んだり、サーバ上にrestyモジュールを配布することで似たような環境を構築することは可能ですが、OpenRestyであれば主要なモジュールやライブラリが./configure、make、make installの一連の流れですべてゴソッとインストールされますし、OpenRestyのconfigureスクリプトはnginxのconfigureスクリプトを継承したものなのでnginxのconfigureオプションをほぼそのまま利用することもで

    3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜
  • PHPカンファレンス福岡2016で「Guzzle Promiseを使った
非同期処理によるAPIコールの高速化」という発表をしてきました | メルカリエンジニアリング

    PHPカンファレンス福岡2016で「Guzzle Promiseを使った
非同期処理によるAPIコールの高速化」という発表をしてきました 初めまして、@suzukiです。2016年の1月からメルカリのサーバサイド・エンジニアとして働いていて、今は主にPHPを書いています。ときどきJavaScriptが書きたくなるので、最近は個人活動としてCrowiへpull requestを投げたりもしています。 発表した内容について 2016年5月21日に開催された「PHPカンファレンス福岡2016」で「Guzzle Promiseを使った
非同期処理によるAPIコールの高速化」というトークをしてきましたので、この場を借りて報告します。 スライド中でも触れていますが、GuzzleとはPHPで実装されたHTTPクライアントのライブラリです。Guzzle Promiseは、そのGuzzleから利用されている

    PHPカンファレンス福岡2016で「Guzzle Promiseを使った
非同期処理によるAPIコールの高速化」という発表をしてきました | メルカリエンジニアリング
    takaya030
    takaya030 2016/05/26
    Guzzle Promise
  • メルカリの「エンジニアブログ」はじめました | メルカリエンジニアリング

    はじめまして。1エントリ目を書くことになった id:sotarok です。光栄です。 メルカリは、2013年7月にリリースされて現在急成長中のフリマアプリで、今週2周年を迎えます。 ダウンロード数1500万ということで多くのユーザーに利用していただいていて、サービスとしても会社としても大きくなる中で、日々多くの技術的課題への挑戦が行われています。 そうした内容を、今日からこの “Mercari Engineering Blog” で、あれやこれや発信していきたいと思っています。 さて、1発目のご挨拶エントリーということで特段大きなネタは用意していないのですが、、 これまでのメルカリではエンジニアブログをやっていなかったため、技術的なアウトプットは各人がそれぞれやっていました。そこで、ここ2年のメルカリエンジニアメンバーによる技術的なアウトプットをまとめてみました! インフラからクライアント

    メルカリの「エンジニアブログ」はじめました | メルカリエンジニアリング
  • 1