はじめに
こんにちは。プライベートクラウドの開発運用、およびOSPOを兼任している早川です。
KubeDay JapanはCloud Native Computing Foundation(以下、CNCF)主催の、Kubernetesを中心としたクラウドネイティブ技術に関するカンファレンスです。
- KubeDay Japan 2024(外部サイト)
ご存じのとおり、LINEヤフーは旧LINE、旧ヤフーの方向性を引き継ぎ、オープンソースのテクノロジーとコミュニティに積極的に投資しています。そして、それはクラウドネイティブの分野においても同様です。去る8月27日に開催されたKubeDay Japanにおいては、スポンサーシップの提供とブース出展、社員からの2 件の登壇と、イベントの盛り上がりをお手伝いさせていただきました。
この記事では、そんなLINEヤフーによるKubeDay Japan参加の様子を、
- 弊社エンジニアによるセッションのご紹介
- 有志による他セッションの聴講レポート
- LINEヤフーのブース展示の様子
の3本でお届けします。
LINEヤフーエンジニアによる登壇
まずは、LINEヤフーのエンジニアによる登壇2件(片方は早川本人によるもの)のレポートをご紹介します。こちらのレポートは、登壇者本人による執筆です。
Scaling Time-Series Data to Infinity: A Kubernetes-Powered Solution with Envoy
本セッションは、SIグループ インフラ統括本部の坂本(@taisho6339)から発表させていただきました。
このセッションでは、社内のエンジニアに提供している内製モニタリングプラットフォーム「IMON」のデータベースレイヤについて、どのようにペタバイトスケールのデータを安価に扱えるようにしているかについてお伝えしました。
具体的には、社内のPrivate Cloudで提供されているオブジェクトストレージをベースに、KubernetesやEnvoy、LevelDB、bboltなどのオープンソースソフトウェアを駆使して、分散書き込み処理、分散キャッシュデータベースを実装し、Apache Cassandraに比肩するパフォーマンスで動作し、実質無限にスケールする時系列データベースを構築したノウハウについて公開しました。また、Grafana Pyroscope、Grafana Tempoを用いて効率的にパフォーマンスボトルネックを特定、解消した手法についても述べました。
本プロジェクトは、@taisho6339が過去にGrafana LokiやPromtailに貢献した際や、コミュニティSlackでさまざまなディスカッションを行ってきた経験が元となって成功できたと考えています。ですので、莫大なデータを持つLINEヤフーのObservability Engineering Teamとしてもプロダクト開発や運用から得られた知見を元に、今後もオープンソースコミュニティへの還元を続けていきたいと考えております。特にObservability分野は成長や変化が早く、エンジニアもその重要性を理解してより多くのデータを保存し、処理する必要が出てきているため、この分野の発展に寄与していきたいと考えております。
そういった思いやコミュニティへの感謝の気持ちを込めてプレゼンを締めさせていただきました。
Discover Your Tailored Platform Strategy with Real World Practice
このセッションは、SIグループ クラウド統括本部の早川(@hhiroshell)からの発表です。
このセッションでは、CNCFが公開しているホワイトペーパ ーのひとつである、「プラットフォームエンジニアリングの成熟度モデル」の紹介と、この成熟度モデルを現実のプラットフォーム戦略においてどのように活用できるかを解説しました。
「プラットフォームエンジニアリングの成熟度モデル」は、組織におけるプラットフォームエンジニアリングの取り組みを、技術的な観点だけでなく、投資や開発計画の戦略性、ユーザーからのフィードバックの活用方法など、複数の観点で総合的に評価します。そして、目標とするレベルと現状のレベルのギャップを把握し、それにもとづいてプラットフォームの開発戦略を立てることができます。
セッションの後半では、LINEヤフーで実際に運用しているプラットフォームを題材に、成熟度モデルの利用方法をケーススタディ形式でご紹介しました。今回取り上げたような方法論的なトピックは、現実の取り組みに落とし込むのに苦労することが多いですが、このケーススタディによって、地に足のついた活動としてプラットフォームエンジニアリングを実施できることが伝わっていれば幸いです。
CNCFでは、プラットフォームエンジニアリングにまつわる活動を、App DeliveryというTAG(Technical Advisory Group)が主導して進めています。このセッションをきっかけに、TAG App Deliveryの活動にぜひジョインしてみてください。
有志によるセッション聴講レポート
KubeDayには、聴講者としてもLINEヤフーのエンジニアから多数参加させていただきました。いくつかのセッションについて、有志にレポートをまとめていただきましたので、以下にご紹介します。
eBPF Strengthens SR-IOV to be Powerful
CNCF Gold MemberであるDaoCloudさんによる発表です。
ここ数年で注目され始めているeBPFをKubernetesのネットワークに適用するソリューションとして、DaoCloudが開発しているSpiderpoolが紹介されています。SpiderpoolはCNCF Sandbox projectとなっています。
kube-proxyなどでKubernetes node間の通信を行う場合、デフォルトでiptablesなどが内部で利用されている関係上ある程度のレイテンシが存在していましたが、これをmacvlan/ipvlanやLinux Kernel上で動作するeBPFを駆使することでSR-IOVを実装し、node上のunderlay networkでのみ通信を完結させるSpiderpoolで代替させることで、kube-proxyに比べてネットワークレイテンシが25%、スループットが15%も改善したということです。CiliumやCalicoなどの既存のeBPFをサポートするnetworking系のソリューションと比べても遜色なく、またSpiderpoolには追加で必要に応じてkube-proxyでの通信に切り替えるポリシーを記述するような機能が付いていたりと、かなりkube-proxyのreplacementとしての側面が意識されているように発表を聞いて感じました。
このセッションはBeginner Trackとして実施されたからか、SR-IOV/eBPF/RDMAの概念説明や、従来の方法との比較を発表の大部分を使って詳しく説明しており、本レポートを書くまでにいろいろ調べるうちにKubernetesや今回発表された周辺技術に詳しくなっていました。また、Spiderpoolとよばれる製品はこれまでよく知らなかったのですが、Kubernetesのみならずbaremetalやvirtual machineに対しても導入が可能であり、元はAIインフラ構築など、複数node間での高速な通信を要するユースケースに対するソリューションであるそうです。
これまでKubernetesを利用する側としての仕事が多かったのですが、Spiderpoolのようにクラウドインフラ自体を構築する技術についても興味を持つことのできる発表でした。
Towards a World Without Dependency Consideration: All Resources Be Deleted Simply
こちらもCNCF Gold Memberである日立製作所さんによる発表です。
Kubernetesではユーザーがさまざまなリソースを宣言的に記述し、その記述に基づいてクラスタ内にKubernetesリソースが作成されます。しかし、Kubernetesリソースの削除を防止したり、各Kubernetesリソース間の依存関係を記述するような機能がありません。もし間違って他のKubernetesリソースから依存されているリソースを消してしまうと、アプリケーションが壊れてしまう可能性があります。これら課題に対して、意図しない削除の防止と削除の順序制御を導入するためにさまざまな活動をしてきた記録のような発表となっています。
この2つの機能はKEP-2839 - "Lien"として2021年にKubernetesコミュニティに提案されましたが 、前提機能が未実装のため、2024年現在もマージされていません。Lienのコンセプトは、KubernetesリソースのLiens
フィールドに削除したくないリソースや依存リソースを記述して、削除の防止や順序制御を行うというものです。これにはLiens
などの特定フィールドの権限管理が必要で、KEP-3617 - "Fine-Grained Authorization"で提案されましたが、未実装とのことです。
そこで、Lienと似た機能を利用できないかということでKubernetesのプラグインであるCrossplaneを使う案が紹介されています。Crossplaneでは"Usage"という名前で似た機能を提供しており、Crossplaneが提供する"Managed Resource(MR)" CRDに対して"Usage" CRDを定義することで、MR間の意図しない削除の防止と削除の順序制御を実現するようです。発表では実際にAWS S3 bucketに対してUsage CRDを作成することで、削除が防止されたり、AWS DynamoDBがS3に依存している状態ではS3を削除しようとしても削除できないことを示すデモも実施されました。
このセッションではKubernetesコミュニティとのやりとりが実際に紹介されたりなど、オープンソース活動を行うエンジニア目線での感想が聞けたり、コミュニティの動きに基づいて代替案を調査したりなど、Kubernetesに積極的に関わるエンジニアだからこその視点を見ることができました。また、Lienで提案されてる内容ぐらいなら既に実装されているんじゃないかと思っていましたが、実際にはそうでもなく、大きなオープンソースであってもまだまだ追加されるべき機能が多くある発展途上の段階であることを感じました。
LINEヤフーのブース展示の 様子
LINEヤフーは、Kube Day Japanにプラチナスポンサーとして協賛しました。イベント当日には、13社がブースを設営。LINEヤフーもブースを設け、多くの弊社エンジニアが開発を主導したり、あるいはコミッターなどの形で開発参加しているArmeria、Athenz、Valdという3つのオープンソースプロジェクトを紹介する展示を行いました。
各講演の合間の昼休みや休憩時間には、海外からの参加者も含め、100名を超える人々がブースに足を運んでくださいました。日ごろ各プロジェクトの開発に実際に携わるメンバーから、途切れることのない来場者に対して丁寧に説明させていただき、ブースを訪れてくれた方の中には、15分を超えて熱心に耳を傾けてくれる方もいらっしゃいました。また、英語、日本語だけでなく、Armeria担当のTrustinからは、韓国語でも対応させていただきました!
コロナ禍が明け、今回のようなカンファレンスも活気を取り戻してきていますが、このようなイベントで自社エンジニア主導のプロジェクトを紹介する機会は、ここ数年あまり多くありませんでした。今回のブース展示をきっかけに、Armeria、Athenz、Valdの各プロジェクトや、LINEヤ フーのオープンソースの取り組みに興味を持っていただければ幸いです。
また、来場者への説明を通じて社外エンジニアと交流させていただいたのはもちろんのこと、業務ではあまり接点がない3プロジェクトのメンバー同士でも、意見交換の機会を得ることができました。来場いただいた皆さんのみならず、LINEヤフーのエンジニア自身にとっても大いに学びの場になったかと思います。
終わりに
LINEヤフーによるKubeDay Japan参加レポートは以上です。今後もこうしたイベントに協賛するなどして、積極的にオープンソースコミュニティを盛り上げていければと考えております。
引き続き、LINEヤフーのオープンソース活動をよろしくお願いいたします。