Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Finch OSSコードリーディング
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
x-blood
April 24, 2023
Programming
1.4k
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Finch OSSコードリーディング
x-blood
April 24, 2023
More Decks by x-blood
See All by x-blood
Amazon Q Developerでテストコードを生成してみた
xblood
0
46
re:Inventで現地参加したコンテナ関連セッションを振り返る
xblood
0
550
Amazon EKS Pod Identityで何が変わるのか
xblood
0
1.1k
Lizさんに届け!AWS Jr. ChampionとTop Engineerが書籍コンテナセキュリティを読んで感じたこと
xblood
0
1.6k
サーバーレスJavaパフォーマンス選手権 at AWS Dev Day 2023 Tokyo
xblood
2
1.5k
サーバーレスJavaの今 ~SnapStartとWeb Adapterを寄せて~
xblood
4
3.7k
ECS Service Connectでマイクロサービスを繋いでみた
xblood
0
2.5k
AWS Glue Git統合のPoCでの活用
xblood
0
230
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
1
1.2k
Other Decks in Programming
See All in Programming
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
990
Honoでのサプライチェーン侵害対策 〜 3つのライブラリに学ぶ
yusukebe
7
1.5k
The NotImplementedError Problem in Ruby
koic
1
980
LLM本来の能力を解き放つサンドボックス技術とAI民主化への適用
yukukotani
3
4.6k
さぁV100、メモリをお食べ・・・
nilpe
0
160
決定論的オーケストレーションの設計と実装 / Design and Implementation of Deterministic Orchestration
nrslib
4
1.5k
Hunting Vulnerabilities in Symfony with LLMs
vinceamstoutz
0
560
Mujeres en SEO Summit 2026 - Greatest Disaster Hits en Web Performance
guaca
0
210
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
760
才能?センス?知らん、 続けたもん勝ちだ。-- 結婚・出産・癌を越えてなお、私がプロダクトを創り続ける理由
16bitidol
1
570
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
370
Datadog LLM Observabilityで実現する 安全なLLM Usage 管理
3150
0
120
Featured
See All Featured
How to Build an AI Search Optimization Roadmap - Criteria and Steps to Take #SEOIRL
aleyda
1
2.1k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.5k
Building the Perfect Custom Keyboard
takai
2
800
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Sam Torres - BigQuery for SEOs
techseoconnect
PRO
0
290
The SEO Collaboration Effect
kristinabergwall1
1
490
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Build The Right Thing And Hit Your Dates
maggiecrowley
39
3.2k
What Being in a Rock Band Can Teach Us About Real World SEO
427marketing
0
1k
My Coaching Mixtape
mlcsv
0
160
Mobile First: as difficult as doing things right
swwweet
225
10k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Transcript
Finch OSS コードリーディング 佐藤 靖幸 JAWS-UG コンテナ⽀部 #23 春のFinch特集 2023/04/24
JAWS-UG コンテナ⽀部 #23 春のFinch特集 1
⾃⼰紹介 佐藤 靖幸 @yasai_ls JAWS UGコンテナ⽀部 運営メンバー 好きAWSサービス︓ VPC、Lambda、ECS、EKS 2023/04/24
JAWS-UG コンテナ⽀部 #23 春のFinch特集 2 PARTNER NETWORK 2022 APN AWS Top Engineers
アジェンダ 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 3 Finch OSSコードリーディング GitHubリポジトリの構成要素
GitHubリポジトリのディレクトリ構成 主要なライブラリ コードリーディング まとめ
GitHubリポジトリの構成要素 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 4 (2023年4⽉24⽇ 時点) 種別
P. Language go 1.20 Linter golangci-lint License Apache 2.0 CI GitHub Actions
GitHubリポジトリのディレクトリ構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 5 finch ├── benchmark
│ ├── container ... コンテナのビルドと起動時間のベンチマークを取得 │ └── vm ... 仮想環境の初期化とベンチマークを取得 ├── cmd │ └── finch ... CLIアプリケーションが格納されているメインとなるソースコード ├── contrib │ ├── hello-finch ... サンプルのDockerコンテナ(finchのAAがある) │ └── logo ... Finchのロゴファイル(svg) ├── deps │ └── finch-core ... Gitサブモジュール。finch-coreリポジトリを参照 ├── docs │ └── design ... 設計ドキュメント ├── e2e │ ├── container ... common-testsを参照。push,pull,runを検証 │ │ └── cosign_data │ └── vm ... 各種vmコマンドを検証
GitHubリポジトリのディレクトリ構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 6 finch └── pkg
... finchのmainコードから派⽣する各種処理 ├── command ... 各種コマンドを実⾏ ├── config ... Finchのコンフィグファイルから設定を適⽤ ├── dependency │ └── vmnet ... LimaマネージドNWを利⽤するためのユーザー操作 ├── disk ... ユーザーデータを保存する永続層を管理 ├── flog ... ログ出⼒ ├── fmemory ... メモリ情報を取得 ├── fssh ... SSH接続の設定と作成 ├── lima ... lima vm に関する共通処理 ├── mocks ... MockGenによって⾃動⽣成 ├── path ... ユーザーデータや設定ファイルなどのパスを特定 ├── support ... プラットフォーム情報などをfinch実⾏時に取得 ├── system ... OSに関連するAPIインターフェース └── version ... バージョン情報
Finchのサブモジュール構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 7 Runfinch/finch └── finch-core
├── lima └── socket_vmnet MakefileによるFinchのパッケージビルド実⾏時に、 依存するGit サブモジュールを利⽤ • Lima ... ⾃動ファイル共有とポートフォワーディン グ、およびcontainerdを備えたLinux仮想マシン • socket_vmnet ... Limaで起動したLinux稼働マシンと 通信するためのライブラリ
主要なライブラリ • cobra • CLIアプリケーションを作成するためのライブラリ。Kubernetesでも 使⽤されている。 • Afero • FileSystem抽象化ライブラリ
2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 8
コードリーディング cmd/finch/main.go Finchにおけるメイン関数(main) ログ出⼒、ファイルシステム管理、メモリ管理などを指定 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 9
コードリーディング cmd/finch/main.go main関数から呼び出されるxmain関数 パス設定を⾏い、finch⽤設定ファイルを読み込む 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 10
コードリーディング cmd/finch/main.go nerdctl を利⽤してcontainerdにアクセスするコマンドと finch⽤のコマンドを、cobraで利⽤するコマンドに指定 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集
11
コードリーディング cmd/finch/virtual_machine.go finch vmコマンドの実装例 start stopなどのコマンド毎に関数として定義 2023/04/24 JAWS-UG コンテナ⽀部 #23
春のFinch特集 12
コードリーディング cmd/finch/virtual_machine_start.go コマンド毎の関数の実装例 Cobraライブラリにお作法として渡す RunEで実⾏される処理を指定。pkgパッケージを参照 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集
13
(再掲)ディレクトリ構成 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 14 finch ├── cmd
│ └── finch ... CLIアプリケーションが格納されているメインとなるソースコード └── pkg ... finchのmainコードから派⽣する各種処理 ├── command ... 各種コマンドを実⾏ ├── config ... Finchのコンフィグファイルから設定を適⽤ ├── dependency │ └── vmnet ... LimaマネージドNWを利⽤するためのユーザー操作 ├── disk ... ユーザーデータを保存する永続層を管理 ├── flog ... ログ出⼒ ├── fmemory ... メモリ情報を取得 ├── fssh ... SSH接続の設定と作成 ├── lima ... lima vm に関する共通処理 ├── path ... ユーザーデータや設定ファイルなどのパスを特定 ├── support ... プラットフォーム情報などをfinch実⾏時に取得 ├── system ... OSに関連するAPIインターフェース └── version ... バージョン情報 着眼するディレクトリはcmd, pkg、この2つ!
コードリーディング 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 15 contrib/hello-finch/main.go (おまけ)動作確認⽤コンテナはfinchのAAがあるよ︕
まとめ • FinchはLimaに依存しており、LimaのVMに対して操作を⾏う CLIツールとして実装されている。 • Git サブモジュールを活⽤してコアとなる依存モジュール (Lima、socket_vmnet)を管理している。 • OSSのcobraを活⽤したCLIツールの実装の⼀例としてコード
リーディングすると、今後cobraを活⽤する時によさげ︕ 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 16
ご清聴ありがとうございました︕ 2023/04/24 JAWS-UG コンテナ⽀部 #23 春のFinch特集 17