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

  • エンジニアのローテーションプログラムを作った話 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の20日目の記事です。 こんにちは。メルペイのVP of Engineeringの木村(@hidek)です。 はじめに メルペイでは VP of Engineering と Engineering Manager (EM)が HR と連携をしながら、エンジニア組織のピープルマネジメントにコミットしています。ピープルマネジメントとは、 採用 → 育成 → 評価 → リテンション → 外へのアウトプット → より良い採用… というサイクルを好循環させながら、組織全体に貢献することと定義しています。 その中で、今回リテンションという観点で EM 間で議論を行い、「ローテーションプログラム」というものを作ったので、その紹介をしたいと思います。 「チャレンジ」のプロセス化 メルペイもプロダクトがリリースされて1年半以上が経ち

    エンジニアのローテーションプログラムを作った話 | メルカリエンジニアリング
    daiki_17
    daiki_17 2020/09/12
  • 「プログラミング言語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完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
    daiki_17
    daiki_17 2020/08/31
  • Mercari Microservices Platformの進捗(2019年) | メルカリエンジニアリング

    Microservices Platform TeamでTech leadをしている@deeeeeeetです. 昨年のMTC2018ではMicroservices Platformチームの立ち上げから1年で僕らが取り組んできたことを紹介しました. speakerdeck.com 具体的にはStranglerパターンによるMonolithからMicroservicesへの段階的なリクエスト移行を行うためのAPI gatewayの開発や,Microservicesのインフラのセットアップを簡単にしサービス開発チームのSelf-service化を進めるためのStarter-kitの開発,GoでのMicroservicesの開発を高速で始めるためのTemplateプロジェクトの開発,Spinnakerの導入などについて紹介しました. これらはPlatformとして最低限の機能を整備したにすぎず,さ

    Mercari Microservices Platformの進捗(2019年) | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/12/23
  • より良いコードレビューをするために気をつけていること | メルカリエンジニアリング

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

    より良いコードレビューをするために気をつけていること | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/12/22
  • 全く知らない人のためのSign in with Apple | メルカリエンジニアリング

    Mercari Advent Calendar 2019 の10日目担当は メルカリ iOS チームの @HideakiTouhara です。 はじめに 2019年のWWDCで新しいSign in, Sign up方法であるSign in with Appleが発表されました。 今回は主にクライアントの実装を起点に、その流れを説明していきたいと思います。 Sign in with Appleの説明や特徴 まず、そもそもどういうものなのでしょうか? 2019年9月に更新されたガイドラインを引用します。 Make it easy for users to sign in to your apps and websites using the Apple ID they already have. With privacy and security features built-in, Sign

    全く知らない人のためのSign in with Apple | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/12/11
  • メルペイ社内ツールのお話 | メルカリエンジニアリング

    Merpay Advent Calendar 2019の5日目です。 メルペイ社内ツールのお話をしようと思います。 “個人事業主の集まりかよ”と評されることもある、メルペイソリューションチームの一員である、vvakameさんが開発・管理しているツールやシステムの紹介をします。今まであんまり外に出したことがなかったので。 mercari/datastoreなどのオープンになっているものや、OSSへのPRなどの社外からも観測可能なものは今回は割愛します。 そもそも、ソリューションチームとは? vvakame(TypeScript, Go, GraphQLなど)、sinmetal(GCPほぼ全部 最近Spanner)、orfeon(Dataflowなど)の3名で構成される、何かを適当にいい感じにするチームです。 メンバー募集中なので興味がある方は適当にアポイントを取ってください。Job Desc

    メルペイ社内ツールのお話 | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/12/05
  • マイクロサービス環境でのメルカリWebのリリースフロー

    メルカリJP Webチームの@urahiroshiです。 Webチームでは、メルカリWebのマイクロサービス化や機能開発を行なっています。メルカリWebのマイクロサービス化の概要については、昨年のTech Conferenceの資料がよくまとまっているので、そちらを参照していただけると良いかと思います。 https://speakerdeck.com/mercari/mtc2018-web-application-as-a-microservice-3a161f5c-07fa-4dca-99e9-bd0e8feeeddf 現在、メルカリWebのトップページはマイクロサービス環境から配信されており、他のページも随時マイクロサービス環境に移行していく予定です。 この記事では、マイクロサービス環境で導入した、メルカリWebの新しいリリースフローについて記載します。 まずメルカリWebのマイクロサ

    マイクロサービス環境でのメルカリWebのリリースフロー
    daiki_17
    daiki_17 2019/10/30
  • メルペイにおけるお客さま残高の管理手法 | メルカリエンジニアリング

    はじめに この記事はMERPAY TECH OPENNESS MONTHの19日目の記事です。 こんにちは。株式会社メルペイのPayment Platformチームでエンジニアをしている knsh14 です。 メルペイの様々な決済手段でどのように決済の整合性を保とうとしているかは15日目の記事で紹介しました。 メルペイでは決済の手段をもつマイクロサービス(Payment Service)と決済のための原資を管理するマイクロサービス(Balance Service)を分けています。 今回はこのお客さまの残高を正しく管理するためのマイクロサービスがいかにして正確に増減をしているかを説明します。 Balance Service の提供する機能 Balance Service ではお客さまの残高を増減させるという機能を提供しています。 決済のフローや他のマイクロサービスとの整合性の管理などは上位レ

    メルペイにおけるお客さま残高の管理手法 | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/06/13
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/06/08
  • メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング

    メルカリのAI EngineeringでTech Leadを務めている中河です。今回は3/18に正式リリースされた「写真検索機能」を支えるバックエンド・インフラをシステム側からの視点でご紹介します。 写真検索とは 所謂、画像検索機能で商品名を知らなくても画像から商品を検索できる機能の事です。詳しくは下記の公式リリースをご覧ください。 about.mercari.com 基的な写真検索の仕組みは、Deep Neural Networks (DNN)を使用して商品画像から特徴ベクトルを取得し、取得した特徴ベクトルをApproximate Nearest Neighbor Index(ANN Index)に追加して画像indexを構築。 検索時には同じく商品画像からDNNを介して特徴量ベクトルを取得し、ANN Indexから検索します。 アーキテクチャの概要 Figure1 上記がアーキテクチ

    メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/06/07
  • Merpay Microservices on Microservices Platform | Mercari Engineering

    この記事は MERPAY TECH OPENNESS MONTH の14日目の記事です。 メルペイSREの @tjun です。Engineering Managerをやっています。 先月行われた Mercari Meetup for Microservices Platform #2で、 Merpay Microservices on Microservices Platformというタイトルで、メルペイのマイクロサービスがどのようにMicroservices Platformを利用してサービスを開発・運用しているかを発表しました。 記事は、そこでの発表内容をblogとして記事にしたものになります。 その他の発表については @masartz の記事 Mercari Meetup for Microservices Platform #2 を開催しました – Mercari Enginee

    daiki_17
    daiki_17 2019/06/07
  • マイクロサービスのTelepresenceを使ったローカル開発環境の話 | メルカリエンジニアリング

    理論編: Telepresenceってなに Telepresenceとはリモートクラスタに対してより早く、ローカルで開発することを支援するツールです。現時点(2019/05/28)での最新バージョンは0.99です。 「より早く、ローカルで開発するのを支援するツール」ができることは、大きくまとめると以下の2つです。 クラスタのDeploymentをローカルサーバーと置き換える クラスタにローカルからアクセスをする これらの恩恵として ローカルサーバーのリモートクラスタの他サービスへアクセス ローカルサーバーのKuberenetesクラスタのリソースであるsecretsやConfigMapのアクセス リモートクラスタのローカルサーバーへのアクセス が挙げられ、より簡単に開発をできるようになります。 0. 今回のサービス例 例えば以下のようなサービスがあるとします。このサービスがやることは以下の

    マイクロサービスのTelepresenceを使ったローカル開発環境の話 | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/05/28
  • メルペイにおけるGoogle Cloud Spannerの取り組み | メルカリエンジニアリング

    この記事は MERPAY TECH OPENNESS MONTH の 2日目の記事です。 こんにちは、メルペイのバックエンドエンジニアの @sinmetal です。 メルペイではメインのデータベースとして、 Google Cloud Spanner を利用しています。 SpannerGoogleが独自開発した強力なデータベースですが、Google Cloud Spannerがサービスとして公開されてからまだ2年ほどしか経過していません。 そのため、まだ世界に公開されているノウハウが乏しく、メルペイの中でも実際開発していく中で、設計上の苦悩や、運用時の問題にぶつかることがありました。 調査したこと、解決したことなどは記事として公開しているので、Spannerに興味がある方は読んでみてください。 Google Cloud Spanner Deep Dive Spanner Benchmark

    メルペイにおけるGoogle Cloud Spannerの取り組み | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/05/21
  • メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング

    こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 メルペイではメインのデータベースとしてGoogle Cloud Spannerを利用しています。 マイクロサービスによっては秒間数千リクエストをSpannerで処理しています。 いかにSpannerをスケールできるようにして安定させられるかが会社全体として重要になっています。 記事では数ヶ月間戦ってきたSpannerのレイテンシが高くなる問題とその解決法について紹介したいと思います。 社内への調査報告も含めて書いているため、かなり詳細で長い内容になっています。 なおこの問題の大部分はGoSpannerを使ったときにだけ発生する問題のため、Javaなどの他の言語では該当しない可能性があります。 CreateSession問題 ここで紹介しなくても良いくらい基的なところですが、CreateSessionが非常

    メルペイでのSpannerとの戦いの日々 | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/04/18
  • バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング

    こんにちは。メルペイでバックエンドソフトウェアエンジニアをしている id:koemu です。 バッチプログラムのお話、今回は運用・監視についてお話したいと思います。当社はすべての業務が24時間行われていますので、システムがオンラインのときに動作するバッチプログラムについてのみ議論します。 過去の記事はこちらにあります。 運用に備えて バッチプログラムの運用について、「プリモーテム」「実行管理」そして「ログ管理」の3点について述べていきます。 プリモーテム ポストモーテムという言葉を聞いたことがある方はいらっしゃるかと思います。ポストモーテムとは、GoogleのSREの15章*1によれば、障害などの失敗を振り返り、今後に活かすプロセスの総称と捉えることができます。 さて、プリモーテム(プリモータム)とは何でしょうか。この言葉は、私が最近読んだThe Manager’s Path*2*3で使

    バッチプログラムの運用と監視について検討しよう | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/04/18
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

    こんにちは。メルペイで、決済・振込申請のバックエンドソフトウェアエンジニアをしている id:koemu です。 今日は、バッチ処理を行う理由について、考察を深めて設計に活かしていく話をしたいと思います。 はじめに バッチ処理とは、ある決まったタイミングで1つのプログラムが複数のデータを 一括処理 することを指します。この反対の言葉として、オンライン処理があります。オンライン処理とは、お客様の操作を初めとしたイベントをもとに 逐次処理 されるものです。OLTP(Online Transaction Processing)とも言います。 エントリでは、バッチ処理を採用するにあたり、どういったユースケースが適切なのかを整理して、今後のソフトウェアの設計の指針にできることを目指しています。今回は、「バッチ処理を採用するとき」と「バッチ処理の設計」の2つについて取り上げます。 バッチ処理を採用する

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    daiki_17
    daiki_17 2019/02/27
  • MTC2018 カンファレンスLPの裏話 〜インフラ編〜 - Mercari Engineering Blog

    こんにちは、メルペイのバックエンドエンジニアの @kazegusuri です。 2018年10月4日にMTC (Mercari Tech Conf) 2018 が開催されました。ご来場された皆様、楽しんでいただけたでしょうか? 今回は皆様が最初に目にしたであろうカンファレンスLPの裏側について紹介したいと思います。 実はこのページはGitHub上でPublicなリポジトリとして公開されています。 気づかれた方もいらっしゃるかもしれませんが、これはイベント後に公開したわけではなく、リポジトリ作成時からずっとPublicな状態で開発を続けていました。 チーム構成 MTC2018では最初からWebでの公開だけではなくカンファレンスアプリを作ろうというのを決めていました。 そのため大きく分けてwebチームとappチームに分けて開発をすすめることになりました。 web/appチームはメルカリグループ

    MTC2018 カンファレンスLPの裏話 〜インフラ編〜 - Mercari Engineering Blog
    daiki_17
    daiki_17 2018/10/11
  • 今年もやりますMercari Tech Conf 2018! 10月4日(木)開催! | メルカリエンジニアリング

    こんにちは、Mercari Backend Engineerの@oqruskです。 今年もMTCの季節がやってきました! MTCとは? MTC(Mercari Tech Conf) 2018 とは、Mercariのエンジニアリングのすべてが分かる技術カンファレンスです。 昨年9月に開催した第一回から一年。 その間Mercariには、金融関連の新規事業を担うMerpayの立ち上げ、研究開発組織R4Dの発足、そしてマザーズ上場など大きな変化がたくさんありました。その間社員数は倍以上に増え、そして今なおさらなる成長を続けています。 今年のMTCは、「Evolution(変化)」をテーマに、尋常じゃない成長を支えるエンジニアリング、VALUE、カルチャーを体感できるカンファレンスになっています。 開催概要 Mercari Tech Conf 2018 10/4(木) 10:00開演 / 21:00

    今年もやりますMercari Tech Conf 2018! 10月4日(木)開催! | メルカリエンジニアリング
    daiki_17
    daiki_17 2018/09/29
  • プロダクトのリリース前から新ダッシュボード「Looker」の導入に踏み切ったわけ | メルカリエンジニアリング

    こんにちは。メルペイのデータアナリストチームです。 メルペイはプロダクトの開発フェーズにあり、リリースに向けて全社で頑張っています。 「プロダクトがないのに、データ分析?」と思う方もいらっしゃるはずなので、メルペイのデータアナリストの業務と、力を入れているダッシュボードツール「Looker」の活用について紹介させて頂きます。 Lookerの公式ページはこちら プロダクトがないフェーズでの仕事 Lookerの話をする前に、まずは私達の状況を簡単に説明します。 分析チームを抱える企業は沢山ありますが、「プロダクトができる前から活動しているケース」は少ないと思います。 そういった意味では、私達のチームは他の会社と比べてユニークなポジションになっています。 一言で言えば「事業を作るための分析」を行っています。 メルペイの事業が成り立つには「良いプロダクト」を作り、「ステークホルダーとの関係」を築き

    プロダクトのリリース前から新ダッシュボード「Looker」の導入に踏み切ったわけ | メルカリエンジニアリング
    daiki_17
    daiki_17 2018/09/14
  • 活き活きとしたチームを創るためのアジャイルプラクティス | メルカリエンジニアリング

    こんにちは。メルカリで自動化&品質保証グループ(Automation & QA Group:通称AQA)のエンジニアリングマネージャをぶりぶりしている@daipresentsです。大好きな夏が終わりました。 先日、オフィス近くのスペースを借りて、All hands MTG(グループ全体MTG)を開催しました。このMTGはグループメンバー全員参加になっていて、全員でランチべたあと、がっつり3時間ふりかえり、課題のディスカッションをするという内容です。今回は、AQAでなぜこういったMTGを開催したのかをお話させていただこうと思います。 AQAのリズム AQAでは、各メンバーがプロジェクトチームにアサインされるため、進捗管理MTGをしていません。しかしながら、プロジェクト内では解決しない問題もあるため、定期的な情報共有が必要です。 ここで大切にしたいのがチームのリズム(アジャイル開発界隈だと

    活き活きとしたチームを創るためのアジャイルプラクティス | メルカリエンジニアリング
    daiki_17
    daiki_17 2018/09/14