Mercari Engineering Blog

We're the software engineers behind Mercari. Check out our blog to see the tech that powers our marketplace.

Google Cloud Functionsを使ってSlackで簡単にCDN上のキャッシュを消せるようにする話

この記事は、 Mercari Bold Challenge Monthの最終日の記事です。

SREチームの@catatsuyです。

メルカリでは様々な用途でCDNを使っています。基本的にCDN経由で静的ファイルを配信する場合、CDNからはオリジンからのキャッシュを表示するように設定しています。 しかしキャッシュからデータを削除したいこともあります。例えば古いファイルが配信されているので更新したいなどの理由です。

こうしたCDNのキャッシュからの削除依頼は日々様々なチームで発生します。しかしCDNのキャッシュを削除するにはAPIトークンが必要だったり、管理画面にログインする必要があったりするので知識と権限が必要になります。CDNの知識がなくても社内の人なら簡単に削除できる仕組みが欲しいところです。

そこで弊社では以下のようにSlackで簡単にCDN上のキャッシュを削除できるようにしています。今回はその仕組みの紹介です。

f:id:catatsuy:20190918201158p:plain
SlackでCDN上のキャッシュを削除している様子

続きを読む

Microservices と会計システム

この記事は、 Mercari Bold Challenge Month の18日目の記事です。

こんにちは。メルカリで Product Manager として働いている津田と申します。私は社内で「会計システム」と呼ばれる、会社が運営するサービスに付随して発生した債権債務の増減を記録・集計するシステムを開発するチームで働いています。

続きを読む

エキスパートチームによるSwiftコミュニティへの取り組み

この記事は、 Mercari Bold Challenge Monthの17日目の記事です。

こんにちは、エキスパートチームの@kitasukeです。 今回はメルペイのエキスパートチームが、Swiftコミュニティに向けてどんな活動をしているか紹介します。

エキスパートチームについて

メルペイでは「技術をアウトプットするところに技術は集まる」という思いから、 稼働の50%以上を技術コミュニティへの貢献や技術の普及に取り組むエキスパートチームが存在します。

現在、チームは3人で構成されており、Go/GCPであればGo Conferencegolang.tokyoなどを運営している@tenntenn、 AndroidであればDroidKaigi技術書典などを運営する@mhidaka、SwiftであればSwiftcKaigiわいわいswiftcなどを運営している@kitasukeという役割分担をしています。

エキスパートチームのミッションや役割については下記の記事を参照してください。

tech.mercari.com

エキスパートチームは創設されてから2,3年間は上記の2人で活動していたので、Swift担当の自分が待望の3人目です! エキスパートチームに異動する前は、メルカリUSチームでクライアント・バックエンドの実装や、テックリード・エンジニアリングマネージャーを担当しました。当時は組織の生産性を仕組みや運用で向上させましたが、それより技術的なアプローチの方がエンジニアリングにおいても効果を発揮できるチャレンジなのではと思いエキスパートチームに異動しました。

続きを読む

決済システムのマイクロサービス化に伴うデータ移行について

この記事は、 Mercari Bold Challenge Monthの16日目の記事です。

こんにちは。株式会社メルペイのPayment Platform teamに所属している @ogataka50 です。

メルペイではマイクロサービスアーキテクチャで決済システムを開発、運用をしています。

メルペイはNFC決済・QR/バーコード決済・ネット決済を提供しています。それらに加えて、メルカリ内決済のコンビニ/ATM払い、キャリア決済、クレジットカード決済等も提供しています。 メルペイの決済システムはメルカリの決済システムをマイクロサービスとして切り出されたのが始まりになっています。

メルペイはアプリとしては2019年2月13日にサービスリリースしましたが、システム的にはその少し前からメルカリ内の決済機能をマイクロサービス化するため先にリリースされていました。 今回はメルペイリリース前に行われた、決済システムマイクロサービス化、特にそれに伴うデータ移行の話を書こうと思います。

これを実現するために色々あった…

続きを読む

Automation/karakuri for increasing engineering productivity

This is the 15th post for Mercari Bold Challenge Month.

Hi, I’m @celia, an iOS Engineer working at Merpay. In this article, I want to share about how we use automation to increase the team’s productivity. We use tools like fastlane and appium for automated tests, but that's a topic for another blog post. Today I want to introduce how our automation infrastructure allows engineers to implement features that help the team to be more productive, and automates repetitive manual tasks. Mercari’s engineering culture encourages us to take ownership, automate routine tasks and create tools to keep the team’s daily operation running smoothly (If you want to learn more, see this, and this blog post). Hope by the end of this article, you will gain a broader understanding of automation, and maybe play with your own toolkit a bit more.

Firstly, I will give you a quick introduction on the tools and platforms we use and how it’s all connected. Next I will talk about how I created karakuri to improve the team’s productivity. The first one is a slackbot feature that helps the team to pick up code reviews faster. The second one is a command that automates the integration between merpay and mercari iOS codebase, that saves us from doing repetitive manual work.

Introducing mobile team infrastructure

Our infrastructure is made up of four main components:

  • Automation: Tasks triggered by github webhook, scheduled (cron) tasks
  • Bot: Tasks triggered by slackbot command, such as running tests, deployment, release, and integration
  • CI: Bitrise, CircleCI
  • Data: Unit test coverage, test running time, CI success rates
続きを読む