Slide 1

Slide 1 text

CircleCI Server 運用のポイント CircleCI ユーザーコミュニティミートアップ #7

Slide 2

Slide 2 text

自己紹介 Tanaka Tomohide ● twitter: @dehio3 ● blog:https://www.dehio3.com/ ● 音響屋→インフラエンジニア ● CircleCI運用歴:10ヶ月 2

Slide 3

Slide 3 text

はじめに

Slide 4

Slide 4 text

CircleCI Serverとは ● オンプレミス版のCircleCI ● CirlceCIから公開されているTerraformを利用して、AWS上に 構築可能 ○ https://github.com/circleci/enterprise-setup

Slide 5

Slide 5 text

CircleCI Server 使ってる?✋

Slide 6

Slide 6 text

CircleCI Server 検討してる?✋

Slide 7

Slide 7 text

今日話す内容 ● オンプレ版の運用中に発生した課題から気づいた運用のポイ ント ● CircleCI Server 2.17.3時点での情報(9/30時点の最新) ○ https://circleci.com/server/changelog/

Slide 8

Slide 8 text

CircleCI Server の 構成要素

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

ビルドの詳しい仕組みは https://speakerdeck.com/kimh/circleci-2-dot-0wozhi-eru2tufalse-kontenakurasutatosre

Slide 11

Slide 11 text

永続リソースと 一時リソースそれぞれのポイント

Slide 12

Slide 12 text

永続リソース

Slide 13

Slide 13 text

No content

Slide 14

Slide 14 text

スケーリングのタイミング ● nomad-clientはAutoScalingから起動する。 ● AutoScalingでEC2インスタンス起動アクション後、nomad-clientでbuild処理可能 な状態になるまで3,4分かかる。 ● AutoScalingのアクションは自動では実行されない為、スケールリングアクションの 契機は自分で実装する必要がある。 ● キューの滞留を検知してからスケールリングすると、スケールリングしたタイミング では既にキューが捌け終わって、無駄なスケールになる事もある。 ● スケジュールでの時間契機か、リソース状況契機か、利用状況に応じてスーリング の検討が必要。

Slide 15

Slide 15 text

一時リソース

Slide 16

Slide 16 text

No content

Slide 17

Slide 17 text

machine executorは冗長化未対応 ● machine executorを動作させるサブネットは現状一つしか指定でない。 ● 設定はWebコンソールから実施する為、AZを変更する場合は再起動が必要。 ● 8/23のAZ障害はまさに直撃した・・ていうかこの時気づいた( ;∀;) ● 即サポートに連絡して改善要望!!

Slide 18

Slide 18 text

machine executorインスタンスのゾンビ化 ● “machine”と”setup_remote_docker”を利用すると、一時的なEC2インスタンスが 新規に作成される。 ● 本来であれば処理が終わるとインスタンスが削除されるが、バグ(2.14.01以前)や 起動中のserviceboxの再起動によって、インスタンスが削除されずに残る事があ る。 ● ゾンビインスタンは無駄なコストになるので、定期的なゾンビインスタンスのチェック が必要。

Slide 19

Slide 19 text

DLCのキャッシュ保持期間 ● “docker_layer_caching”を設定すると専用のEBSボリュームが作成され、都度マ ウントされる事で、キャッシュが実現される。 ● “Inactivity period before clearing Docker cache storage volumes (days)”にて chacheの保持期間を設定でき、デフォルトの14日に設定される。 ● 保持期間はEBSボリュームの作成日ではなく、最終利用日から14日保持される。 ● EBSボリュームについては、未利用時であっても課金される為、利便性とコストの バランスで保持期間を設定する。

Slide 20

Slide 20 text

まとめ

Slide 21

Slide 21 text

まとめ ● 当然だがオンプレ版の場合はCircleCIのインフラも運用する 必要がある。 ● インフラの維持コストを抑える為に、状況の可視化と継続的な 運用の改善が必要。 ● まだまだ改善の余地はあるので、今後のCirlceCI Serverの開 発に期待!!

Slide 22

Slide 22 text

おまけ

Slide 23

Slide 23 text

前回のミートアップ https://speakerdeck.com/tomohide_tanaka/circleci-server-visualization-of-usage-status

Slide 24

Slide 24 text

SaaS版のビルド情報を取得ツールを作成 https://www.dehio3.com/entry/2019/09/23/115924

Slide 25

Slide 25 text

Thank you!! 25