Mercari Engineering Blog

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

次世代Continuous DeliveryプラットフォームであるSpinnakerを体験してみよう!

Mercari Advent Calendar 2017 の17日目は SET(Software Engineer in Test)チームの @masudak がお送りします。

Spinnakerの登場

みなさんの会社では、どうやってサービスのデプロイを行っていますでしょうか。手で温かみのある配布しているという方もいるかもしれませんし、scp/rsyncでデプロイ、シンボリックリンクを駆使してデプロイ、botを使ってデプロイなど、色々な方法があるでしょう。

@deeeetが tech.mercari.com

に書いたように弊社ではマイクロサービスのデプロイを少しずつSpinnakerに寄せています。

RED/BLACKデプロイや、承認フローの追加、カオスモンキーなど数多くのマイクロサービスを、共通の基盤を使ってコントロールすることができるようになります。

この記事ではSpinnakerの構築を可能な限り分かりやすく、ハンズオン形式で覚えられるようかなり平易な内容で書いてみました。 環境はGCPですが、それ以外の環境でも極力自力でできるよう必要な概念を説明するようにしています。

また本文中では、Kubernetesをk8sと省略しています。ご了承ください。

是非実際手を動かして覚えて頂き、活用した結果をコミュニティに還元して頂ければと思います。

では、行きます。

インスタンスを用意

まず、 Ubuntu 14.04 のインスタンスを一台用意してください。Dockerイメージもあるのですが、gcloudツールを別途入れたりしないといけなくて面倒なので、普通に Ubuntu 14.04 を使うことをオススメします。

その際、サービスアカウントには Allow full access to all Cloud APIs を選択してください。

もちろん、 https://www.spinnaker.io/setup/install/halyard/ に従い、Dockerイメージなども使うことは可能ですので、その場合は上記ドキュメントをご参照ください。また、Macで動かすこともできるのですが、8〜9GB求められたという噂も聞いたので、その辺もお気をつけください。

続きを読む

メルカリチャンネルにおけるFirebaseの利用例

Mercari Advent Calendar 2017 の16日目は@sota1235がお届けします。

この記事では私のチームが開発しているメルカリチャンネルでFirebase Realtime Databaseを使うにあたり行っている工夫をご紹介します。

同じ文脈の話を今年のPHPカンファレンスでも発表したのですが、この記事ではその時お話できなかったもう少し細かい工夫を4つ紹介したいと思います。

続きを読む

たのしいリアルISUCON

Mercari Advent Calendar 2017 の15日目は id:koemu こと斎藤が担当します。

こんにちは。私は、サーバサイドのソフトウェアエンジニアとして、過去はメルカリ 米国版の開発、現在は日本版の開発に携わっています。

サーバサイドのソフトウェアエンジニアにとって、サービスの成長に伴うサーバの負荷との戦いは切っても切れない存在であると、私は考えています。初めから想定できる問題もあれば、サービスが成長して初めて明るみになる問題もあります。成長痛と言ってもいいかもしれません。

今日は、私が当社で働いていて携わった、サーバサイドのプログラムのパフォーマンスに関わる事象について、「Slave DBへの要求を memcached に向けていく」「PHP からサブシステムを呼び出そうとするときの工夫」そして「array_merge()の失敗談」の3点をピックアップして紹介します。

続きを読む

出社したら自動でSlackに通知する

Mercari Advent Calendar 2017 の14日目は SRE チームの @masartz がお送りします。

前提

メルカリのSREチームでは当番体制を敷いており、平日は他のチームメンバーが出社するまで自宅待機しています。
出社したメンバーは当番にその旨を連絡します。こんな感じです。

f:id:masartz:20171211114057p:plain

とはいえ、時には連絡を忘れてしまう事もあります。人間だもの。
そんな時には当番が自宅に張り付きになってしまいます。

f:id:masartz:20171211114109p:plain

人間なので忘れることは仕方ないです。 人間が頑張らずに解決できると良いので、今回のお話です。

狙うところとしては、 出社したら勝手に当番に連絡される です。 それぞれ分解して実現方法を検討します。

続きを読む

モバイル開発に役立つJSデバッグ術

Mercari Advent Calendar 2017 13日目は フロントエンドチームの @sottar が web アプリの開発(特にモバイル開発)で役立つ Chrome DevTools の便利な機能を紹介します。

はじめに

メルカリでは PC からのアクセスよりもモバイルからのアクセスが多いため、web アプリもモバイルからのアクセスを意識したコードを書く必要があります。
しかしモバイル向けのコードを書く際に、毎回実機を接続して確認するのは面倒です。そこで最近のブラウザに付属している開発者ツールにはモバイル向けのコンテンツの開発に役立つ機能が搭載されているため、その機能を使いこなすことでモバイル向けの開発をしつつ、開発のスピードを上げる事が可能です。
そこで本日は Chrome DevTools 内にある、特にモバイルデバイス向けのコンテンツ開発に役立つ機能を紹介します。

続きを読む