タグ

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

  • Storybook による UI & Unit Testing のススメ | メルカリエンジニアリング

    Mercari Advent Calendar 2018 19 日目です。 担当はメルカリ JP フロントエンドチームの @nekobato がお送りします。 メルカリ フロントエンドチームでは主に React を利用してフロントエンド構築を行っており、 その中のWeb Rearchitecture では Storybook による UI Testing に取り組んでいます。 今回はフロントエンドUI Testing と Unit Testing を Storybook & Storyshots を利用して行っているという話をします。 Storybook とは Storybook は個別の UI コンポーネントをブラウジングする開発環境を構築するモジュールです。 単独では目視による UI テストを可能にするのみですが、アドオンと組み合わせることで様々なテスト環境を構築することが可能にな

    Storybook による UI & Unit Testing のススメ | メルカリエンジニアリング
    yyamano
    yyamano 2023/08/15
  • Team Topologies in Souzoh | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer / Engineering Manager の@motokieeです。連載:「メルカリShops」プレオープンまでの開発の裏側の4日目を担当します。 4日目は、ソウゾウがどのような体制でメルカリShopsを開発しているかについて、Team Topologiesの解説を交えてお送りします。 はじめに チームの在り方には様々な形がありたくさんの議論が交わされていると思います。自分自身も以前いた会社はもちろん、メルカリに入ってからも旧ソウゾウ、JP(日事業)、メルペイとの関わり合いなど様々なチーム構成を見てきました。 タイトルにあるTeam Topologiesですが、https://teamtopologies.com/ では以下のように定義されています。 ​​Team Topologies is the leading appro

    Team Topologies in Souzoh | メルカリエンジニアリング
    yyamano
    yyamano 2022/05/01
  • DevSecOpsとは何か — 導入する組織が増加している理由 | メルカリエンジニアリング

    Mercari Advent Calendar 2020 の15日目は、メルカリ Product Security チームの Gloria Chow がお送りします。 こんにちは、Product Securityチームの@gloriaです。以前、オープンソースとして公開しているTestdeckという、マイクロサービスの自動化テストのための社内ツールについて記事を書きました。 今回は、2020年のAdvent Calendarの記事として、DevSecOpsについてお話をしたいと思います。近年、耳にする機会の多い話題の一つなので既にご存じの方もいらっしゃるかもしれませんが、DevSecOpsの基的なコンセプト、注目されている理由、よくあるチャレンジとメルカリにおけるDevSecOpsの実践事例を紹介したいと思います。 DevSecOpsとは? DevSecOps以前から提唱されているDev

    DevSecOpsとは何か — 導入する組織が増加している理由 | メルカリエンジニアリング
    yyamano
    yyamano 2022/04/15
  • 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とはなにか | メルカリエンジニアリング
    yyamano
    yyamano 2020/12/23
  • gRPCを用いたマイクロサービスのAPI仕様の記述 - Mercari Engineering Blog

    この記事はMERPAY TECH OPENNESS MONTHの10日目の記事です。 こんにちは、メルペイのバックエンドエンジニアの柴田(@yoshiki_shibata)です。 メルペイのバックエンドは、Google Cloud Platform上でGoogle Kubernetes Engineを使用して、マイクロサービスアーキテクチャを採用した多数のマイクロサービスから構成されています。モノリシックなサービス実装では複数層のライブラリ(あるいはコンポーネント)から構成されるのに対して、マイクロサービスアーキテクチャでは複数層のマイクロサービスから構成されます。 どちらのアーキテクチャにおいても、偶発的プログラミング(Programming by Coincidence)1を避ける2ために、注意を払って作成する必要があるのが、境界部分のAPI(Application Programmi

    gRPCを用いたマイクロサービスのAPI仕様の記述 - Mercari Engineering Blog
    yyamano
    yyamano 2019/06/15
  • iOSアプリで共通UIクラスを使うための仕組み | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの17日目の記事です。 メルペイiOSエンジニアの@masamichiです。 メルペイで導入している、 iOSアプリで共通UIクラスを使うための仕組みについて紹介します。 背景 メルペイでは、メルペイの機能をSDKとして開発してメルカリアプリに組み込んでいます。SDKにはメルペイで横断的に使用する基的なUIクラスがあります。例えばメルペイでは統一してテキストラベルの色に #000000 ではなく #333333 を使っていますが、その色を使ったUILabelのカスタムクラスをPrimaryLabelとして定義しています。他にもUIButtonでは、MercariPrimaryFilledButtonやMercariSecondaryOutlinedButtonといったクラスを定義しています。 UIクラス LabelやButto

    iOSアプリで共通UIクラスを使うための仕組み | メルカリエンジニアリング
    yyamano
    yyamano 2019/06/13
  • gRPCと手動テスト | メルカリエンジニアリング

    この記事はMERPAY TECH OPENNESS MONTHの5日目の記事です。 merpayでNFC決済のmicroservice (nfc-service) を開発担当している @Hiraku です。メルペイのバックエンドシステムは、各microserviceが主にgRPCを主な通信プロトコルとして用意しています。当然、各チームはgRPCサーバーを開発しています。この記事では、ちょっとした開発の日常をお見せしたいと思います。 とあるエンドポイントの場合 そもそもgRPCサーバーだけで、iOS/Androidのバックエンドができるのか?と思う方がいるかもしれません。 下図は、典型的なリクエスト経路を示しています。 merpay-gateway … 主にプロトコルの変換を担う merpay-api … BFF(Backend for Frontend)的な役割を担い、他のmicroser

    gRPCと手動テスト | メルカリエンジニアリング
    yyamano
    yyamano 2019/06/13
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    yyamano
    yyamano 2019/06/07
  • Apache Avro に入門した | メルカリエンジニアリング

    この記事は MERPAY TECH OPENNESS MONTH の 1 日目の記事です。 メルペイでソフトウェアエンジニアやっている @syu_cream です。 メルペイバックエンドシステムにおけるデータ・ログ収集と活用を促進するためのシステム DataPlatform仕事をしています。 記事ではこの DataPlatform で用いているデータフォーマット Apache Avro について、簡単な紹介とメルペイにおける導入背景、そして利用事例を示していきます。 ビッグデータ処理基盤においてフォーマット選定は頭を悩まされる課題かと思います。 ログフォーマット選定やスキーマ管理について、少しでもなにか得られるものがあれば幸いです。 Apache Avro の簡単な紹介 Apache Avro はデータがバイナリエンコードされる、軽量で柔軟なデータフォーマットです。 筆者としては B

    Apache Avro に入門した | メルカリエンジニアリング
    yyamano
    yyamano 2019/05/20
  • E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング

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

    E2Eテストのテスト結果を可視化することで気づきが生まれた | メルカリエンジニアリング
    yyamano
    yyamano 2019/02/19
  • メルカリの Karakuri Challenge について ~ Chrome Extension で会議室の場所をわかりやすくする ~ - Mercari Engineering Blog

    メルカリの Karakuri Challenge について ~ Chrome Extension で会議室の場所をわかりやすくする ~ こんにちは。メルカリ Engineering Manager の @_hitima です。Mercari Advent Calendar 2018 の17日目を担当します。Frontend チームに所属しています。 記事ではメルカリが取り組んでいる Karakuri Challenge というものと、実際に作った Karakuri について、紹介させてください。 メルカリですが、公式資料からの情報によると、現在連結で 1,350 名程度の社員が在籍しています。私が入社した約 3 年前で約 100 名だったと思いますので、3 年で 100 名規模から 1,350 人規模まで人員を拡大していることになります。 急に人数が拡大すると、色々な課題が浮き彫りになっ

    メルカリの Karakuri Challenge について ~ Chrome Extension で会議室の場所をわかりやすくする ~ - Mercari Engineering Blog
    yyamano
    yyamano 2018/12/17
  • 「必要最低限のルール」に何を望む? 徳丸浩×メルカリ八木橋のセキュリティ対談 | メルカリエンジニアリング

    きっかけは、メルカリのセキュリティエンジニア・八木橋優のFacebook投稿でした。 対談のきっかけになった、メルカリ八木橋のFacebook投稿 「徳丸」とは、Webセキュリティの第一人者であり、現在は情報システムの監査やコンサルティングを行うEGセキュアソリューションズ株式会社の代表取締役である徳丸浩さんの著書についた愛称。かくして、社内メンバーでひっそりと行う予定だった輪読会は、徳丸さんというビッグゲストを迎えて開催されることになったのです。 同じWebセキュリティ界隈としてつながりはあったものの、それほど深いやりとりはなかったという2人。ですが、今回の輪読会をきっかけに、甘いものをべながらじっくり話し合う対談が実現しました。 ▷メルカン記事バージョンはこちら mercan.mercari.com 「より内側」にいるインハウスならではのセキュリティ体制 徳丸:今日は「メルカリでは

    「必要最低限のルール」に何を望む? 徳丸浩×メルカリ八木橋のセキュリティ対談 | メルカリエンジニアリング
    yyamano
    yyamano 2018/12/14
  • Goでproxy serverを作るときにハマるポイント | メルカリエンジニアリング

    Mercari Advent Calendar 2018 の5日目はSREチームの @catatsuy がお送りします。 メルカリではGoで書かれたproxy serverをサービスの各所で使っています。今回はGoでproxy serverを作るときにハマりそうな、標準ライブラリの挙動や特徴について紹介します。 エントリーは2018/12/04現在の最新であるGo 1.11.2を元にして書きます。 Hostヘッダーはreq.Header.Set(“Host”, “example.com”)しても上書きできない https://github.com/golang/go/blob/e8a95aeb75536496432bcace1fb2bbfa449bf0fa/src/net/http/request.go#L1023 https://github.com/golang/go/blob/e8

    Goでproxy serverを作るときにハマるポイント | メルカリエンジニアリング
    yyamano
    yyamano 2018/12/13
  • マイクロサービスチーム編成のベストプラクティスとメルカリでの構想 - Mercari Engineering Blog

    今年もMercari Advent Calendar 2018 が始まりました。初日は @stanaka がお送りします。 メルカリでは創業以来開発してきたPHPのアプリケーションから(主に)Goで実装されたマイクロサービスアーキテクチャへの移行を進めています。これまでにMercari Tech Conferenceやその他のカンファレンスでMicroservice化の意義、移行の方法、基盤となるMicroservice Platformの概要などについて様々な発表をしてきました。 現在、来年からの格的なマイクロサービスアーキテクチャでの開発に向けて、これまでのサービスの施策ドリブンのチーム編成から、マイクロサービスを軸としたチーム編成に移行しようとしています。 しかし、マイクロサービスアーキテクチャを成功させるためには、各種プラットフォームの機能を揃え、それらを利用したマイクロサービス

    マイクロサービスチーム編成のベストプラクティスとメルカリでの構想 - Mercari Engineering Blog
    yyamano
    yyamano 2018/12/01
  • https://engineering.mercari.com/entry/2017/12/18/deadlock

    https://engineering.mercari.com/entry/2017/12/18/deadlock
    yyamano
    yyamano 2018/06/18
  • API TALK about メルカリチャンネルを開催しました | メルカリエンジニアリング

    こんにちは、サーバサイドエンジニアの @vkgtaro です。 1/23(火)にメルカリチャンネルの開発についてのイベントを開催したのでその開催後レポートをお届けします。 まずは開催当日は大雪の翌日で、足元が悪い中お越しいただいた方々には改めてお礼申し上げます。また、参加できなかった皆様におかれましてもお申し込みありがとうございました。 API エンジニアのイベントは今後も開催していきますので、次の機会によろしくお願いします。 mercari.connpass.com メルカリチャンネルはライブを通じたコミュニケーションで売れるフリマとして昨年7月にリリースされて以降、日々多くの機能開発、改善を行っています。 このイベントではそのメルカリチャンネルの成長を開発者視点で3名が登壇して伝えしました。 @bravewood による「メルカリチャンネルとは」 @vkgtaro による「急成長させる

    API TALK about メルカリチャンネルを開催しました | メルカリエンジニアリング
    yyamano
    yyamano 2018/02/01
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

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

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
    yyamano
    yyamano 2017/06/23
    問題発覚後に切り替え後CDNのキャッシュの仕様を再度確認したところ、キャッシュをしないのは Cache-Control: private が含まれている場合のみとわかりました。
  • 【資料公開します】AWS Dev Day Tokyo 2017 にて登壇しました/choconの簡単なご紹介 | メルカリエンジニアリング

    こんにちは。SREの @kazeburo です。2017年5月31日から6月2日にAWS Summit Tokyo 2017と同時に開催された「AWS Dev Day Tokyo 2017」に登壇しました。 登壇する機会をいただき、また数あるセッションの中から会場に足を運んでいただいた皆様、ありがとうございました。 発表内容 「Cloud connect the world as Glue」というタイトルにて、メルカリのインフラストラクチャの概要および変遷、そして現在のAWSをはじめとするクラウドの利用について紹介しました。 資料はこちらになります。 chocon について スライド中で触れた chocon について少し紹介したいと思います。 choconはクラウドのRegionあるいはデータセンター外との通信を効率良く行うためのミドルウェアになります。HTTPS、HTTP/2の通信をKe

    【資料公開します】AWS Dev Day Tokyo 2017 にて登壇しました/choconの簡単なご紹介 | メルカリエンジニアリング
    yyamano
    yyamano 2017/06/06
  • 3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜

    OpenRestyはnginxのほかにngx_luaをはじめとするCで書かれた各種サードパーティモジュールとngx_luaのAPIを利用したrestyモジュール、そしてLua/LuaJITで構成されています。 OpenRestyに含まれているnginx自体は家のnginxと基同じなので、別にOpenRestyを利用しなくても自分でngx_luaを組み込んだり、サーバ上にrestyモジュールを配布することで似たような環境を構築することは可能ですが、OpenRestyであれば主要なモジュールやライブラリが./configure、make、make installの一連の流れですべてゴソッとインストールされますし、OpenRestyのconfigureスクリプトはnginxのconfigureスクリプトを継承したものなのでnginxのconfigureオプションをほぼそのまま利用することもで

    3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜
    yyamano
    yyamano 2016/05/31
  • Widebullet〜API Gateway with JSON-RPC〜 | メルカリエンジニアリング

    SRE(Site Reliability Engineering)チームの@cubicdaiyaです。今年のはじめから開発しているWidebulletというシンプルなAPI Gatewayを紹介します。 WidebulletはJSON-RPCをベースにしたシンプルなAPI Gatewayです。Goで書かれています。 github.com JSON-RPCはJSONによるRPC(Remote Procedure Call)プロトコルで、リクエストやレスポンスのボディに含まれるJSONを利用してクライアント/サーバ間の通信を行います。 # リクエストボディ { "jsonrpc": "2.0", "method": "echo", "params": {"msg": "ok"}, "id": "1"} # レスポンスボディ {"jsonrpc": "2.0", "result": "ok",

    Widebullet〜API Gateway with JSON-RPC〜 | メルカリエンジニアリング
    yyamano
    yyamano 2016/03/23