KubeCon / CloudNativeCon / OpenSource Summit 2019 in China
半年前に参加したイベントですが、社内に埋もれていた参加記を掘り起こして、サマリー版をこちらにも記載します。
KubeCon は Docker Orchestration Tool として世界標準となった Kubernetes をテーマとしたイベントです。Kubernetes の OSS 活動は CNCF ならびに Linux Foundation に支えられており、当イベントも主催は CNCF ならびに Linux Foundationです。
Kubernetes は現代に生きるエンジニアとして必ず知っていなければいけない数々の技術スタック・思想を持っていますし、以前のHadoopのように世界中の粋を極めた優秀なエンジニアが集うエコシステムになっていますが、日本では KubeCon が開かれる気配が微塵もないため遠く上海まで訪れて最新技術の潮流とユースケースについてキャッチアップするため、参加しました。
(日本だと、CloudNative Days というイベントが定期的に開催されており、このイベントも良いイベントで関係者には頭が下がるのですが、いかんせん KubeCon と比べると規模の小ささ、対象とする話題の狭さが拭えません)
全体的な感想
全体的な感想として大まかにまとめると以下3点になります。
圧倒的な内需を持つがゆえのIT技術の成熟と大規模化
中国は内需だけで13億人のユーザーを抱えているため、国内向けのサービスを開発していても日本の10倍の規模のユーザーを相手にすることになります。そのため、どうしても中国のサービスについては規模が大規模化し、ユーザートラフィックやデータの母数で日本よりも高い性能要件が求められます。
11月11日(光棍节=独身の日)のような、楽天の年間売上高に相当する額を「1日」で売り上げてしまう「おばけイベント」などもあり、多くのIT企業は研鑽が必要な環境にも恵まれ鍛えられています。そのサービス運用は高度に自動化され、今回のKubeConでもセッションがあったTiDB/TiKVのような分散ストレージや、HadoopやKubernetesのような大規模化でも運用可能な分散処理プラットフォームなどが当たり前のようにサービスで活用されています。
BATと呼ばれている大企業群や、Bytedance、Jingdongのような新興企業のユーザー規模、求められるサービス要件、そして採用されている技術レベルは極めて高く、日本で比肩できる水準にある会社を探すことは不可能だと思います。
日本はスタートアップでも大企業でも手弁当で開発運用するスタイルをまだ堅持している人たちが少なからず存在しますが、そんな意識レベルでは中国企業群の後塵を拝する状況から脱することは難しいと感じます。
OSSの世界での中国企業の存在感
米中経済摩擦の象徴的な存在となってしまった企業のファーウェイ(华为)ですが、ことKubeConの中での存在感は際立っていました。スポンサーとして最高ランクのスポンサーだったこともありますが、Kubernetes関連のエコシステム中心に数々のOSSを開発し、きちんとコントリビュートをしていることが大きいと思います。他にもAlibaba,Tencentなど、テックジャイアントは自社でOSSを含めたソフトウェア開発に力を入れており、OSS界への貢献についても日本を遥かに凌駕しているように感じました。
今回セッションで聴講した中だと Alibaba が開発している OpenKruise のインパクトが個人的には大きかったです。
Kubernetesは標準機能で十分に優れた分散処理基盤ですが、11月11日などの大規模トラフィックをさばくためには機能が足らないところがあると考えたAlibabaの技術者達が、Kubernetesをよりスケーラビリティなものに拡張した OSS です。
以前の中国は、OSSは使用はするがコントリビュートすることが少ない印象でしたが、今はその持てる技術水準と釣り合いが取れるくらいOSSへのコントリビュート戦略を持っているように感じます。
なお、米中貿易摩擦の話題が喧しい昨今ですが、今回の KubeCon の中では Linux Foundation の方々も、来場されていた欧米の方々も事さらに今の米中摩擦のことには(少なくとも表向きは)触れず、普通にニュートラルに技術者としてのコミュニケーションをしていたことは、技術に関わる立場の人間としてはとても好ましいことだったのではないかと思います。
それでもドメスティックな中国技術者
カンファレンスの中国人技術者のうち、トップオブトップの方の水準はとても高く見え、中国語も英語も流暢に使いこなしていましたが、場内の大半の人たちは中国語のみ使用できる人たちばかりのように見えました。そのためか、外国の方が英語で登壇するカンファレンスについては閑古鳥になり、有名企業の中国人が登壇するセッションについては内容に比例して過剰に人が集まる、という状態でした。
この辺はどの国も似たような状況なのかなとも感じますし、ある意味国により保護されている中国のIT業界はよりそのドメスティックな兆候が大きく出てしまうのかなとも思いました。
以下では、参加レポートのサマリー版として、気になったセッションについて、備忘録的に雑に記録します。
第一天(2019/06/24) Keynote
今年は KubeCon 単独開催というよりは OpenSource Summit と併催ということもあり、全体的にオープンソースの価値について語られるKeynoteがとても多かったように思います。ポエム成分高し。
Linux Foundation の方のお話。OpenSourceは世界最大の発明だよ、という話。
世界中のあらゆるハードウェアにオープンソースのソフトウェアが載っているよ、というお話。
オープンソースの世界では、統制が取れている環境の中開発されているのではなく、何かしらの「匂い」を感じた人たちが同時多発的に同じようなソフトウェアを開発しだし、最終的にデファクトスタンダードに収斂されていく、という話をしていました。Kubernetesに関する話がまさにそれで、(※Docker SwarmやOpenShift、Pivotalなど同種のソフトが同時多発的に世の中に生み出され、栄枯盛衰の末に最終的にKuberentesに収斂)、これこそがOSSの価値なのであるという話をしていました。
そして、中国がここ10年でオープンソースへのコントリビュートがとても増えている。Kubernetesについても世界第二位のコントリビューターである、との話(当然一位はアメリカ)
Linuxの生みの親、ライナス・トーバルスも来ていました。始めて中国・上海に訪れたとのこと。好き勝手にいろいろな話(好きなゲームとか)をしていましたが、開発者に(俺みたいになりたいエンジニアに対して)伝えたいメッセージとして
「ユーザーを裏切らないことが大事」
「コミュニティ、カルチャーを長い時間をかけて作り続けることが大事」
という事を話していました。
その後は中国企業の方々のKeynote。それまで英語でしたが、うって変わって中国語だけでのプレゼンとなりました。
Huaweiは「物联网(IoT、の中国語)」に力を入れているが、様々な問題が起こる。それらをOpenSourceの力で解決しているという話。
Huaweiは研究開発に力を入れていることで有名です。IoT機器に乗せる独自OS(LiteOS)も自作しています。
https://www.huawei.com/minisite/liteos/en/
https://github.com/LiteOS
Tencent Cloudの人は、TKE(Tencent Kubernetes Engine)に力を入れているという話をしていました。GPUサポートはどのクラウドでもよくありそうですが、TAPP(Tencent APP)との連携機能はTencentならではという感じです。
TKE MeshというAWSのApp Meshのようなサービスも提供しているようです(TKE Meshはistioをベース、App MeshはEnvoyをベース)。
Serverlessについても力を入れているとのこと。Serverless な環境は開発においてはServerless Frameworkなどの共通プラットフォーム上で透過的に開発できるような流れになってきており、プラットフォーム側もKnativeなどの登場で汎用化が進み、以前と違ってベンダーロックインの危険性が徐々に減っている用に思えます。
Tencent Cloud向けにもServerless Frameworkでの開発、デプロイが現在は簡単にできるようになっているようです。
https://github.com/tencentyun/serverless-tencent-scf
Serverless=AWS Lambda みたいな単純な図式でもなく、ベンダーロックイン云々という狭い話ではなく、Serverlessは汎用的でポータビリティのあるアーキテクトの選択肢の一つ、という時代に変わったという印象を受けるセションでした。
使用vitess的两年
Kubernetes 上でMySQL互換のプロトコルでデータベースを構築できるVitess。
日本ではあまり事例を聞かないのですが、中国ではとてもユーザーが多く盛り上がっているようです。
このセッションはVitessの基礎と、その運用についての話。
以下のPDFは当セッションのスライド資料です。
概論
基礎的なアーキテクトとしては以下。
・Gateサーバー
・全体のtabletの管理を司る
・MySQLプロトコルで接続を司り、後段のノードからデータ操作処理を行う。後段のノードとはgRPCで通信
・tabletサーバー
・データを保存する。
・Single Shard / Multi Shard 構成で、一つのGateに対して複数のTabletを構築することができる。
・VIndex
・どのGate、Tabletにどのデータが保存するかを保存するIndex.これによりGateへの問い合わせ効率を向上させている。
京东では、Tabletに保存されたデータを逐次Binlogとして他のStorage(Binlake)にコピーし、大規模データ解析用途に使用している。
運用面の話
MySQLからのMigrationについては、MySQLのBinlogを独自で開発したTranslator経由でVitessにコピーした。
運用時のDDLクエリーの不備などに非常に困っていたので、プロセスで改善しようとしたが、それだけでは足らないので独自のチェックツールを作って対応した(vtcheck)。golang製。show create tableの値と実際適用しようとするDDLを比較して不備がないかチェックする。
全般的に、再利用可能なコードが少ない、試すのが大変、結構バグがあるということで、まだ枯れたソフトではないよ、というのがアドバイスとして伝えられました。
遭遇した大きな課題は以下
・cluster upgrade
・複雑なクエリーの対応
・アプリケーションからの要望に応えるための構成変更
・etcdの問題
・大きすぎるデータを扱うと問題が起こるということで、localにある大きなデータはRedisに保存するようにして対応。
TiKV最佳实现
TiDB/TiKVを作っている、とのベンチャー企業のCTO(PingCAP)のプレゼン。ざっくりいうと、超スケーラビリティなRedisみたいなもの。現在CNCF Incubator。
このCTOは話がうまくて、中国語が聞き取りやすいのが印象的。
製品の詳細について、CTOからバトンタッチして詳しそうなエンジニアが登壇。
データはregionというグループ単位で管理。3つのノードに必ずレプリカを持つ。regionは肥大化したら自動的に複数にsplitする。各ノードにsplit情報をraftプロトコルで伝達する。
3つのノードの中にはleaderノードが存在し、splitの発動などmaster的な動きを司る。詳細な手順は不明だがleaderのtransfer(他のノードに移す)も高速にできるらしい。
regionの分散ストレージの構成は簡単にまとめると2つ
・Single IDC
・ひとつの IDC 内に、nodeもregionもまとめる。シンプルな構成。
・Cross IDC
・複数の IDC で region を共有する。拠点ごとに分散処理をしたい場合に有効。
遭遇する問題点として、一部のクラスターへの負荷集中(Hotspot) があるため、回避方法を考えておく必要がある。
・主要因はkeyの偏りによる。なので時間を基にしたkeyは使わない
・incremental id / update time = now() は使わない
・戦略に基づき自動的に re-balanceされるようになっている。
・Read/Write flows / regions
・手でもre-balanceが行えるようなツールを用意している。
パフォーマンスチューニングのポイントは以下。
・Thread Poolの数
・接続数≒処理能力
・データ保存の仕方(圧縮するか否か)
・CPU と Disk のトレードオフ
個人的には、中国は国内向けサービスであっても Data Locality を意識して拠点最適化をしなくてはいけないくらい、国土が大きくて人口が多い国なんだなと改めて感じさせられるセッションでした。だからこそ、TiDB/TiKVのようなものも必要になるということなのだと思います。
为互联网金融关键任务场景扩展部署
Ant financial の k8s の運用に関わる話。
ちょっと時間のマネジメントに失敗して移動に時間がかかり途中から。
アリババスケールのトラフィックをさばくために、独自開発の Deployment として CafeDeployment を作成した、という話から聴講しました。
CafeDeployment
基本的な思想としては、以下3つを実現することを目的としたものが CafeDeployment。言葉はアリババの開発部隊の造語です。
・In-place upgrade
・Stable IP 群を用いて、IPの裏側で動くPod を差し替える。
・InPraceSetという Controller を用いる
・Active-Active Replication
・Safe Deployment
・Canary
・rolling deployment in batch
いずれも、システムのダウンタウンを最小にしつつ、極めて大きなアプリケーションを安全にデプロイすることを目的としています。以下、そのための設定や仕組みについての解説スライド、の写真です。
InPlaceSet Controller について、Kubernetesの標準機能としては聞き慣れない言葉だと思ってましたが、alibabaの作品のようです。
CafeDeployment も、alibaba が自らの大規模サービスを運用するために拡張した、Kubernetes の Deployment 実装ということです。
ひととおりの説明のあと、実際にデモを動かして、CafeDeploymentが正しく行えることを披露していました。
最後に、なぜか会場のみんなで記念撮影をしました。
Some Lessons We Learned from Moving E-business Giant to Cloud Native
見に行きたかったのですが、セッション会場が人が溢れ、立ち見ですら入れないくらいの盛況でした。後日、泣く泣く YouTube で拝聴しました。
Alibabaが、独身の日(11月11日)のセールなどでなんども困難に直面しながらもCloudNativeな環境にたどり着くまでの道のりについてのセッションです。以下は PDF のスライド資料。
その中で、とても大きな役割をしたと言われる、Alibabaが開発していると言われるKruise(OpenKruise)についてはかなり興味深いです。
OpenKruiseや、TiKV/TiDB、Vitessなどの話は、日本に居るだけだとまず知ることができませんが、世界的な技術潮流を形作っている一つの類型です。こういう情報のキャッチアップができるだけでも、海外カンファレンスに参加する意義というものはとても深いものです。
それは、単純に技術スタックを理解するとか、技術に詳しくなるという事以上に、Keynoteでも語られていましたが今の世の中の「匂い」を知る、という事で、とても有意義なことだと感じています。
联合电信人工智能市场
Huawei が開発している Acumos と呼ばれるAI基盤についての概説。Huaweiが力を入れていますが、位置づけとしては Linux Foundation のプロジェクト。
なにか、説明しているおばさんが知識が豊富なのか古典を範にした四字熟語らしきものを連発していて、さすがに聞き取れませんでした。
プレゼンでは、Acumosの画面上で、どんな感じでモデルを登録し、機械学習の処理を動かすかのデモに重きを置いて説明されていました。なのでここで書くことがあまりないです。
作成したモデルは、マーケットプレイスへの公開を行うこともできるようです。
Huaweiが提供しているAIマーケットについての説明もありました。
https://telcloud.huawei.com/#/
「詳しい話はブースでね」という締めくくりで話が終わり、なぜか「外が雨降っているので傘を持ってない人もいるでしょうから」とグッズらしき傘が聴講者全員に配られました。
大银行实施 DevSecOps 所面临的挑战和解决方案
中国の大手銀行、汇丰银行のDevSecOpsの取り組みについて。
なぜDevSecOpsが大事なのか?
→DevOpsは開発サイクルの高速化を果たしたが、安全についての意識や対策が漏れたままDevOpsを推進しても、安全ではないソフトウェアを高速でばらまくだけになる。だからDevOpsにSecurityの概念は絶対必要。
DevSecOps問言葉自体は2012年にガートナーが提唱(当時はDevOpsSec)し、2017年ころから流行しはじめたとのこと。
DevSecOps導入の課題
・まだツールがそれほど充実していない(新しい概念なので)
・ツールはあるが、CI/CDに組み込みづらいものも多い
・ツールの使い勝手、インターフェースの問題
・処理に時間がかかりすぎる問題
・エンジニア、組織の意識
・あまりセキュリティを重視しない人が多い
解決するためにはそれらを改善することが必要
・適切なツールをCI/CDに組み込む
・セキュリティ関連の部署を作る
・セキュリティへの意識を変える。みなが専門家になる。
組織的な話としては、具体的には以下のような組織構成にしたようです。
・DevOpsチーム
・の中に、DevSecOpsの責任者をおく。
・開発チーム
・セキュリティチーム
ここから、技術担当者に代わりツールの詳細について。広東省出身でなまりがきついけど笑わないでね、という説明から。
使用しているツールについて。Javaで開発していることが伺われるスタックになっています。基本的にCI/CDはJenkinsで実践している模様。
設計
・ドキュメントで仕様を明文化
・JIRA,Confluence
開発
・Jenkins
・Nessus (https://jp.tenable.com/products/nessus/nessus-professional)
・Sonartype Nexus IQ Server (https://www.sonatype.com/nexus-iq-server)
・Checkmarx (https://www.toyo.co.jp/ss/products/detail/checkmarx)
・Slack
テスト
・COnTrast Security (https://www.contrastsecurity.com/)
・Jenkins
・Selenium
リリースドキュメント
・Confluence
セキュリティの体型として、SAST,DAST,IASTというものがあるらしいですが、この説明が少なかったのでここはあまり理解できず。
https://www.softwaresecured.com/what-do-sast-dast-iast-and-rasp-mean-to-developers/
ツールはセキュリティを保つためのいち部分でしかなく、どのような組織にしていくかがとても大事。
汇丰银行は会社として以下を提供している
・自習可能なオンライントレーニング教材の提供
・PCI-DSSなどの講義内容がプレゼン資料中に書かれてた
・Secure Code Warrior への参加
・https://securecodewarrior.com/
会場の風景
今年は世界博覧会の会場跡地近くで行われました。昨年訪れた時よりも交通の便という意味ではとても便利になりましたが、会場の設備費用が高いのか、振る舞われるお土産、お菓子や食事等々はだいぶ貧相になった気がします。私は空き時間がほぼない超絶タイトなスケジュールの中、提供された粗末なお弁当で飢えをしのぎました。
この記事が気に入ったらサポートをしてみませんか?