Monorepoの運用を支援する、OSSのキャッシュビルドシステム「Zim」柔軟なビルド、デプロイを実現

複数のパッケージを単一リポジトリで管理するMonorepoが注目されている。1つの変更を関連する複数のパッケージに適用できるなどのメリットがあるが、優れたツールがなければ破綻する。

2020年10月22日 08時00分 公開
[Adrian BridgwaterComputer Weekly]

 クラウドセキュリティ企業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.

新着ホワイトペーパー

市場調査・トレンド インフラジスティックス・ジャパン株式会社

開発企業200社の調査に見る、開発現場の課題を解決に導くツール選びのコツ

システム開発にスピードと柔軟性が求められる中、AI開発支援ツールやテスト自動化ツールの活用が進んでいる。200社を対象に行った調査の結果から、開発現場の課題やツール活用の実態を解説するとともに課題解決につながるコツを紹介する。

製品資料 情報技術開発株式会社

OutSystemsで始める、拡張性・保守性・運用性の高いアーキテクチャ設計の考え方

アプリケーションのアーキテクチャ設計は、将来的な拡張性や保守性、運用性などを考慮しながら行う必要がある。難度の高いこの作業も、ローコード開発プラットフォームに用意されている設計手法を活用することで、取り組みやすくなる。

事例 Smartsheet Japan株式会社

Boxが複雑なプロジェクト管理を“コーヒーが冷めないうちに”片付けられる理由

大規模な企業イベントの開催には、予算やスケジュールなど膨大な情報を整理する作業が必要だ。これを手作業で行っていては効率が上がらない。そこで膨大な情報を単一ツールに集約・保管することで、作業の簡素化を実現した事例を紹介する。

製品資料 ServiceNow Japan合同会社

「ローコード開発」実践のヒント:AI主導のイノベーションに向けた4つの戦略

急速に変化する顧客ニーズに応えるような適切な製品を継続的に提供するためには、より多くのアプリを生み出す必要があるが、そのための開発者が不足している。そこで注目されているのが、生成AIやローコード開発プラットフォームだ。

製品資料 インフラジスティックス・ジャパン株式会社

デスクトップアプリからWebアプリへの移行、UI開発の課題を解消する方法とは

デスクトップアプリのWeb移行に対するニーズが増加しているが、デスクトップアプリとWebアプリでは、UI開発のアプローチが大きく異なる。このような状況を打破する上で有効なのが、ビジュアルベースのUI画面開発ツールだ。

アイティメディアからのお知らせ

From Informa TechTarget

なぜクラウド全盛の今「メインフレーム」が再び脚光を浴びるのか

なぜクラウド全盛の今「メインフレーム」が再び脚光を浴びるのか
メインフレームを支える人材の高齢化が進み、企業の基幹IT運用に大きなリスクが迫っている。一方で、メインフレームは再評価の時を迎えている。

ITmedia マーケティング新着記事

news017.png

「サイト内検索」&「ライブチャット」売れ筋TOP5(2025年5月)
今週は、サイト内検索ツールとライブチャットの国内売れ筋TOP5をそれぞれ紹介します。

news027.png

「ECプラットフォーム」売れ筋TOP10(2025年5月)
今週は、ECプラットフォーム製品(ECサイト構築ツール)の国内売れ筋TOP10を紹介します。

news023.png

「パーソナライゼーション」&「A/Bテスト」ツール売れ筋TOP5(2025年5月)
今週は、パーソナライゼーション製品と「A/Bテスト」ツールの国内売れ筋各TOP5を紹介し...