メルカリに入社して1年経った

昨年の秋にメルカリに入社してから1年経った。今となってはこういう時ぐらいしかブログ書かないだろうし、 せっかくなので入社後1年間でやってきたことをざっくばらんにまとめてみる。

Ansibleのplaybookを書き続ける日々

メルカリで一番書いた量が多いのはYAML・・・もといAnsibleのplaybookだ。二番目がnginx.conf、三番目がtd-agent.confだ・・・多分。以下はplaybookのコミットグラフ。

f:id:cubicdaiya:20150916100121p:plain

nginx

メルカリではnginxを多用している。以下その例。

なお、入社した日にはnginxのサーバはまだ1台もなくてちょうど隣の席のエンジニアが APIサーバ群のためのL7ロードバランサーとしてnginxを投入しようとしているところだった。 現在は至る所でnginxが稼働している。

Go

メルカリの主要言語は今でもPHPだが、インフラチームではGoやNode.js、Perlも利用している。 Goは主に自分が書いていて最近書く人が一人増えた。この1年でメルカリのプロダクションに投入したGoプログラムでOSSのものを列挙してみる。

エンジニアブログで実際の活用事例について書いている。

tech.mercari.com tech.mercari.com tech.mercari.com tech.mercari.com

あと、最近だとPHPのジョブワーカーの一部をGoで書き直すプロジェクトが進行している。

ゼロダウンタイムデプロイの実現

よく知られているようにダウンタイムなしでWebアプリケーションをデプロイするのは意外と面倒で難しい。 メルカリのデプロイはただのrsyncだが、各サーバへのrsyncの前後でngx_dynamic_upstreamを利用して rsync対象のサーバをロードバランサーから動的に取り外しおよび復帰させることでダウンタイムなしでデプロイできるようにした。

qiita.com

ちなみに実際の仕組みの導入自体はほぼ@kazeburoさんがやった。 そのうちMercari Engineering Blogで取り上げられるかもしれない。

ログ分析基盤

メルカリではログ転送にFluentdを利用していてこのあたりも今は自分がメインでやってる。 メルカリに入社する以前は本格的にFluentdを利用したことがなかったので結構苦労したけど、大分慣れてきて今は自分でプラグインを書いたりもしている。 先月は社内用のOutputプラグインをFilterプラグインで書き換えて遊んでいたチューニングしていた。

また、社内でPascalと呼ばれているログ分析基盤の構築と運用もやってる。

tech.mercari.com

フロントエンドはngx_luaで開発している。

PHP5.3から5.6への移行

メルカリのAPIサーバはPHPで書かれている。長らく5.3を使っていたが今年になってようやく5.6に移行した。 某イラストSNSのインフラチームにいた頃にPHP5.2 -> 5.3 -> 5.5と2回大きなアップデートをメインで担当したので実務でのPHPの大型アップデートはこれで3回目になる。

来年は多分PHP7の作業が待っている。

会社の技術広報活動

メルカリではエンジニアを絶賛募集中なので宣伝も兼ねて各所でスピーカーとして登壇した。

まとめ

昨年は色々とあって辛い時期もあったけど、今は元気です。あと重要なことなのでもう一度言うとメルカリではエンジニアを絶賛募集中です。

採用情報 | 株式会社メルカリ