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

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

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

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
    a-know
    a-know 2023/06/09
  • 持続可能なリモートOnboardingを支えるEngineering Onboardingの全て | メルカリエンジニアリング

    こんにちは!メルカリ Engineering Office チームの@aisakaです。 私達のチームは「全てのエンジニアに最高の従業員体験を」というミッションを元に、様々な活動を行なっています。私はその中でも、よりよいOnboarding体験を提供していくための戦略や仕組みづくりに携わっています。 一般的にOnboardingとは、新卒・中途採用などで新しく採用した人材に、企業カルチャーや取り組む業務に慣れてもらい、いち早く人の力を発揮できる状態にするプロセスのことを指します。 良いOnboardingは、入社してから成果を出すまでの立ち上がりの期間を短縮し、新入社員の定着率をあげる効果があるため、メルカリでは非常に重要視をしています。 メルカリでは毎月多くのエンジニアがリモートで入社しており、中には海外から働いているメンバーもいます。 また、先日のプレスリリースで発表がありましたが、

    持続可能なリモートOnboardingを支えるEngineering Onboardingの全て | メルカリエンジニアリング
    a-know
    a-know 2022/06/24
  • E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング

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

    E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング
    a-know
    a-know 2022/03/27
    2019
  • 評価の満足度を劇的にあげた秘訣。Continuous Feedbackのすすめ | メルカリエンジニアリング

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

    評価の満足度を劇的にあげた秘訣。Continuous Feedbackのすすめ | メルカリエンジニアリング
    a-know
    a-know 2021/12/07
  • メルペイのQA Engineerがやっていること | メルカリエンジニアリング

    はじめまして。メルペイのQA Engineerのsatomasaです。 記事では私がメルペイのQA Engineerとして日々意識していることや取り組んでいることについて、紹介させていただきます。 特に特別なことはやっていないのですが、メルペイのQA Engineerが普段どんなことをやっているか少しでも伝われば幸いです。 メルペイのQAチームについて メルペイのQAチームのメンバーはそれぞれ各プロダクトチームに所属し、日々業務を行っています。 メルペイでのQA活動については特に決まったやり方はありません。 所属しているチームの特性も違うので、メンバーそれぞれが自分なりのやり方を考えながらQA活動を行っています。 miisanさんやtakamaさんも記事を書いていますので、ご覧いただければと思います。 私はメルペイの社内向けの管理画面を開発するチームに所属しており、 PM、Backend

    メルペイのQA Engineerがやっていること | メルカリエンジニアリング
    a-know
    a-know 2021/08/20
  • 0から作るメルカリShopsのCSオペレーション基盤 | メルカリエンジニアリング

    こんにちは。ソウゾウのSoftware Engineerの @naopr です。 連載:「メルカリShops」プレオープンまでの開発の裏側 の5日目を担当します。 はじめに このエントリでは、メルカリShopsを構成するシステムの中でもお客さまの目に直接触れることのないCS(Customer Service/Success)オペレーション用のシステムについてご紹介します。 CSオペレーション用のシステムをメルカリグループでは CSツール と呼んでいるため、このエントリでもその呼称を使うこととします。 はじめにメルカリShopsのCSオペレーションの概要についてご説明したあと、システムのアーキテクチャと技術スタックについてご紹介します。そして、CSツールの基盤機能と各オペレーション用の機能について、実際の画面をご覧いただきながらご説明します。 ※画面は開発環境のものでありテストデータを表示し

    0から作るメルカリShopsのCSオペレーション基盤 | メルカリエンジニアリング
    a-know
    a-know 2021/08/15
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

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

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
    a-know
    a-know 2021/08/10
    色々良かった / PullReq がリポジトリよりも大きな単位を上手に扱えるようになったりするとまた色々変わったりするのかなぁなどとも妄想
  • QA Engineer1年生の1年間で取り組んだことの紹介 | メルカリエンジニアリング

    はじめまして。QA Engineer(以降QAE)チームのtakamaです。 記事では、QAEとしてのマインドと、自分がメルペイQAEとして取り組んだことについて紹介します。 具体的には、API自動テスト、ジョブ実行ツールの改修、地味に面倒くさい作業の自動化の3点です。 記事を書こうと思い立った経緯としては、 筆者が転職をふと考えた際に、個人的にQAEのイメージがつかなかった merpayにおけるQAEの働き方が、当時公開されていた記事を読んでも見えない部分が多かった(イベントや面談などで色々な質問を通じて理解できた) といった2つの悩みから具体的な働き方を少しでも発信できたら良いなという思いを持ったためです。 記事では、個人的なmerpay QAEとしてのマインドと取り組みを紹介することで、merpayやQAEへの興味に繋がれば嬉しいと考えています。 (発信の内容は自分の一番興味の強

    QA Engineer1年生の1年間で取り組んだことの紹介 | メルカリエンジニアリング
    a-know
    a-know 2021/08/05
  • 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とはなにか | メルカリエンジニアリング
    a-know
    a-know 2020/12/24
  • 料率計算における小数点数の扱いについて | メルカリエンジニアリング

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

    料率計算における小数点数の扱いについて | メルカリエンジニアリング
    a-know
    a-know 2020/12/04
  • エンジニアのローテーションプログラムを作った話 | メルカリエンジニアリング

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

    エンジニアのローテーションプログラムを作った話 | メルカリエンジニアリング
    a-know
    a-know 2020/09/12
  • Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の6日目の記事です。 メルペイでBackendエンジニアをしている柴田(@yoshiki_shibata)です。この記事では、Go言語のtestingパッケージに用意されている並列化の機能について説明します。 Go言語では、テストコードを作成するためのtestingパッケージが用意されています。一般に開発するソフトウェアの規模が大きくなるに従って、作成されるテストコードの量も多くなり、すべてのテストが終了するまでの時間も長くなっていきます。特に、データベースへアクセスするようなテストでは、データベースへの通信時間がテスト時間の多く占めますので、テストコードを逐次実行するよりは並列実行することで、テスト時間を短縮できます(厳密には用語「並行」ですが、t.Parallel()メソッドの説明なので、この記事では用語「並列

    Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング
    a-know
    a-know 2020/08/24
  • メルペイの Infrastructure as Code について、 HashiCorp Certified: Terraform Associate を受験した SRE に聞いてみた | メルカリエンジニアリング

    メルペイの Infrastructure as Code について、 HashiCorp Certified: Terraform Associate を受験した SRE に聞いてみた こんにちは。メルペイ Engineering Office チームの kiko です。先月、 HashiCorp Certified: Terraform Associate がリリースされましたね。早速 @tjun さん(メルペイ SRE, Engineering Manager )と @keke さん(メルペイ SRE )が受験していました。というわけで、今回はこのお二人に、試験の話とメルペイの Infrastructure as Code について聞いてみました。 サマリー メルペイでは、クラウドのリソースや Datadogのダッシュボードなど様々なことをTerraformでコード化して管理している

    メルペイの Infrastructure as Code について、 HashiCorp Certified: Terraform Associate を受験した SRE に聞いてみた | メルカリエンジニアリング
    a-know
    a-know 2020/05/02
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

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

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
    a-know
    a-know 2020/03/17
  • Data EngineeringとKubernetes Executorの話 | メルカリエンジニアリング

    Cityカラムが英語表記へ統一 Temperatureカラムは摂氏(℃)へ統一 Dateのカラムは、タイムゾーンをUTCに固定し、YYYY-MM-DDフォーマットへ こうしてDataが整理されてInformationになることで、「最高気温を比較すると、UTC 11月15日の時点ではPalo Altoの方が高かったが、12月5日の時点では東京の方が高かった」といった事実を見ることができるようになります。このInformationから導き出される傾向や規則性を導出されたものが、DIKWピラミッドにおけるKnowledgeになります。そして頂点であるWisdomは、導き出されたKnowledgeに基づいて人により下される判断のことそのものを示します。 Data Engineeringの仕事は、このDataを過不足無く蓄えること、DataからInformationへの変換・蓄積する作業がメインと

    Data EngineeringとKubernetes Executorの話 | メルカリエンジニアリング
    a-know
    a-know 2020/01/15
  • Google Kubernetes Engine上のGoアプリケーションでのHTTPリクエストを行う方法 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの最後の記事です。 こんにちは、メルペイのバックエンドエンジニアの@gia.nguyenです。 私は第3回のGopher道場を卒業してから2018年12月に入社しました。 他の記事にも記載されましたが、メルペイのバックエンドは、Google Kubernetes Engine(以下、GKE)を使用して、マイクロサービスアーキテクチャを採用した多数のマイクロサービスから構成されています。マイクロサービスは主にGo言語を使って、開発しています。マイクロサービス間のコミュニケーションはgRPCでやり取りしていますが、外部サービスに対してはほとんどHTTPで通信を行っています。記事はGKE上のGoアプリケーションでHTTPリクエストを投げる際、いくつか工夫した点を紹介したいと思います。 TL;DR httptraceはデバッグに役立つ

    Google Kubernetes Engine上のGoアプリケーションでのHTTPリクエストを行う方法 | メルカリエンジニアリング
    a-know
    a-know 2019/06/15
  • Datadogを使って感じた、問題調査/対応における変化とその要因 | メルカリエンジニアリング

    はじめに この記事はMERPAY TECH OPENNESS MONTHの4日目の記事です。 こんにちは。株式会社メルペイで backendエンジニアをしている cowsys です。 プロダクト/システムで発生した「問題」をいかにして解決するか。 いかに素早く原因を特定/解消し、正常化させるか。 上記のような「問題の調査と対応」は、backendエンジニアとして持ち続けている、大きなテーマの一つとしてあります。 メルペイの開発で初めてDatadogを利用してみて、このテーマが、大きく前進したような手応えを感じました。 ここでは最もインパクトのあった変化に絞り、どのような変化が起き、それは何によってもたらされたのか。 Datadogの導入事例として、また「問題の調査と対応」を考えるエンジニアとして、感じたこと、考えたことをお伝えできればと思います。 目次 はじめに 目次 利用しているData

    Datadogを使って感じた、問題調査/対応における変化とその要因 | メルカリエンジニアリング
    a-know
    a-know 2019/05/23
  • メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング

    こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 メルペイではメインのデータベースとしてGoogle Cloud Spannerを利用しています。 マイクロサービスによっては秒間数千リクエストをSpannerで処理しています。 いかにSpannerをスケールできるようにして安定させられるかが会社全体として重要になっています。 記事では数ヶ月間戦ってきたSpannerのレイテンシが高くなる問題とその解決法について紹介したいと思います。 社内への調査報告も含めて書いているため、かなり詳細で長い内容になっています。 なおこの問題の大部分はGoSpannerを使ったときにだけ発生する問題のため、Javaなどの他の言語では該当しない可能性があります。 CreateSession問題 ここで紹介しなくても良いくらい基的なところですが、CreateSessionが非常

    メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング
    a-know
    a-know 2019/04/18
  • バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング

    こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 バッチプログラムのお話、今回は運用・監視についてお話したいと思います。当社はすべての業務が24時間行われていますので、システムがオンラインのときに動作するバッチプログラムについてのみ議論します。 過去の記事はこちらにあります。 運用に備えて バッチプログラムの運用について、「プリモーテム」「実行管理」そして「ログ管理」の3点について述べていきます。 プリモーテム ポストモーテムという言葉を聞いたことがある方はいらっしゃるかと思います。ポストモーテムとは、GoogleのSREの15章*1によれば、障害などの失敗を振り返り、今後に活かすプロセスの総称と捉えることができます。 さて、プリモーテム(プリモータム)とは何でしょうか。この言葉は、私が最近読んだThe Manager’s Path*2*3で使

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    a-know
    a-know 2019/04/18
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

    こんにちは。メルペイで、決済・振込申請のバックエンドソフトウェアエンジニアをしている id:koemu です。 今日は、バッチ処理を行う理由について、考察を深めて設計に活かしていく話をしたいと思います。 はじめに バッチ処理とは、ある決まったタイミングで1つのプログラムが複数のデータを 一括処理 することを指します。この反対の言葉として、オンライン処理があります。オンライン処理とは、お客様の操作を初めとしたイベントをもとに 逐次処理 されるものです。OLTP(Online Transaction Processing)とも言います。 エントリでは、バッチ処理を採用するにあたり、どういったユースケースが適切なのかを整理して、今後のソフトウェアの設計の指針にできることを目指しています。今回は、「バッチ処理を採用するとき」と「バッチ処理の設計」の2つについて取り上げます。 バッチ処理を採用する

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    a-know
    a-know 2019/02/28