ISUCON5本選で3位(+特別賞)でした

ISUCON5本選に@kazeburo、@shmorimo、@cubicdaiyaの3人でチーム「GoBold」として参加して3位になりました。また、合わせて運営が定めたスコア(100,000点)に最も早く到達したチームにもらえる特別賞ももらいました。

開始3時間ちょいで10,0000点に到達し、とても順調なスタートを切ることができましたが、ここから思うようにスコアを伸ばすことが出来ず最終スコアは89,254点でした。

続きを読む

Goオールスターズ

f:id:cubicdaiya:20151011123101j:plain

先日dots.で開催されたGoオールスターズというイベントで発表してきました。

スライドはこちら。

speakerdeck.com

内容はこれまでのイベントで話した内容と被ってるところありますが、インフラにおけるソフトウェアエンジニアとしてGoをどのように捉えて利用しているかという観点からお話をしました。これは普段僕がスライド中の自己紹介欄で自分の立ち位置を「Software Engineer in Infrastructure Engineering」という風に表現していることについてもう少し踏み込んで解説しているということでもあります。

このあたりについてはまた今度詳しく書いたりできるといいなと思っています。

PHPカンファレンス2015でメルカリのエンジニアリングについて発表してきました

2015年10月3日に開催されたPHPカンファレンス2015で「フリマアプリ「メルカリ」の急成長を支えるエンジニアリング」というタイトルで発表してきました。

フリマアプリ「メルカリ」の急成長を支えるエンジニアリング

speakerdeck.com

内容的には昨年の9月に自分が入社してからの1年の間に行ってきたメルカリの様々なシステムの基盤作りに関する取り組みを中心にまとめたものになっています。

bokko.hatenablog.com

これらの取り組みはもちろんすべて自分一人でやったわけではなく、同僚のエンジニア達と共同で取り組んで達成してきた成果でもあります。例えば、発表資料の中で言及しているデプロイの仕組みの構築にはインフラチームのメンバー全員(4人)の手が入っています。

デプロイの自動化およびゼロダウンタイム化への道

メルカリで本番にアプリーケーションをデプロイするにはリリース時刻になったらSlackに現れるデプロイ用のBotに対して yes と答えるだけです。

非常にシンプルですが、一般にシンプルで利用しやすいシステムの裏側では多くの抽象化が行われているため、得てして複雑になる傾向があります。(一方で使いにくいシステムの裏側は思いのほか単純だったりします)

その例に漏れず、メルカリのデプロイの仕組みもそれなりに複雑で多くの要素から構成されています。

  • デプロイ用のAnsibleプレイブック
  • リリース作業者とのやりとり、リリースに関するチケットやPRのチェック、masterへのマージ、デプロイを行うBot(Node.js製)
  • RedmineのチケットからBotに伝えるリリース内容を自動生成するブックマークレット
  • ngx_dynamic_upstreamでゼロダウンデプロイを実現するためのユーティリティ (mercari_app_ctl, mercari_app_rsync)

で、今のデプロイの仕組みを構築するにあたって自分がやったのはGWの半分とその後の約1週間を使ってngx_dynamic_upstreamを作った、ということだけです。実際にゼロダウンでデプロイするための仕組みの構築はほぼ@kazeburoさんが一晩でやってくれました。デプロイ用のプレイブックやBotもインフラチームの別のエンジニアの手によるものです。・・・あれ、俺仕事してなくね?

まとめ

という感じで今後もメルカリのインフラチームで強力なシステムの基盤作りに取り組んでいきます。