タグ

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

  • 決済システムを壊さずに拡張した話 | メルカリエンジニアリング

    メルペイのBackend Engineerの @Hiraku です。与信決済システムのmicroserviceのTech Leadをしております。 この記事は、Merpay Advent Calendar 2022 の5日目の記事 メルカードの舞台裏編です。 2022年11月8日にメルペイ初のクレジットカードであるメルカードがリリースされました。これに伴い、システムにも広範囲に変更が加わっています。この記事ではその中でもちょっと分かりにくい、メルペイスマート払いの請求タイミングの変更について解説します。 月末ごろにメルカードによる決済を行うとわかるのですが、「処理中」と表示され、翌月の請求に含まれないものがあります。こちらはメルカード特有の実売上処理が終わってから請求する挙動です。順番に解説していきます。 カード決済の流れ 決済は大きく2段階の処理で成り立っています。「オーソリ」や「仮売上

    決済システムを壊さずに拡張した話 | メルカリエンジニアリング
    letsspeak
    letsspeak 2022/12/06
  • メルカリ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年 | メルカリエンジニアリング
    letsspeak
    letsspeak 2022/08/30
  • メルカリShops 注文システム反省会 | メルカリエンジニアリング

    こんにちは。ソウゾウ Software Engineer の @sou です。連載:メルカリShops 開発の裏側 Vol.2 の6日目を担当させていただきます。 この記事ではメルカリShops 注文システム反省会として、リリースから半年を迎える中で注文システムにどのような問題が起こり、どのような改修が必要になったかを振り返ってみたいと思います。 注文システムの概要 メルカリShops はマイクロサービスで構成されており、注文の受付を行うために様々なマイクロサービスにまたがって API を呼び出す必要があります。 まずは購入画面をご覧ください。 メルカリShops の購入画面 「購入する」を押すとローディングアイコンが表示されて待ちに入り、クライアントがレスポンスを受け取ると購入の完了を示す画面が表示されます。 一方裏では購入を完了させるまでに在庫確保や決済など様々な操作を行っています。

    メルカリShops 注文システム反省会 | メルカリエンジニアリング
    letsspeak
    letsspeak 2022/02/22
    サムネが伸びてる
  • 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移行 | メルカリエンジニアリング
    letsspeak
    letsspeak 2020/06/02
  • メルペイのQRコードスキャン機能(QRScanner)を、OSSにしました | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の12日目は、 Merpay iOS チームの @hitsu がお送りします。 目次 QRScannerとは OSS開発の背景 QRScannerの特徴 使い方 基な使い方 カメラのアクセスを許可 QRScannerの導入方法 CocoaPodsを使う場合 Carthageを使う場合 カスタマイズ ソースコードでカスタマイズ Interface Builderでカスタマイズ フラッシュボタンを使いたい場合 内部実装 主要な実行フロー アニメエフェクトの実装 終わりに QRScannerとは 数行のソースコードでiOS13と同じようなQRコードスキャン機能を実装できるフレームワークです。 GitHub – mercari/QRScanner: A simple QR Code scanner framework for iOS. Pr

    メルペイのQRコードスキャン機能(QRScanner)を、OSSにしました | メルカリエンジニアリング
    letsspeak
    letsspeak 2019/12/12
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    letsspeak
    letsspeak 2019/06/08
  • メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング

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

    メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング
    letsspeak
    letsspeak 2019/03/25
  • 2018年のPHPとメルカリ | メルカリエンジニアリング

    Mercari Advent Calendar 2018 の 8 日目は Backend チームの @hidenorigoto がお送りします。 来週末12/15(土)には、PHPカンファレンスが開催されます。メルカリでは、これから開催される3つのPHP系カンファレンスをスポンサーとして支援しています。 PHPカンファレンス 2018 2018/12/15(土) PHPカンファレンス仙台 2019 2019/01/26(土) PHPerKaigi 2019 2019/03/29(金)〜2019/03/31(日) この記事では、メルカリにおけるPHPとの関わり方と、PHPカンファレンスやPHPコミュニティに向けて、メルカリエンジニアからの一言メッセージを紹介します。 メルカリでは現在、システムと組織のMicroservies化を進めています。Microservicesの開発にはGoを選択して

    2018年のPHPとメルカリ | メルカリエンジニアリング
    letsspeak
    letsspeak 2018/12/09
  • フロントエンドチームのCircleCI設定を紹介します | メルカリエンジニアリング

    フロントエンドチームのSET(Software Engineer in Test)の @urahiroshi です。 メルカリのフロントエンドチームは、JavaScriptを中心とした技術を用いてメルカリのWebサイトやアプリ内WebViewの開発を行っています。 私はチーム内のSETとして、開発環境の構築やトラブルシューティング、CI・運用ツールの導入やビルド・デプロイ処理の修正などを主に行っているのですが、今回は私たちが利用しているCircleCIの設定についてご紹介したいと思います。 CircleCIでは以下のようなタスクを実行しています。 Lint ユニットテスト ビルド・デプロイ Storybookのデプロイ npmパッケージのpublish 脆弱性検知 各タスクの詳細について、順に記述していきます。 1. Lint コードに対してLintツールを走らせます。 最近のプロジェクト

    フロントエンドチームのCircleCI設定を紹介します | メルカリエンジニアリング
    letsspeak
    letsspeak 2018/08/20
  • メルカリが、builderscon tokyo 2018の謎ガジェット「電子名札」のスポンサーに! #builderscon | メルカリエンジニアリング

    メルカリが、builderscon tokyo 2018の謎ガジェット「電子名札」のスポンサーに! #builderscon みなさん、こんにちは!メルカリEngineering Operations Team (EOT) の安藤こと@kikoです。 日は、メルカリがスポンサーしているbuilderscon tokyo 2018の謎ガジェット「電子名札」についてお伝えします! 登場人物 石田さん(@uzulla) フリーランスのSystem Engineer/Technical Director。builderscon tokyo 2018コアスタッフ。メルカリがスポンサーしている「電子名札」の制作を進めている関係で、今回対談者として登場いただいています。 七島(@jollyjoester) メルカリEngineering Operations Team (EOT) のメンバー。buil

    メルカリが、builderscon tokyo 2018の謎ガジェット「電子名札」のスポンサーに! #builderscon | メルカリエンジニアリング
    letsspeak
    letsspeak 2018/08/14
  • メルカリiOSのUIテスト自動化をまるっとご紹介します! | メルカリエンジニアリング

    こんにちは、メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)の 根 征 です。 私は普段、テスト自動化・CI / CD改善・その他社内の生産性を上げるための自動化を行っています。 今回はiOSのUIテスト自動化について、最近の改善をまとめてご紹介したいと思います。 ざっくり言うと HTMLレポートに出力し、失敗原因を見やすくするようにしました リトライ実行するためのfastlaneプラグインを作りました テスト実行環境をJenkinsからCircleCIに移行しました Slack Commandを使って、簡単に実行できるようにしました これまでのiOSのUIテスト自動化 AQA(旧QA-SET)では去年から、JP版アプリ(iOS / Android)のUIテスト自動化に取り組んでいます。 去年のMercari Tech Conf 2017では、

    メルカリiOSのUIテスト自動化をまるっとご紹介します! | メルカリエンジニアリング
    letsspeak
    letsspeak 2018/08/07
  • AndroidのCI時間を10分短縮し、開発を爆速にするためのKarakuriを作った話 | メルカリエンジニアリング

    こんにちは、メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)で、自動化をぶりぶりしている tadashi0713 です。 私は普段、テスト自動化・CI(継続的インテグレーション) / CD(継続的デリバリー)改善・その他社内の生産性を上げるための自動化を行っています。 今回は、最近行なっている Android CIの高速化・改善 についてご紹介したいと思います。 ◆ これまでのAndroid CI / CD 去年、私はJP版メルカリAndroidのCI / CDサービスをCircleCI1.0からBitriseに移行しました。 Bitrise – Mobile Continuous Integration and Delivery Android Test Night #1 というイベントでもLTをしましたので、そちらのスライドも参考にしていただ

    AndroidのCI時間を10分短縮し、開発を爆速にするためのKarakuriを作った話 | メルカリエンジニアリング
    letsspeak
    letsspeak 2018/07/04
  • 第1回 Mercari Tech Conf を開催しました | メルカリエンジニアリング

    tech.mercari.com 先日からお伝えしていた通り、9/30 (土) にベルサール六木にて第1回 Mercari Tech Conf 2017 が開催されました。 テーマに Next を掲げ、過去から現在にいたるまでに実現してきたこと、そしてこれから実現する未来について発表しました。 togetter.com それでは、簡単に各発表を振り返っていきます。 基調講演 鶴岡 達也 (Head of Engineering, Souzoh) / 柄沢 聡太郎 (VP of Engineering) / 名村 卓 (CTO) 3名による基調講演でした。 メルカリ初期の話 – 鶴岡 この頃はとにかく素早くものを作る必要があった シンプルな LAMP 構成を採用した。LAMP なのは初期のエンジニアが一番触りやすい構成、言語だから。人のスケールをさせやすいから インフラはハイエンドな1つの

    第1回 Mercari Tech Conf を開催しました | メルカリエンジニアリング
    letsspeak
    letsspeak 2017/10/04
  • メルカリQA-SETチームが進めているテスト自動化についての質問まとめ | メルカリエンジニアリング

    こんにちは。メルカリでQA-SETチームのマネージャ兼自動化エンジニアとして、スマホアプリのテスト自動化をぶりぶりしている@daipresentsです。 先日開催された Mercari Tech Conf 2017 において、自動テストのデモ展示を担当させていただきました。当日は多くの方にお越しいただき、スマホアプリの自動化への関心は大きいのかなぁと感じております。 この記事では、テスト自動化についてよく質問されたことをまとめてみたいと思います。どの現場も同じように悩んでおり、試行錯誤している点も似ていたので、ノウハウとして残れば幸いです。 Q. どんな技術をつかってアプリの自動化をしているのですか? A: AndroidはAppium(Ruby) を使っています。 Gemが豊富なので以下のようなGemを使って実装を効率化しています。 # Gemfile sample gem 'appiu

    メルカリQA-SETチームが進めているテスト自動化についての質問まとめ | メルカリエンジニアリング
    letsspeak
    letsspeak 2017/10/04
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

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

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
    letsspeak
    letsspeak 2017/06/22
  • Gitのステージング領域の正体を探る | メルカリエンジニアリング

    ソフトウェアエンジニアの @DQNEO です。こんにちは。 Gitの内部構造を深掘りするシリーズ3回目です。 前回までのお話はこちら Gitのつくりかた – Mercari Engineering Blog Gitのコミットハッシュ値は何を元にどうやって生成されているのか – Mercari Engineering Blog 今日はみんなだいすき「ステージング領域」の中身について解説してみます。 ステージング領域とは何か? 簡単に説明すると「次にコミットしたときにコンテンツとして登録されるもの」リストです。(別名「インデックス」ともいいます。) このリストは、 git addやgit rmしたときに書き換わります。 (古くはcacheと呼ばれていました。内部実装やgit diff --cachedに今もその名残があります。) git addのマニュアルに説明があります。 Git – git

    Gitのステージング領域の正体を探る | メルカリエンジニアリング
    letsspeak
    letsspeak 2017/04/07
  • GoでとあるAPIサーバを実装し直した話 | メルカリエンジニアリング

    サーバサイドエンジニアの @b4b4r07 です。この記事は Go Advent Calendar 2016 の 19 日目です。今回は Go (Revel フレームワーク) で書かれていた API サーバをフルスクラッチで書き直したお話をします。 Revel とは A high productivity, full-stack web framework for the Go language 公式の説明にあるように、Revel は高機能でフルスタックな Web フレームワークです。 複雑なルーティングや、パラメータのパーシング、テンプレート機能など、Web アプリケーションを作ろうとなったときに必要な手段はたいてい兼ね揃えているようです。公式ドキュメントに詳しく書かれています。 Revel 以外にも Go 製の Web フレームワークは多数あり、有名どころだと以下のようなものが挙げられ

    GoでとあるAPIサーバを実装し直した話 | メルカリエンジニアリング
    letsspeak
    letsspeak 2016/12/20
  • 監視だけじゃない!デプロイにMackerelを使う話 | メルカリエンジニアリング

    SREチームの @siroken3 です。 以前、メルカリでリリース手段としてChatOpsを採用していることをブログで紹介しました。今回は内部で使っている技術の一部を紹介したいと思います。 tech.mercari.com tl;dr メルカリではデプロイにAnsible使ってる 毎日デプロイしつつサーバが増加/入れ替え激しいと心が削れる MackerelAPIとAnsibleを組み合わせたらハッピーになった Insideデプロイ メルカリではデプロイ用のサーバでSlack Botが働いており、デプロイの事前要件を満たしているか確認した後、大まかには以下の処理を実行しています。 GitHubからデプロイ対象ソースの取得 composer install / gulp などのビルド処理 対象サーバにrsyncでデプロイ これらの処理は構成管理ツールであるAnsibleを使用しています。

    監視だけじゃない!デプロイにMackerelを使う話 | メルカリエンジニアリング
    letsspeak
    letsspeak 2016/11/15
  • メルカリのCRMツールをKaizenした話 | メルカリエンジニアリング

    こんにちは、こんばんは。 サーバーサイドエンジニア(社内ではAPIエンジニアとも呼称します)の@bravewoodと申します。一部の人からはウッディと呼ばれていて気に入っております。 キャリア初期にウノウラボに大変な憧れを抱いていた身としては、ウノウの流れをくむメルカリでこうしてBlogを書くことができ感動しきりです。 さて、日はCRMツールについてお話しします。技術的な話は少なめで、CRM周りの開発やPlanningについてざっくりとお話しします。 APIエンジニアとは まず、メルカリ社内においてAPIエンジニアとは、商品や取引などの各種データや機能を各クライアントから呼び出すための「API」を開発することを主としたエンジニアを指します。 クライアントにはiOSやAndroidのアプリとWeb、その他複数のサブシステムがあり、各担当のエンジニアと密に連携を取り、高速かつ安定したAPI

    メルカリのCRMツールをKaizenした話 | メルカリエンジニアリング
    letsspeak
    letsspeak 2016/09/05
  • 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ロードバランサー | メルカリエンジニアリング
    letsspeak
    letsspeak 2016/08/18