Mercari Engineering Blog

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

nginxによるTCPロードバランサー

SREチームの@cubicdaiyaです。今回はnginxによるTCPレイヤーでのロードバランスについて解説します。 ロードバランサーとしてのnginx nginxはHTTPやTCP、UDP等の複数のレイヤーでロードバランサーとして稼働させることができます。(TCPロードバランサーは1.…

DockerとMakeを利用したRPMパッケージのビルド環境

SREチームの@cubicdaiyaです。今回はDockerとMakeを利用したメルカリの自作RPMパッケージのビルド環境について紹介します。 メルカリの自作RPMパッケージ事情とVagrant、そしてDocker メルカリの開発およびプロダクション環境では現在CentOS6と7を利用してお…

PHPカンファレンス関西2016で基調講演してきました

サーバーサイドエンジニアの@Hirakuです。 2016年7月16日(土)、 PHPカンファレンス関西2016 にて基調講演をしてきましたので、その報告と補足をします。 トーク動画は後日公開されると聞いていますので、口頭で補足した内容などはそちらをご期待ください。 …

プログラマーの三大美徳

SREチームの@shmorimoです。今日はプログラマーの三大美徳についてお話したいと思います。 プログラマーの三大美徳 みなさんはプログラマーの三大美徳ってご存知ですか? プログラミング言語Perlの作者である Larry Wall が↓で述べたのが最初とされています。…

WEB+DB PRESS Vol.93にてメルカリSREチームによる大規模インフラ運用の連載第2回が掲載されます

弊社SREチームで連載しているWEB+DB PRESSの記事第2回が2016年6月24日(金) 発売のVol.93 に掲載されます。データベースのスケーリングについてご紹介します。

3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜

SREチームの@cubicdaiyaです。今回はメルカリで利用実績のある以下の3つのnginxの使い分けに紹介します。 nginx OpenResty Tengine nginxとメルカリ 本ブログや過去のイベントでも何度か紹介していますが、メルカリではパフォーマンスやスケーラビリティが要…

PHPカンファレンス福岡2016で「Guzzle Promiseを使った
非同期処理によるAPIコールの高速化」という発表をしてきました

初めまして、@suzukiです。2016年の1月からメルカリのサーバサイド・エンジニアとして働いていて、今は主にPHPを書いています。ときどきJavaScriptが書きたくなるので、最近は個人活動としてCrowiへpull requestを投げたりもしています。 発表した内容につい…

Google I/O 2016 現地レポート+モバイル系エンジニアが今すぐ試すべき注目技術まとめ

こんにちは、Androidチームの @tomoaki_imaiです!今回はシリコンバレーにて5/18 - 5/20の3日間開催された、Google I/O 2016についてレポートします。またGoogle I/Oにて発表された内容から、モバイル系エンジニアがすぐ試すべき注目技術についてもまとめま…

USのiOSアプリでApple Payに対応した話

iOS

iOSエンジニアの@kitasukeです。 USのアプリでApple Payに対応したので、その実装方法やその中で得た知見について紹介します。 背景 USではApple Payに対応しているアプリが徐々に増えています。また実店舗でも使えるところがあり、日常生活でApple Payを目…

自社カラーで Slack を染める

はじめまして。サーバサイドエンジニアの @b4b4r07 です。 今回は Slack を自社カラーで染めるというライトなお話です。最近 bot 開発などのプラットフォームとしても有名なチャットツールの Slack ですが、メルカリでも使用しております。過去に Slack 関連…

Gaurun Powered by HTTP/2

SREチームの@cubicdaiyaです。つい先日メルカリでOSSとして開発・公開しているスマホアプリ向けのプッシュ通知用ゲートウェイサーバであるGaurunがGCM、APNsともにHTTP/2を利用したプッシュ通知に対応したので紹介します。 github.com ちなみにロゴも出来ま…

Go Conference 2016 SpringでgRPCの現状について発表してきました

こんにちは、SREチームの @kazegusuri です。 2016年4月23日にGo Conference 2016 Springが開催されました。今回は参加者だけでなく発表希望者も多かったそうですが、メルカリからは自分が、ソウゾウからは @ttsuruokaが発表しました。そのときの発表資料を…

WEB+DB PRESS にてメルカリSREチームによる大規模インフラ運用の連載が始まります

SREチームの @kazeburo です。2016年4月23日(土曜日)に発売される WEB+DB PRESS Vol.92より、メルカリSREチームメンバーによる連載が開始されます。 gihyo.jp 連載1回目は @kazeburo が書かせていただきました。 連載タイトルは「大規模インフラ運用最前線 〜…

アッテの開発技術をお伝えする atte FeS【Go・Swift開発編】を開催しました

こんにちは、ソウゾウの @ttsuruoka です。 メルカリの子会社ソウゾウでは新規事業に取り組んでいます。今回「メルカリ アッテ」の開発技術について、これまでに得られた知見の一部をお話させていただく機会として atte FeS 【Go・Swift開発編】 を開催しま…

DroidCon San Franciscoに参加して感じたAndroid開発の今

こんにちは、Androidチームの@tomoaki_imaiです。1月よりメルカリUSオフィスに出向となり、サンフランシスコにて日々サービスを開発しております。慣れない生活の中、ぎっくり腰になったり銀行口座が凍結されたり色々ありますが元気にやっております。 さて…

メルカリのサンフランシスコオフィスで「SF日本人エンジニアの飲み会」を共催しました!

こんにちは、胡です。 ( 英語名はBocelli ) 先日告知いたしました、メルカリでの「SF日本人エンジニアの飲み会」のレポートをお届けします!

Widebullet〜API Gateway with JSON-RPC〜

SRE(Site Reliability Engineering)チームの@cubicdaiyaです。今年のはじめから開発しているWidebulletというシンプルなAPI Gatewayを紹介します。 Widebullet〜API Gateway with JSON-RPC〜 WidebulletはJSON-RPCをベースにしたシンプルなAPI Gatewayです。…

メルカリで「SF日本人エンジニアの飲み会」の共催をします / Meetup in San Francisco!

こんにちは sotarok です。 今日は US でのミートアップイベントについてお知らせします! 「SF日本人エンジニアの飲み会」 SF日本人エンジニアの飲み会は、現地にもう長く住んでいる方から出張でたまたま来ている方まで、様々な方が参加するコミュニティで…

try! Swiftで会いましょう!! #tryswiftconf

こんにちは!iOSエンジニアのishkawaです。 3/2から3/4にtry! Swiftが開催されますね。 もちろん、メルカリも協賛しています! try! Swiftは世界中のSwiftデベロッパーが集まるカンファレンスです。登壇者の多くが海外ゲストであり、RealmやSwiftLintなどを…

Androidについて語る! shinobu.apk #1 を開催しました! #shinobuapk

Androidエンジニアの@operandoOSです。 最近、JSONArrayのremoveメソッドがAPI Level 19以上でしか使えない現実に落胆しております。 http://developer.android.com/intl/ja/reference/org/json/JSONArray.html#remove(int) 先日、メルカリオフィスにて shin…

Gitのコミットハッシュ値は何を元にどうやって生成されているのか

Git

こんにちは。サーバサイドエンジニアの @DQNEO です。 前回の「Gitのつくりかた」に続いてGitのコアな部分のお話です。 Gitのコミットハッシュ値とは何か Gitを使っていると必ずコミットハッシュ値というものが出てきます。9e47c22みたいなアレです。 これは…

光遅い問題を克服してcomposerを10倍速くした話

はじめまして。サーバーサイドエンジニアの中野(@Hiraku)です。2015年12月からメルカリで働いています。 2016年1月27日(水)の第98回PHP勉強会@東京にて、composerを速くする取り組みについて発表をしてきました。 composerの遅さをまじめに考える #phpstudy …

サーバサイドWebアプリケーションエンジニアにとって必携の一冊。「nginx実践入門」が発売されます

SRE(Site Reliability Engineering)チームの@kazeburoです。 1/16(土)にSREチームの久保(@cubicdaiya)が執筆に参加した「nginx実践入門」が技術評論社から発売されるので、紹介します。 gihyo.jp 電子版も同時に発売されます。こちらもどうぞ gihyo.jp メル…

Slackへの通知をAttachmentsでわかりやすく...

Site Reliability Engineering Teamの@cubicdaiyaです。今回はSlackのライトなお話です。 SlackのAttachments SlackにはIncoming WebhooksやWeb APIでメッセージを投稿する際、ペイロードにAttachementsと呼ばれる情報を含めることでメッセージを装飾できる…

fluent-agent-hydraで省エネログ転送

Site Reliability Engineering Teamの@cubicdaiyaです。 今回はGo製のログ転送エージェントであるfluent-agent-hydraとメルカリでの利用事例について紹介します。 メルカリとFluentd メルカリではAPIサーバのアクセスログやアプリケーション固有のログをはじ…

PHP BLT #1を開催しました。 #phpblt

サーバサイドエンジニアの@yui_tangです。 先日、メルカリオフィスにて PHP BLT #1を開催しました。 全員がLTで発表するというコンセプトのPHP周辺/Web/サーバサイド全般の勉強会 というコンセプトを打ち出した初回開催、どの程度応募が来るのか不安もありま…

ハイパフォーマンスngx_lua

Site Reliability Engineering(SRE) Teamの@cubicdaiyaです。 今回は数あるnginxのサードパーティモジュールの中でも一際強力で、メルカリでも活用しているngx_luaの便利な活用方法や最適化集について紹介します。 ngx_lua ngx_luaは軽量スクリプト言語のL…

インフラチーム改め Site Reliability Engineering (SRE) チームになりました

インフラチーム改めSite Reliability Engineering チームの @kazeburo です。この記事ではまだ馴染みの薄い Site Reliability Engineer とは何かについて紹介したいと思います。 SREとGoogleのSRE Site Reliability Engineerは日本語にすると「サイト信頼性…

Consulを利用したTLSセッションチケットの自動更新

Site Reliability Engineering Team(通称SRE)の@cubicdaiyaです。最近チーム名が変わりました。 今回はConsulを利用して複数台のnginxサーバのTLSセッションチケットを自動更新する仕組みについて紹介します。 TLSセッションチケット TLSセッションチケッ…

大人のスタートアップは大人のリリースができる。そう、ChatOpsならね。

このブログをご覧のみなさま初めまして。@siroken3です。メルカリではインフラチームに所属しており、リリースの仕組み構築を担当しています。 メルカリのリリースについて メルカリではカスタマーサポートから受け取る改善要望、プロダクトとしてまだやれて…

PHPカンファレンス2015 で会いましょう!! #phpcon2015

こんにちは @sotarok です。 今週末 10/3(土) は、PHPカンファレンス2015 です。 PHPカンファレンスは年に1度開催される、日本最大のPHPの祭典です。 今年のテーマは、まもなくリリースされる (11年ぶりのメジャーバージョンアップ!) の PHP 7 にちなんで "7…

Gitのつくりかた

Git

はじめまして。サーバサイドエンジニアの @DQNEO です。 今日はGitのつくりかたをご紹介します。 C言語学習教材としてのGit Gitと同じものをゼロから作って何の意味があるのか?と思いますよね。 私がこの再発明をやり始めた動機は「C言語を書けるようになり…

Pascal〜Puree + ngx_lua + Fluentd + BigQueryでつくるメルカリのログ分析基盤〜

エンジニアではなくプログラマと呼ばれたい@cubicdaiyaです。今回はメルカリのログ分析基盤のお話です。 メルカリにおけるログデータ分析 メルカリでは初期の頃からログデータの分析をサービスの成長にとって重要なタスクとして位置づけ、そのための基盤作り…

nginx-build〜nginxのビルドプロセスを自動化〜

インフラチームの@cubicdaiyaです。今回はnginxのビルドプロセスを自動化するツールであるnginx-buildについて紹介します。 メルカリとnginx メルカリでは多数のnginxを活用し、高速なレスポンスやサービスの安定稼働を実現するのに重要な役割を果たしていま…

WEB+DB PRESS Vol.88 にメルカリのデータベース設計の記事を書きました

2015年8月22日発売のWEB+DB PRESS Vol.88 にメルカリのデータベース設計、運用に関する特集記事をインフラチームの@cubicdaiya、@siroken3、@kazeburoの3人で書かせて頂きました。 WEB+DB PRESS Vol.88gihyo.jp 特集のタイトルは「実戦データベース設計 サー…

YAPC::Asia Tokyo 2015 で会いましょう!!

こんにちは! メルカリでインフラを担当しております @kazeburo です。 YAPC::Asia Tokyo 2015 の開催まで1週間とちょっととなりました。メルカリからは私も含め2名が登壇しますので、このエントリーでセッションの紹介をさせてください。 実践nginxモジュー…

nginxとGoでつくるメルカリのプッシュ通知システム

原稿の締め切りを越えた先にあるもの、それは校正です。「俺達の戦いはこれからだ!」的な展開に胸が熱く・・・いえ、ちょっと胃のあたりがチクチクする@cubicdaiyaです。 今回はメルカリのプッシュ通知システムとその変遷について紹介します。 メルカリとプ…

Androidクライアントアプリのデバッグ機能

こんにちは, Androidチームの @tomoaki_imai です。 先日 shibuya.apk というAndroid勉強会で メルカリのデバッグ機能についてお話をさせていただきました。スライドはこちらです。 Developing better debug_components from Tomoaki Imai www.slideshare.ne…

Google Developer Ecosystem Feedback Summitに参加してきました

はじめまして。Androidエンジニアの@tomoaki_imaiです。 7/13 - 7/14 にシリコンバレーにあるGoogle本社にてGoogle Developer Ecosystem Feedback Summitというイベントに招待されたので、その参加レポートを書きます。

cachectld〜無駄なページキャッシュの削除を自動化〜

Go

原稿の執筆が一段落して心に余裕が出てきた@cubicdaiyaです。 今回はサーバを運用しているとありがちなページキャッシュに関する問題とメルカリのアプローチについて解説します。 Fluentdによるログ転送 話は変わりますが、メルカリの各サーバ上ではプログラ…

iOSアプリのリリースフロー自動化ツールfastlaneのmeetupに通訳で参加しました

iOSエンジニアの@kitasukeです。 2015年6月26日にヤフー株式会社様にてfastlane meetupが開催されました。 fastlaneとはiOSアプリにおけるリリース作業の自動化統合ツールです。 開発者のFelix Krauseさんが来日されていたので開催されることになりました。 …

Slackプロキシサーバ〜slackboard〜を利用したメルカリのSlack活用法

最近原稿の締め切りが追いかけてくる夢をよく見る@cubicdaiyaです。今回はその逃避の一環として定番のチャットツールであるSlackのメルカリでの活用法について紹介します。 メルカリでのSlack活用 多くのエンジニア組織がそうであるようにメルカリではSlack…

メルカリの「エンジニアブログ」はじめました

はじめまして。1エントリ目を書くことになった id:sotarok です。光栄です。 メルカリは、2013年7月にリリースされて現在急成長中のフリマアプリで、今週2周年を迎えます。 ダウンロード数1500万ということで多くのユーザーに利用していただいていて、サービ…