Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Finch OSSコードリーディング
Search
x-blood
April 24, 2023
Programming
1.5k
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
60
re:Inventで現地参加したコンテナ関連セッションを振り返る
xblood
0
600
Amazon EKS Pod Identityで何が変わるのか
xblood
0
1.2k
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.9k
ECS Service Connectでマイクロサービスを繋いでみた
xblood
0
2.6k
AWS Glue Git統合のPoCでの活用
xblood
0
240
Spring BootとKubernetesで実現する今どきのDevOps入門
xblood
1
1.3k
Other Decks in Programming
See All in Programming
地方こそサーバーレス — 10年続けた、顔が見えるチームで確かな基盤を / Serverless Matters Most in Regional Areas — 10 Years of Building Reliable Foundations with Close-Knit Teams
seike460
PRO
1
340
Herb in Rails 8.2: Your ERB views, now HTML-aware @ Kaigi on Rails 2026, Tokyo, Japan
marcoroth
2
420
Augmenting AI with the Power of Jakarta EE
ivargrimstad
0
220
仕様駆動開発入門 (何を作るかを先に決めて渡す) | 目指せ Kiro マスター 05
inariku
PRO
2
110
Snowflake Openflow Connector利用の勘所 / 20261024developersio2026tokyo-snowflake-openflow
kasacchiful
PRO
0
320
AI Augmentation Techniques with Liberty
ivargrimstad
1
420
プロジェクトコードをキレイキレイしよう!暗黙的な参照を読み解く静的解析
ostk0069
0
210
クラウドエージェントは、 何がそんなに便利なのか / what makes cloud agents so useful
rkaga
5
810
Enforcing Your Architecture with Unit Tests in the AI Era (Swift Connection X)
steliosf
PRO
1
150
AI時代のTerminal環境を UNIX哲学で設計・運用する
yasunori0418
1
350
조합이폭발하는디자인시스템이걸눈으로도테스트하라고요
giljongyu
0
740
React Native経験者が Flutterを30⽇間触って驚いたこと
3saito
0
170
Featured
See All Featured
Site-Speed That Sticks
csswizardry
13
1.6k
Building the Perfect Custom Keyboard
takai
2
950
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
2
510
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
2
2.1k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
52
6.2k
Un-Boring Meetings
codingconduct
0
490
So, you think you're a good person
axbom
PRO
2
2.3k
How to Think Like a Performance Engineer
csswizardry
28
2.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.9k
For a Future-Friendly Web
brad_frost
184
11k
Joys of Absence: A Defence of Solitary Play
codingconduct
1
570
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.8k
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