タグ

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

  • メルカリ ハロ リリースのQA戦略 | メルカリエンジニアリング

    こんにちは。メルカリのQAエンジニアリングマネージャーの@____rina____ です。今回は、連載『Mercari Hallo, World! -メルカリ ハロ 開発の裏側-』の第4回を担当します。 記事では、メルカリ ハロのサービスローンチまでのQAプロセスを通じて、私たちはどのようにして安心・安全なプロダクトを迅速にリリースするための戦略を実行したか、具体的な方法とともに詳述しています。 この記事を通じて、以下の点についての理解を深めていただけることを目指しています: QAの役割とプロジェクト概要 効率的なQAアサイン戦略 成果物の透明性と管理ツールの効果的な活用方法 また、この記事を書くにあたり、私自身が学んだことや得た教訓についても触れています。これらの経験は、今後のプロジェクトにおいて更なる品質向上と効率化を目指す上で非常に貴重なものとなりました。 プロジェクト概要とQAの

    メルカリ ハロ リリースのQA戦略 | メルカリエンジニアリング
    peketamin
    peketamin 2024/06/07
  • テストコードの改革を進めている話 | メルカリエンジニアリング

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

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

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

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
    peketamin
    peketamin 2023/06/09
  • 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 最適化 | メルカリエンジニアリング
    peketamin
    peketamin 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”の研修資料を公開します! | メルカリエンジニアリング
    peketamin
    peketamin 2022/12/24
  • SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング

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

    SOLID原則に従って行うリファクタリング実践 | メルカリエンジニアリング
    peketamin
    peketamin 2022/12/21
  • 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 社外版 | メルカリエンジニアリング
    peketamin
    peketamin 2022/12/15
  • 決済システムを壊さずに拡張した話 | メルカリエンジニアリング

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

    決済システムを壊さずに拡張した話 | メルカリエンジニアリング
    peketamin
    peketamin 2022/12/05
  • 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への移行 | メルカリエンジニアリング
    peketamin
    peketamin 2022/11/01
  • メルカリ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年 | メルカリエンジニアリング
    peketamin
    peketamin 2022/08/30
  • CI/CDチームの紹介 | メルカリエンジニアリング

    記事は2022年1月28日に公開された記事の翻訳版です。 この記事は、「Developer Productivity Engineering Camp」ブログシリーズの一部として、CI/CDチームの by Yuji Kazamaがお届けします。 はじめに こんにちは、Continuous Integration(CI)/Continuous Delivery(CD)チーム エンジニアリングマネージャーのYuji Kazamaです。CI/CDチームは、Developer Productivity Engineering Campに所属しています。この記事では、以下の質問に答えながら、チームの簡単な紹介をします。 チームは何を達成しようとしているのか(ミッション) チームはどのようにそのミッションを実現しようとしているのか(戦略) ミッション 私たちのミッションは次のとおりです。 「CI/

    CI/CDチームの紹介 | メルカリエンジニアリング
    peketamin
    peketamin 2022/06/22
  • Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング

    Merpay Tech Openness Month 2022の6日目の記事です。 こんにちは、Merpay Credit Design Teamでバックエンドエンジニアをしている@youxkeiです。 テストを書く際、その前提条件としてデータベースの状態をフィクスチャとして準備して、データベースにデータを投入することがよくあります。このフィクスチャはYAMLなどの外部ファイルに書かれることもありますが、この記事ではテストコード上にGoで記述する方法を考えていきます。 この記事では、データベースはリレーショナルデータベースを想定していて、具体例として架空の図書館蔵書管理システムのデータベースを使っています。 素直にモデルを使う 多くの場合、以下のようにデータベースのそれぞれのテーブルに対してモデルが定義されています。 package model import ( "time" ) type

    Goでテストのフィクスチャをいい感じに書く | メルカリエンジニアリング
    peketamin
    peketamin 2022/04/24
  • ユニットテストのガイドラインを作成しました | メルカリエンジニアリング

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

    ユニットテストのガイドラインを作成しました | メルカリエンジニアリング
    peketamin
    peketamin 2022/04/23
  • E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング

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

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

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

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

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

    GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング
    peketamin
    peketamin 2022/03/04
  • メルカリ Shops の開発を支える Automation 化 | メルカリエンジニアリング

    こんにちは。ソウゾウで Software Engineer をしている @sottar です。連載:メルカリShops 開発の裏側 Vol.2の 5 日目を担当させていただきます。 この記事ではメルカリShops における、開発をサポートするための Automation 化について紹介します。 メルカリShops での開発手法 先日のプロダクト組織に関する記事でも言及がありましたが、ソウゾウでは全員ソフトウェアエンジニアを標榜しており、これまで経験がない分野でも積極的にコードを書いていく文化があります。 組織の人数も当初に比べ増えてきており、より様々なバックグラウンドを持ったエンジニアが参画しています。 エンジニアが自らの経験が少ない分野のコードを書くと、その言語ならではの書き方がわかっていなかったり、意図していない変更が起きてしまったりすることが起こりやすくなります。基的にはコードレビ

    メルカリ Shops の開発を支える Automation 化 | メルカリエンジニアリング
    peketamin
    peketamin 2022/02/18
  • メルカリShops の技術スタック、その後 | メルカリエンジニアリング

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

    メルカリShops の技術スタック、その後 | メルカリエンジニアリング
    peketamin
    peketamin 2022/02/08
  • 自作して学ぶKubernetes Scheduler | メルカリエンジニアリング

    Mercari advent calender の21日目を担当します@sanposhihoです。現在大学の学部4回生で、メルカリでは内定者インターンとして、メルカリのホーム画面などのバックエンドを担当するチームに所属しています。 また、最近は個人的にKubernetesやその周辺のOSSにコントリビュートをしていて、特にKubernetesのコントロールプレーンのコンポーネントのうちの一つであるkube-scheduler周りを触ってることが多いです。 後で詳しく説明しますが、kube-schedulerはPodをどのNodeで実行するかを決定しているコンポーネントです。NodeAffinityや比較的新しいものだとPod Topology Spread Constraintsなど、Podのスケジュールの制約を指定できる機能も基的にこのkube-schedulerに実装されています。

    自作して学ぶKubernetes Scheduler | メルカリエンジニアリング
    peketamin
    peketamin 2021/12/22
  • 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を削除するための手順と道のり | メルカリエンジニアリング
    peketamin
    peketamin 2021/12/07