国境を越えて連携するOpenStackチーム

Wang Xiang氏:私からは、Verdaプラットフォーム開発Iチームについてお話しいたします。

まずは自己紹介をさせてください。私は、Verdaプラットフォーム開発Iチームのソフトウェアエンジニアです。前職は、コンパイラエンジニアとしてカナダのハードウェアカンパニーのR&D部署に勤めていました。今やっていることと以前やっていたことは少し違いますが、2022年4月にソフトウェアエンジニアとしてLINEに入社しました。まだLINEでの経験は6ヶ月と浅いですが、みなさんにはこの会社でどういうことを学べるのかをお話できればと思います。

Verdaプラットフォーム開発Iチームは、現在7人のメンバーで構成されています。英語が主な共通言語になっていますが、本当にいろいろな国の人がいます。

チームの拠点は東京ですが、日本・韓国・ベトナムにメンバーが点在しているので国境を越えて連携しています。職場環境は非常にポジティブです。透明性があって、多くのコミュニケーションを尊重しています。ワークライフバランスもきちんと保たれていますし、協力的で開放的だと思います。メンバーのみんなはフレンドリーです。

私がこのチームに所属した当時、本当にいろいろな国の方がいましたが、温かく受け入れてもらえました。チームでは、プロフェッショナルであること、責任分担、ポジティブ、健康であること、信用を重要視しています。

Verdaプラットフォーム開発Iチームの役割

Verdaプラットフォーム開発Iチームについてお話しします。私たちはソフトウェアテクニックまたはメソッドを使って、アプリケーションとインフラストラクチャをなるべくシームレスに接続できるようなプラットフォームを構築、運用しています。OpenStackを使い、QAチームなどとも密に連携しています。

ご存じだと思いますが、OpenStackとはオープンソースのクラウドコンピューティングを構築するソフトウェアプロジェクトです。私たちのプライベートクラウドプラットフォームであるVerdaも、OpenStack上に開発されているので、OpenStackに基づきVerdaのプラットフォームをデザインしたり開発したりしています。

大規模なOpenStackクラスタを複数実行しているので、それに関する運用の問題を解決していく必要があります。もちろん他のソフトウェアのコンポーネントであるLibvirt、Kubernetesなどのチームとも連携しなければなりません。VM、PM、ベアメタルサーバーの管理もしていかなければなりません。

今後取り組んでいくこと

課題と今後のプランについて、2つのポイントに触れたいと思います。まずは安定性です。Verdaのプラットフォームはかなり成熟したステージに来ていますが、やはりパーフェクトとは言い難い状況なので、たまに故障あるいは障害が発生します。その度に、ユーザーがハードウェアエラーや、ヒューマンエラーを定期的にレポーティングしてくれるわけです。私たちは、この故障や障害をとにかく少なくしていきたいと思っています。

2つ目に拡張性について。先ほど市原さん(市原裕史氏)からも話があったとおり、7,600のハイパーバイザー、そして4万5,000のベアメタルサーバーがあります。

これからはその数がもっと増える可能性があり、異なった地域で大規模なOpenStackクラスタをサポートしていかなければなりません。もっとハイパーバイザー、ベアメタルサーバーをサポートしていかなければならないわけです。このためにはいろいろなメカニズムを設計して、それをしっかりと導入していく必要があります。

現在進行中のプロジェクトを紹介

実際に何をやっているのかをお見せしたいと思います。新しいドライバーをRPC Communication向けに導入するというプロジェクトです。RabbitMQなのですが、これはOpenStack上のRPC Communicationのインプリメンテーションになります。

OpenStackはRabbitMQのリプレイスをしたいわけではありませんが、Verdaのプラットフォームは大規模なOpenStackクラスタをサポートしなければならず、RabbitMQを使ったメンテナンスはすごいコストになってしまいます。RabbitMQのドライバーのメカニズムはかなり複雑で難解なので、スケールアップした環境ではサポートが難しくなってしまいます。

Verdaプラットフォーム開発Iチームは、RabbitMQのクラスタ+OpenStackのクラスタの管理をするのですが、特に障害が起こった時に両方管理するのは難しくなります。こういった問題を解決するために、私たちのチームは新しいRPC CommunicationドライバーをOpenStackに導入したらいいのではないかと考えました。

残念ながら詳細はみなさんに共有できませんが、うまくいったらコミュニティにも展開したいと思っているので、オープンソースプロジェクトからプロジェクトを借りてきて使うだけでなく、オープンソースに貢献していると言えると思います。

ソフトウェアスタックの紹介

ソフトウェアスタックですが、いくつかこのようなものを使っています。もちろんメインフォーカスはPythonであるOpenStackです。Pythonでコードを書いています。プラスでOpenAPI、Swagger、Consul、RabbitMQを使うこともあります。Redis、他のDocker、Kubernetesなどのインフラを使うこともあります。

すべてを使えなければならないと言っているわけではありません。もしこういうコンポーネントをご存じであれば、チームに参画してもらう時におそらく仕事が楽になるのではないかなと思います。ということで、私からは以上です。ご清聴どうもありがとうございました。