• 日本語
  • English
  • 中文
MENU
CREATE A PLATFORM FOR DIVERSITY
Web, Game, App, Illustration
https://monstar-lab.com/
Blog
2017/04/25
海外4か国+日本の自社拠点全部つないで、10か国籍メンバーで社内ISUCON(M-CON1)をやってみた

アイキャッチ

こんにちは、モンスター・ラボ デジタル・パートナー事業部 テクノロジストの岸田です!普段はサーバサイドをメインに設計・実装や、海外拠点とのブリッジ業務をしています。

グローバルソーシングを展開する弊社は3月23日、4ヵ国7拠点(東京・島根・大阪・成都・ダナン・ハノイ・ダッカ)からエンジニアが参加する社内ISUCON(M-CON1)を開催しました。

今回のチームは全て日本+海外拠点の混合メンバーで、国境をまたいだチーム編成になるようグループ分けがされており、技術力と拠点間のコミュニケーション力(リモートワーク力)の向上が試される場となりました。
結論から言うと、とても面白かったです。そもそもM-CONって何なのか、どういうチームメンバーでチューニング中に何が起こったのか?そして社内外からどのような反応・フィードバックがあったかをまとめてみました。

■M-CONってなに?

M-CONとは、モンスターラボ版のISUCONのこと。ISUCONとは、Iikanjini Speed Up Contestの略で、

お題となるWebサービスを、決められたレギュレーションの中で限界まで高速化を図るチューニングバトル

です。引用:ISUCON公式ブログ

お題となるWebアプリケーションはPHP, Go, Ruby, Node.js, PythonとJavaで実装されているものを準備しました。PHP, Go, Ruby, Node.jsはpixiv株式会社さんが公開している社内ISUCON用のコードを利用させていただき、Javaは参考実装を社内で作りました。(pixivさん、ありがとうございます!!)

■社内ISUCONの参加者とチーム構成

参加拠点、メンバー写真

日本(東京、島根、大阪、富山、鹿児島)、ベトナム(ハノイ・ダナン)、バングラデシュ(ダッカ)、中国(成都)から、サーバサイドエンジニアに限らず、フロントエンド・モバイルのエンジニアであるベトナム人、バングラデシュ人、セネガル人、キプロス人、中国人、日本人メンバー総勢35人が参加しました。

海外拠点メンバー2~4人 + 日本拠点メンバー1,2人と、原則日本人がチームに入るように構成して、開催前日に発表しました。普段の業務にも活きるようにグローバルソーシングを意識したチーム構成としました。
色々な国・バックグラウンドのメンバーを巻き込んだ社内ISUCONは国内だと当社が初だ!と自負しています。(たぶん)

チーム構成表

開催に向けて準備中、「海外拠点のメンバーはあまり乗り気じゃない。」みたいな話も出ていたので不安になったりも…
ISUCON準備中のやり取り
※ATとは…弊社ダナン開発拠点(Asian Tech)のこと

■M-CONの実際の様子

開催前日

参加者にチームを発表しました。各チームのSlack channelを用意し、さっそくそこでチーム名決めと、アイスブレイクが始まりました。
普段から一緒に仕事をしているメンバーでない構成のチームが多かったため、「俺はこれが得意だ!」「言語は何を使う?」「コミュニケーションは何語でとる?」「どんな役割分担をする?」など活発なコミュニケーションが取られていました。

チーム名を決めるときのやり取り

筆者はこれを見て1人で笑ってました。

チーム名を決めるときのやり取り

開催当日

Zoomで全拠点、全参加メンバーをつなぎ、オープニングを行い約7時間の戦いが幕をあげました。
開会式はZoomで

当日コメント

M-CON開始

多くのチームが、最初の1時間をコミュニケーションに費やしていました。やはり普段一緒に仕事をしているメンバーではないため、進め方やコード管理方法、誰がどのパートを担当するかなどの取り決めに時間がかかっていた様子です。

ちなみにコミュニケーションはSlackとZoom, appear.inなどで行っていました。

__開始直後のスコア__
初期スコア

混戦。というかあんまりスコアが上がってない模様。

やりとりのひとこま2

やりとりのひとこま1

やりとりのひとこま

__開始1時間後のスコア__
開始一時間後のスコア

唐突に落ちるバングラデシュのネットワーク

bangladesh down

__2チームが頭1つ抜き出る!__
中盤戦(2チームが急激にスコアを伸ばした瞬間)

M-CON中盤戦

参加者以外のメンバーも注目し、拠点全体で盛り上がってきました!
ハノイ拠点(総出…?)
LTT

バングラデシュ拠点
バングラデシュ拠点

ダナン拠点(誰が参加者かわかんない)
ダナン拠点(どれが参加者かわかんない)

スコアも徐々に変化してきて、日本拠点でも話題になって注目されてきました。
コメント
コメント

M-CON終盤戦

__残1時間。各チームの熾烈な追い上げ。__
残一時間

M-CON終了

__長い長い9時間の戦いの結果…__
終了時スコア

優勝

チーム名の通りPHPを使っていた、ハノイ×日本のLTT-PHP-1が優勝となりました。
参加メンバー以外も一緒になって歓声をあげてました。

歓喜の瞬間

優勝チーム

どうやってスコアをあげたのか?

優勝チーム、LTT-PHP-1はこんなことをやっていました。
1. Moving MySQL temporary directory to tmpfs
2. Analyze slow queries
3. Indexing
4. Remove In clause
5. Remove N+1 queries
6. Cached for user table and session
7. Implement limit query when select posts (20 per page)
8. Remove Select * queries
9. Analyze access log
10. Re-configuration Nginx
11. Static files
12. Cached frequently data
13. Move store images in blob data to file system (not completed with old data)

Slackでは各チーム、「あとこれもやろう」、「こういうのはどう?」とまだまだやることがあったように見えました。

リモート開発には特にコミュニケーションが大事ということで、Slackでのコメント数を各チームのchannelで計測し、もっともコメント数が多かったSilverWolfにも特別賞が送られました。
このチームはSlackでのコミュニケーションに加えて、appear.inで常時接続してコミュニケーションをとっていたようです。

コミュニケーションの計測
ちなみに集計にはAWS lambdaとdynamoDBを使っていました。

閉会

開会式同様、閉会式もZoomで。

閉会式

東京拠点の参加者と各拠点メンバーとの集合写真を一枚。

閉会式_集合写真

■社内外からあった質問

--スコア(結果)はどうだった?

参加したエンジニアが満足できるほどのスコアは出ませんでした。 ですが、普段一緒に仕事をしていない即席チームが多い中で、一定のスコアを出せたことはよかったです。
個人的には、Rebootしまくるチームや、途中でJavaからPHPに切り替えるチーム、いろいろあって興味深かったです。

--ぶっちゃけ盛り上がってないでしょ?

いや、めっちゃ盛り上がりました! そして社員の充実感も高いです!
終了後のSlack, Chatworkから抜粋
競技後1

競技後2

他にも各拠点から…

  • Today I joined M-CON1(Silver wolf). such an amazing day!
  • Thank all! it was awesome and fun!!!
  • LTT-PHP-1 congrats!! You guys really rocking it.
  • Good game well players. Congrats LTT team.
  • My pleasure to work with you all. Cheers!
  • などのように「参加してよかった」「楽しかった!」といったコメントが多かったです!

    --やった甲斐はあった?またやりたい?

    エンジニアへの教育的効果やモチベーションアップに貢献したと思います。
    パフォーマンスアップにフォーカスする機会を作れたので、Nginx, MySQLのチューニングやキャッシュの重要性を再認識したり、様々な気づきがあったり、もっと勉強したいという気持ちになったりしたように思います。

    準備・運営に関しても海外拠点を巻き込んで運営する際のフローなど、業務に活かせる気付きがたくさんありました。 今回のM-CON1をきっかけにいろいろな動き、拠点での運動(いい意味で)が出てきました。詳しくはM-CON1後日談で。

    --即席チームで大変だったのは?

    日本拠点のエンジニアからは”コミュニケーション”と”共同作業”が難しかったという声が多く出ました。
    海外拠点メンバーと日本拠点メンバーでチームを作りましたが、海外拠点メンバーは物理的に対面コミュニケーションができる状態だったので、認識や前提の違いからミスコミュニケーションが起こっていました。
    普段の業務ではワークフローを決めて認識齟齬が起きないように取り組みますが、ある程度の時間をかけて意思疎通が出来るチームと即席チームでは差があり、普段の業務とは異なって今回のM-CONでの作業を進めにくいと感じた社員がいました。

    日本側コメント

    日本側コメント

    Slackやミーティングをしていても、今回参加して損したと思っている人はいなくて、エンジニアとしてもっとやれたっていう悔しさが伺えます。

    --運営めちゃ大変じゃない?反省点は?

    運営が開催に向けて準備したことは以下です。
    – AWSアカウント作成
    – AWSインスタンス数上限 事前申請(いらなかった)
    – AWSキーペア作成
    – 競技用、ベンチマーク用インタンス作成(各チーム一つずつ)
    – 接続情報配布
    – slackチーム作成
    – slack招待
    – 募集締切後ハンズオンの連絡
    – チーム名を決めてもらう
    – Python組み込み
    – Java組み込み
    – オープニングムービー作成
    – 最終AMI作成 competition
    – 最終AMI作成 benchmarker

    運営側の反省点は、チーム発表を前日にしたことです。
    今回は1日で完結するコンテストなので、前日にチーム発表した結果、開催日当日にワークフロー決めを行うことになりました。別途ルール決めをする期間を設けたり、運営側である程度決めることで、開催日当日はチューニングに専念できるようにすべきだったと思っています。

    ■M-CON1後日談..

    --ダナン拠点ではさっそく勉強会に__

    M-CONでの学びを早速サーバーチーム勉強会で共有するらしい

    --中国成都でも

    Q. M-CON1に触発されて、始めた・始めることってある?
    A. Creating contests just like M-CON1 inside the branch to promote and motivate engineers.
    summarize all methods on optimizing the web app from all the team and share those internally.

    --日本拠点でも振り返り

    日本振り返り1

    日本振り返り2

    日本振り返り3

    日本振り返り4

    日本振り返り6

    その他日本拠点に在籍するの外国籍エンジニアからも…

    It was a really good way to improve yourself. If you have any basic skill problem then you have a chance to improve.
    Learned a lot actually. How to deal with a situation when you have to react fast and accurate that is a thing to learn. You can not learn it with one contest but if we have regular contest and practice then it would improve. The practice is more important than the contest itself. So, we should have more chance to practice which is doing contest in this case.

    といった発言がありました。

    --日本拠点で個人戦やるか?という話も

    日本拠点全員で個人戦とかどう?運営やった人も含めて全員で。
    ダナンではアジアンテック杯やるらしいよ。
    各国予選をやって代表が戦うとか。

    --もっとやりたいって声も

    この大会一年二回あってほしい。
    コード修正だけではなく、ゼロからコーディングしたり、デザイン提案など、もっといろんな形のHackathonがあってほしい

    --ISUCONを世界に広めた!?

    ダナンのコミュニティでISUCONやりたいって言ってるんですけど・・。

    ■次回は何やろう?

    社内ISUCONに限らず、海外拠点を巻き込んだグローバルイベントをこれからも継続していきます! やってみると想像以上に社員の学習意欲(エンジニアリングだけでなく、語学やコミュニケーションも!)を上げる効果があり、運営側が当初想定してなかった動き(いい意味で)に繋がっていきそうです!

    ■モンスター・ラボは積極採用中です!

    モンスター・ラボでは、こんなグローバルな環境でチャレンジしたいエンジニア、プロジェクトマネージャー、ディレクターを募集しています!募集職種の詳細は下記リンクをご覧下さい。
    モンスター・ラボ 中途採用ページ

    執筆:岸田 将孝

    Archives