柔軟なビルド、デプロイを実現
Monorepoの運用を支援する、OSSのキャッシュビルドシステム「Zim」
複数のパッケージを単一リポジトリで管理するMonorepoが注目されている。1つの変更を関連する複数のパッケージに適用できるなどのメリットがあるが、優れたツールがなければ破綻する。
クラウドセキュリティ企業Fugueが興味深い技術を提案している。Fugueは「フュージー」(few-g)と発音する。だが、その名前はバロック時代に人気があった多声部から成る音楽スタイル(フーガ)に由来する。
同社のコア製品は、クラウドアプリケーション開発にセキュリティを組み込んで「Amazon Web Services」(AWS)、「Microsoft Azure」「Google Cloud Platform」の構成ミスをなくし、クラウドの曖昧で未知の要素をソフトウェアエンジニアが制御できるようにすることでコンプライアンスを証明しようとしている。
Fugueの最初のスタックはセキュリティに軸を置くソフトウェアだった。だが、今は「Zim」という「非セキュリティ」分野の新しいオープンソースプロジェクトをリリースしている。
Zimは、Monorepo(モノレポ)を利用するチーム向けのキャッシュビルドシステムだ。
Monorepoとは
Monorepoとは、多くのプロジェクトのコードを同じリポジトリに格納するソフトウェア開発戦略のことだ。Atlassianのサイトの記載によると、Monorepoのプロジェクトはそれぞれがほぼ無関係か疎結合型で、他の手段(例えば、依存関係管理ツール)によって接続される可能性が高いという。Monorepoは全てのコードと資産が1カ所にあるため、単一ソースの可視性が高い。同じ理由でコラボレーションの助けにもなる。また、開発者が1つのコードに「アトミックな変更」を行うだけで複数のプロジェクト全体に影響を及ぼすことができるため、開発速度も向上する。
では、Zimは何を行うのだろうか。
前述の通り、Zimは多くのコンポーネントや依存関係が含まれるMonorepoを使用する開発者向けに設計されたキャッシュビルドシステムだ。チーム全体に「高速増分並列ビルド」を提供する。「Docker」によるクロスプラットフォームビルド向けの組み込みサポートにより、言語に依存しないビルドシステムを実現する。
Zimは、GitHubでホストされるオープンソースプロジェクトとして入手できる。
「Zimの開発には、『GNU Make』の基本概念と『Buck』(Facebook)、『Bazel』(Google)、『Please』(Thought Machine)が採用するキャッシュ戦略にヒントを得ている。GNU Makeと同様、Zimは入力や出力を定義する新しいルールの簡単な表現方法と、出力の作成に必要なコマンドなどを備えている。ZimではRule Keys(ルールキー)を処理する。ルールの入力と構成を組み合わせたハッシュを基にルールの出力がキャッシュ内に既に存在するかどうかを判断するのに、このルールキーが使用される」と、Fugueの共同設立者でコミュニケーション部門のバイスプレジデントを務めるドリュー・ライト氏は同製品のリリースノートに記載している。
FugueがクラウドセキュリティとコンプライアンスSaaSをAWSに構築するに当たって、最初は「AWS Lambda」と「AWS Fargate」によるサーバレスアプローチを採用した。それは、仮想サーバ(「Amazon EC2」インスタンスなど)の管理を避け、AWSのメカニズムによってセキュリティとジョブを分離して応答性の高い動的なスケーリングできるようにするためだった。
そのため、チームは全コードをMonorepoに格納し、Makefileを使ってタスクのビルドとデプロイを全てスクリプト化することにした。
だが、システムのコンポーネントが数百に増えるとMakefileのアプローチは扱いにくくなり、ビルドと成果物の管理ツールを改善する必要があることが分かってきた。
「Zimとその共有キャッシュにより、多くの一般的なタスクのビルド時間が大幅に短縮された。Zimの共有ビルドテンプレートを再利用すると、Makefileベースのビルドスクリプトのメンテナンスも大幅に減少した。当社のテンプレートライブラリはPython、Go、Node.jsで記述されており、AWS LambdaとAWS Fargate用バイナリの効率的なビルドをサポートする」(ライト氏)
Zimの主な特徴は次の通りだ。詳細については同社のブログを参照してほしい。
- 高速並列ビルド
入力が変化する場合のみルールが実行され、他の開発者が既にビルドしている場合は共有キャッシュから出力が取り出される。
- ビルド手順の簡単な定義
新しい種類のコンポーネントのビルド方法を数行のYAMLで定義する。
- ビルド環境の分離とクロスプラットフォームコンパイル
組み込みのDockerサポートを利用。コンポーネントのビルド時に使うDockerイメージを指定するだけだ。
- 入出力リソースの種類の柔軟性
Zimはネイティブなサポート対象リソースとしてファイルとDockerイメージの両方と連携可能。
- 共有キャッシュの設定が容易
「AWS CloudFormation」により「Amazon S3」に設定できる。
- 軽量で簡単なインストール
ZimはGoで記述され、単一のバイナリにビルドされる。そのため、事実上全てのCI/CDパイプラインと互換性がある。
Copyright © ITmedia, Inc. All Rights Reserved.
Computer Weekly日本語版
この記事の著者
関連記事
新着ホワイトペーパー PR
-
製品資料
[株式会社MatrixFlow] 「物流リソース最適化」ガイド:人員・配車・傭車を出庫依頼の確定前に決めきる -
製品資料
[株式会社キーエンス] なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは -
製品資料
[株式会社セールスフォース・ジャパン] 「CRMは設計と無関係」は本当か? PLMとの融合で実現する高速開発 -
事例
[日本ヒューレット・パッカード合同会社] AIエージェントの時代にどう備える? 「新たな働き手」を支える3要素とは -
製品資料
[日本ヒューレット・パッカード合同会社] “横並びの自動化”から脱却、AI活用で生産性と競争力を高める秘訣
こんなメディアも見られています
TechTargetジャパンに関連する情報をお探しであれば、こちらのメディアもお役に立てるかもしれません。
ベンダーコンテンツ PR
From Informa TechTarget
SpecialPR
アクセスランキング
-
1
ChatGPTは“検索しまくり”でGeminiは“淡泊”? データが明かすAIの裏側
-
2
法務と開発者で「言葉が通じない」問題 トヨタやソニーが語るOSS管理の真実
-
3
なぜ「全社配布Copilot」は使われないのか? 失敗に学ぶAI定着
-
4
「IBM iはDXのボトルネック」は誤解 意外と知らない今風モダナイズの効果
-
5
「朝8時にバッチが終わらない」データ爆発の危機をJPX総研はどう乗り越えたか
-
6
「中堅・中小企業のネットワーク・セキュリティ運用実態」に関するアンケート
-
7
損保ジャパンはなぜ「COBOL」を捨てなかったのか? 脱メインフレームの真相
-
8
AI導入後に発覚する「社内文書を読めない」問題 情シスは何を直せばいい?
-
9
情報漏えいはなぜ繰り返されるのか 今すぐ見直すべき「境界」
-
10
情シスの約8割が転職や退職を意識 調査で分かった“辞めたくなる最大の理由”
ホワイトペーパーランキング PR
-
1
不審メールの経路や見せ方に変化? 2026年夏の3事例から見えた動向と対処方法
-
2
家庭用Wi-Fiルーターの業務利用は危険? 避けるべき理由と具体的な対策
-
3
Microsoft 365を安全に運用 うっかりミスやサイバー攻撃に備えるデータ保護術
-
4
財務部門がAIを最大限に活用する方法 無駄のない戦略的リーダーシップへの道
-
5
LLMが兵器化? 元FBI高官が鳴らす警鐘とセキュリティツール統合のポイント
-
6
「オンプレミス回帰」せざるを得ない“合理的な理由”
-
7
なぜRPA導入は頓挫する? シナリオ作成の壁を乗り越える解決策とは
-
8
生成AIを開発に導入しても効果が見えない? 実証実験で分かった成果と課題
-
9
経産省DX指針から読み解く、受発注業務デジタル化ロードマップ
-
10
HDDを使わない「SSDオンリー」が無謀なのはなぜ?
TechTargetジャパン SNS
インフォメーション
注目情報をチェック
TechTargetジャパンをフォロー