タグ

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

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

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

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
  • 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を削除するための手順と道のり | メルカリエンジニアリング
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

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

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの15日目の記事です。 こんにちは。メルペイのPayment PlatformチームでPaymentServiceの開発を担当するエンジニアの @foghost です。 メルペイではマイクロサービスのアーキテクチャで決済システムを開発しています。その中でPaymentServiceは決済トランザクション管理の基盤サービスとして、下位層のサービス(外部サービスも含め)が提供する各種決済手段を利用して、上位層のサービス(メルカリ、NFC,コード払いなど)に必要な決済フローを共通APIとして提供しています。PaymentServiceが提供する決済処理に複数のサービスを跨いでお金の動きを正確に管理する必要があるので、作り始めた頃から決済トランザクション管理を最も重要な課題として、サービスを跨いでもデータの整合性が取れる仕組みを作ってき

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

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

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
  • アプリを安全にリリースするための取り組み(Release trainとClient release process) | メルカリエンジニアリング

    QAエンジニアの@rinaです。 今回は、メルカリがおこなっているiOSとAndroidのアプリリリース(メルカリではClient releaseと呼んでいます。以下、Client releaseと表示します)を支えるRelease trainという仕組みとプロセスについて紹介します。 Release train導入の目的と背景 メルカリはRelease trainを導入し、Client releaseを月に2回程度おこなっています。 Release trainを導入する前のリリースでは以下の問題を抱えていました。 ある機能の開発が間に合わなかった場合に、すでに決まっていたリリース日を延長する。 あるいは、新たな追加のリリース日を設定する。 リリースまでの締め切りがはっきりしないまま機能が追加され、その結果、QAによる品質確認が十分でないまま見切りリリースされることがある。 さらに、開発組

    アプリを安全にリリースするための取り組み(Release trainとClient release process) | メルカリエンジニアリング
  • メルカリアプリのWebView向けWebアプリケーションの開発を支えるモック技術 | メルカリエンジニアリング

    こんにちは、メルカリでフロントエンドエンジニアをしている @karszawa です。 日はメルカリアドベントカレンダー2019の21日目の記事として「メルカリアプリのWebView向けWebアプリケーションの開発を支えるモック技術」というニッチ(?)な題目の話をさせていただきます。 メルカリアプリでは「取引画面」を代表として、意外と多くの場所で WebView が使われています。 WebView 向けの Web アプリケーション開発は動作環境が特殊で外部依存の多いという点で普通の Web アプリケーション開発よりややこしいです。たとえば、普通の Web アプリケーションはあるアプリが独自に定義した API(ネイティブ API)を呼ぶことはありません。この記事ではそういった難しさを持ったアプリケーションを開発する上で重要な モックの話 をします。 番環境と開発環境のアプリケーションが参照

    メルカリアプリのWebView向けWebアプリケーションの開発を支えるモック技術 | メルカリエンジニアリング
  • メルペイの社内向け管理画面を振り返る | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の 13 日目は、メルペイフロントエンドチーム の @tanakaworld がお送りします。 メルペイの管理画面は 2019 年 2 月のサービスローンチに先立ち、2018 年 11 月にリリースされました。私は 2018 年 8 月に入社してから一貫して管理画面開発に関わり、様々な機能開発・運用を行ってきました。その中でフロントエンドエンジニアとして関わったいくつかのプロジェクトをピックアップしてご紹介します。 目次 はじめに メルペイのフロントエンドチーム メルペイの社内向け管理画面 プロジェクトの振り返り 審査業務効率化プロジェクト マイクロサービス分割プロジェクト 課題感 分割の方針 分割後のアーキテクチャ Component v2.0 リニューアルプロジェクト 課題感 デザインポリシー 開発フロー 社内向け管理画面で今後注

    メルペイの社内向け管理画面を振り返る | メルカリエンジニアリング
  • GolangでSlack Interactive Messageを使ったBotを書く - Mercari Engineering Blog

    SREの@deeeet です。 MercariではSlack Botを使い様々な業務の自動化を行っています。例えばメインのAPIのReleaseはBotによる自動化がされており、JPとUSとUKの3拠点で1日に10回以上のReleaseをSlack上で実現しています(これ以外にも多くの事例があります)。 これまでのSlack Botは基的には文字ベースでのやり取りが普通でした(グラフなどの画像を返答として利用することはあります)が、SlackはよりInteractiveなやりとりを実現できるInteractive Messageという仕組みも提供しています。これによりButtonによる決定やMenuによる選択といったアクションをユーザにとらせることができるようになります。 Buttonの仕組み自体は古くから提供されていましたが他のTeamへの配布が前提でありOAuthの仕組みを準備する必

    GolangでSlack Interactive Messageを使ったBotを書く - Mercari Engineering Blog
  • メルカリ社内ドキュメントツールの Crowi を Kubernetes に載せ替えました | メルカリエンジニアリング

    最近、SRE になった @b4b4r07 です。今回は、直近のタスクだった社内アプリを Kubernetes に載せ替えた話をします。 前置き メルカリでは全社的 1 に Crowi という Markdown で書ける Wiki アプリケーションをナレッジベースとして採用しています。 site.crowi.wiki 以前は、プロダクトチームは Qiita:Team、コーポレート系は Google Sites と言った具合に、各部署ごとに異なるドキュメントツールを使っていました。これではよくないと、エンジニアに限らず誰でも書きやすく参照しやすい Wiki のようなサービスが必要とされ、Crowi の採用に至りました。 まずはみんなに使ってもらうために広めていこうと、試験的に導入が始まったため、今回の移行話までは 1 台の EC2 インスタンスにアプリケーションサーバと Nginx、Mongo

    メルカリ社内ドキュメントツールの Crowi を Kubernetes に載せ替えました | メルカリエンジニアリング
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

    日コーポレートサイトでお知らせした通り、Web版のメルカリにおいて一部のお客さまの個人情報が他者から閲覧できる状態になっていたことが判明しました。原因はすでに判明して修正が完了しております。また、個人情報を閲覧された可能性のあるお客さまには、メルカリ事務局より、メルカリ内の個別メッセージにてご連絡させていただきました。 お客さまの大切な個人情報をお預かりしているにも関わらず、このような事態に至り、深くお詫びを申し上げます。 エントリでは技術的観点から詳細をお伝えさせていただきます。 2017年6月27日 CDNのキャッシュの動作について、CDNプロバイダと仕様について確認し検証を行いました。その結果一部記述に実際と異なる箇所があり、加筆修正いたしました。 概要 メルカリWeb版のコンテンツキャッシュをしているCDNのプロバイダ切り替えを行いました。 その際来キャッシュされるべきでない

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
  • 「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング

    はじめましてこんにちは。SREの@masartzです。 私は最近joinしたのですが、今回は番環境に古くからあるテーブルの掃除作業をした案件をご紹介します。 tl;dr; 番の住所情報テーブルを消したけど問題なかった話 絶対要らないハズだけど、なかなか削除できずにいるもの を対処する話 番環境の住所情報テーブルをdropするまでの作業 今回、番環境の住所情報テーブルをdropしました。 と言っても、事故でもうっかりでもなく、既に使われていなかったものの整理という作業でした。 何故使われていなかったかというのは、メルカリの住所情報の保持の仕方の変遷が関係しています。 初期にはuser情報と住所情報は1対1の関係でした。イメージとしては以下です。 CREATE TABLE IF NOT EXISTS users ( id INT UNSIGNED NOT NULL, name VARC

    「絶対要らないハズだけど、なかなか削除できずにいるもの」を対応した小話 | メルカリエンジニアリング
  • 1