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

  • 人間によるKubernetesリソース最適化の”諦め”とそこに見るリクガメの可能性 | メルカリエンジニアリング

    Platformチームでエンジニアをしているsanposhihoです。メルカリのPlatformチームでオートスケーリング周りの課題の解決を担当しており、Kubernetes UpstreamでもSchedulingやAutoscaling周りの開発に参加しています。 メルカリでは全社的にFinOpsに取り組んでおり、Kubernetesリソースは最適化の余地があるエリアです。 メルカリではPlatformチームとサービスの開発チームで明確に責務が分かれています。Platformではサービス構築に必要な基礎的なインフラストラクチャを管理し、それらを簡単に扱うための抽象化された設定やツールなどの提供を行っています。サービスの開発チームは、それらを通してサービスごとの要件に応じたインフラストラクチャの構築を行います。 サービスやチームの数も多く、そのような状況での全社的なKubernetes

    人間によるKubernetesリソース最適化の”諦め”とそこに見るリクガメの可能性 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2024/02/07
  • キャリアの明文化から3年間、どんな変化が? Engineering Ladderの活用と改善  | メルカリエンジニアリング

    こんにちは、メルカリ Engineering Office チームの@yuki.tです。 私たちのチームでは、しなやかで強固なエンジニアリング組織を作ることをミッションに、様々な活動を行なっています。私はその中でも、主にエンジニア評価のサポートに携わっています。 メルカリでは、約3年前にEngineernig Ladderとして、メルカリのエンジニアに期待される行動を成長段階ごとに明文化したものを作成しました。Engineering Ladderは主にエンジニアの評価や目標設定に使われています。 この記事では、Engineering Ladderが作成されてから3年間でどのように活用・改善され、どのような影響があったかをまとめます。 評価・等級制度の作成や、エンジニアの組織作りに携わっている方にぜひ読んでいただきたいです。 Engineering Ladderとは 一般的にキャリアラダー等

    キャリアの明文化から3年間、どんな変化が? Engineering Ladderの活用と改善  | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2023/09/08
  • 社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング

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

    社内用GitHub Actionsのセキュリティガイドラインを公開します | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2023/06/09
  • GoによるSQLクエリテストの取り組み | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2023 の1日目の記事です。 背景 メルペイのバックエンドエンジニアのa-r-g-vとsminamotです。私達はメルペイ加盟店の管理システムを開発しているチームに所属しています。私達のチームには、複雑な条件を持つBigQueryのSQLクエリがいくつか存在しています。例えば、加盟店管理に関する費用計算などの計算クエリのように、外部環境の変化によって要件が定期的に変更され、マイクロサービス化などのシステム化が難しいクエリがあります。このようなクエリは複雑であるだけでなく、テスタビリティにも問題がありました。そのため、開発者がテストを実施することが困難になっており、クエリの変更を安心して行うことができない状態にありました。 クエリの複雑性 抽出条件の複雑さと複数のマイクロサービスへの依存により、クエリが複雑になっていました。

    GoによるSQLクエリテストの取り組み | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2023/06/07
  • メルカリの社内技術研修 ”DevDojo”の研修資料を公開します! | メルカリエンジニアリング

    この記事は、Mercari Advent Calendar 2022 の23日目の記事になります。 こんにちは!メルカリ Engineering Office チームの@aisakaです。 メルカリのエンジニア組織は、メンバーが相互に学び合い、メンバー自身が自走し、成長できる組織を目指し、「互いに学び合い、成長し合う文化」の醸成を行っています。 こうしたメルカリの「互いに学び合い、成長し合う文化」を体現する仕組みの一つが、社内技術研修「DevDojo」シリーズです。この度、一部のDevDojoシリーズを外部公開することになりましたので、今日のブログではDevDojoとその内容をご紹介します。 DevDojo page in Engineering Website 技術研修DevDojoとは DevDojoは技術開発を学ぶ場として、「Development」と「Dojo(道場)」をかけ合わせ

    メルカリの社内技術研修 ”DevDojo”の研修資料を公開します! | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2022/12/24
  • 未知の脅威に対抗するメルカリのCI再設計 | メルカリエンジニアリング

    この記事は、Mercari Advent Calendar 2022 の3日目および Developer Productivity Engineering Campブログシリーズの一環で、メルカリCI/CDチームのMichael Findlater (@michaelfindlater)が執筆したものです。 ※記事は2022年2月3日に公開された記事の翻訳版です。 ここではメルカリにおける次世代Continuous Integration(CI)システムの実装、そしてそれに向けたいくつかの技術的な取り組みについて解説します。またこの施策の動機とも言える、サプライチェーンアタックがどのようにCI/CDエンジニア達にとって今後より重要になってきたのかについて解説します。 背景 これまでも常にCI/CDパイプラインに対する攻撃は存在していたものの、ここ最近のこのエリアに対しての攻撃の急増は脅威

    未知の脅威に対抗するメルカリのCI再設計 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2022/12/03
  • メルカリWebのマイクロサービス化、その4年 | メルカリエンジニアリング

    Author: @urahiroshi, Engineering manager of Web Platform team 2022年8月4日、メルカリで “web-2” と呼ばれるサーバがシャットダウンされました。これはメルカリWeb版の開発に携わっているチームにとって、一つの区切りとなる出来事でした。 web-2はPHPで記述されたwebサーバで、2015年から https://www.mercari.com/jp/ 配下のコンテンツを配信していましたが、現在では複数のWebマイクロサービスがその機能を担っており、 https://www.mercari.com/jp/ 配下のページは後継となるWebマイクロサービスが配信するページへリダイレクトされています。 メルカリWebのマイクロサービス化に向けた開発が始まり、最終的にweb-2がシャットダウンされるまで、実に4年以上の期間がかか

    メルカリWebのマイクロサービス化、その4年 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2022/08/31
  • TerraformモノレポCIのセキュア化 | メルカリエンジニアリング

    記事は2022年1月22日に公開された記事の翻訳版です。 この記事は、Developer Productivity Engineering Campブログシリーズの一環として、Platform Infraチームの Daisuke Fujita (@dtan4)がお届けします。 メルカリでは、すべてのクラウドインフラを宣言的構成で管理することがプラットフォームの中核となる考え方の一つです。メインのクラウドプロバイダーはGoogle Cloud PlatformGCP)であり、HashiCorp Terraformを使用してインフラをコードとして管理しています。Platform Infraチームは、すべてのTerraformワークフローを安全に管理するための社内CIサービスを提供しています。 Terraformはリソースプロビジョニングのためにクラウドプロバイダーのクレデンシャルを必要と

    TerraformモノレポCIのセキュア化 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2022/08/09
  • ユニットテストのガイドラインを作成しました | メルカリエンジニアリング

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

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

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

    Elasticsearch運用ノウハウ | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2022/03/13
  • メルカリShops の技術スタック、その後 | メルカリエンジニアリング

    こんにちは。ソウゾウのSoftware Engineer(CTO)の@suguruです。連載:メルカリShops 開発の裏側 Vol.2の1日目を担当させていただきます。 去年、2021年に開始した メルカリShopsの技術スタック についての記事を書きましたが、今回はリリースまでに採用した技術スタックが、半年通してどのようにアップデートしてきたかを共有したいと思います。 ローンチ時に採用した技術が、実際の運用でどのように変遷したのかを共有することで、技術スタックを考える際の何らかの参考になれば幸いです。 monorepo メルカリShops ではサービスに必要なコードを1つに集約する monorepo を採用しています。リリース後半年たってコード量はかなり増えてきましたが、monorepo に対する満足度は非常に高く、うまく機能しています。 サービス全体の見通しが良くなることと、すべての

    メルカリShops の技術スタック、その後 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2022/02/08
  • 自作して学ぶ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 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/12/22
  • 公平性に配慮した機械学習 | メルカリエンジニアリング

    こんにちは。メルペイのMachine Learningチームの@hiroです。Merpay Advent Calendar 2021 の18日目の記事をお届けします。 機械学習の社会的重要性の高まり 近年、機械学習という技術領域が人口に膾炙し、多くの産業やプロダクトに用いられるようになってきています。機械学習は、アルゴリズムによって、蓄積されたデータのパターンを学習し、従来ひとの判断やルールベースで行ってきた意思決定を自動化、高精度化することで、様々な産業の生産性向上に寄与し、私達の生活を豊かにしてきました。私達の社会にとってなくてはならない技術領域のひとつになっています。 一方、そうした機械学習の自動判断において、結果的に差別的な振る舞いをしてしまったり、お客さまに不愉快な体験をさせてしまったりといった、社会にネガティブな影響を与えてしまう事案も発生しています。この記事で具体的な事例をと

    公平性に配慮した機械学習 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/12/19
  • lltsvでLTSV形式のデータをサクサクパースしよう | メルカリエンジニアリング

    LTSVはLabeled Tab-separated Valuesの略で、コロンで区切られたラベルと値の組み合わせ(key:value)をタブ区切りで表現したフォーマットです。 主にログデータのフォーマットとしての利用が想定されています。 uri:/upload status:400 size:13599 reqtime:0.280 apptime:0.150 uri:/downalod status:200 size:12812 reqtime:0.330 apptime:0.210 uri:/item/new status:200 size:29830 reqtime:0.050 apptime:0.050 uri:/item/fav status:200 size:33123 reqtime:0.100 apptime:0.099 uri:/top status:301 size:1

    lltsvでLTSV形式のデータをサクサクパースしよう | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/12/10
  • 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を削除するための手順と道のり | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/12/07
  • メルカリ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 環境 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/08/17
  • CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

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

    CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog
    mom0tomo
    mom0tomo 2021/05/24
  • 3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜 | メルカリエンジニアリング

    www.slideshare.net 通常のHTTPサーバやリバースプロキシとしてはこれで十分な一方、メルカリでは(主にngx_luaで)より柔軟な設定を行いたい等の理由から内部のロードバランサにOpenRestyを利用する機会が増えてきています。 OpenRestyはnginxのほかにngx_luaをはじめとするCで書かれた各種サードパーティモジュールとngx_luaのAPIを利用したrestyモジュール、そしてLua/LuaJITで構成されています。 OpenRestyに含まれているnginx自体は家のnginxと基同じなので、別にOpenRestyを利用しなくても自分でngx_luaを組み込んだり、サーバ上にrestyモジュールを配布することで似たような環境を構築することは可能ですが、OpenRestyであれば主要なモジュールやライブラリが./configure、make、mak

    3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜 | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/03/16
    “nginxのほかにngx_luaをはじめとするCで書かれた各種サードパーティモジュールとngx_luaのAPIを利用したrestyモジュール、そしてLua/LuaJIT”
  • 巨大モノリスをKubernetesに移行してシングルクラスタ運用にするためにどうしたか | メルカリエンジニアリング

    この問題を解決するため、もともとのコードベースであるところのモノリスもコンテナ化してKubernetesに乗せることにしました。ツールセットの統一をすることでよりシンプルな体系ができ、プラットフォームチームも一つの環境向けの改善に注力できるようになります。 プロジェクトの流れ PoC 計画についてあたため始めた際にちょうどよくUSチーム内でのハッカソンイベントがあったため、それに合わせて試しにKubernetesで動かすデモを発表しました。デモで見せる部分はごく限られたものだったため3人で3日くらい集中して開発したところ動くものができあがりました。 デモの評判は上々でEM、CTOに説明し実際にプロジェクトとしてすすめられることになりました。 現状分析 プロジェクト始動後、まず実施することは現状分析とどう移行するかの設計です。ここでのどの程度システムを把握できるかが計画の精度を決めます。しか

    巨大モノリスをKubernetesに移行してシングルクラスタ運用にするためにどうしたか | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/03/03
  • 開発チームとともに歩むSREチームが成し遂げたいこと | メルカリエンジニアリング

    こんにちは、メルカリMicroservices SREチームでEngineering Managerをしている@m4buyaこと渋谷です。 メルカリでは、昨年6月にSREチームの一部をマイナーアップデートし、プロダクトチームに寄り添いSREとしての専門性を活かし信頼性に貢献していくMicroservices SREチームを発足しました。記事では、そうするに至った背景、何を目指しているのか、これまでに出来たこととまだ出来ていないことを振り返り、今後の展望についてご紹介します。 背景 メルカリでは、2015年よりSREチームを立ち上げ、お客様が安心・安全にメルカリサービスを利用していただくためのシステムの信頼性の維持向上に取り組んできました。年々プロダクトとして成長を続け、トラフィックも増加する一方のメルカリサービスに求められるスケーラビリティ向上において、メルカリSREチームは大きな役割を

    開発チームとともに歩むSREチームが成し遂げたいこと | メルカリエンジニアリング
    mom0tomo
    mom0tomo 2021/01/29