タグ

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

  • 「プログラミング言語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完全入門」の「完全」公開のお知らせ | メルカリエンジニアリング
    ktykogm
    ktykogm 2020/09/01
  • Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング

    この記事は、Merpay Tech Openness Month 2020 の6日目の記事です。 メルペイでBackendエンジニアをしている柴田(@yoshiki_shibata)です。この記事では、Go言語のtestingパッケージに用意されている並列化の機能について説明します。 Go言語では、テストコードを作成するためのtestingパッケージが用意されています。一般に開発するソフトウェアの規模が大きくなるに従って、作成されるテストコードの量も多くなり、すべてのテストが終了するまでの時間も長くなっていきます。特に、データベースへアクセスするようなテストでは、データベースへの通信時間がテスト時間の多く占めますので、テストコードを逐次実行するよりは並列実行することで、テスト時間を短縮できます(厳密には用語「並行」ですが、t.Parallel()メソッドの説明なので、この記事では用語「並列

    Go言語でのテストの並列化 〜t.Parallel()メソッドを理解する〜 | メルカリエンジニアリング
  • どのようにPlatformチームの組織変更をしたか | メルカリエンジニアリング

    Platform チームの@deeeeeeeetです. Platform チームは2年前にMercariがMicroservicesの移行を始めたときに一緒に立ち上げられたチームです.Platform チームはMicroservicesを動かすための基盤や開発や運用のためのツールセットなど提供しています.立ち上げ時は自分を含めて2-3人で始まったチームですが2年が経ち10人を超えるチームにまで成長しました. チームのメンバーが増えるほど1チームとして動くには限界がきており,またMicroservices化が進めば進むほどチームの負う責任範囲も広くなりCognitive load (認知負荷) も高くなっていました.これらの課題を解決するために組織変更を行い,Platform チームを複数の専門性に特化したチームに分割しました. 記事ではチームのデザイン,チームが分離しても独立性を保ちつつ

    どのようにPlatformチームの組織変更をしたか | メルカリエンジニアリング
    ktykogm
    ktykogm 2020/07/16
  • 運用練度を高め本番リリースに臨むためのアプローチ | メルカリエンジニアリング

    はじめに こんにちは、メルペイのバックエンドエンジニアの cowsys です。 「どうすれば決済サービスで必要となる最高レベルの運用練度を有することができるのか」 メルペイという決済サービスを開発/運用するにあたって、向き合わざるを得ないテーマの1つです。 今回このテーマにあらためて向き合い、目指す運用練度に近づけた手応えを持てたので詳細についてお伝えしたいと思います。 取り組みの経緯 メルペイをリリースしてから1年がたち、新しいmicroserviceの開発をしています。 開発に取りかかるにあたって、新たに取り組むべきテーマを探していました。テーマを探すにあたって、まずはこれまでの、メルペイローンチ前の開発に目を向け、当時の課題を振り返ってみました。 メルペイリリース前に直面していた最大の課題。それは「どうすれば決済サービスで必要となる最高レベルの運用練度を有することができるのか」という

    運用練度を高め本番リリースに臨むためのアプローチ | メルカリエンジニアリング
    ktykogm
    ktykogm 2020/07/09
  • Mercari Microservices PlatformにおけるKubernetes Cluster移行 | メルカリエンジニアリング

    Microservices Platform Teamの@deeeeeeetと@dragon3です. Microservices Platform TeamではGoogle Kubernetes Engine(GKE)をメインのコンポーネントとして利用し,その上にメルカリとメルペイのMicroservicesを動かすための基盤を構築しています.メルカリのMicroservices化のプロジェクト自体は2年ほど前から始めており,GKEも当時に構築したものを今日まで運用し続けてきました. この2年間でGKEからは多くの機能がリリースされました.その中のほとんどはそのまま有効にすることができますが,中にはClusterを作り直す必要があるものもあります.例えばRoutes-based ClusterをVPC-native Clusterに,Zonal ClusterをRegional Clust

    Mercari Microservices PlatformにおけるKubernetes Cluster移行 | メルカリエンジニアリング
    ktykogm
    ktykogm 2020/06/05
  • 「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング

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

    「プログラミング言語Go完全入門」の期間限定公開のお知らせ | メルカリエンジニアリング
    ktykogm
    ktykogm 2020/03/17
  • メルカリエンジニア組織 2019 Recap | メルカリエンジニアリング

    メルカリのCTOをやっている @snamura です。 Mercari Advent Calendar の最後を締めくくってほしいということで、ブログを書くのが物凄く苦手なんですが無理をして書いています。技術に沿った話で締めくくりたいところですが、ここ1年はずっとエンジニア組織のことに取り組んできたので、ここでは組織の話をちょっとしようと思います。 最近メルカリの Go Bold Challenge というカンファレンスで話したのですが、メルカリのエンジニア組織は、こちらの記事で詳しく語っています。 logmi.jp 2019年4月から格的にCTOとして日のメルカリのエンジニア組織を見ていくことになったのですが、課題山積みということで、次から次にやるべきことが出てくる1年でした。メルカリというサービスに対して、どういったエンジニアリングのアプローチを取っていくのか。まだ道半ばではありま

    メルカリエンジニア組織 2019 Recap | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/12/27
  • 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年) | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/12/23
  • 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事情について | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/12/13
  • https://engineering.mercari.com/entry/2019/12/01/microservices-migration-progress

    https://engineering.mercari.com/entry/2019/12/01/microservices-migration-progress
    ktykogm
    ktykogm 2019/12/03
  • Microservices と会計システム | メルカリエンジニアリング

    この記事は、 Mercari Bold Challenge Month の18日目の記事です。 こんにちは。メルカリで Product Manager として働いている津田と申します。私は社内で「会計システム」と呼ばれる、会社が運営するサービスに付随して発生した債権債務の増減を記録・集計するシステムを開発するチームで働いています。 はじめに メルカリでは、お客さまの行動に応じて日々さまざまなお金の流れが発生しています。たとえばメルカリで商品が出品され購入された(取引が行われた)場合を考えてみます。 この取引は、会社から見るとそれぞれの相手先に対する債権債務関係の変化と捉えることができます。メルカリにとっては、購入したお客さまに対する債権(= 商品代金)と出品したお客さまに対する債務(= 売上金)が発生します。このとき、商品代金の一定割合(通常は 10%)が販売手数料としてメルカリの売上とな

    Microservices と会計システム | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/10/18
  • Mercari Bold Challenge Month を実施します! #BoldChallenge | メルカリエンジニアリング

    Mercari Bold Challenge Month を実施します! #BoldChallenge こんにちは。 Developer Relations team の @kiko です。 8月26日から9月20日までの約一ヶ月間を「Mercari Bold Challenge Month」と題し、メルカリとメルペイのエンジニアがブログのバトンを繋ぎます。 Mercari Bold Challenge Monthとは? 株式会社メルカリは、「新たな価値を生みだす世界的なマーケットプレイスを創る」というミッションのもと、スマホから誰でも簡単に売り買いが楽しめるフリマアプリ「メルカリ」を提供しています。 また、株式会社メルペイは、フリマアプリ「メルカリ」のお客さまへ新しい価値を提供するため、「信用を創造して、なめらかな社会を創る」をミッションに、スマホ決済サービス「メルペイ」をリリースしまし

    Mercari Bold Challenge Month を実施します! #BoldChallenge | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/09/20
  • 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
    ktykogm
    ktykogm 2019/06/17
  • マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング

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

    マイクロサービスにおける決済トランザクション管理 | メルカリエンジニアリング
    ktykogm
    ktykogm 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 上記がアーキテクチ

    メルカリの写真検索を支えるバックエンド | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/03/27
  • バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング

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

    バッチ処理の採用と設計を考えてみよう | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/03/12
  • 複数の機械学習モデルが動くシステムをモデルごとにマイクロサービス化したお話 | メルカリエンジニアリング

    はじめまして。メルカリのAIチームでSysMLエンジニアをしているChicaです。 SysMLという言葉はあまり馴染みがないかもしれませんが、「Systems and Machine Learning」の略で、AIを実際にサービスに組み込むためのミドルウェア・インフラを整備することを言います。 メルカリではAIを使った多くのサービスが動いていますが、今回はその中でも特にたくさんの機械学習モデルが動いている違反出品検知システムをモデルごとにマイクロサービス化したお話を紹介します。 メルカリで動いている違反出品検知システムとは メルカリには禁止されている出品物に記載しているように、出品していただくことのできない(例えば現金のような)アイテムが存在します。対象のアイテムが出品されてしまったときに、間違って購入されないようCS(カスタマーサポート)チームが監視しています。 AIチームでは、CSチー

    複数の機械学習モデルが動くシステムをモデルごとにマイクロサービス化したお話 | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/03/12
  • mercari.go #6を開催しました | メルカリエンジニアリング

    はじめに こんにちは、mercari.go オーガナイザーの@morikuniです。 2月25日にメルカリ主催のGo勉強会 mercari.go #6 を開催しました。 今回は、LT形式での発表を取り入れ、いろいろなテーマについて話しました! この記事では、各発表を簡単に紹介しようと思います。 JavaGo言語を比較した話 1つめのLTは @kentan による「JavaGo言語を比較した話」です。 並行処理やオブジェクト指向の考え方の違いなどを紹介しました。 YAMLをテストする 2つめのセッションは @babarot による「YAMLをテストする」です。 Policy as Codeという考え方や、自作のSteinというYAMLのバリデーションを行うことができるツールを紹介しました。 speakerdeck.com sliceのコピーで起きた不思議な話 3つめのセッションは @t-

    mercari.go #6を開催しました | メルカリエンジニアリング
    ktykogm
    ktykogm 2019/03/01
  • 回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog

    メルカリバックエンドエンジニアの@yagi5です。 Mercari Advent Calendar 2018の23日目を担当します。 モノリシックなシステムは、障害が発生するとシステムが全停止してしまうことが一般的です。 しかし、Microservicesアーキテクチャでは様々なテクニックを用いて、サービス全体が停止するような障害に対処することができます。 この記事では、Microservicesにおけるシステムの回復性を高めるための技術について書いていきます。 回復性とは、障害が起こらないことを意味しません。 高い回復性を備えたシステムは、障害が発生するということを前提に、システム全体のダウンを避け、データのロスが回避されるように設計されています。 Microservicesの世界では、システムは自律的に動作する複数のサブシステムによって構成されます。 ひとつのサービスに障害が発生しても

    回復性の高いMicroservicesアーキテクチャを支える技術 - Mercari Engineering Blog
    ktykogm
    ktykogm 2019/01/06
  • Microservicesにジョインするには知らない技術が多すぎたので一通り触ってみた話 - Mercari Engineering Blog

    Mercari Advent Calendar 2018 の2日目はCrossUXチームの@mkazutaka(twitterは@makazutaka)がお送りします 昨日のアドベントカレンダーに@stanakaさんが取り上げているようにメルカリではMicroservices化に向けて開発が進んでおります。その流れに乗るように前QまでPHPを使って開発していた自分も今QからMicroservicesで実現されているサービスでの開発を行っております メルカリではMicroservicesの実現にあたってGoogleCloudPlatform(GCP)、TerraformDockerKubernetes、Halyard、gRPCGoといったさまざまなサービスからフレームワーク、言語を利用しています メルカリでのMicroservices上での開発をする以上、これらに対して多少なりとも理解

    Microservicesにジョインするには知らない技術が多すぎたので一通り触ってみた話 - Mercari Engineering Blog
    ktykogm
    ktykogm 2018/12/02