サービス成長とリファクタリングの関連性(前編)~4社の経験と事例に基づくLT発表~

2019年8月8日に開催されたCTO meetupのテーマは、「サービス成長とリファクタリングの関連性」

ユーザーやデータが増え、その活用幅も多様化する裏側のシステムには、高負荷対策や速度改善、リファクタリングなど課題が山積みです。

そこで今回は4社のCTOや開発責任者などに登壇いただき、LTを実施。各社の成長過程の課題や取り組みなどについてお話しいただいた後、会場からの質問に答える形で気になるテーマについてLT形式で語っていただきました。

【ご登壇者】

Chatwork株式会社 執行役員 兼 開発本部長 春日 重俊さん

C Channel株式会社 執行役員CTO開発部長 小野 邦智(Tonny)さん

日本マイクロソフト株式会社
Azure ビジネス本部 シニア Azure Product Marketing Manager 太田 寛さん

株式会社リクルートライフスタイル
ネットビジネス本部 データエンジニアリングユニット 山田 雄さん

LT1:Chatwork/継続的な組織・システムのバージョンアップ

Chatwork株式会社 執行役員 兼 開発本部長 春日重俊さん Chatwork株式会社 執行役員 兼 開発本部長 春日重俊さん
明治大学経営学部を卒業後、電通国際情報サービスに入社、大手企業の基幹会計システム導入の経験を積む。その後リクルートに入社、新規事業の業務に従事し、組織マネジメント・サービス企画・BPRなどに携わり、2016年1月にChatworkに開発本部長として入社。2019年3月に執行役員兼開発本部長に就任。

ユーザの拡大に伴い組織、システム、プロダクトを段階的に変革

春日:Chatworkの春日と申します。私からは、当社がどのように継続的にデータドリブンを行ってシステムを バージョンアップしてきたのか、プロダクトの成長とともにお話していきます。
本日伝えたいメッセージでもある「事業・組織・システムはどれも欠けてはならないパーツである」ということを前提として、みなさんの会社をバージョンアップしていくヒントを提供できればと思います。

まずはChatworkについて簡単にご紹介すると、日本発のビジネスチャットを提供している会社です。端的に言えば、非IT中小企業の方にも使っていただけるような製品を目指しています。導入企業数は2019年6月時点で約225,000社です。

Chatworkが誕生したのは2011年で、歴史的には8年ほどの古いプロダクトです。立ち上げから資金調達前までの2015年頃までは開発組織規模が10~20名程度。技術部、デザイン部、事業推進部をCTOがすべて一人で見るような体制でした。この時期は資金調達前で、そもそもプロダクトが伸るか反るかもわからなかったため、非常に簡単な組織構造だったのです。

システム面では、プロダクトのユーザー数が一定規模に達したので、非同期でのトランザクション管理しなければならなくなってきました。そこで、SQSのQueueやCloud Searchを入れるといった形で、少しずつAWSのコンポーネントを増やしていったのがこの時代の特徴です。

私がジョインしたのは2016年の1月なのですが、この頃が第2ステージです。大きくは今までCTOワントップだった組織構造を変更し、CTOの下に私が統括する開発本部を置きました。さらにその下のエンジニアも職能別にして、SRE部やアプリケーション開発部を立ち上げています。
システム面については分散システム(Kafka、Hbase)を導入し、スケールに耐えられるような形で新メッセージ基盤を作成していた時期でもあります。Webhook・OAuth・監査機能・リアクション等ののサブシステム機能が増えていき、どんどんマイクロサービス化しています。

プロダクト自体の進化の視点では、2016年にモバイルアプリをフルネイティブ化したというのが大きな変化ですね。また、2018年には社長交代など組織の環境変化もあり、それに合わせてUIのデザイン変更を行っています。特にWebのUIはすっきりとさせ、情報の視認性を高めるための進化を続けている状態です。 Chatwork株式会社 執行役員 兼 開発本部長 春日重俊さん

システムを適切に進化させていくためのデータ分析環境

春日:組織やプロダクト、システムをただ闇雲に進化させていくというのは辛いものがありますから、当社ではデータ分析を活用しています。概念としてはデータ収集層、データソース層、そして分析・可視化層に分けていて、データレイクには基本的にTreasure Dataを使用しています。分析・可視化層でRe:dashやjupyterを使っているのが現在のデータ分析環境ですね。

システム運用観点での例でいうとDatadogのメトリクスなんかはオフィス内に画面を設置して、リアルタイムでモニタリングできるようになっています。数値が急激に上がったら緑色の数値が黄色や赤色になることでチェックできる仕組みです。レスポンスが遅くなっていないか、どこが遅くなっているかなどはNew Relicのダッシュボードで監視しています。最近Chatworkに追加した「リアクション」機能というものがあるのですが、こういったアップデートがきちんと狙った通りに使われているかもモニタリング環境を整えて監視し、継続的に更新できるようにしていますね。

また、経営視点ではシステム原価などのコストも重要です。当社はAWSを使用していますが、サーバーコストが急激に上がっていないか、上がっていればアラートで変な動きをしていないか知らせてもらうようにしています。これはGoogle Data Studioです。

LT2:C Channel/成長速度を追求するフェーズにおける組織の判断

C Channel株式会社 執行役員CTO開発部長 小野 邦智(Tonny)さん C Channel株式会社 執行役員CTO開発部長 小野 邦智(Tonny)さん
NEC中国子会社に2年勤務した後、2007年に日本語喋れないまま単身日本へ。 2008年2月からiOS開発に携わり始め、VOYAGE GROUP、楽天などを経た後にフリーランスアプリエンジニアへ転身。 SmartNews, Frilに参加した後にEC事業の失敗を経験しました。 その後、C Channelに参加。2019年1月からC ChannelのCTOに就任。 最近の興味は、5G時代のビデオサービスのあり方を模索しています。

リファクタリングに至るまでには慎重なプロセスが必要

Tonny:中国出身でTonnyという名前で活動しています。よろしくお願いします。私は今年の1月からC ChannelのCTOに就任したのですが、ベンチャー企業がどのように考えて成長し、リファクタリングを行っているかについてご紹介したいと思っています。

まず当社がサービスの成長コンセプトとして強く意識しているのは、「本当に必要な時のみリファクタリングをやる」ということです。毎回リファクタリングを行う前にチームに課題を投げ、お互いに詰めてから実施します。理由は「ど」ベンチャーだからです。エンジニアの数も限られていますし、ビジネスも成長に集中しているフェーズです。リファクタリングも含めお金でカバーできる部分はそうして、成長速度を追求しています。

一人ひとりのメンバーがサービスに対するチューニングの意識を高める

Tonny:C Channelは現在サービスがいくつかあり、台湾や中国にもビジネス展開していますが、人材もお金も足りなくて、プロダクトマーケットフィットを模索中という部分も大いにあります。その中ではパフォーマンスをチューニングする必要性も出てくるので、我々はNew Relicを利用したかったです。先程春日さんも紹介していたツールですが、非常におすすめです。ただコストが高いので、我々はより安いサービスElasticAPMで定着しています。

もうひとつおすすめなのはAWSのPerformance Insightなのですが、RDSのデータベースを保存するときにQueryもステップ・バイ・ステップで分析して可視化してくれるのがいいですね。有料サービスではあるのですが、節約できる時間を換算すると非常にコスパに優れていると思います。アプリも同じように分析していて、iOSはInstruments、AndroidはProfilerです。

ここでお話したいのは、こういったツールを利用してチューニングやリファクタリングを誰がやるのか、ということです。当然チームメンバーがやらなければならないのですが、時間とトレードオフしてみんなで進めていくことになります。その中で、一人ひとりが自主意識を持って「自分がやる」と積極的に動くことが大切ですね。

LT3:日本マイクロソフト/PaaSによるリファクタリング事例

太田さん 日本マイクロソフト株式会社 Azure ビジネス本部 シニア Azure Product Marketing Manager 太田 寛さん
OA機器メーカーで、プリンターや複写機の制御ソフトウェア開発に携わりながら、ソフトウェア開発手法・プロセスを極める。 その後、縁あって、2006年に日本マイクロソフトに入社。 組込み制御に関する技術・製品の普及啓発を担当するエバンジェリストとして活動。 組込み側から、クラウドに対応領域を広げ、現在は、IoT、AI、Big Dataを主領域として、多数の実案件支援、各種イベントでの登壇、コミュニティ活動に従事。 より多くの開発者にMicrosoft Azureが提供する様々なサービス・テクノロジーを使ってもらえるよう、日々悪戦苦闘中。

あらゆるツール・フレームワークに対応するMicrosoft Azure

太田:まず当社のMicrosoft Azureについて簡単にご説明します。一部の方はMicrosoftに対してWindowsやOfficeの会社だというイメージを持っているかもしれませんが、今はもうクラウドの会社になっています。IaaSですね。マネージドやPaaSともいいますが、いわゆるサービスを作ればすぐに動くようにできるというもので、ここを担っているのがMicrosoft Azureです。Microsoftの製品はMicrosoft独自のものだと思っている方も多いのですが、全くそんなことはありません。Azureは一般的なツールやフレームワークはオープンソース系も含めてほぼ何でも動くという状況になっています。

IoT系サービスでMicrosoftのPaaSを用い、スケーラブルな構成を実現

太田:私自身はお客様の実案件に参画し、Microsoftのテクノロジーを利用して開発を進めたりアーキテクチャの設計の助言などをしてきました。IoT系に5~6年程携わり、最近はビッグデータ系の領域も手掛けています。大小合わせると200以上の案件に関わっていますね。その視点で、リファクタリングについての事例をご紹介したいと思います。

2~3年前ほどの技術案件だったのですが、ちょうどスタートして1年目のIoT系のサービスがありました。センサーノードが設置されていたサーバーにつながるという構成だったのですが、サービスの人気が高まってユーザー数が増えるに従い、サービスの運用能力が限界に近づいていました。サービスに接続するセンサーデバイスが増えたからです。運用・管理コストが増大してお困りだったので、従来のVirtual Machineから当社のPaaS系のサービスを使っていただくことにしました。

本来ならサーバーに対してクラスタを組むことになるのですが、それでは作り直しになってしまいます。そこでIoT Hubというデータベースにつないだり送受信を行ったり管理をする機能を有したAzure IoT Hubというサービスを用いて、スケール可能な状態にしました。パラメータを変えれば、数台から数千万台まで捌くことができます。その他にもリアルタイムに流れてくるデータを処理できるサービスも採用しました。データストアも含め、すべてスケーラブルな構成に置き換えてもらったのです。
仮に最初からこのような構成にして開発していれば、数台レベルではそれなりのコストで、そこから数百台、数万台に増えていったとしても構成を変えず、リアルタイムでスケーラブルにイベント駆動が可能です。既存のプロダクトをAzure化したいときも、1から作りたいというときも、大体はこの構成を紹介します。これはIoTでなくとも、ビッグデータ系などにそのまま使えるアーキテクチャです。

日本マイクロソフト株式会社 Azure ビジネス本部 シニア Azure Product Marketing Manager 太田 寛さん

長期スパンで変更を入れずに済むアーキテクチャとは?

太田:今どきのアーキテクチャでよく聞くのが、データストアが細分化されていて、お互いをつなげられないという話です。これもリファクタリングをするのであればデータ基盤に手を入れることになります。HDFSのようなたくさんのノードから同時にアクセスできるもので基盤を構成して、マイクロサービスとそのフローなどを中間層に置いてつないでいく。あとはフロントエンドアプリをプラグインしていくようなアーキテクチャであれば、長期的にあまり見直しせずに済むと思います。この場合、蓄積したデータを共有してAIの活用などもできます。

LT4:リクルートライフスタイル/サービスを成長させるデータ基盤の作り方

株式会社リクルートライフスタイル ネットビジネス本部 データエンジニアリングユニット  山田 雄さん 株式会社リクルートライフスタイル ネットビジネス本部 データエンジニアリングユニット 山田 雄さん
SIerにて主に組込み系の開発に従事したのち、フリーランスとして独立。 フリーランスの間に、シミュレーションシステムの開発や、大手ECサイトのメールマーケティング用分析基盤の構築を経験。 2015年リクルートライフスタイルへ転職。リクルートライフスタイルの共通分析基盤を構築する傍ら、 chatbotの開発や、メールマーケティングにも関わる。 2019年からはリクルートグループ横断での基盤立ち上げを行っている。

データ基盤の運用に時間をかけないための3つの要素

山田:私は主務がリクルートライフスタイルで、グループ会社のリクルートテクノロジーズなどの兼務をしています。職務としてはリクルートグループ全体のデータ基盤の開発・運用がメインです。

今回「サービスを成長させる」という点で、私が常々意識している80%という数字があります。これは、基盤系のエンジニアが運用に割いている割合です。もちろん人によっては全く違うこともあると思うのですが、多くの人の話を聞いていると、80%ほど割いている印象ですね。これは非常に高い数字なのですが、運用以外の開発などにも注力したいので、本来は10%くらいになってほしいものです。
では、データ基盤の運用に時間をかけないようにするにはどうしたらいいのか。

私はいくつかの要素があると考えています。
まずはScalability。データはすぐにキャパシティを超えます。先程の太田さんのお話にもあるように、IoT分野などではデータ量が爆発的に増えることがあり、度合いも予測できない。その中でも基盤だけは落としてはいけないので、予測できないなりにScalabilityを持つ設計が必要になるはずです。
2つ目がマイクロサービス。データ基盤を作る上では、データソース・データ取得・データ加工・データ保存・データ分析・BI施策といった粒度で分けていくことをおすすめします。というのも、データやパブリッククラウドの技術進化はスピードが速く、どんどん良いサービスが登場します。そのときにすぐ対応できるようにしておきたいからです。データ保存の場所やデータ取得の技術を素早く変更できるようにしておけば、運用の手間は減っていきます。ただ基盤を作り込んでしまうと後から分割はできないため、やはり最初の設計が重要です。

株式会社リクルートライフスタイル ネットビジネス本部 データエンジニアリングユニット  山田 雄さん

意外と重要な基盤エンジニアのモチベーションコントロール

山田:さらにエンジニア視点でお伝えしたいのですが、基盤の開発には時間がかかる上に、非エンジニアにとっては簡単そうでも、エンジニアからしてみるとそうではないことが数多くあります。ROIを出すのも難しい。その一方で、基盤は一度使えるようになると、それが当たり前の状態になる。つまり、良い基盤を作っても褒められることは無く、トラブルがあると責められる状況に陥りやすいのです。 それを踏まえると、データ活用を進めていく上では基盤エンジニアのモチベーションコントロールが非常に大切です。どうすればいいのかは私自身も悩んでいるのですが、きちんとエンジニアから成果を口にしてもらい、それを社内にも上手く広げたり、何らかの形で褒めたり、給与を上げたりといったことが重要になるはずです。


後編記事に続きます。
後編:【CTOmeetup】サービス成長とリファクタリングの関連性(後編)~質疑応答で語る、組織の取るべき方向性~>> 
後編は、来場者が日頃抱えている様々な疑問に対して、ご登壇者の皆様から回答を頂きました。


この記事を書いた人
flexy編集部
flexy編集部
ハイスキルIT人材への案件紹介サービス
サーキュレーションが運営するフリーランスのエンジニアを中心としたIT人材の案件紹介サービスflexy。エンジニアに役立つコンテンツも提供しています。【flexyのサービス詳細】★求人を募集している法人様向けお仕事をしたいご登録希望の個人様向け

週1日~/リモートの案件に興味はありませんか?

週1日~/リモートの関わり方で、「開発案件」や「企業のIT化や設計のアドバザリーなどの技術顧問案件」を受けてみませんか?副業をしたい、独立して個人で仕事を受けたエンジニア・デザイナー・PM・技術顧問の皆様のお仕事探し支援サービスがあります。

flexyでご案内できる業務委託案件

業務委託契約・開発案件(JavaScriptメイン)

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 2-3日/週
報酬 4万円/日
必要スキル JavaScript・React
勤務地 東京都内/リモート含む
リモート

外部CTO、技術顧問

テーマ 技術アドバイザリーとして知見と経験を生かす
勤務日数 1日/週
報酬 10万円/日
必要スキル エンジニア組織立ち上げや統括のご経験、コードレビュー経験、技術的なアドバイスが出来る方
勤務地 東京
リモート 相談可

業務委託契約・インフラエンジニア

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 2-3日/週
報酬 5万円/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート 相談可

業務委託・フロントエンドエンジニア

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 週1日〜
報酬 5万/日
必要スキル それぞれの案件により異なります
勤務地 東京
リモート リモートと常駐のMIXなど

人材紹介のCTO案件(非公開求人)

テーマ CTO、技術顧問案件はflexyに登録後、案件をコンサルタントからご紹介します
勤務日数 業務委託から人材紹介への移行
報酬 年収800万以上
必要スキル CTOとして活躍可能な方、エンジニア組織のマネージメント経験
勤務地 東京
リモート 最初は業務委託契約で週3日などご要望に合わせます

業務委託契約・サーバサイドエンジニア

テーマ flexy登録画面から案件詳細の確認と直接応募が可能です
勤務日数 週2-3日
報酬 案件により異なります
必要スキル 案件により異なります
勤務地 東京都内
リモート 相談可能
個人登録

お仕事をお探しの方(無料登録)
法人の方(IT課題の相談)