タグ

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

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

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

    人間によるKubernetesリソース最適化の”諦め”とそこに見るリクガメの可能性 | メルカリエンジニアリング
    progrhyme
    progrhyme 2024/02/08
    これほしい
  • 巨大モノリスをKubernetesに移行してシングルクラスタ運用にするためにどうしたか | メルカリエンジニアリング

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

    巨大モノリスをKubernetesに移行してシングルクラスタ運用にするためにどうしたか | メルカリエンジニアリング
    progrhyme
    progrhyme 2021/03/29
  • 「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング

    メルペイ エキスパートチームの@tenntennです。稿は Merpay Tech Openness Month の11日目の記事です。 「プログラミング言語Go完全入門」の期間限定公開のお知らせでも書いたように、メルペイでは、社外の方向けにGopher道場という体系的にGoを学べる場を無償で提供してきました。Goの普及を目的にこれまでに8回開催し100人以上の方に参加していただきました。 また、Gopher道場の動画や資料はGopher道場 自習室として誰でも利用できるようになっており、現時点で300名以上の方が利用されています。 Gopher道場の資料のベースになっている「プログラミング言語Go完全入門」は、2020年7月31日までの限定公開になっていましたが、日より公開期限を撤廃し、完全公開することになりました。 また、日8月31日から始まる「Online Summer Int

    「プログラミング言語Go完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
    progrhyme
    progrhyme 2020/08/31
  • スクラムレトロスペクティブで使えるWin/Learn/Tryの紹介 | メルカリエンジニアリング

    そのスプリントでの学びをチームにシェアして、以降のスプリントに活かします。後述しますが、Fun/Done/LearnのLearnのアイディアをお借りしてきました。KPTでいうとProblemに近い項目ですが、問題ではなく学びにフォーカスすることで、前向きな気持ちで課題に向き合える点がいいなと感じています。 WinやLearnから抽出された課題やチャンスに対してチームとしてどういったアクションを取るかのアイディアを出します。KPTのTryと同じ項目ですが、KPTより深堀りしたり抽象化をしたりしないと(特にWinからは)Tryにしづらいので少し難易度は高いです。 例1) Win: 大変だったxxxの実装が無事完了した! → お疲れさまでした! 何か工夫をしたんですか? → ドメイン知識のある人にペアプロに付き合ってもらいました → Try: 今難航している別の実装でも詳しい人にペアプロをお願い

    スクラムレトロスペクティブで使えるWin/Learn/Tryの紹介 | メルカリエンジニアリング
    progrhyme
    progrhyme 2020/07/01
    KPTみたいなやつ。オリジナルっぽい。他に、Fun/Done/Learn、YWTってのもあるとか
  • 機械学習システムの設計パターンを公開します。

    メルカリで写真検索とEdge AIチームに所属している澁井(しぶい)です。機械学習のモデルを番サービスに組み込むための設計やワークフローをパターンにして公開しました。 GithubでOSSとして公開しているので、興味ある方はぜひご笑覧ください! PRやIssueも受け付けています。私の作ったパターン以外にも、有用なパターンやアンチパターンがあれば共有してみてください! GitHub:https://github.com/mercari/ml-system-design-pattern GitHub Pages:https://mercari.github.io/ml-system-design-pattern/README_ja.html なぜ機械学習システムのデザインパターンが必要なのか 機械学習モデルが価値を発揮するためには番サービスや社内システムで利用される必要があります。そのた

    機械学習システムの設計パターンを公開します。
    progrhyme
    progrhyme 2020/04/23
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

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

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
    progrhyme
    progrhyme 2020/04/14
  • リモートワークも支えるWIASの半年間の技術的進化 | メルカリエンジニアリング

    WIASのシステムの様子 こんにちは、メルペイSREチームのkekeです。新型コロナウイルスの感染拡大を懸念し、先週から株式会社メルカリ(以下、メルカリ)では原則として在宅勤務(リモートワーク)が導入されています。そのため、私も含めて多くの社員が自宅で業務を行っています。 以前、社内で使われているWi-Fi勤怠打刻サービスWIASについて紹介させていただきました。その投稿ではサーバーレスアーキテクチャの採用や保守・運用の話を中心にしました。 記事では、今回のリモートワーク化でのWIASの活躍とこの半年間のWIASの技術的進化を取り上げたいと思います。 以前の紹介記事はこちらです。 WIASのおさらい きっと前回の投稿を読まれてない方もいらっしゃっると思うので、WIASが何なのか軽くおさらいをします。 WIASとはWi-Fiの接続情報を使って、勤怠管理システムであるKing of Time

    リモートワークも支えるWIASの半年間の技術的進化 | メルカリエンジニアリング
    progrhyme
    progrhyme 2020/02/28
  • BigQuery の外部テーブルと Hive パーティショニングレイアウトで優勝する記事 | メルカリエンジニアリング

    こんにちは、メルペイ DataPlatform チームの @syu_cream です。 突然なのですが皆さんは BigQuery は使っていますか? うんうん、やっぱり使っていますよね。 メルカリ、メルペイでも KPI 分析や機械学習への応用、お客様からのお問い合わせに関わる調査、開発用ログへのクエリなど様々な用途で活用しています。 筆者が所属する DataPlatform チームでも様々なマイクロサービスと BigQuery を繋ぎこむのに一役買ってたりもします。 この記事では、そんな BigQuery が持つ便利であるがあまり触れられる機会がない外部テーブルと、最近追加された機能である Hive パーティショニングレイアウトのサポートについて触れていきます。 いかにして BigQuery でクエリできるようにするか 先述の通り、メルカリ及びメルペイでは BigQuery が多様なシーン

    BigQuery の外部テーブルと Hive パーティショニングレイアウトで優勝する記事 | メルカリエンジニアリング
    progrhyme
    progrhyme 2020/02/16
  • アプリを安全にリリースするための取り組み(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) | メルカリエンジニアリング
    progrhyme
    progrhyme 2020/01/21
    "リリース日を決めて、間に合わなかった機能開発は次のリリースへ先送りするRelease trainを導入"
  • リモートのデータ取得のためのフックライブラリの SWR を使ってみる | メルカリエンジニアリング

    こんにちは。Mercari Advent Calendar 2019 の 17 日目は Web UX Team 所属の @lightnet328 がお送りします。 どのようにリモートのデータを取得して管理するかは SPA 構成の Web フロントエンドにおいて大きなテーマの 1 つだと思います。最近では Apollo Client のようにデータ取得のためのクライアントとデータ管理のためのキャッシュ機構が一体化したライブラリが出てきています。 稿で紹介する zeit/swr (以下、SWR) もそのような特徴を持っています。SWR はその名が示すとおり HTTP の stale-while-revalidate (略すと swr) というキャッシュ戦略に影響を受けているため、先に HTTP の state-while-ravalidate について紹介します。 HTTP の Cache-

    リモートのデータ取得のためのフックライブラリの SWR を使ってみる | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/31
    "stale-while-revalidate (SWR) は Cache-Control ディレクティブの1つ"
  • より良いコードレビューをするために気をつけていること | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の22日目は、メルペイスマート払いチーム/Backend Engineer の @oinume がお送りします。今日はコードレビューについて自分が普段から実践していることを書いてみたいと思います。 はじめに 世の中にはコードレビューをする時の観点については数多く共有されていますが、より良いコードレビューをするためにはどうするのが良いか、というHOWについてのノウハウはあまりシェアされていないような気がしています。そのため、今日は自分なりに心がけているコードレビューのやり方と、ついでに気をつけている観点について書きたいと思います。 Slackを閉じる (これが当に一番大事だと思っているので最初に持ってきたのですが)私は極端に集中力がないため、SlackのDesktop通知が来るとついついそれが気になって見てしまいます。コードレビュー

    より良いコードレビューをするために気をつけていること | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/29
    手厚い
  • Sign in with AppleをCLIでも使いたい | メルカリエンジニアリング

    Merpay Advent Calendar 2019 の 23日目は、IDPチーム の @kokukuma がお送りします。 はじめに Sign in with Apple(以降、SIWA)、コマンドラインツールでも使いたくありませんか?使いたいですよね?わかります。特定のAppleID持っている人じゃないと使えないコマンドラインツールとか作りたいですよね。 さてこのようなコマンドを作るためには何が必要でしょうか?ネックになるのは、認可コードをどうやって自分のコマンドラインツールに引き渡すのか?というところです。AndroidやiOSではDeeplinkの仕組みを使って、Redirect経由でアプリに認可コードを引き渡しています。 しかし、OSXではこの仕組みは利用できません。とりあえず、gcloud auth login仕組みを調べてみました。また、SIWAの紹介は随分出ているので説明

    Sign in with AppleをCLIでも使いたい | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/27
    便利なのでは
  • Webの自動テストのこの1年を振り返って | メルカリエンジニアリング

    Mercari Advent Calendar 2019も、この記事を入れてあと3個となりました。最後まで読んでくださいね。 23日目はAutomation&QAグループで、Webのテスト自動化を行っている@AHA_oretamaがお送りします。 今回はWebの自動テストについて、この1年やってきたことを振り返ってみようかと思います。 Webのリアーキテクチャ 現在、Webではリアーキテクチャを進めています。 進め方としては既存のモノリシックなWebアプリケーションを残したまま、パス(例えばトップ /jp/ や検索ページ /jp/search/ )ごとに新しいWebアプリケーションにマイグレーションする方法をとっています。 影響範囲を小さくしつつその範囲の中でチャレンジが行えることがこの方法の利点です。 詳しくは去年のMercari Tech Confの資料をご覧ください。 speaker

    Webの自動テストのこの1年を振り返って | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/27
    参考になるかも
  • メルペイ iOS にスナップショットテストを導入した話

    Merpay Advent Calendar 2019 の16日目は、メルペイ iOS チームの @akifumi がお送りします。 メルペイ iOS の品質向上を目的に、スナップショットを用いたテストを行うことができる iOSSnapshotTestCase を導入した話について記載します。 目次 iOSSnapshotTestCaseとは iOSSnapshotTestCaseの導入方法 導入準備 インストール Podfile 導入のながれ 環境変数の定義 スナップショットの作成 SnapshotTestCase.swift UIViewControllerのテスト例 CALayerのテスト例 capture_snapshots lane スナップショットテスト snapshot_test lane CircleCIのartifactsに失敗した画像を保存 CircleCIのWorkf

    メルペイ iOS にスナップショットテストを導入した話
  • メルペイCTOと考える新しい経済学とエンジニアリング | メルカリエンジニアリング

    12月1日にhidekさんの記事から始まったメルペイアドベントカレンダーも今日で最後です。締めくくりを私(@sowawa)が務めさせていただきます。私からはメルカリやメルペイの振り返りと「新しい経済学エンジニアリング」の話をしたいと思います。 はじめに 2019年は兎にも角にも「メルペイのリリース」の年でした。2017年ごろからメルカリの決済基盤をマイクロサービスで作り直していき、メルペイの会社の設立を経て今年2月のリリースに至りました。最初のリリース後もまさに五月雨のようなリリースを五月雨が降る5月、6月まで積み上げていきました。リリースを積み重ねながら改善やキャンペーンが始まり、気づいたら12月を迎えていました。 ベスト・オブ 2019 表彰された時の様子 今年の最後にやってきたハイライトは、メルカリがGoogle Playのベスト・オブ2019に選ばれたことです。メルカリ・メルペイ

    メルペイCTOと考える新しい経済学とエンジニアリング | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/25
    含蓄に富んでるなー
  • JSFestで登壇してきました | メルカリエンジニアリング

    はじめまして。メルペイでフロントエンドエンジニアをしている @sottar です。 今年の11月8,9日 にウクライナのキエフで行われた JSFest というカンファレンスにスピーカーとして登壇してきました。 時間が空いてしまいましたが、その際の登壇内容や感じたことなどを紹介します。 JSFest とは JSFest とは毎年ウクライナのキエフで行われている東欧最大の JavaScript のカンファレンスです。FestGroup というカンファレンスのオーガナイザーが運営を行っており、QA, .NET, DevOps など JS 以外にもカンファレンスを行っていて、6年間で15のイベントを開催し累計で1万人以上の参加者がいるウクライナのカンファレンスのオーガナイザーグループです。 今回の JSFest も並列3トラックで2日間開催されており、600人以上の参加者がいたそうです。 JS F

    JSFestで登壇してきました | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/25
    CMS内製してるんだ
  • 機械学習における解釈性について | メルカリエンジニアリング

    こんにちは。Merpay Advent Calendar 2019 の24日目は、メルペイ Machine Learning チームの @yuhi が機械学習における解釈性についてお送りします。 目次 機械学習における解釈性とは なぜ解釈性が必要なのか 1. サービスを提供する事業者としての説明責任 2. 推論結果に対する社内外の関係者の理解 3. モデルのデバッグ、精度改善 どのようなアプローチがあるのか SHAPについて サマリ 基的なアイディア 問題設定 説明可能モデルに対して満たしてほしい性質 説明可能モデルを求める SHAPの実装について 最後に References 機械学習における解釈性とは 深層学習をはじめとする機械学習分野の発展に伴って、これまでにないユニークなサービスが開発され、また多くの業界において業務が効率化、高度化されつつあります。メルペイでも機械学習を用いて、

    機械学習における解釈性について | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/24
    興味深い
  • 商品通報対応をgRPCとGraphQLとReactでリプレースしてみた | メルカリエンジニアリング

    こんにちは。Mercari Advent Calendar 2019 14日目は、CSTool Domainチームの @Peranikov がお送りします。 メルカリではお客さまに安心して取引を楽しんでいただくため「あんしん・あんぜん宣言」に取り組んでおり、プロダクトの開発と同じレベルの課題感でカスタマーサービスの質の向上にも力をいれています。私の所属するCS(Customer Service) Tool Domainチームでは、カスタマーサービスのメンバーがお客さまからのお問い合わせ対応に使用するシステムの開発・運用を担っています。 商品通報対応とは メルカリでは利用規約に反するような出品がされた場合、お客さまや権利者さまからの通報・ルールベースやMachine Learningによる監視などで違反出品を検知し、カスタマーサービスチームが確認・対応するという業務を行っています。 ただ、サ

    商品通報対応をgRPCとGraphQLとReactでリプレースしてみた | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/24
  • gaurunとGoのHTTP/2事情について | メルカリエンジニアリング

    Mercari Advent Calendar 2019の13日目担当はメルカリSREチームの@catatsuyです。 社内ではGoを書いていることが多いので、今回はmercari/gaurunの事情を通して、GoのHTTP/2事情に関して紹介します。 忙しい人のためのまとめ Goはhttp.TransportのTLSClientConfigを上書きしている場合HTTP/2が使えません HTTP/2を使いたい場合はGo1.12まではgolang.org/x/net/http2のhttp2.ConfigureTransportを自分で呼び出す必要があります Go1.13の新機能ForceAttemptHTTP2を使えば標準機能でHTTP/2を有効にできます Go1.13の新機能を使うことでgaurunからgolang.org/x/net/の依存をなくすことができました gaurunについて

    gaurunとGoのHTTP/2事情について | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/23
    Goでh2を使うためのtips
  • メルペイの社内向け管理画面を振り返る | メルカリエンジニアリング

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

    メルペイの社内向け管理画面を振り返る | メルカリエンジニアリング
    progrhyme
    progrhyme 2019/12/23
    Nuxt SSRでマイクロサービス