2024/11/28,29 CloudNative Days Winter 2024 #CNDW2024 https://gyazo.com/d94e812fc3a03666b5967bf04a08e8ed
2024/11/28
轉職したらゲーム基盤システムの移行が大變だった話 ~ 數百臺のアプリをGKE化、CloudSQL化させて苦勞したこと勘所
3人チームでも運用できるパルワールドのクラウドネイティブ技術
UPSIDERのアプリケーションを支える、高セキュリティ・高可用・高スケーラブルなプラットフォーム
AI で加速するクラウドネイティブな開發體驗
生成AIのDevOps活用とLLMアプリの效率的な監視、改善、保護
120万口座を支える證券システムのクラウド運用內製化とクラウドネイティブへの挑戰
ここまで o11y チームとして色々見ててちゃんとsessionを聞けなかった
what?
two pizza team
自律性と說明責任を持った少人數の team
platform team
platform を製品として自律性と說明責任を提供し、開發および運用する team
開發 lifecycle のあらゆる phase を支援する
成熟度 level
https://gyazo.com/337da0dbab6f8885c6190f31a157cf21
platform の責任範圍
level 1 : 利用者が責任を持って利用する
level 2: 利用者は ver. up に package manager を利用する
level 3 : 實行環境に責任を持つ。利用者は platform の ver. が上がったことを意識しない
level 4 : 利用者に對し直接的な interface を持たず統合させた service である
例
infrastructure
level 1: project template での提供
level 2 : project template + package での提供
Helm package
Terraform module
Dependabot
level 3 : Kubernetes の cluster を管理する。application の實行環境を提供する
cluster API + Argoで管理する
KubeVela
level 4 : platform の運用を自動化する
cluster API manager (custom controller)
Kubernetes cluster の更新を自動化
Karpenter
instance type、IOPS、storage size 等を最適化
spot - ondemand fallback
AWS Resource for Workload
AZ aware routing
topology spread constraints
descheduler
topology aware routing
CI
level 1 : project template での提供
level 2 : 自分で runner を立てて CI を作る
security
outband 通信を制限
package は platform team で用意する
Falco
level 3 : CI metrics
時閒
成功率
CI で見附かった bug 數 / 本番で見附かった bug 數
level 1 : やって
level 2 : 權限管理された GitOps pipeline
level 3 :
canary release、error 率が閾値を超えたら自動 rollback、chaos engineering
CD metrics
deploy 時閒
deploy 成功率
rollback 率
rollback 失敗率
適切な責任分界點を選ぶ
閒違ひだらけのポストモーテム - ホントに役立つレビューはかうだ!
retrospective
ふりかへり
何故やるか?
incident では最高に學べる
incident は system の恢復力の源を見る最高の機會
CNDW2024 の Web site は 10 時始まった直後に重かったよね
post incedent review しなきゃね
どういふ時に review すべき?
いろいろ
いつもより多くの人が incident 對應 channel に入ってゐた場合。も
いつやるか?
なるべく早く
でも best effort で
技術的な課題 + 社會的背景
人閒的な要素
How we got here process
facilitator を asign する
獻身的
本質的な物語を引き出す
incident のあらゆる視點が表現され、かつ事後的な推測を排除する
system について基本的な知識を持ってゐる
責任追及の傾向を意識 (blame-aware) する
$ \ge責任追及無し (blameless)
責任追及の傾向を認識して、乘り越える
誰が關與したかは話してよい
制裁無し
全體の問題に焦點を當てる
not
incident に直接關與した人
上司
新入社員など、組織に就いての知識を持ってゐない
調査する
事後の視點ではなく、realtime での狀況を再現する
情報を集める
interview する
主要關係者、專門家、關與してゐない筈の人々、非難されてゐると感じてゐる人、組織に新しく參加した人 等
話させる
どのやうにして incident に卷き込まれましたか?
あなたが「なにかおかしい」と言ったとき、何を考へてゐましたか?
このやうな種類の incident に遭遇したとき、通常何を確認しますか?
なぜ〜さんを呼んだのですか?
「何故起きたのか?」ではなく「何故これが理にかなってゐたのか?」
分析する
timeline
落とし穴
根本原因への過度な注目
複合的な原因を見逃す
「人的 miss」を原因とする
反事實的推論 (counterfactuals)
ああすべきだった。ああすべきではなかった
meeting
adgenda
process の槪要
物語 (narrative) の槪要
技術に關する背景
主な theme と質問
次の step
資料を事前に配布する
囘答してほしい事は事前に傳へる
議論の facilitation
action item を纏める
report する
物語的な說明
顧客・從業員への影響
trigger
主要な學び・theme・質問
貢獻要因・Enablers
Contributors/Enablers
Mitigators
Difficulties during handling
Follow-up Items
Resources
Timeline
Mastering Cloud Native API Gateway with Envoy API gateway pattern
認證・認可
auth service と遣り取りして token を發行する
access log
transcoding
TLS
domain
IP
CDN integration 等
out-of-the-box
附屬する custom filter
gRPCgRPC.icon - JSON transcoding battle tested
要素
Listener
0.0.0.0:5000
Route
Path: /service-1
Cluster
Service-1
Endpoint
10.28.1.11
control plane
xDS API
{Listener|Route|Cluster|Endpoint} discovery service API
動的に設定を變更できる
外部認證・認可
external_auth.proto
proxy-wasm
型附け
YAML 等を出力
マルチモーダルAIを活用して、運用監視ツール橫斷で事象解析と傾向分析の自動化にチャレンジしてわかった勘所
multimodal AI に與へる畫像
寸法を合はせる
API 名などの文字列は、すべて見せる
要素の多過ぎる畫像を見せると AI の氣が散る
文字列でも同じだらう
先に集中・注目させる段を挾むよね
tool の URL と prompt を與へると、screen shot を撮って分析結果も出してくれる
URL は日時を自動で入れて access する
Slack に投稿してくれる
使った畫像を目で確認できる
eBPF Deep Dive: Architecture and Safety Mechanisms kernel module との比較
安全性。verifier による檢證
後方互換性
繪本
verifier
loop 檢出
特權が有れば loop は許可される
到達不能命令
範圍外 jump
program が終了する事
有效な處理をしてゐるか檢證
簡單に simulation してる
最適化
dead code 除去
inline 化
他
ALU sanitation
PREVAL
JIT compile
hook
kernel の、attach できる箇所
eBPF map
RISC 型の VM で實行される
64 bit 命令
wide 命令 encoding
2 命令を 128 bit 命令のやうに扱ふ
BTF
bpf trampolin
KFunc
eBPF Link
2024/11/29
LLMを「速く」「安く」動かすには
large
Llama3 (Facebook)
70B 個の parameter
140 GB
language model
大量の memory access
文の生成は文の前の部分に依存してて、竝列化できない
1 囘の生成 (1 token) 每に全 parameter を讀み出さないといけない
日本人はだいたい 10 文字/s で讀む
1 token$ \Doteq1 文字
1.4 TB/s
memory の壁
最新の GPU (80 GB)$ \times2 だと 1440 萬圓
量子化
個々の parameter を小さくする
bfloat16→4 bit
140GB→35GB
精度はほとんど落ちない
小規模言語 model (SLM)
LINEヤフーにおける超大規模プラットフォーム實現への挑戰と學び
約 5 年で開發〜移行
scale-out 1st.
applicatin 數が急增しても安定的に實行したい
scale-out 戰略をとれない箇所をできるだけ排除するやうに platform を設計・實裝する
scale-up ではなく
複數の Kubernetes cluster を組み合はせて 1 つの platform を構成する
開發者は meta cluster に application を deploy する
空いてゐる cluster で container を起動する
metrics pipeline の scale-out
metrics agent (telegraf) を DaemonSet として置く
metrics に tenant index を付與して區別する
忙しい node に對しては、telegraf 用の node を追加して手分けする事も
platform as a product
樣々な user に usecase に應へたい
圓滑に移行を行ひ舊 platform の利用を 0 にしたい
platform engineering
社內 platform を顧客向けの product のやうに扱ふ platform team の mindset
user story mapping を作る
假說檢證
クラウドコストと使用量を最適化し、ビジネス價値の最大化へと導く「FinOps」の實踐アプローチのご紹介 cloud の cost の管理
https://gyazo.com/547953256b0d208d66854e99b0552fa0
FinOps framework
https://gyazo.com/87b3a467f5521a1724db5dbb2521a880
可視化と report
cost 削減
goveronance
FinOps community
Kong Konnectでマイクロサービスを統括!複數K8s環境を一元管理
production と staging の distribution
同じ domain
裏にも 2 つの cluster が有る
header で分ける
無かったら active な cluster へ向ける
氣まぐれLLMのふるまいを暴け! - OpenLLMetryを通して見る世界
問題
期待した出力が得られない
確率的に出力するから
grounding
或る時點迄の知識しか持ってゐないから
繼續事前學習
fine tuning
運用 cost の豫測が難しい
出力に時閒がかかる
traces
入力から出力までの流れ
metrics
client
token の使用量
處理時閒
server
TTFT (time to first token)
TPOP (time per output token)
events
入出力の capture
OpenLLMetryOpenTelemetry.icon
semconv
自動計裝
Traceloop.init()
SaaSベースのスキャンで實現するWebアプリケーション/APIの脆弱性可視化と保護戰略
F5 Distributed Cloud Web App Scanning
collector
build
distribution
ocb (OpenTelemetry collector builder)
config
extension
zPages
performance profiler
health check
OpAMP agent
設定を變へるには
build して
config を書いて
再 deploy …
collector の設置
collector が無い。application から直接送る
簡易
host の metric や infra の 屬性が附かない
各 node に collector を設置
application が crush しても tememetry を失ひにくい
多段
application の近くには小さな collector を置いて、load balancer を挾んで後段の collector に委讓する
load balancing exporter
retry で memory が膨らむのを後段に押し付けられるね
tail sampling を後段に押し付ける
OpAMP server
control plane
OpAMP client
OTel collector や Fluent Bit 等の、agent を管理する
collector に extension を入れる
構成
server-client 構成
collector の status report しかできない
reports_effective_config
reports_health
server-supervisor-client 構成
OpAMP supervisor
collector の開始・停止
remote 設定
config を配って reload
collector の status report
Neco (Kubernetes cluster in Cybozu)
L4LB
kube-proxy を置換
kube-proxy は iptables を利用してゐる
network policy
基本的には無停止で rollout restart
停止が要る場合 (connection tracking map の更新など…)
1 分弱の斷が許されるなら、再起動
許されないなら、 1 node づつ pod を drain して更新
kube-apiserver と通信できなくなった時 cilium-agent が停止してしまふ
upstream に contribution して無效にした
connection tracking table が溢れさうになった
溢れると古い接續を切ってしまふ
GC 閒隔が 12h と長かった
ct map の容量を擴張した
GC 閒隔の上限を短くした
CiliumIdentity の氾濫による pod 作成失敗
eBPF map に表現される
CiliumEndpoint
pod と 1 對 1
eBPF program に表現される
それぞれ異なる job の pod が大量に作成され
CiliumIdentity が大量に作成され
eBPF map の使用率が上がって
pod を作製できなくなったり
CiliumIdentity の生成に關はる label を制限する
CiliumEndpoint が作製されず pod が通信できなくなった
pod を再作成して解決
Hubble
pod に對應する CiliumEndpoint が作製されなかった
eBPF map に誤った CiliumIdentity が登錄されてゐた
外部通信用の CiliumIdentity が割り當てられてゐた
cep-checker
pod と CiliumEndopoint の整合性を檢査する
CloudNative Days Summer 2025
CloudNative Days Winter 2025
CloudNative Days Summer 2026
CloudNative Days Winter 2026