タグ

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

  • テストコードの改革を進めている話 | メルカリエンジニアリング

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

    テストコードの改革を進めている話 | メルカリエンジニアリング
  • 社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の4日目の記事です。 こんにちは。メルコインのバックエンドエンジニアの@goroです。 はじめに このGitHub Actionsのセキュリティガイドラインは、社内でGithub Actionsの利用に先駆け、社内有志によって検討されました。「GitHub Actionsを使うにあたりどういった点に留意すれば最低限の安全性を確保できるか学習してもらいたい」「定期的にドキュメントを見返してもらい自分たちのリポジトリーが安全な状態になっているか点検する際に役立ててもらいたい」という思いに基づいて作成されています。 今回はそんなガイドラインの一部を、社外の方々にも役立つと思い公開することにしました。 ガイドラインにおける目標 このガイドラインは事前に2段階の目標を設定して作成されています。まず第1に「常に達成したいこと

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
  • 決済システムを壊さずに拡張した話 | メルカリエンジニアリング

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

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

    記事は2022年1月26日に公開された記事の翻訳版です。 筆者:Dylan Lau (@aidiruu), Platform DXチーム Zero Touch Production (ZTP)は、番環境に加えられるすべての変更が、自動化、安全なプロキシ、または監査可能なBreak-glass(緊急アクセス)システムによっておこなわれるという概念です。人為的ミスに起因する番環境での障害には、次のようなさまざまな種類があります。 構成エラー スクリプトエラー 間違った環境でのコマンド実行 ZTPはこれらのエラーによる障害発生のリスクを軽減できます。メルカリでは、ZTP環境への移行に取り組んでいます。最初のステップは、一時的な役割付与システムであるCarrierを実装することです。 この記事では、以下について説明します。 ZTPの重要性 ZTPを実装するプロセスとCarrierを始めた理

    Zero Touch Productionへの移行 | メルカリエンジニアリング
  • メルカリ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年 | メルカリエンジニアリング
    bongkura
    bongkura 2022/08/31
  • ユニットテストのガイドラインを作成しました | メルカリエンジニアリング

    この記事は Merpay Tech Openness Month 2022 の15日目の記事です。 はじめに こんにちは。Credit Design Teamでバックエンドエンジニアをしている@tanaka0325です。主にメルペイスマート払いの開発をしています。 この記事では、先日私のチームで作成したユニットテストのガイドラインについて紹介します。 課題 現在私が担当している「メルペイスマート払い」のマイクロサービスは、もともと「メルカリ月イチ払い」として提供されていたコードを流用し、新規要件となる機能を追加して作られたマイクロサービスです。 マイクロサービス化するにあたり、「メルカリ月イチ払い」にあったデータはマイクロサービスリリース後に随時マイグレーションをする方針になったので、既存のデータをマイグレーションしつつ、定額払いなどの新規機能を追加してきました。メルペイスマート払いのマイ

    ユニットテストのガイドラインを作成しました | メルカリエンジニアリング
  • ゼロからメルペイのリアルタイム不正検知システムを作る話 | メルカリエンジニアリング

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

    ゼロからメルペイのリアルタイム不正検知システムを作る話 | メルカリエンジニアリング
  • E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング

    メルカリの自動化&品質保証グループ(Automation & QA Group:通称AQA)の おれたま@AHA_oretama です。 私は普段、テスト自動化やCI / CD を主に行っています。 今回は、Appium×Android E2Eテストのテスト結果の見やすさを改善し、テスト結果を可視化することで気づきが生まれた話について、紹介していきたいと思います。 テスト結果の見やすさ、可視化の重要性について いま使っているテストレポートの課題 Allure Framework 並列化した分だけレポートも分かれてしまうことへの対処 スクリーンショット、スクリーンレコード以外のアタッチメントを追加することができないことへの対処 過去のテスト結果と比較できないことへの対処 他の改善点 テストのタイムラインが見える トレンドも表示できる Looker 生まれた気づき 課題 終わりに テスト結果の

    E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング
  • Elasticsearch運用ノウハウ | メルカリエンジニアリング

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

    Elasticsearch運用ノウハウ | メルカリエンジニアリング
  • レガシーなシステムとの向き合い方 | メルカリエンジニアリング

    はじめに はじめまして、@takashi-kun です。 自分が所属するチームでの連載企画 "Blog Series of Introduction of Developer Productivity Engineering at Mercari" 、今回はメルカリが成長を続けている中で多くのレガシーな技術と私達 Core SRE チームがどのように向き合っているか具体例を基に紹介します。 突然ですが、「レガシーな技術」と聞いて何を思い浮かべるでしょうか? 古いミドルウェアを利用している、昔の言語で書かれている、オンプレ環境を利用している、などなど、いろいろな定義が浮かぶと思います。 メルカリは事業スピードの加速に伴いシステムが日々拡張/拡大されていくため、「owner/maintener ともに存在しないシステム」が少なからず存在します。owner も maintener もいない中でシ

    レガシーなシステムとの向き合い方 | メルカリエンジニアリング
  • 1週間リリースを支えるAndroid自動テスト運用 | メルカリエンジニアリング

    この記事は、 Merpay Advent Calendar 2021 の10日目の記事です。 記事は、1週間リリースを支えるAndroid自動テスト運用についてメルペイ Androidチームの@amane, @kenken, @anzai, @hiroPがお送りします。 自動化の背景 メルカリアプリでは、お客さまに素早く価値を届ける目的で、2週間に1度のアプリリリースサイクルを1週間に1度に短縮することを目指しました。(リリースサイクルのアップデートに関しては@stamakiさんのこちらの記事を参照してください。) しかしこのサイクルを実現するには、2日間かかっていたリグレッションテストを1日に短縮する必要がありました。 そこで手動で実施しているテストの工数を短縮するために、自動化を始めました。 Androidのリグレッションテスト環境の構築 メルペイではFirebase Test La

    1週間リリースを支えるAndroid自動テスト運用 | メルカリエンジニアリング
  • 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を削除するための手順と道のり | メルカリエンジニアリング
    bongkura
    bongkura 2021/12/07
  • ソウゾウのソフトウェアエンジニア選考ガイドを公開しました | メルカリエンジニアリング

    こんにちは。ソウゾウのソフトウェアエンジニアの@naopr です。 ソウゾウでは、10/7にメルカリShopsの格提供を開始しました! これを機にサービス開発を今まで以上に加速するため、より多くのエンジニアにソウゾウのことを知っていただこうと思いソフトウェアエンジニアの選考ガイドをGitHub上で公開することとしました。 https://github.com/mercari/souzoh-recruitment/blob/master/guide_software_engineer.md このエントリでは、選考内容の公開に至った背景と思い、公開にあたってこだわった点をお伝えできればと思っています。 公開に至った背景と思い 9月にソウゾウが開催したTech Talkにご参加いただいたエンジニアの方とカジュアル面談をする機会があったのですが、その中で「コーディングテストはどのような内容を何ヶ

    ソウゾウのソフトウェアエンジニア選考ガイドを公開しました | メルカリエンジニアリング
    bongkura
    bongkura 2021/10/09
  • メルペイSREチームのこれまでとこれから | メルカリエンジニアリング

    こんにちは、メルペイSREでEngineering Managerをしている @tjun です。 この記事は Merpay Tech Openness Month 2021 1日目の記事です。 以前SRE NextでSREチームの話をしたのですが、その後の話を発表するちょうどいい場がなかったのでblogとして書くことにしました。チームとしてはまだまだ道半ばですが、この記事がこれからSREチームを作っていく人の参考になったらいいなと思います。 はじめに SREとは? SREのあり方は、組織やシステムの規模やアーキテクチャ、扱うサービスによって変わると思います。SREはもちろん参考にするのですが、Googleのやり方が自分たちの会社でそのまま上手くいくとは限らないので、根っこの部分の考え方や文化を参考にしながら、実践の方法は自分たちの組織に合わせて適用していく必要があります。 SREって何?

    メルペイSREチームのこれまでとこれから | メルカリエンジニアリング
    bongkura
    bongkura 2021/09/02
  • メルカリ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 環境 | メルカリエンジニアリング
    bongkura
    bongkura 2021/08/17
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

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

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
    bongkura
    bongkura 2021/08/11
  • Engineering Ladder | メルカリエンジニアリング

    エンジニアの成長段階ごとに期待される行動を明文化

    Engineering Ladder | メルカリエンジニアリング
    bongkura
    bongkura 2021/02/11
  • 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とはなにか | メルカリエンジニアリング
    bongkura
    bongkura 2020/12/23
  • 決済サービスを閉じるときのやることリスト | メルカリエンジニアリング

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

    決済サービスを閉じるときのやることリスト | メルカリエンジニアリング
    bongkura
    bongkura 2020/12/21
  • 画像検索システム再設計のお話 | メルカリエンジニアリング

    こんにちは。メルカリの画像検索チームでTech Leadをしています葛岡です。 今回は、メルカリのMLシステムの中で一、二を争う複雑なシステムである画像検索の基盤を再設計し、経済的にも技術的にもみんなが幸せになったお話をしたいと思います。 画像検索ってなぁに? その名の通り、画像をベースに視覚的に似ている商品を検索する機能です。この機能は2年ほど前にリリースされていて、すでにiOSバージョンのメルカリではご利用いただけます。 当時のシステムはブログ記事になっているので、ご確認ください。 再設計?なにそれ?おいしいの? さてこの機能を支えるシステムですが、当時開発されて以来、大きな再設計などは特になく、つい最近まで運用されていて、画像検索やその他のメルカリサービスでも内部的に呼ばれていて、プラットフォーム的な立ち位置を担っていました。 画像検索は定期的に新しい画像インデックスを構築するのです

    画像検索システム再設計のお話 | メルカリエンジニアリング
    bongkura
    bongkura 2020/12/08