タグ

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

  • メルカリ ハロ立ち上げ時のSRE | メルカリエンジニアリング

    はじめに こんにちは。メルカリ ハロでSRE TLをしている@nakaです。連載:Mercari Hallo, world! -メルカリ ハロ 開発の裏側- の3回目を担当させていただきます。 この記事では、メルカリの新規事業立ち上げにおけるSREの働きや役割に関して、紹介します。 メルカリでは、Platform Engineeringが提供するツールや仕組みを活用して、サービスを立ち上げていきます。新規事業立ち上げのチームだけで、完結するわけではありません。今回は、Platform Engineering時代の新規サービス立ち上げにおけるSREの役割と具体的な動きを、メルカリ ハロを例に取り上げて紹介します。SREが、Platform Engineeringとプロダクト開発チームと一丸となって「All For One」に動いてきた取り組みが少しでも臨場感を持って伝えられればと思います。

    メルカリ ハロ立ち上げ時のSRE | メルカリエンジニアリング
    advblog
    advblog 2024/06/05
  • テストコードの改革を進めている話 | メルカリエンジニアリング

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

    テストコードの改革を進めている話 | メルカリエンジニアリング
    advblog
    advblog 2023/06/27
  • Web パフォーマンスのための HTML 最適化 | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の2日目は @1000ch (id:hc0001) がお送りします。この記事は2019年11月16日に福岡で開催された Frontend Conference Fukuoka 2019 のセッション、HTML Optimization for Web Performance の書き起こし記事です。 docs.google.com なぜ HTML の最適化が重要なのか 先日公開された Chromium Blog: Moving towards a faster web をご覧になられたでしょうか。Google は Web ページのパフォーマンスの重要性を様々な形で啓蒙してきましたが、この記事では Chrome のもとになっている Chromium に、Web ページのパフォーマンスをブラウザ UI として表示する機能を追加し、ユーザーが

    Web パフォーマンスのための HTML 最適化 | メルカリエンジニアリング
    advblog
    advblog 2023/04/06
  • メルカリの社内技術研修 ”DevDojo”の研修資料を公開します! | メルカリエンジニアリング

    この記事は、Mercari Advent Calendar 2022 の23日目の記事になります。 こんにちは!メルカリ Engineering Office チームの@aisakaです。 メルカリのエンジニア組織は、メンバーが相互に学び合い、メンバー自身が自走し、成長できる組織を目指し、「互いに学び合い、成長し合う文化」の醸成を行っています。 こうしたメルカリの「互いに学び合い、成長し合う文化」を体現する仕組みの一つが、社内技術研修「DevDojo」シリーズです。この度、一部のDevDojoシリーズを外部公開することになりましたので、今日のブログではDevDojoとその内容をご紹介します。 DevDojo page in Engineering Website 技術研修DevDojoとは DevDojoは技術開発を学ぶ場として、「Development」と「Dojo(道場)」をかけ合わせ

    メルカリの社内技術研修 ”DevDojo”の研修資料を公開します! | メルカリエンジニアリング
    advblog
    advblog 2022/12/24
  • SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング

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

    SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング
    advblog
    advblog 2022/12/22
  • メルカリiOSアプリのBazelを使った高速・高信頼性ビルド | メルカリエンジニアリング

    ここまでBazel の利点をいくつか紹介しましたが、採用には懸念点もありました。次のセクションからは、どのような懸念があったか、それをどのように解決したのかを紹介します。 Xcode 統合 Bazel と Xcode の統合は Bazel の採用においてもっとも大きな懸念でした。 Xcode はビルドシステムと密結合したやや特殊な IDE なので、外部ビルドシステムとの統合が難しいのです。特に indexing や LLDB デバッグを正しく動作させるのは困難でした。 統合とはつまり、Bazel によるビルドのアウトプットを利用して Xcode がサポートする動作を再現することを意味していて、主に下記のような要件を満たす必要があります。 Bazel のビルド構成ファイル群を解析して Xcode プロジェクトを生成する Xcode ビルドの実行を抑制し、代わりに Bazel ビルドを実行する

    メルカリiOSアプリのBazelを使った高速・高信頼性ビルド | メルカリエンジニアリング
    advblog
    advblog 2022/12/20
  • Data Reliability Engineering をはじめた話 | メルカリエンジニアリング

    こんにちは、メルカリUS でData Engineerをしている @hatone です。 メルカリUSのData Engineering Team(DEチーム) では、MLやBI、会計、マーケティングなど、多岐にわたるチームとプロダクトにデータを提供する必要不可欠なパイプラインを担当しています。 今年の7月に Data Reliability Engineering Team (DRE: データ信頼性エンジニアリングチーム) というチームを立ち上げました。日々増え続けるDB上のレコードとそのデータの活用を滞りなく実現するため、Data Engineeringに対しDevOpsとSREの原則を適用することでスケールさせていこうとしています。 Mercari Advent Calendar 2022 の19日目では、チーム各々が安心してデータを利用できるようプロジェクトパイプラインの監視・自動

    Data Reliability Engineering をはじめた話 | メルカリエンジニアリング
    advblog
    advblog 2022/12/20
  • Machine Learning 共通基盤構築の振り返り〜チーム立ち上げからクローズまで〜 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の17日目の記事です。 こんにちは。メルペイ 機械学習チームでエンジニアリングマネージャーをしているshuukです。 日は、Machine Learning Platformチーム(以下:ML Platformチーム)をクローズした話をしていこうと思います。 MLの共通基盤という魅力的なアイディア もしあなたが、複数のMLチーム(またはMLシステム)が並行稼働している組織にいる場合、それらの共通部分を括り出した基盤を作り、MLエンジニアはその基盤の上で作業したほうが効率的だと考えたことはないでしょうか。 実際、MLの構成要素は、おおまかには特徴量計算、学習、予測、サービングといったパーツに分解することができ、共通部分も多いです。 新しいMLシステムをスクラッチで開発する苦労を知っているMLエンジニアにとって、社内共通のM

    Machine Learning 共通基盤構築の振り返り〜チーム立ち上げからクローズまで〜 | メルカリエンジニアリング
    advblog
    advblog 2022/12/19
  • GraphQL Client Architecture Recommendation 社外版 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2022 の15日目の記事です。 こんにちは。メルペイのvvakameです。 最近、社内向けにGraphQL Client Architecture Recommendationというドキュメントを書きました。社内のiOS/Android、そしてバックエンドのエンジニア向けにGraphQLをやるならこの辺りの条件を満たしておかないと恩恵を感じられなくなっちゃうかもよ、と伝えるためのものです。嬉しいことに、今までに100名弱の人たちがこのドキュメントを閲覧してくれたようです。 これをAdvent Calendarで公開するために、ちょっと調整したものがこの社外版です。 すでにGraphQLをやっているけどあまり便利じゃないな…なんでだろ?とか、これから導入したいんだけど何を気をつけるべきかな…と考える時の材料にしてください。 併せて、

    GraphQL Client Architecture Recommendation 社外版 | メルカリエンジニアリング
    advblog
    advblog 2022/12/16
  • 決済システムを壊さずに拡張した話 | メルカリエンジニアリング

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

    決済システムを壊さずに拡張した話 | メルカリエンジニアリング
    advblog
    advblog 2022/12/06
  • Building secure web apps using Web Workers | Mercari Engineering

    Security is paramount for our users, and we at mercari strive to provide a snappy and safe platform. We recently introduced an additional layer of defence by adding Web Workers to secure the access token. It now protects the users from various kinds of attacks, including token theft from Cross Site Scripting (XSS), Cross Site Request Forgery (CSRF), prototype pollution, zero-day npm package vulner

    Building secure web apps using Web Workers | Mercari Engineering
    advblog
    advblog 2022/10/04
  • メルカリの取引ドメインにおけるモジュラーモノリス化の取り組み | メルカリエンジニアリング

    この記事は「連載:連載:技術基盤強化プロジェクト「RFS」の現在と未来」として書かれたものです。 メルカリのトランザクションチームでバックエンドエンジニアをしている @adachang です。今回は前回の記事に引き続き、メルカリの取引ドメインに属するコードベースのメンテナンス性・拡張性を改善するための取り組みを紹介します。 前回の記事では、この取り組みの背景や課題、ドメイン分析や依存関係をデカップリングするアプローチについて説明しました。その中でメルカリの “取引” を扱う大きなドメインを、商品代金の支払いとそれ以降のプロセスに分割し、前者を「Checkout ドメイン」、後者を 「Transaction ドメイン」と呼ぶことにしました。この記事では、Transactionのドメインを取り上げ、PHPのモノリスをモジュラーモノリスに移行するための現在進行中の取り組みをご紹介します。私たちが

    メルカリの取引ドメインにおけるモジュラーモノリス化の取り組み | メルカリエンジニアリング
    advblog
    advblog 2022/09/14
  • メルカリ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年 | メルカリエンジニアリング
    advblog
    advblog 2022/08/30
  • Elasticsearch運用ノウハウ | メルカリエンジニアリング

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

    Elasticsearch運用ノウハウ | メルカリエンジニアリング
    advblog
    advblog 2022/03/14
  • GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング

    はじめに こんにちは、ソウゾウSoftware Engineerの@sue71です。連載:メルカリShops 開発の裏側 Vol.2の13日目を担当させていただきます。 以前メルカリメルカリShopsの技術スタックと、その選定理由でBFFの実装にGraphQLを採用していることをお伝えしました。メルカリShopsをリリースしてから約半年たった今、これまでを振り返ってGraphQLサーバーを実装する上での課題やあらかじめ考えておくと良い項目をまとめてみました。また、記事ではメルカリShopsでGraphQLの実装としてApolloを採用しているため、Apolloの利用が前提の話もいくつか混在しています。予めご容赦ください。 GraphQLの説明や、メルカリShopsの実装方法に関しては以前こちらの記事で紹介しています。こちらも是非ご覧ください。 パフォーマンス課題 GraphQLは、アプリ

    GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング
    advblog
    advblog 2022/03/04
  • Embedded SRE at Mercari | Mercari Engineering

    Author:@deeeeeeet, Engineering manager of Microservices SRE The Microservices SRE team is one of the Developer Productivity Engineering Camp teams. The team provides embedded SRE service to the product team. By working with/inside the product team, we improve the service reliability and share SRE practices with the team so that the team can maintain its reliability without SRE members. We rotate e

    Embedded SRE at Mercari | Mercari Engineering
    advblog
    advblog 2022/02/22
  • メルカリShops 注文システム反省会 | メルカリエンジニアリング

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

    メルカリShops 注文システム反省会 | メルカリエンジニアリング
    advblog
    advblog 2022/02/22
  • レガシーなシステムとの向き合い方 | メルカリエンジニアリング

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

    レガシーなシステムとの向き合い方 | メルカリエンジニアリング
    advblog
    advblog 2022/02/18
  • 特殊な構成のMySQLに対するDDL適用の一例 | メルカリエンジニアリング

    ※この記事は、"Blog Series of Introduction of Developer Productivity Engineering at Mercari"の一環で書かれています。 Author: CoreSREチーム @ichirin2501 今回は特殊なレプリカDBの制約をどう突破してオンラインでDDL適用を実現しているのかを紹介します。 はじめに 現在メルカリでは様々なシステムが動いていますが、メルカリのサービスの中核部分はモノリスなPHPで書かれたシステムで、そこのデータベースはMySQL(v5.7)で運用されています。依然としてマイクロサービス移行を加速させるためのコードフリーズ(*1)が継続されているため、PHPシステム上での機能開発は基的にはありませんが、依存されているマイクロサービス側の機能開発の都合などで、どうしても変更が必要な場合があります。そういったと

    特殊な構成のMySQLに対するDDL適用の一例 | メルカリエンジニアリング
    advblog
    advblog 2022/02/18
  • メルカリShops の技術スタック、その後 | メルカリエンジニアリング

    こんにちは。ソウゾウのSoftware Engineer(CTO)の@suguruです。連載:メルカリShops 開発の裏側 Vol.2の1日目を担当させていただきます。 去年、2021年に開始した メルカリShopsの技術スタック についての記事を書きましたが、今回はリリースまでに採用した技術スタックが、半年通してどのようにアップデートしてきたかを共有したいと思います。 ローンチ時に採用した技術が、実際の運用でどのように変遷したのかを共有することで、技術スタックを考える際の何らかの参考になれば幸いです。 monorepo メルカリShops ではサービスに必要なコードを1つに集約する monorepo を採用しています。リリース後半年たってコード量はかなり増えてきましたが、monorepo に対する満足度は非常に高く、うまく機能しています。 サービス全体の見通しが良くなることと、すべての

    メルカリShops の技術スタック、その後 | メルカリエンジニアリング
    advblog
    advblog 2022/02/09