SlideShare a Scribd company logo
1 of 10
go-apt-cacher/mirror
2016/07/16
@第141回東京エリアDebian勉強会
サイボウズ株式会社 湯谷啓明
1
go-apt-cacher/go-apt-mirrorとは
•Aptレポジトリに特化したキャッシュプロキシ/
ミラーリングツール
•ハッシュの一致をチェックするので壊れない!
•Go製
https://github.com/cybozu-go/aptutil
2
CybozuとDebian
•サーバはUbuntu
•サービスに必要なコンポーネントはdebパッ
ケージ化してAptレポジトリ(JFrog Artifactory)で
集中管理
参考:
社内利用のための deb パッケージング入門
http://blog.cybozu.io/entry/2016/05/16/111500
3
CybozuとDebian
4
Apt
レポジトリ
Data
Center 1
Data
Center 2
Data
Center 3
キャッシュ ミラー
JFrog Artifactory
•アーティファクト管理ツール
•OSS 版は Maven レポジトリ機能のみ
•商用版は apt, yum, npm, PyPI, … と多種
•REST API で CI/CD ツールと連携できる
•リモートレポジトリのミラーはできない
•リバースプロキシ兼キャッシュはできる
5
キャッシュ/ミラーが必要な理由
•Artifactoryの負荷を減らしたい
•パッケージダウンロードを速くしたい
更新頻度が高く、ファイルが少ない
→ 必要なものだけキャッシュ
更新頻度が低く、ファイルが多い
→ (レポジトリの一部を)まるごとミラー
6
go-apt-cacherの特徴
• ReleaseやPackagesからチェックサム情報を抽出
• ダウンロードしたファイルのチェックサムが合わなければ
破棄
• Release は定期的にチェックし、チェックサムが更新され
たファイルのキャッシュは自動破棄
• HTTP ヘッダは無視
• キャッシュした Release を定期的に自動更新
• 他のファイルは上記チェックサム変更の自動破棄で対応
• Go なので速い
• 同時 1,000 クライアントも余裕
• キャッシュ済みファイルは 1ms 以下で処理
7
go-apt-mirrorの特徴
• 部分的ミラー
• Suite, Section, Architecture, Source を指定
• 必要なものだけミラー
• rsync より高速な更新
• インデックスを先に処理してファイルのチェックサム情報を入手
• 以前と変化がなければローカルファイルシステム上で再利用
• 不完全なミラーは決して作らない
• インデックスおよびファイルのチェックサムはすべてチェック
• 正しいセットが作れない場合、ロールバック
• ミラーの更新がアトミック
• 更新中の状態は決して見せない
8
実装で大変だったところ
9
•Debian Control Fileのパース
•存在しないファイルがRelease/Packagesに
記載されている
•ファイルはひとつのインデックスだけに書
かれているとは限らない
•ファイルが存在しないと違うフォーマット
のファイルを返してくる
…
Feedbacks are welcome!!
昨日リリースしたばかりなのでバグもあると思
いますが、よければ使ってみてください
※弊社での必要性に応じて作られたツールで、
既存のツールを置き換えるものではありません
10

More Related Content

What's hot

ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
Yosuke Hiraishi
 

What's hot (20)

Apache Mesosってなに
Apache MesosってなにApache Mesosってなに
Apache Mesosってなに
 
ドリコムのInfrastructure as code
ドリコムのInfrastructure as codeドリコムのInfrastructure as code
ドリコムのInfrastructure as code
 
Ansible勉強会資料
Ansible勉強会資料Ansible勉強会資料
Ansible勉強会資料
 
Ansible使いたい
Ansible使いたいAnsible使いたい
Ansible使いたい
 
あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来あるインフラエンジニアの過去と未来
あるインフラエンジニアの過去と未来
 
今日からはじめるディープラーニング
今日からはじめるディープラーニング今日からはじめるディープラーニング
今日からはじめるディープラーニング
 
cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)cloudpackサーバ仕様書(サンプル)
cloudpackサーバ仕様書(サンプル)
 
Ansible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみたAnsible の CI を drone/Dokcker で試してみた
Ansible の CI を drone/Dokcker で試してみた
 
Ansible+Docker
Ansible+DockerAnsible+Docker
Ansible+Docker
 
Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤Rancher による社内向けテナントサービス基盤
Rancher による社内向けテナントサービス基盤
 
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
Docker ホスティングサービス 'Arukas' での Mesos + Marathon の活用について(Mesos勉強会)
 
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
[JANOG35.5] WhiteBox SW検証  ~サーバサイド編~[JANOG35.5] WhiteBox SW検証  ~サーバサイド編~
[JANOG35.5] WhiteBox SW検証 ~サーバサイド編~
 
コンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのかコンテナ時代にインフラエンジニアは何をするのか
コンテナ時代にインフラエンジニアは何をするのか
 
Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-Ansible 2.8 アップデート情報 -機能追加と注意点-
Ansible 2.8 アップデート情報 -機能追加と注意点-
 
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
IT自動化ツール"Ansible"でIDCF Cloudを自動化する話
 
これからのOpenShiftの話をしよう
これからのOpenShiftの話をしようこれからのOpenShiftの話をしよう
これからのOpenShiftの話をしよう
 
Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点Zabbixのパフォーマンスチューニング & インストール時の注意点
Zabbixのパフォーマンスチューニング & インストール時の注意点
 
Serverspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へServerspecを導入したものの放置気味な人へ
Serverspecを導入したものの放置気味な人へ
 
Serverless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャServerless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャ
 
NDS#31
NDS#31NDS#31
NDS#31
 

Viewers also liked

Viewers also liked (20)

Java?ruby? そろそろgoで行ってみませんか?
Java?ruby? そろそろgoで行ってみませんか? Java?ruby? そろそろgoで行ってみませんか?
Java?ruby? そろそろgoで行ってみませんか?
 
Llvm Talk 社内LT大会資料
Llvm Talk 社内LT大会資料Llvm Talk 社内LT大会資料
Llvm Talk 社内LT大会資料
 
”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について”30分”ぐらいでわかる「Kubernetes」について
”30分”ぐらいでわかる「Kubernetes」について
 
サイボウズのリモートワーク・リモートチーム
サイボウズのリモートワーク・リモートチームサイボウズのリモートワーク・リモートチーム
サイボウズのリモートワーク・リモートチーム
 
kintoneの検索高速化への取り組み
kintoneの検索高速化への取り組みkintoneの検索高速化への取り組み
kintoneの検索高速化への取り組み
 
AWS Black Belt - AWS Glue
AWS Black Belt - AWS GlueAWS Black Belt - AWS Glue
AWS Black Belt - AWS Glue
 
【kintone便利に使おうシリーズ】[vol.05 アクション]
【kintone便利に使おうシリーズ】[vol.05 アクション]【kintone便利に使おうシリーズ】[vol.05 アクション]
【kintone便利に使おうシリーズ】[vol.05 アクション]
 
【kintone便利に使おうシリーズ】[vol.01 テーブル]
【kintone便利に使おうシリーズ】[vol.01 テーブル]【kintone便利に使おうシリーズ】[vol.01 テーブル]
【kintone便利に使おうシリーズ】[vol.01 テーブル]
 
営業現場でkintone
営業現場でkintone営業現場でkintone
営業現場でkintone
 
【kintone便利に使おうシリーズ】[vol.02 計算]
【kintone便利に使おうシリーズ】[vol.02 計算] 【kintone便利に使おうシリーズ】[vol.02 計算]
【kintone便利に使おうシリーズ】[vol.02 計算]
 
人事部門でkintone
人事部門でkintone人事部門でkintone
人事部門でkintone
 
【kintone便利に使おうシリーズ】[vol.09 通知]
【kintone便利に使おうシリーズ】[vol.09 通知]【kintone便利に使おうシリーズ】[vol.09 通知]
【kintone便利に使おうシリーズ】[vol.09 通知]
 
【kintone便利に使おうシリーズ】[vol.06 グラフ]
【kintone便利に使おうシリーズ】[vol.06 グラフ]【kintone便利に使おうシリーズ】[vol.06 グラフ]
【kintone便利に使おうシリーズ】[vol.06 グラフ]
 
総務部門でkintone
総務部門でkintone総務部門でkintone
総務部門でkintone
 
kintone 活用イメージ集 vol2 20160518
kintone 活用イメージ集 vol2 20160518kintone 活用イメージ集 vol2 20160518
kintone 活用イメージ集 vol2 20160518
 
【kintone便利に使おうシリーズ】[vol.08 アクセス権]
【kintone便利に使おうシリーズ】[vol.08 アクセス権] 【kintone便利に使おうシリーズ】[vol.08 アクセス権]
【kintone便利に使おうシリーズ】[vol.08 アクセス権]
 
【kintone便利に使おうシリーズ】[vol.04 関連レコード一覧]
【kintone便利に使おうシリーズ】[vol.04 関連レコード一覧] 【kintone便利に使おうシリーズ】[vol.04 関連レコード一覧]
【kintone便利に使おうシリーズ】[vol.04 関連レコード一覧]
 
カスタマーサポートでkintone
カスタマーサポートでkintoneカスタマーサポートでkintone
カスタマーサポートでkintone
 
【kintone便利に使おうシリーズ】[vol.03 ルックアップ]
【kintone便利に使おうシリーズ】[vol.03 ルックアップ] 【kintone便利に使おうシリーズ】[vol.03 ルックアップ]
【kintone便利に使おうシリーズ】[vol.03 ルックアップ]
 
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
【kintone便利に使おうシリーズ】[vol.07 プロセス管理]
 

Similar to go-apt-cacher/mirror

OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
irix_jp
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
Shogo Kawahara
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
Kazuhiro Hara
 

Similar to go-apt-cacher/mirror (20)

オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
オープン・ソースで構築するARMマイコン開発環境 ―― GCC,Eclipse,OpenOCDで統合開発環境,JTAGデバッグもできる!
 
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
地味だけど劇的に便利になるGitHubリポジトリ設定あれこれ
 
OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門OSC2011Tokyo/Fall OpenStack Swift入門
OSC2011Tokyo/Fall OpenStack Swift入門
 
Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開Composer による依存管理 と Packagist によるライブラリの公開
Composer による依存管理 と Packagist によるライブラリの公開
 
ひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむひとりドキュメント担当の仕事を楽しむ
ひとりドキュメント担当の仕事を楽しむ
 
Composer
 Composer Composer
Composer
 
Build insider offline session チームでのgit
Build insider offline session チームでのgitBuild insider offline session チームでのgit
Build insider offline session チームでのgit
 
Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!Git & GitHub & kintone でウルトラハッピー!
Git & GitHub & kintone でウルトラハッピー!
 
Playbay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイPlaybay Play 2.0 plugin イロハのイ
Playbay Play 2.0 plugin イロハのイ
 
sbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころsbtマルチプロジェクトビルドの使いどころ
sbtマルチプロジェクトビルドの使いどころ
 
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
Ruby向け帳票ソリューション「ThinReports」の開発で知るOSSの威力
 
What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318What's new in open shift container platform 4.7 japan_20210318
What's new in open shift container platform 4.7 japan_20210318
 
LL言語でもHudsonを使おう!
LL言語でもHudsonを使おう!LL言語でもHudsonを使おう!
LL言語でもHudsonを使おう!
 
Hatena blogdevelopmentflow
Hatena blogdevelopmentflowHatena blogdevelopmentflow
Hatena blogdevelopmentflow
 
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_cccSpring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
Spring Boot on Kubernetes : Yahoo!ズバトク事例 #jjug_ccc
 
一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理一人でもはじめるGitでバージョン管理
一人でもはじめるGitでバージョン管理
 
CloudHubのログバックアップについて
CloudHubのログバックアップについてCloudHubのログバックアップについて
CloudHubのログバックアップについて
 
ALMツールたべくらべ
ALMツールたべくらべALMツールたべくらべ
ALMツールたべくらべ
 
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
Apache Bigtop3.2 (仮)(Open Source Conference 2022 Online/Hiroshima 発表資料)
 
kintone REST API client package for R
kintone REST API client package for Rkintone REST API client package for R
kintone REST API client package for R
 

More from yutannihilation (6)

Tidyverseとは
TidyverseとはTidyverseとは
Tidyverseとは
 
匿名バイナリ配布集団rwinlib
匿名バイナリ配布集団rwinlib匿名バイナリ配布集団rwinlib
匿名バイナリ配布集団rwinlib
 
dplyrとは何だったのか
dplyrとは何だったのかdplyrとは何だったのか
dplyrとは何だったのか
 
ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)ggplot2再入門(2015年バージョン)
ggplot2再入門(2015年バージョン)
 
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト押してダメなら引いてみろ! ggplot2逆引きプロジェクト
押してダメなら引いてみろ! ggplot2逆引きプロジェクト
 
Github pagesでRPubsにサヨナラ!
Github pagesでRPubsにサヨナラ!Github pagesでRPubsにサヨナラ!
Github pagesでRPubsにサヨナラ!
 

Recently uploaded

Recently uploaded (11)

論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 

go-apt-cacher/mirror