タグ

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

  • メルカリShopsのQA活動を支える技術とQAチームの取り組み | メルカリエンジニアリング

    こんにちは。メルカリのQAの____rina____です。メルカリShopsというサービスのQAをしています。今回は、メルカリShopsのQA活動に欠かせない技術についての紹介と、QAチームがどのような活動をしているかについて紹介します。 私はメルカリShopsのQAエンジニアとして2年超働いていますが、これらの多くの技術解決があることでより広いQAの活動ができました。 現在、QAの活動をもっとよくしたいと思っているQAエンジニアの方や、品質に課題を感じている開発者の方が、このブログを通じて技術面からQA・品質の支援・改善ができることや、QAの可能性を広げられることについて知っていただけると幸いです。 開発環境の概要 Webの開発 メルカリShopsは、機能の多くをWebで提供しています。メルカリアプリでは、同じソースコードで各デバイスへの機能提供が可能で、Webviewで表示しています。

    メルカリShopsのQA活動を支える技術とQAチームの取り組み | メルカリエンジニアリング
    fjwr38
    fjwr38 2023/06/23
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    fjwr38
    fjwr38 2023/04/05
  • デッドロックおじさん戦記 | メルカリエンジニアリング

    Mercari Advent Calendar 2017 の18日目です。 こんにちは。メルカリJPのサーバーサイドエンジニアの@Hirakuです。最近はメルカリNOWの立ち上げに関わっておりGoPHPを行ったり来たりしています。 今回はネタとしては地味ですが、2017年に遭遇した、MySQLのデッドロックの話をしようと思います。 これまでも何度か話されている通り、メルカリのコア部分は今でもPHP + MySQLで構成されており、複雑なトランザクションを含む処理が各所に存在しています。そのため、意図せずしてデッドロックを作ってしまうことがあり、場合によっては重大な問題につながります。 今年は当にデッドロックに関するトラブルに多く遭遇し、すっかり「デッドロック絶対に許さないおじさん」みたいになっていました。 事例1)出品者と購入者 デッドロックと言われてもピンと来ない方もいらっしゃるでし

    デッドロックおじさん戦記 | メルカリエンジニアリング
    fjwr38
    fjwr38 2023/03/20
  • クライアント・サーバサイドに分散する計算ロジックのマイクロサービス化 | メルカリエンジニアリング

    この記事は「連載:技術基盤強化プロジェクト「RFS」の現在と未来」として書かれたものです。 こんにちは、メルカリの Transaction チームでバックエンドエンジニアをしている @oklahomer です。今回は、各種クライアントサイドとサーバサイドで実装している支払額計算のロジックを、新たなマイクロサービス実装へ移行する取り組みについて紹介します。 この連載では、既に Transaction チームから以下の 2 つの記事が公開されています。この記事の前提を把握いただくためにも、ぜひご一読ください。 関連記事:Understanding and Moderninzing a Legacy Codebase 関連記事:メルカリの取引ドメインにおけるモジュラーモノリス化の取り組み これらの記事の中では、創業当時から運用されているモノリシックな PHP アプリケーションに取引ドメインのロジ

    クライアント・サーバサイドに分散する計算ロジックのマイクロサービス化 | メルカリエンジニアリング
    fjwr38
    fjwr38 2022/10/04
  • メルカリWebのマイクロサービス化、その4年 | メルカリエンジニアリング

    Author: @urahiroshi, Engineering manager of Web Platform team 2022年8月4日、メルカリで “web-2” と呼ばれるサーバがシャットダウンされました。これはメルカリWeb版の開発に携わっているチームにとって、一つの区切りとなる出来事でした。 web-2はPHPで記述されたwebサーバで、2015年から https://www.mercari.com/jp/ 配下のコンテンツを配信していましたが、現在では複数のWebマイクロサービスがその機能を担っており、 https://www.mercari.com/jp/ 配下のページは後継となるWebマイクロサービスが配信するページへリダイレクトされています。 メルカリWebのマイクロサービス化に向けた開発が始まり、最終的にweb-2がシャットダウンされるまで、実に4年以上の期間がかか

    メルカリWebのマイクロサービス化、その4年 | メルカリエンジニアリング
    fjwr38
    fjwr38 2022/08/30
  • ゼロからメルペイのリアルタイム不正検知システムを作る話 | メルカリエンジニアリング

    こんにちは。メルペイTnS(Trust and Safety)チームのソフトウェアエンジニア孫星越(@singyue)です。この記事は、Merpay Tech Openness Month 2022 の13日目の記事です。 TnS(旧名: AML)チームはお客さまが安全安心に買い物できるため、不正検知を含む禁止行為の監視や対応を行います。メルペイのAML/CFTシステムを支える技術の記事でTnSの事後の不正検知技術を紹介しましたが記事では、その後取り組んだリアルタイム不正検知の技術について書きたいと思います。 最後までお読みいただければ幸いです。 解決したい問題 メルカリ/ メルペイの不正検知は事後検知が中心でした。そのシステムは今も現役で稼働中です。 しかしながら、メルペイの機能が増えるに連れて、不正使用犯の手口の巧妙化も増し、リアルタイムで不正を検知したいケースが増えてきました。リア

    ゼロからメルペイのリアルタイム不正検知システムを作る話 | メルカリエンジニアリング
    fjwr38
    fjwr38 2022/04/20
  • Elasticsearch運用ノウハウ | メルカリエンジニアリング

    こんにちは、メルカリMicroservices SREチームの藤(@jimo1001)です。 私は現在、Embedded SRE として サーチインフラチームに入り活動しています。このサーチインフラチームは、Elasticsearchを使用した検索基盤を管理し、様々なマイクロサービスに検索機能を提供するチームです。この検索基盤は非常に巨大なプラットフォームで、メルカリ全体のマシンリソースの高い割合を占めており、メルカリの検索を支える非常に重要なものです。私の Embedded SRE としてのミッションは検索基盤の信頼性の向上と自動化を推進することです。 今回は、メルカリの検索基盤で利用している Elasticsearch における運用のノウハウを紹介したいと思います。 Elasticsearch とは Elasticsearch は、Elastic社が開発する Apache Lucen

    Elasticsearch運用ノウハウ | メルカリエンジニアリング
    fjwr38
    fjwr38 2022/03/13
  • メルカリ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 環境 | メルカリエンジニアリング
    fjwr38
    fjwr38 2021/08/18
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer (CTO) の @suguru です。連載:「メルカリShops」プレオープンまでの開発の裏側の1日目を担当させていただきます。 7月末にメルカリShopsという新しいサービスが公開されました。メルカリShops は、2021年1月にメルカリのグループ会社として設立したソウゾウが新たに立ち上げたサービスです。 この記事では、メルカリShops を作るにあたり、どういった技術、アーキテクチャを選定したのか、その背景と意思決定をまとめて共有したいと思います。 monorepo まず最初にプロジェクトをスタートしたときに、サービスのリポジトリを作るのですが、迷わず monorepo による構成を選択しました。monorepo は、システムを構成する複数のコンポーネントの独立性を保ちつつ、全ての構成を1つのリポジトリで管理する手法です。今

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
    fjwr38
    fjwr38 2021/08/11
  • 決済サービスを閉じるときのやることリスト | メルカリエンジニアリング

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

    決済サービスを閉じるときのやることリスト | メルカリエンジニアリング
    fjwr38
    fjwr38 2020/12/20
    大変そうだ
  • Microservices と会計システム | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Month の18日目の記事です。 こんにちは。メルカリで Product Manager として働いている津田と申します。私は社内で「会計システム」と呼ばれる、会社が運営するサービスに付随して発生した債権債務の増減を記録・集計するシステムを開発するチームで働いています。 はじめに メルカリでは、お客さまの行動に応じて日々さまざまなお金の流れが発生しています。たとえばメルカリで商品が出品され購入された(取引が行われた)場合を考えてみます。 この取引は、会社から見るとそれぞれの相手先に対する債権債務関係の変化と捉えることができます。メルカリにとっては、購入したお客さまに対する債権(= 商品代金)と出品したお客さまに対する債務(= 売上金)が発生します。このとき、商品代金の一定割合(通常は 10%)が販売手数料としてメルカリの売上とな

    Microservices と会計システム | メルカリエンジニアリング
    fjwr38
    fjwr38 2019/09/19
  • WebAuthnことはじめ | メルカリエンジニアリング

    こんにちは。株式会社メルペイのID Platformチームでエンジニアをしている @nerocrux です。この記事はMERPAY TECH OPENNESS MONTHの12日目の記事です。 はじめに WebAuthnについて 概要 システム構成 登録と認証 登録 認証 Attestation について Attestation検証の概要 AttestationObject のフォーマット AttestationObject の検証 1. AttestationObject のデコード 2. authenticatorData について 3. credentialPublicKey のパース 4. verificationData の準備 5. 証明書フォーマットの変換 6. 署名検証 Assertion について Assertion の検証 1. authenticatorData につ

    WebAuthnことはじめ | メルカリエンジニアリング
    fjwr38
    fjwr38 2019/06/14
  • テクノロジーで街なかの ”移動” を変える「メルチャリ」の舞台裏 - Mercari Engineering Blog

    Mercari Advent Calendar 2018 の9日目はメルチャリチーム Androidエンジニアの @wiroha がお送りします。 メルチャリは2018年2月27日にスタートし、現在福岡市内で展開しているシェアモビリティサービスです。 専用の赤い自転車「メルチャリ」の後部に、スマートロックが搭載されており、メルチャリアプリを通じてお客さまが鍵をあけることで利用できます。 記事では、ハードとソフト、システムとリアルを融合させる、実は複雑で奥深いメルチャリの裏側をご紹介します! ハードウェア機能と深く連携するアプリ メルチャリアプリは、自転車や駐輪ポートの情報を地図上に描画して提供しています。主に使う技術は、iOSではApple MapAndroidではGoogle Mapsです。 車体についているQRコードをお客さまが読み込むと、アプリからサーバ、サーバから自転車へとリク

    テクノロジーで街なかの ”移動” を変える「メルチャリ」の舞台裏 - Mercari Engineering Blog
    fjwr38
    fjwr38 2019/05/16
  • メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング

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

    メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング
    fjwr38
    fjwr38 2019/03/26
    面白いな
  • プログラマーの三大美徳 その2

    みなさんはプログラマーの三大美徳ってご存知ですか? プログラミング言語Perlの作者である Larry Wall が http://www.perl.com/pub/1998/08/show/onion.html で述べたのが最初とされています。 三大美徳として 怠惰(laziness) 短気(impatience) 傲慢(hubris) があげられています。 怠惰(laziness)については、以前にこちらの記事でお話しました。 tech.mercari.com 今回は 短気(impatience) についてです。 短気(impatience) 優秀なプログラマーが持っている怠惰という美徳は素晴らしいのですが、その反面というか怠惰さゆえに腰が重いときがあります。 そこで短気な面をうまく刺激することでプロジェクトを円滑に進めることが可能です。 メルカリでの例 みなさんもCIにてテストを動か

    プログラマーの三大美徳 その2
    fjwr38
    fjwr38 2017/03/30
    いいなぁこういうの
  • プログラマーの三大美徳 | メルカリエンジニアリング

    みなさんはプログラマーの三大美徳ってご存知ですか? プログラミング言語Perlの作者である Larry Wall が↓で述べたのが最初とされています。 http://www.perl.com/pub/1998/08/show/onion.html 三大美徳として 怠惰(laziness) 短気(impatience) 傲慢(hubris) があげられています。 今回はそのうち怠惰(laziness)についてお話します。 怠惰(laziness) 怠惰といえば怠け者。怠け者といえば怠け者メガネ。怠け者メガネを使えば誰でも簡単に美徳を手にいれることができます。 この怠け者メガネを使うと視線は前方に向けたまま下方を見ることができます。 来は寝転がってテレビを見るために開発されたようです。 この怠け者メガネを使ったプログラム開発について説明します。 レベル0 怠け者メガネを装着せずに作業します。

    プログラマーの三大美徳 | メルカリエンジニアリング
    fjwr38
    fjwr38 2016/06/30
    ポリシックスっぽい
  • アッテの開発技術をお伝えする atte FeS【Go・Swift開発編】を開催しました | メルカリエンジニアリング

    こんにちは、ソウゾウの @ttsuruoka です。 メルカリの子会社ソウゾウでは新規事業に取り組んでいます。今回「メルカリ アッテ」の開発技術について、これまでに得られた知見の一部をお話させていただく機会として atte FeS 【GoSwift開発編】 を開催しました。 その発表資料を公開いたします。 発表資料 atte 開発の技術GolangGoogle App Engine speakerdeck.com 発表者:@ttsuruoka atte 開発の技術Swift と RxSwift speakerdeck.com 発表者:@ooba アッテ iOS の設計と開発フローの変遷 speakerdeck.com 発表者:@ishkawa ブログまとめ ご参加いただいた方が、ブログにまとめてくださいました: blog.mogmet.com tech-savvy.hatena

    アッテの開発技術をお伝えする atte FeS【Go・Swift開発編】を開催しました | メルカリエンジニアリング
    fjwr38
    fjwr38 2016/04/20
  • Pascal〜Puree + ngx_lua + Fluentd + BigQueryでつくるメルカリのログ分析基盤〜

    Pascal〜Puree + ngx_lua + Fluentd + BigQueryでつくるメルカリのログ分析基盤〜 Backend Author: cubicdaiya エンジニアではなくプログラマと呼ばれたい@cubicdaiyaです。今回はメルカリのログ分析基盤のお話です。 メルカリにおけるログデータ分析 メルカリでは初期の頃からログデータの分析をサービスの成長にとって重要なタスクとして位置づけ、そのための基盤作りに取り組んできました。ログの種類はいくつかありますが、中でも代表的なのがアプリケーションサーバで出力されるアクセスログやアプリケーション固有のログです。これらのログはサイズが大きいので効率良くログデータを転送するための工夫が必要になります。そこで活躍するのがFluentdです。 大雑把に説明するとアプリケーションサーバで出力されたログはFluentdから最終的にBigQu

    Pascal〜Puree + ngx_lua + Fluentd + BigQueryでつくるメルカリのログ分析基盤〜
    fjwr38
    fjwr38 2015/09/10
    無粋だが、Pascal...名前空間....
  • nginxとGoでつくるメルカリのプッシュ通知システム | メルカリエンジニアリング

    原稿の締め切りを越えた先にあるもの、それは校正です。「俺達の戦いはこれからだ!」的な展開に胸が熱く・・・いえ、ちょっと胃のあたりがチクチクする@cubicdaiyaです。 今回はメルカリのプッシュ通知システムとその変遷について紹介します。 メルカリとプッシュ通知 メルカリではアプリ内でのさまざまなイベントの発生時に対象ユーザに対してプッシュ通知を行うようになっています。アプリ内で発生するイベントというのは例えば、 商品の購入 購入した商品の発送 商品に対するいいね!、コメント といったものです。通常アプリ内でイベントが発生した際はAPIサーバにHTTPSリクエストを発行し、MySQLデータベースへの参照・更新が行われた後ユーザにレスポンスを返します。そして必要であればプッシュ通知を行います。 メルカリのプッシュ通知システムの課題と変遷 メルカリのプッシュ通知システムはこの1年間で2度刷新さ

    nginxとGoでつくるメルカリのプッシュ通知システム | メルカリエンジニアリング
    fjwr38
    fjwr38 2015/08/11
  • メルカリの「エンジニアブログ」はじめました | メルカリエンジニアリング

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

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