「ビジネスが加速するクラウド会議室」というコンセプトで開発・販売しているクラウド型ビジネスチャットツール「チャットワーク」は、メール・電話・会議に代わる次世代のビジネスコミュニケーションツールです。地域をまたいだ相手とのやりとりを始めとして、色々なのビジネスシーンで高い評価をいただいており、国をまたいだゲーム開発や、オフショア開発の現場などでも採用いただいています。

2014 年 9 月現在、世界中の 51,000 社の企業・組織にご利用いただいており、サービスのグローバル化に伴い、2012 年より米国シリコンバレーに拠点を設け、世界展開を加速中です。

実は社内では、2007年9月から AmazonS3 を利用しており、Amazon EC2 なども他のサービスですでに利用していた実績があったため、利便性をすでに実感していました。

こうした経緯がある中、新規事業として 2011 年 3 月にスモールスタートしたサービスである「チャットワーク」は、少人数でも運用できるインフラが必要でした。この要求に対応できる環境として、当初から AWS を前提としてインフラを構築しています。

チャットワーク誕生の背景としては、社内で他のメッセージングサービスを長年利用し続ける中での不満を解消することでした。
特に、メッセージ検索機能は、利便性の向上のために、過去全てのメッセージを検索対象とすることが前提でした。

当初は Amazon EC2 上で OSS を利用してメッセージ検索機能を実現していましたが、サービスが成長していく中で、数億のメッセージに対する検索を安定して提供することが課題となっていました。それと同時に、メッセージ検索機能の代替の仕組みの検討を進める上で、今後のサービスの成長に見合ったものを選択する必要もありました。

代替となる仕組みとして、他の OSS も検討していたのですが、インフラ構築およびサイジングの考慮等、継続的な運用には課題があり、スタートアップの少人数の運用体制では不安がありました。

そういった状況で、Amazon CloudSearch が日本語に対応したため、検証を開始しました。その結果、弊社の運用リソースに見合うだけでなく、今後のサービス成長にも柔軟に対応できると分かり、採用を決定しました。

現在チャットワークでは、メッセージ検索機能として採用した Amazon CloudSearch をはじめ、以下の AWS サービスを利用しています。

・Amazon Route53
・Amazon S3
・Amazon VPC
・Amazon EC2
・Elastic Load Balancing
・AutoScaling
・Amazon ElastiCache(memcache)
・Amazon RDS Multi-AZ、readreplica
・Amazon DynamoDB
・Amazon SQS
・Amazon CloudWatch
・Amazon CloudSearch

メッセージ検索機能は、ユーザーが入力したチャットの更新履歴データを Amazon SQS を経由して Amazon DynamoDB に保管し、その履歴を元に Amazon SQS を生成して Amazon CloudSearch にチャットデータを Index する形になっています。このようにすることで、確実にチャットデータが Amazon CloudSearch に Index されるようにしています。また、数億件のメッセージの初期 Index 処理についても並列で高速に完了できるようになりました。

開発に当たっては、本番環境とは別に検証用環境を別途用意しました。検証用環境の構築は API を利用したスクリプトを作成することで自動化しており、本番環境と同等の環境を迅速に構築できるようにしています。

jp_diagram_chatwork_1024x735

Amazon CloudSearch を導入したことにより、4 億件を越え、日々加速度的に増え続けるチャットのメッセージ検索を、わずか 3 ヶ月という短期間で構築することができました。以前 OSS を利用した際は、メッセージ検索の検証に約 1 年かかっていましたが、AWS の各製品を利用することにより、短期間でサービス投入ができたので、とても助かりました。

また、以前 OSS を利用していた際は、データの増大によってレスポンスの低下や可用性の低下が発生したのですが、Amazon CloudSearch 導入によって、レスポンス、可用性も劇的に改善しただけでなく、当初 検討していた検索システムのための運用専任の担当者をアサインする必要がなくなったため、運用コストの削減も実現できています。

セキュリティ面でも、AWS のサービスを利用することにより、セキュアな構成を実現することができています。Amazon CloudSearch では、投入したメッセージデータを検索結果に反映する・しないを Index Field 毎に設定することができます。弊社の場合、開発・運用担当者に対しても、チャットメッセージの閲覧を厳しく制限しているため、この機能は重要でした。

さらに、AWS CloudTrail が 東京リージョンに対応したことにより、ログファイルの集計、管理、そして可視性が向上し、よりセキュリティ面が強化されたと感じています。

今回、Amazon CloudSearch を利用するにあたって、日本の担当のソリューションアーキテクトの皆さんや、US の Amazon CloudSearch の開発担当者の方と実際にやりとりをさせていただけたため、スムーズに導入することができ、大変感謝しています。

導入後も、弊社では AWS サポートの「ビジネスプラン」を利用しています。主にチャット機能でやりとりをさせていただいているのですが、障害発生時のフォローだけでなく、アーキテクチャー選定や具体的な実装方法についても、相談させていただくことができ、とても助かっています。また、実現したい内容に対して、どの AWS サービス・API を利用すると良いかなどについても、柔軟にアドバイスをいただいています。

今回 AWS のマネージドサービスを活用して、期待以上のリターンを得ることが出来ました。今後も Amazon Redshift をはじめ、新しいサービスを積極的に活用したいと考えています。

アマゾンの日本担当チームの方々には気軽にコンタクトできますので、これから AWS の導入を検討している方はまず相談してみることをおすすめします。

また、日本の AWS ユーザーグループ JAWS-UG の勉強会に定期的に参加することで、多くの知見を他の参加者から得ることができます。AWS を積極的に活用する上で欠かせないものとなっていますので、積極的に参加してみてはいかがでしょうか?

 

- ChatWork 株式会社 技術部 サーバーエンジニア 藤原 吉規 様