Contenu connexe
Similaire à Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~ (20)
Plus de Recruit Technologies (7)
Rancherを活用した開発事例の紹介 ~Rancherのメリットと辛いところ~
- 2. 自己紹介
名前: 藤原 涼馬
所属: リクルート
テクノロジーズ株式会社
業務内容:
インフラエンジニア
いろんなサービスのインフラ構築手伝い
最近はバックエンドのコード書いたりも
Docker
/Rancher歴: ほぼ1年
Rancher関連の活動:
Rancher JPコミュニティ コアメンバー
Rancher meetup登壇
リリースノートの翻訳(v1.5.0とv1.6.0、あと他にもなんかあったはず)
Rancher JPのslackでしゃべる(素子のアイコンです)
2(C) Recruit Technologies Co.,Ltd. All rights reserved.
- 5. 目次
• 本発表の目的について
• プロジェクトの概要
• Rancherのプロジェクトでの活用について
• Rancherを使うメリット
• Rancherを使っていてつらいところ
• まとめ
5(C) Recruit Technologies Co.,Ltd. All rights reserved.
- 10. 開発体制概要
• アジャイルによる開発(特別なことはやっていないはず)
• Aチーム + Bチーム + インフラチームの3チーム体制(計
30人程度)
10(C) Recruit Technologies Co.,Ltd. All rights reserved.
BチームAチーム インフラチーム
マネジメント
(プロジェクトリーダーなど)
サービスの企画
DC管理(NW・ストレージ
のHWやVMWare周り)
・セキュリティ
など
技術統括
- 13. ② ビルド
13(C) Recruit Technologies Co.,Ltd. All rights reserved.
Dockerfile
アプリケーション
コード
アプリケーション
コード
(単体テスト済み)
ビルド + 単体テスト
Jenkins
コンテナイメージビルド
Jenkins
コンテナ
イメージ
Container
Registry
1. ソースコードのビルドと
単体テストを自動実行
(コードプッシュ時・MR時に実施)
2. コンテナイメージのビルド
と保存を自動で実行
(特定ブランチでは自動実行・他は手動でパイプラインを実行)
特別なことは何もやっていません
- 14. ③ デプロイ
1. スタック内のサービスを選択
14(C) Recruit Technologies Co.,Ltd. All rights reserved.
2. イメージのタグ名そのほかを修正
3. アップグレードボタンをクリック
Rancher CLIも活用することで、ビルド+テスト+デプロイ
まで全てを自動化することも可能ですが、
そこまでは取り組んでいません
- 16. ① カタログによる環境構成のコード化 (1/2)
• Dockerfileによって個別コンポーネントの動作環境をコード化
• カタログによって、環境全体をコード化
• 環境の面数を増やす際の手間を削減
16(C) Recruit Technologies Co.,Ltd. All rights reserved.
短時間で確実に同一環境を構築することができるようになった
<開発面を増やす時でも所要時間は合計15分程度(待ち時間含む)>
GUI上で指定された
項目を入力し、
起動ボタンを
クリックすれば
立ち上げは完了
- 17. ① カタログによる環境構成のコード化 (2/2)
17(C) Recruit Technologies Co.,Ltd. All rights reserved.
全面的に環境をつくりなおすという
思い切った判断も軸に含まれるようになった※
短時間で確実に同一環境を構築することができようになった
<開発面を増やす時でも所要時間は合計15分程度(待ち時間含む)>
※
- 18. ② ビルド・デプロイフローの定型化 (1/3) サービス更新の容易化
• GUIを使って、定型的にシステムを構成するサービスを更新できる
18(C) Recruit Technologies Co.,Ltd. All rights reserved.
GUIで作業を完結できるので、
Docker CLIの知識がなくてもデプロイが可能になった
Jenkins
パイプラインを実行する
だけでビルド完了
(Dockerfileによって
パイプラインそのものの
複雑さも軽減できている)
- 19. ② ビルド・デプロイフローの定型化 (2/3) 切り戻しの定型化
• 切り戻しが短時間かつ容易に実施可能できる※
19(C) Recruit Technologies Co.,Ltd. All rights reserved.
何か誤りがあっても用意かつ確実に切り戻しできることで
エンジニアの学習コストとストレスを軽減できた
※ただしDBのスキーマなどが変更されていない場合に限る
- 20. ② ビルド・デプロイフローの定型化 (3/3) 結果としてどうなったか
20(C) Recruit Technologies Co.,Ltd. All rights reserved.
チーム内の全員が様々なコンポーネントの
デプロイを容易に実施可能になりました。
開発環境へのデプロイの頻度も多い日は10回/日を軽く超えています。
1. Docker CLIの知識がなくてもビルド・デプロイが可能
2. 切り戻しが確実にできる
上記2つを確実に実施できるようになった結果、
開発環境では積極的にデプロイ&テストが行われるように
- 22. Rancherをつかうことによるメリットまとめ
22(C) Recruit Technologies Co.,Ltd. All rights reserved.
①カタログによる
環境構成のコード化
②ビルド・
デプロイフローの
定型化
障害発生時に
思い切った判断
(丸ごと作り直し)も
考慮に含められるようになった
チームメンバー全員が様々な
コンポーネントのデプロイを
実施できるようになった
デプロイ頻度が高くなり、
こまめなテストを行える
ようになった
開発メンバーが特定のコンポーネントだけでなく積極的に
色々なコンポーネントに関わろうとしているのは
強烈なメリットだと感じています
- 24. ① カタログの肥大化
環境全体を単一のカタログに詰め込もうとするとカタログが肥大化。
• 単純にymlが大きくなって見通しが悪くなる
• Configuration Optionsの項目数が増える
• 現在、65項目(デフォルト値の指定はできるがやはりギョッとする & 心理的な障壁は大
きくなる、サービス単位でのデプロイと比較すると実施できるメンバーは少ない)
24(C) Recruit Technologies Co.,Ltd. All rights reserved.
↓ Rancher zookeeper
完全に私見ですが、
• 一定以上のサイズになってしまったカタログは分割
• 定期的にConfiguration Optionsの項目を見直す
しかないと思います。
- 25. ② Rancherのアップデートが速い
• 月一回のリリースという驚異のスピードに追従するのが大変
• 一度振り落とされると次回アップグレードしようとした時に辛くなります
25(C) Recruit Technologies Co.,Ltd. All rights reserved.
アップデート手順自体はドキュメント※が充実しているので、
現時点では地道にフォローするしかないのかなと感じています。
(または求むLTS版)
※ https://docs.rancher.com/rancher/v1.6/en/upgrading/
- 27. Rancherを使っていてつらいところまとめ
27(C) Recruit Technologies Co.,Ltd. All rights reserved.
①カタログの肥大化
② Rancherのアップデートが早い
カタログの分割
設定項目の見直しと削減
つらいところ 解決策?
こまめなアップデート
③ 日本語情報の少なさ
• 英語情報のキャッチアップ
• コミュニティの活用
• 地道な学習 & 情報発信
コミュニティとして利用事例などの情報を集約して
ベストプラクティスを整理する??