タグ

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

  • 新人編集長の技術書典14参戦記 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の5日目の記事です。 はじめに メルカリ技術書典部の knsh14 です。 6月4日まで行われていた技術書典14に参加しました。 技術書典14は5/21にオフライン開催を行いました。 株式会社メルカリは、Goldスポンサーとしてイベントを支援させていただいており、スポンサーブースを割り当てていただきました。そこで、このブースではメルカリ技術書典部から「Unleash Mercari Tech!」という書籍をみんなで執筆し販売しました。 自分は編集長としての制作に携わったので、当日までどのような作業があったか紹介します。 を作る Slack を振り返ると、自分が編集長に立候補したのは 3/13 でした。 オフラインイベント当日から逆算すると、2ヶ月ほど活動時間がありました。立候補しプロジェクトを始めるタイミングと

    新人編集長の技術書典14参戦記 | メルカリエンジニアリング
  • 私たちはKubernetes SchedulerにWasm拡張の夢を見るか | メルカリエンジニアリング

    この記事はMercari Advent Calendar 2022の21日目の記事です。 こんにちは。メルカリのPlatform Infraチームで働いている @sanposhiho といいます。 個人的にKubernetesやその周辺のOSSにコントリビュートをしていて、特にKubernetesのコントロールプレーンのコンポーネントのうちの一つであるスケジューラー周りを触ってることが多いです。 この記事では、現状のスケジューラーにおける拡張性の課題と、スケジューラーに現代の汎用バイナリとも言えるWasmWebAssembly)ランタイムを通した拡張性を持たせることができるのかどうかを検証してみます。 Kubernetes Scheduler とは スケジューラーはPodをどのNodeで実行するかを決定しているコンポーネントです。 その時の様々なリソースの状況を見たり、ユーザーが指定した

    私たちはKubernetes SchedulerにWasm拡張の夢を見るか | メルカリエンジニアリング
  • 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 社外版 | メルカリエンジニアリング
    vvakame
    vvakame 2022/12/15
    わりと力作だと思うやつ書いたのでみんな読んで!
  • DevStats – メルカリ グループの各種指標計測について | メルカリエンジニアリング

    ※この記事は、Mercari Advent Calendar 2022 の15日目の記事です。 こんにちは。メルカリのPlatform DXチームの@masartzです。 今日はPlatform DX チームで取り組んでいる「開発に関わる指標の計測と可視化」に関して、いくつかの取り組みを具体例とともにご紹介していきます。 結論の項でも再利用するものを先にお見せします。 これはある期間におけるグループを横断したDeployment数の統計情報になります。 このような形で開発に関する情報の見える化とそこからのNext Actionを検討していこうというのが記事のまとめになります。 取り組みの大枠 – DevStats Project Platform チームによる指標計測の取り組みの歴史は古く、マイクロサービス移行の初期から行ってきました。社内ではDevStatsと呼ばれており、これまでも幾

    DevStats – メルカリ グループの各種指標計測について | メルカリエンジニアリング
    vvakame
    vvakame 2022/12/15
    いい話
  • サプライチェーンセキュリティにおける脅威と対策の再評価 | メルカリエンジニアリング

    ブログの主旨 サプライチェーンセキュリティにおいて既存のフレームワークよりも具象化されたモデルを用いて脅威及び対策を精査することで、実際のプロダクトへのより実際的な適用可能性及び課題を検討した。 具象化されたモデルにおいては「脅威の混入箇所と発生箇所が必ずしも一致しない」という前提に立ち、各対策のサプライチェーンセキュリティにおける位置付け及び効力を検討した。とりわけ、ともすれば無思考的に採用しかねないSBOM等の「流行の」対策に対して、その課題や効果の限定性を明らかにした。 これらの脅威分析に基づき、「サプライチェーンの構成要素に存在する多数の開発者それぞれに対して責任を分散して負わせる」形態のパイプラインを置き換えるものとして、「各構成要素に存在する開発者に対して一定の制約を強制する代わりに、サプライチェーンセキュリティに関するオペレーションを一点に担う中央化されたCIパイプライン」

    サプライチェーンセキュリティにおける脅威と対策の再評価 | メルカリエンジニアリング
    vvakame
    vvakame 2022/12/15
    対策だ…!
  • Pull RequestをKubernetesで気軽に試せるOSS、KubeTempuraをリリースしました | メルカリエンジニアリング

    Pull RequestをKubernetesで気軽に試せるOSS、KubeTempuraをリリースしました こんにちは、Mercari US Microservices Platform Teamの矢口です。 Mercariではこのたびテスト環境を簡単に作成できるツールをOSSとして公開しました! KubeTempuraとは KubeTempuraとはKubernetesクラスタにお試し用環境を自動で作成するためのKubernetes Operatorです。 GitHubでのPull Requestの作成をトリガーとしてKubernetesのリソースを作成できます。 Pull Requestを作成したりPull Requestにcommitをpushするだけで簡単に自分やQAのメンバーが変更したコードを試すことができます。 動機 なぜこういったツールを開発したかについて説明します。 PR

    Pull RequestをKubernetesで気軽に試せるOSS、KubeTempuraをリリースしました | メルカリエンジニアリング
    vvakame
    vvakame 2022/04/08
    へーUSこういう感じなんだ よさそうやん…
  • GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング

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

    GraphQLを導入する時に考えておいたほうが良いこと | メルカリエンジニアリング
    vvakame
    vvakame 2022/03/03
    この辺の話はGraphQLスキーマ設計ガイドにだいたい書いた記憶ある
  • 自作して学ぶ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 | メルカリエンジニアリング
    vvakame
    vvakame 2021/12/21
    これ大作で面白いのでみんな年末年始に読んで
  • XState + Apollo Clientでフロントエンドのステート管理 | メルカリエンジニアリング

    こんにちは。メルカリのSoftware Engineerのsotaです。 この記事は、Mercari Advent Calendar 2021 の18日目の記事です。 先日限定公開が始まったmerworkのWebフロントエンドでは、より良いUXを実現するためにコードの段階から設計していこう、というテーマをもとに、ライブラリやフレームワークの選定を行なっています。その中でAPIのデータやアプリケーションのステート管理にはXStateとGraphQLクライアントであるApollo Clientを採用しています。今回はこれらのライブラリを採用した経緯やどのように運用しているかについて解説します。 XStateについて XStateはステートチャートに基づいた状態遷移を管理するJavaScriptライブラリです。ReduxやMobXのようなフロントエンドのステート管理ライブラリと比較すると、XSt

    XState + Apollo Clientでフロントエンドのステート管理 | メルカリエンジニアリング
    vvakame
    vvakame 2021/12/20
    XState 知らなかったやつ〜〜
  • Accessibility Testing 101 | Mercari Engineering

    This post is for Day 15 of Mercari Advent Calendar 2021, brought to you by Sahil Khokhar from the Mercari JP Web team. I would like to take this opportunity to continue my efforts towards helping everyone understand Web Accessibility. After explaining The Importance of Web Accessibility and Web Accessibility through Internationalization and Localization in my previous blogs, today I would like to

    Accessibility Testing 101 | Mercari Engineering
    vvakame
    vvakame 2021/12/15
    なるほどなぁ
  • 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を削除するための手順と道のり | メルカリエンジニアリング
  • 評価の満足度を劇的にあげた秘訣。Continuous Feedbackのすすめ | メルカリエンジニアリング

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

    評価の満足度を劇的にあげた秘訣。Continuous Feedbackのすすめ | メルカリエンジニアリング
    vvakame
    vvakame 2021/12/15
    いい話
  • メルカリShops のフロントエンド | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer の hiroppy です。「連載:「メルカリ Shops」プレオープンまでの開発の裏側」 の最後は、Web フロントエンドの紹介をしたいと思います。メルカリ Shops は既存のメルカリアプリの中に独立した Web アプリケーションとして動いています。記事では、どのようなライブラリを選定し、どのようにアーキテクチャを設計してきたかを解説します。 なぜ Web なのか? アプリの上で動いているのであれば、WebView ではなくても良いと感じる人はいると思います。今回採用した 1 つの理由としては、リリースが柔軟な点が挙げられます。iOS/Android の両方に対して開発サイクルを早めることが可能であり、また機能追加やバグ修正が容易です。どのように WebView で動いているかについては、6 日目のメルカリ Shops のため

    メルカリShops のフロントエンド | メルカリエンジニアリング
    vvakame
    vvakame 2021/08/26
    なかなか複雑な構成をがんばってやっててすごい
  • All for Oneでたのしいおさわりかいをするよ! | メルカリエンジニアリング

    こんにちは。ソウゾウのQA Engineerの@____rina____です。連載:「メルカリShops」プレオープンまでの開発の裏側の12日目を担当させていただきます。 ソウゾウではメルカリShopsの開発の取り組みひとつとして、ソウゾウ全員でメルカリShopsのおさわりかいをしています。 おさわりかいってなに? 開発中のサービスを社内のメンバーが操作し改善事項などをフィードバックするミーティングのことを、ソウゾウでは「おさわりかい」と呼んでいます。ドッグフーディングやスプリントデモにも似ていますが、基的に開発環境を操作すること、完了の定義などの終了条件を決めていないこと、そして開発のメンバーだけでなくCEOも含むソウゾウの全員が参加して時間を決めて実施していることがこの会の特色です。 ソウゾウのおさわりかいは、毎週金曜日の夕方に1時間開催しています。 どうなったの? プレリリース前に

    All for Oneでたのしいおさわりかいをするよ! | メルカリエンジニアリング
    vvakame
    vvakame 2021/08/26
    "user-tkoolにはめちゃくちゃ助けられています! " いい話だ…
  • メルカリShopsのML立ち上げ奮闘記 | メルカリエンジニアリング

    こんにちは。ソウゾウの Software Engineer の @wakanapo です。連載:「メルカリShops」プレオープンまでの開発の裏側の 11日目を担当します。 メルカリShops唯一の ML (Machine Learning) 担当メンバーとして、メルカリShopsへのML導入を推進しています。まだ、絶賛立ち上げ中ではありますが、これまでの歩みについてお話します。 序章 私は、2019年4月に新卒入社以降メルカリJPの写真検索機能を中心に担当していました。当時写真検索はリリースされたばかりの機能だったので、バグの修正やシステムの改善を担当していました。その中で次のような課題を感じるようになりました。 写真検索のシステムは、継続的に出品された画像を検索に加える必要があるという特性から非常に複雑なものでした。またその indexing から serving までの Pipeli

    メルカリShopsのML立ち上げ奮闘記 | メルカリエンジニアリング
  • メルカリ Shops での NestJS を使った GraphQL Server の実装 | メルカリエンジニアリング

    ソウゾウの Software Engineer をやっています、@mookjp です。 8/10 の記事「メルカリShopsの技術スタックと、その選定理由」では、メルカリ Shops のアーキテクチャについて、その全体像を紹介しました。 この記事では、そのうちの BFF(Backend for Frontend) レイヤとして用意した GraphQL サーバについて、NestJS を使った実装例を交えて紹介します。 GraphQL とは GraphQL サーバ周辺の構成 NestJS とは GraphQL Module NestJS で Code First なスキーマ定義をする Object types の定義 Query と Mutation の定義 GraphQL スキーマの生成 スキーマの Breaking Change (破壊的変更)を防ぐ DataLoader を使って Bat

    メルカリ Shops での NestJS を使った GraphQL Server の実装 | メルカリエンジニアリング
  • メルカリShops での monorepo 開発体験記 | メルカリエンジニアリング

    こんにちは!ソウゾウのSoftware Engineerの@ogataka50です。連載:「メルカリShops」プレオープンまでの開発の裏側の9日目を担当させていただきます。 1日目の記事「メルカリShops の技術スタックと、その選定理由」にあった通りメルカリShopsではMonorepoで開発を行なっています。この記事では主にSoftware Engineerとして、DX (Developer eXperience)の観点からPJ初期からMonorepo上で開発を進めていった中で経験したこと感じたことを実際に起きた出来事とともに共有したいと思います。 Monorepoとは Monorepoとは単一のリポジトリに特定のプロジェクトのコードをすべて含めるパターンです。 下記のような利点があると言われています。 コードの可視性 統一されたバージョン管理, Single Source of T

    メルカリShops での monorepo 開発体験記 | メルカリエンジニアリング
    vvakame
    vvakame 2021/08/26
  • メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング

    こんにちは!ソウゾウの Software Engineer の @dragon3 です。 連載:「メルカリShops」プレオープンまでの開発の裏側の8日目を担当させていただきます。 この記事では、メルカリShops 開発において、日々バリバリに利用されている CI/CD 環境と Pull Request 毎のデプロイ環境について紹介します。 CI/CD 環境 メルカリShops では、CI/CD (テスト・ビルド・デプロイ)やその他自動化のために GitHub Actions を使っており、ほとんどのワークフロー・ジョブを Self-hosted runners で実行しています。 Self-hosted runners は、専用の VPC ネットワーク 内の GCE インスタンス上で動かしており、Managed Instance Group 等を使い、そのプロビジョニングや起動・停止等は

    メルカリShops の CI/CD と Pull Request 環境 | メルカリエンジニアリング
    vvakame
    vvakame 2021/08/26
    いい話だ… めっちゃ色々な機能使い倒しているなぁ
  • メルカリShopsはマイクロサービスとどう向き合っているか | メルカリエンジニアリング

    こんにちは。ソウゾウのSoftware Engineerの@napoliです。連載:「メルカリShops」プレオープンまでの開発の裏側の3日目を担当させていただきます。 メルカリShopsではマイクロサービスアーキテクチャによる開発を採用しています。ここではメルカリShopsではどのようにマイクロサービスと向き合っているかを紹介させていただきます。 メルカリShopsのマイクロサービス群 メルカリShopsはざっくりと、図のような形でマイクロサービス群が構成されています。 Frontendがひとつ、Backend For Frontend(BFF)がひとつ、そして(執筆時点で)約40ほどのBackendサービスが、それぞれが独立した実行環境で稼働しています。 BackendはShop(ショップ)、Product(商品)、Order(注文)、Payment(決済)といったドメインごとに独立し

    メルカリShopsはマイクロサービスとどう向き合っているか | メルカリエンジニアリング
    vvakame
    vvakame 2021/08/26
  • メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング

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

    メルカリShops の技術スタックと、その選定理由 | メルカリエンジニアリング
    vvakame
    vvakame 2021/08/26
    いい話だ