風が冷たいですねー。手袋必須です。
そんな中大変遅くなりましたが、vol.34 minne’s backsideのレポートをお送りいたします。
まず、minneとは、現在15万名の作家による169万点超の作品が販売・展示されている、国内No.1(※1) のCtoC(個人間取引)ハンドメイドマーケットで、このサイトを運営・開発をされているGMOペパボ様からお二人の開発者にお越しいただき、開発の裏側やインフラなどについてご講演いただきました。(※1 2015年9月28日時点)
最初に登壇いただいたのはGMOペパボ株式会社 minne事業部 プラットフォームチーム アドバンスドシニアエンジニア三宅 悠介さん@monochromegane に「15万人の作家を支えるサービス開発の裏側」についてお話しいただきました。
minneは福岡発のサービスとのこと。三宅さんが所属するプラットフォームチームは「アタリマエをアタリマエ」にということを大切にしていて、各メンバーが当事者意識を持つことを大事にされているそうです。
キックオフミーティングはチームメンバー全員参加とし、タスクを振ることを目的とするのではなく、目的から話しをし議論を尽くすことを大切にされ、キックオフで話した目的を具体化するために、やり方をみんなで考え(これをBreak-downとよんでいるそうです)日々のやり取りは朝会で共有されているそうです。
つづいて基盤のお話しでは、「サービスの『規模を意識させない』こと」がポイントとのこと。たくさんサーバがあるからデプロイが億劫になるというようなことを避けるため、infrastracture as codeを進めており、Puppet Packer Serverspecを採用されているそうです。このようなツールを活用してデプロイの規模を意識しないようにされているそうです。
難しい問題を解決するときに、小さな問題を切り出して解決することにより、当初2,662行だったminneですが、毎年3,000行程度増えていっているそうで、これをどれだけシンプルに保つかを考えているそうです。
またminneではrailsを使っているそうですが、バージョンアップに追従し、各新フィーチャーは積極的に利用されているそうです。
さらにマイクロサービスについてもお話しいただきました。一つ目は検索エンジン。早い段階からデータ量の増加が予見されたので、Solrを利用していましたが、ある時点から時間がかかりすぎるために、運用しながらインデキシングすることができなくなり、差分インデキシングすることで3分程度で反映されえるようになったとのこと。
作品画像のサイズ変換もマイクロサービスとして開発されており、GMOペパボのメンバーさんが開発したOKARAを使っているそうです。次にCIですが、高速デプロイをするためにはCIを高速化する必要があり、並列実行などを試してみたが、マルチスレッド環境で落ちるテストがでたりと逆に手がかかったため、dockerを使いマルチコンテナでCIをするようにされたとのこと。社内にOSS版Droneのサーバを立てて、Docker in Dockerの構成で並列実行し、27分かかっていたテストが8分ほどで終わるようになったそうです。またレビューを小さく保つために構文チェックもCIでやるようにし、Rubocopを使っているそうです。
今後の課題はプロジェクトの大規模化や業務ロジックの複雑化への対応とのことで、スクラムであったりDDDについてトライされているそうです。ペパボテックブログ
続いては、GMOペパボ株式会社 技術基盤チーム アドバンスドシニア 近藤 宇智朗 さん@udzura に「minneで学ぶクラウド脳なインフラ」についてお話しいただきました。。普段はfukuoka.rbやrails girls fukuokaで活動されていて、最近nishitetsu.rbという飲みサーを初められたそうです。
S3互換のオブジェクトストレージBaytを自社で実装されており、「クラウド脳とは何か?」それはサーバを資産ではなく、計算するための装置つまりコンピュートへ捉え直す事。HTTPはステートレスなので、ちゃんと設計すればどのサーバがリクエストを受けても問題なく、スケールアウト出来るとのこと。大事なのはどこがストレージでどこがコンピューとか判断すること。どこがスケール出来るか見定めることとのことです。発表資料はこちら
この後、質問もいくつか出てきて、みなさんふかーいお話が伺えたのではないでしょうか。
そして、いつものLTは、あっという間に枠がうまる盛況ぶり。いつもお越しいただく方から、初めての方とバラエティに富んでいておもしろかったです。
◆石狩DCに行ってきた話/Nakamura Shingoさん
◆Lisp,scheme勉強会をやりませんか︖/Kuwamura Hiroyukiさん
◆https://github.com/takeswim/socketio_echoback_test / TEKEHARA Shiroさん
◆今年入学した一年生が生意気にLTしてみた/Aki(Freddi)さん
◆docker + API Gateway + LambdaでサーバレスなCMSサービスairy/yasunaga takeshiさん
(左上から、Nakamuraさん、左中Kuwamuraさん、左下TAKEHARAさん、右上@goking 右下yasunagaさん。Akiさん、写真がなくてごめんなさい…)