タグ

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

  • 社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング

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

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
  • ユニットテストのガイドラインを作成しました | メルカリエンジニアリング

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

    ユニットテストのガイドラインを作成しました | メルカリエンジニアリング
  • Elasticsearch運用ノウハウ | メルカリエンジニアリング

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

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

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

    GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング
  • お客さま影響に基づく実践的なアラート方法 | メルカリエンジニアリング

    この記事は、Merpay Advent Calendar 2021の16日目の記事です。 こんにちは、メルペイSREチームのfoostanです。普段はキーボードのことばかり話していますが、業ではSREチームの一員としてソフトウェアエンジニアリングをしたりEM(Engineering Manager)をしています。 SREチームの重要な役割の一つはサービスの信頼性を高め、当たり前のようにメルペイを使えるようにすることです。信頼性を高めるためにはサービスが止まらないようなシステム構成にすることが重要ですが、サービスが異常な状態になったとき、関係者に状況を知らせるためのアラートを適切に上げることも重要です。そこで記事ではお客さま影響に基づく実践的なアラート方法についてご紹介します。 適切なアラートとはなにか まずはどのようにアラートを上げるのが適切か考えてみます。アラートを上げる目的のひとつ

    お客さま影響に基づく実践的なアラート方法 | メルカリエンジニアリング
  • 評価の満足度を劇的にあげた秘訣。Continuous Feedbackのすすめ | メルカリエンジニアリング

    誰向けの記事? EM(Engineering Manager)の方に向けた記事です。 ただ、一般的な評価者全般にあてはまる内容を書いているので、評価を行う方なら誰でも参考にできると思います。 評価をする側ではないけど、どんな気持ちで自分のマネージャーが評価しているのか知りたい!といったエンジニアの方にも楽しんでいただけるかもしれません。 要約 メルカリエンジニア組織で、評価の負荷を削減しつつ、品質をあげるために、「Continuous Feedback」という仕組みを導入しました。 Continuous Feedbackは、通常よりも高い頻度でフィードバックを行うことで、負荷分散や、フィードバックサイクルの高速化などをはかる手法です。 導入した結果、評価に対する満足度や、評価を自身の成長に使えてると感じるようになったメンバーがとても増えました。現在では多くのEMの方が、評価に利用してくれて

    評価の満足度を劇的にあげた秘訣。Continuous Feedbackのすすめ | メルカリエンジニアリング
  • 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を削除するための手順と道のり | メルカリエンジニアリング
  • ソウゾウのソフトウェアエンジニア選考ガイドを公開しました | メルカリエンジニアリング

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

    ソウゾウのソフトウェアエンジニア選考ガイドを公開しました | メルカリエンジニアリング
  • チームで運用と戦い、おいしい牛カツと出会った話 | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の 9 日目は、バックエンドエンジニアの @sou がお送りします。 今日は少し泥臭く、この一年チームを成長させながら運用と戦ってきた話を書こうと思います。 私の所属するチームは加盟店情報の管理を担っており、その性格から運用に伴う作業が数多く発生します。 どんなプロダクトにも運用はあると思いますが、このチームが直面した運用の負荷はそのボリュームと複雑さから、私のキャリアの中でも最大と言えるものでした。 その運用に私たちがどのように立ち向かい改善を行ってきたか、みなさまの参考になれば嬉しく思います。 なぜそんなしんどい運用を頑張っているのか、メルペイでのやりがいや楽しさ、頑張った結果の美味しい牛カツと日酒のお店に出会えた話も添えさせていただければと思います。 ここで言う運用とは、事業を進めていく上でさまざまな場面で発生する、自チーム以

    チームで運用と戦い、おいしい牛カツと出会った話 | メルカリエンジニアリング
  • 料率計算における小数点数の扱いについて | メルカリエンジニアリング

    Merpay Advent Calendar 2020 の3日目です。 メルペイでバックエンドエンジニアをしている iwata です。 メルペイスマート払いの開発をしている Credit Design というチームに所属しています。 私は2019年の入社以来、「メルペイスマート払い(定額払い)」(以下、定額払い)の開発を担当しており、今年の7月にようやくリリースすることができました。 この定額払いの手数料計算のために、「1万分の1を1とする単位」であるベーシスポイントを扱うGo言語のパッケージ go.mercari.io/go-bps を作成しました。 ちょうど1年前に、 mercari.go #12 で「料率計算における小数の扱いについて」として発表しましたが、当時はオープンソースとして公開していませんでした。 今回オープンソースとして公開しましたので、改めてパッケージを紹介します。 料

    料率計算における小数点数の扱いについて | メルカリエンジニアリング
  • 不正検知システムに機械学習を導入してコストマネジメントを実現した話 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の17日目の記事です。 こんにちは。matchanです。 今回は、機械学習チームの取り組みのひとつ、不正検知システムに機械学習を導入した話の紹介になります。(不正検知システムについてはこちらの記事もご覧ください。) はじめに これまでメルカリ・メルペイでは、サービスが拡大・成長していくに伴い取引数が増加してきました。一方で、不正検知数も増加していき、それに伴うオペレーション負荷も増加していくという状況が課題になっていました。サービスの拡大・成長は今後も続いていきます。限りあるリソースを考えれば、オペレーション負荷が単調に増加していくままではいけません。 単純に検知数を削減するという対策では、不正検知システムのクオリティの低下になります。そこで、検知数を削減しつつも疑わしい取引を検出でき、オペレーション負荷の低減と検

    不正検知システムに機械学習を導入してコストマネジメントを実現した話 | メルカリエンジニアリング
  • エンジニアのローテーションプログラムを作った話 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の20日目の記事です。 こんにちは。メルペイのVP of Engineeringの木村(@hidek)です。 はじめに メルペイでは VP of Engineering と Engineering Manager (EM)が HR と連携をしながら、エンジニア組織のピープルマネジメントにコミットしています。ピープルマネジメントとは、 採用 → 育成 → 評価 → リテンション → 外へのアウトプット → より良い採用… というサイクルを好循環させながら、組織全体に貢献することと定義しています。 その中で、今回リテンションという観点で EM 間で議論を行い、「ローテーションプログラム」というものを作ったので、その紹介をしたいと思います。 「チャレンジ」のプロセス化 メルペイもプロダクトがリリースされて1年半以上が経ち

    エンジニアのローテーションプログラムを作った話 | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
  • スクラムレトロスペクティブで使えるWin/Learn/Tryの紹介 | メルカリエンジニアリング

    そのスプリントでの学びをチームにシェアして、以降のスプリントに活かします。後述しますが、Fun/Done/LearnのLearnのアイディアをお借りしてきました。KPTでいうとProblemに近い項目ですが、問題ではなく学びにフォーカスすることで、前向きな気持ちで課題に向き合える点がいいなと感じています。 WinやLearnから抽出された課題やチャンスに対してチームとしてどういったアクションを取るかのアイディアを出します。KPTのTryと同じ項目ですが、KPTより深堀りしたり抽象化をしたりしないと(特にWinからは)Tryにしづらいので少し難易度は高いです。 例1) Win: 大変だったxxxの実装が無事完了した! → お疲れさまでした! 何か工夫をしたんですか? → ドメイン知識のある人にペアプロに付き合ってもらいました → Try: 今難航している別の実装でも詳しい人にペアプロをお願い

    スクラムレトロスペクティブで使えるWin/Learn/Tryの紹介 | メルカリエンジニアリング
  • 機械学習システムの設計パターンを公開します。

    メルカリで写真検索とEdge AIチームに所属している澁井(しぶい)です。機械学習のモデルを番サービスに組み込むための設計やワークフローをパターンにして公開しました。 GithubでOSSとして公開しているので、興味ある方はぜひご笑覧ください! PRやIssueも受け付けています。私の作ったパターン以外にも、有用なパターンやアンチパターンがあれば共有してみてください! GitHub:https://github.com/mercari/ml-system-design-pattern GitHub Pages:https://mercari.github.io/ml-system-design-pattern/README_ja.html なぜ機械学習システムのデザインパターンが必要なのか 機械学習モデルが価値を発揮するためには番サービスや社内システムで利用される必要があります。そのた

    機械学習システムの設計パターンを公開します。
  • 機械学習とHuman-in-the-Loopで優勝する違反検知の話 | メルカリエンジニアリング

    こんにちは。AIチーム所属ソフトウェアエンジニアの@shidoです。 機械学習は様々なサービスの中で強力な武器となりますが、データパイプラインの構築や学習のための計算リソースの確保など、リーズナブルにシステムに組み込むには機械学習特有の困難を克服しなければなりません。 またその困難は機械学習の応用先によっても様々だと思っています。今回の記事ではデータパイプラインの構築に「Human-in-the-Loop (HITL)」と呼ばれる機構を違反出品検知のための機械学習システムへ取り入れた実例と、この仕組みについての考察をお話します。 もくじ 違反出品検知システムについて メルカリの安心・安全・公正な取引環境への取り組み ポリシーの変更について 不正取引の潮流の変化について 機械学習システムによる違反出品の検知 機械学習による違反出品検知の強みと課題 継続的なモデルアップデートの重要性 Huma

    機械学習とHuman-in-the-Loopで優勝する違反検知の話 | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。 メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに7回開催し100人以上の方に参加していただきました。 自社でもGoを基幹技術として使っている背景があり、今後もGoコミュニティへの貢献は継続していきます。しかしながら、新型コロナウイルス感染症の状況を踏まえて直近のGopher道場開催を見合わせています。 Goを学ぶ場を提供することでGoに触れる方を増やしたいと考えている筆者にとっては、 開催できないことが非常に残念です。そこでエキスパートチームでは違う形で学ぶ場を提供できないかと考え、Gopher道場で使用している資料のベースになっている「プログラミング言語Go完全入門」を期間限定で公開することにしました。 bit.ly bit.ly 追記 3/18:PDF

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
  • Gitのコミットハッシュ値は何を元にどうやって生成されているのか | メルカリエンジニアリング

    こんにちは。サーバサイドエンジニアの @DQNEO です。 前回の「Gitのつくりかた」に続いてGitのコアな部分のお話です。 Gitのコミットハッシュ値とは何か Gitを使っていると必ずコミットハッシュ値というものが出てきます。9e47c22みたいなアレです。 これはある特定のコミットを指し示すIDとして使うことができます。 では質問です。 このコミットハッシュ値は「何を元に」「どうやって」計算されているでしょうか? 「ある特定のコミット」とはそもそも何なのか この問題を考える前に、まず「コミットとは何か」を明らかにしておきましょう。 コミットというと「コミットする行為」すなわち「動作」のことを想像するかもしれません。 しかしGitの内部構造的観点から言うと、Gitが管理記録しているのはコミット行為の結果生成されたデータの方です。 この「コミットによって生成されたデータ」のことを「コミッ

    Gitのコミットハッシュ値は何を元にどうやって生成されているのか | メルカリエンジニアリング
  • Windows10 / Microsoft Edge での自動テスト(Selenium WebDriver)を Azure DevTest Labs 上で実行して高速化したお話 | メルカリエンジニアリング

    Windows10 / Microsoft Edge での自動テスト(Selenium WebDriver)を Azure DevTest Labs 上で実行して高速化したお話 この記事は、Mercari Bold Challenge Month の 2日目の記事です。 メルカリで QA Automation Engineer をしている 根 征 です。 私は現在、メルカリWeb版のUIテスト自動化に取り組んでいます。 今回は、Microsoft Edge ブラウザでの UIテスト自動化 (Selenium WebDriver) とその環境構築についてお話します。 マルチブラウザ時代のUIテスト戦略 Windows10 / Microsoft Edge で Selenium WebDriver のテストを動かす Windows 10 / Microsoft Edge のテスト環境への課題

    Windows10 / Microsoft Edge での自動テスト(Selenium WebDriver)を Azure DevTest Labs 上で実行して高速化したお話 | メルカリエンジニアリング
  • 外部APIと連携する機能のデータの持ち方のイチ事例 | メルカリエンジニアリング

    こんにちは。メルペイ バックエンドソフトウェアエンジニアの id:koemu です。 今日は、外部APIと連携する機能のデータの持ち方について、振込申請のシステムを事例に取り上げていきます。 基データ・拡張データに分ける 定義 まず、データを、「基データ」「拡張データ」に分けます。 ここで、「基データ」とは、提供する機能において最低限必要となる情報です。振込申請ですと以下のデータとなります。 名義 口座番号 申請日 申請受理日 振込完了日 ステータス(受付完了/送金完了/送金失敗/その他) 一方、「拡張データ」とは、基データでは網羅していない、外部APIが必要としているデータを指します。例えば、連携用のレコード別のIDや、ステータスの遷移などです。振込申請ですと次のデータになります。 ステータス(プロセッシング事業者が持つより詳細なステータス) IDのマップ(基データと拡張データ

    外部APIと連携する機能のデータの持ち方のイチ事例 | メルカリエンジニアリング