運用負担の高い Kubernetes クラスタの管理を AWS にオフロード
累計メッセージ数 65 億以上のビジネスチャットツール『Chatwork』を
高可用な基盤で運営、リリース時の運用コストを 10 分の 1 まで圧縮
2020
ビジネスチャットツール『Chatwork』を運営する Chatwork 株式会社。2011 年 3 月のリリース以来、サービス基盤にアマゾン ウェブ サービス(AWS)を採用し、アーキテクチャを進化させてきました。2016 年にはコンテナに移行し、Kubernetes を Amazon EC2 上で運用してきましたが、3 ヶ月に 1 度のバージョンアップ対応に伴う管理・運用の負荷が増大。そこで 2018 年から 2020 年にかけて Amazon Elastic Kubernetes Service (Amazon EKS) への完全移行を実施しました。その結果、リリース障害時の切り戻し時間を 20 分の 1 に短縮し、リリース時のオペレーションコストも 10 分の 1 まで圧縮しています。
ビジネスチャットツール『Chatwork』の基盤に Amazon EKS を採用し、クラスタの設定や構築をオフロードしたことで、エンジニアの心理的負担が減り、開発が劇的にスピードアップしました。今後もお客様の要望に寄り添い、サービスを通じて『一歩先の働き方』をご提案していきたいと考えています
春日 重俊 氏
Chatwork 株式会社
執行役員 CTO 兼開発本部長
スモールスタートで『Chatwork』をリリース
導入企業数の増加に合わせてコンテナ化
「働くをもっと楽しく、創造的に」をミッションに、常に一歩先の働き方を提供し続ける Chatwork。2011 年 3 月にリリースした『Chatwork』は、ビジネスチャットのパイオニアとして知られ、導入社数は 2020 年 10 月末日時点で 28 万 9,000 社以上に達しています。特長は、誰でも手軽に使えるサービス設計、1 つのアカウントだけで社内外とやり取りできるオープンプラットフォーム、無料プランから始められるフリーミアムの 3 つにあります。2020 年 4 月は COVID-19 (新型コロナウイルス感染症)の影響によるテレワークの需要拡大で、登録 ID の純増数が大幅に拡大。5 月以降も前年比 36.5% 増の水準で推移しています。
同社は、2007 年から業務の一部で Amazon EC2 や Amazon S3 を利用していた経緯もあり、『Chatwork』をリリースした当初から AWS を使い続けてきました。「蛇口をひねると水が出てくるかのごとく使える先進的なコンセプトに共感し、国内企業の中でもいち早く採用を決めました」と語るのは、執行役員 CTO 兼開発本部長 の春日重俊氏です。
『Chatwork』は 2011 年当初、オープンソースソフトウェアを組み合わせたシンプルな LAMP 構成でリリースしました。その後、2014 年に導入企業数が 5 万社を突破するにつれてメッセージ数が増加し、データレイヤーの負荷が大きくなりました。そこで 2014 年から 2015 年にかけて、Amazon CloudSearch をメッセージ検索機能として導入するなど改善を図りました。
導入企業数が 10 万社を突破した 2016 年からは、メッセージ DB の領域で分散システムを採用。アプリケーション領域をコンテナ化して Kubernetes を導入し、Amazon EC2 上での運用に切り替えました。
「基盤をコンテナ化したのは、ビジネススピードに追従するためです。『Chatwork』は社会インフラとしての性格を帯びるようになり、障害やサービス停止はお客さまの業務に多大な影響を及ぼします。安定してサービスを利用していただくためには高い SLA を確保し、かつユーザー体験を高めていくことが求められます。そこでサービス基盤の疎結合化を進め、高速かつ、短サイクルでデプロイを繰り返し実行するためにコンテナを採用し、オーケストレーションツールとして、OSS のエコシステムが充実している Kubernetes を採用しました」(春日氏)
Amazon EKS への移行により 3 ヶ月に 1 度のバージョンアップの負荷を軽減
しかし、導入当初に利用していたツールの問題があり、Kubernetesの運用負荷が高く、バージョンアップにも大きな課題を感じていました。そこで同社は、2018 年に Amazon EKS が東京リージョンに対応したのを機に Amazon EKS へ移行しました。開発本部 SRE 部の坂本諒氏は次のように語ります。
「それまでは Kubernetes クラスタの構築ツールとして、オープンソースのツールを利用していました。しかし、コントロールプレーンの構築や管理・運用をすべて自前で対応せざるを得ず、規模が大きくなるほど AWS CloudFormation の定義ファイルが複雑化して運用負荷が増えていきました。加えて、前述のオープンソースツールがホストとして使用している OS の サポートが終了することから、Amazon EKS の採用を決めました」
Amazon EKS への移行は、メッセージアプリの基盤と、PHP を使った Web アプリの基盤の 2 つに対して実施しています。メッセージアプリの基盤は 2019 年冬から、Web アプリの基盤は 2020 年 7 月から移行を開始して、2 つの基盤とも 2020 年 8 月末までに完了しました。
移行時は、 3 ヶ月に 1 度の Kubernetes クラスタのバージョンアップに追従してクラスタアップデートを実行することと、デプロイの障害発生時の切り戻しが安全にできるように新規のクラスタを立ち上げて切り替えることをコンセプトとしました。さらに Amazon EKS の Kubernetes クラスタ環境を構築する OSS のコマンドラインツール eksctl と、Kubernetes のパッケージマネージャである helm,helmfile を採用。運用を自動化し属人化を排除しています。
「その結果、Amazon EKS への移行は自動管理となり、それまで Amazon EC2 内で対応していたコードの世代管理も、イメージ単位でデプロイとロールバックの実行が可能になりました。デプロイに要する時間はこれまでの 20 分から 5 分程度に短縮されました。Pod の入れ替え処理を除けば 35 秒で終了します」と 開発本部 SRE 部の尾崎耕多氏は語ります。
デプロイ時の短時間の切り戻しが可能になり開発者を心理的なプレッシャーから解放
Amazon EKS への移行により、『Chatwork』のサービス基盤は柔軟な構成変更が実現し、SLA ごとに段階的なリリース戦略を進めることが可能になりました。リリース障害時の切り戻し時間は従来の 20 分の 1 に短縮し、リリース時のオペレーションコストは 10 分の 1 に削減されています。さらに、キャンペーン時など、急激な利用者増にも耐える運用の柔軟さを確保しています。
「開発責任者の立場からすると、一番の効果は心理的な安全性が確保できたことです。サービス向上を目指してほぼ毎日のようにデプロイを繰り返していく中で、開発者には重要なインフラを止めてはいけないというプレッシャーがかかります。今回、運用負担の高い Kubernetes コントロールプレーンの管理を Amazon EKS にオフロードできたことで、エンジニアは Kubernetes の宣言的デプロイメントによるアプリケーションの改善に集中でき、不具合発生時もすぐに切り戻しができます。お客さまの要望にも迅速に応えることが可能になりました」(春日氏)
副次的効果としては、豊富な管理 API によるシステムコストの最適化が実現し、スポットインスタンスの採用で Amazon EC2 のコストは最大で 80% の削減が実現する見込みです。
全アプリをマイクロサービス化し機能別組織で開発をスピードアップ
ほぼすべてのアプリが Amazon EKS への移行を終えた今、Kubernetes 環境については、さらなる運用の効率化を進めていく考えです。坂本氏は「CI/CD の領域で Argo CD と Flux のハイブリッド構成による GitOps 構想を進めていきます。クラスタアップデートではアプリ配信まで自動化し、デプロイ時間の短縮を目指します」と語ります。
尾崎氏も「重要なデータを預かるサービスとして、侵入テストやセキュリティスキャンを実施し、コンテナ環境のセキュリティ可視化ツールを導入することで継続的にセキュリティ強化を図っていきます」と話します。
サービス基盤のアーキテクチャは今後、全アプリをマイクロサービス化し、機能別組織によって開発のスピードアップを図る方針です。ビジネス面では、機械学習を活用したユーザーの動向分析や、有料ユーザー獲得に向けた営業施策を進めたいと考えています。
「システム基盤の中核をなす AWS は、当社のサービス実現のために不可欠な存在です。当社のサービスを熟知している AWS のソリューションアーキテクトには、引き続き機能の拡充に支援をいただきたいと思います」(春日氏)
春日 重俊 氏
坂本 諒 氏
尾崎 耕多 氏
カスタマープロフィール:Chatwork 株式会社
- 資本金: 13 億 7,490 万円
- 設立年月日: 2004 年 11 月 11 日(創業: 2000 年 7 月 15 日)
- 従業員数:154 名(2020 年 10 月末日時点)
- 事業内容:ビジネスコミュニケーションツール『Chatwork』の開発・運営、ソフトウェア販売(ESET セキュリティソフト)
AWS 導入後の効果と今後の展開
- リリース障害時の切り戻し時間を 20 分の 1 に短縮
- リリースにかかるオペレーションコストを 10 分の 1 に短縮
- 急激なトラフィック増加に耐える柔軟な運用を実現
- スポットインスタンスにより Amazon EC2 のコストを最大 80% 削減
- 開発者の心理的なプレッシャーからの解放
- クラスタアップデートにおけるアプリ配信の自動化を検討
ご利用中の主なサービス
Amazon Elastic Kubernetes Service
Amazon Elastic Kubernetes Service (Amazon EKS) は、フルマネージド型の Kubernetes サービスです。
Amazon EC2
Amazon Elastic Compute Cloud (Amazon EC2) は、安全でサイズ変更可能なコンピューティング性能をクラウド内で提供するウェブサービスです。ウェブスケールのクラウドコンピューティングを開発者が簡単に利用できるよう設計されています。
Amazon RDS
Amazon Relational Database Service (Amazon RDS) を使用すると、クラウド上のリレーショナルデータベースのセットアップ、オペレーション、スケールが簡単になります。
Amazon S3
Amazon Simple Storage Service (Amazon S3) は、業界をリードするスケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスです。