Slide 1

Slide 1 text

社内共通コンテナレジストリを設立して 開発者体験向上を狙ってみた 株式会社 mediba Tomoya Kitaura KGDC Tech Conference #4 Day2 2023/3/10

Slide 2

Slide 2 text

自己紹介 Tomoya Kitaura @kitta0108 mediba inc. Backend Engineer ■技術コミュニティ運営 - - JAWS-UG コンテナ支部 - JAWS-UG SRE支部 - NRUG SRE支部 ■好きなNew Relicのサービス - Distributed tracing 2 2

Slide 3

Slide 3 text

聴講者想定 3 - 開発者体験向上という文脈に関心がある。 - コンテナ技術を使ったアプリケーション開発が好き。 - コンテナレジストリ設立するのが開発者体験向上に 繋がる?ってイメージがピンとこない。

Slide 4

Slide 4 text

突然ですがこんな現場の課題?ありませんか(その1) 4 CI/CD上の運用課題 よっしゃ、ワイのシェル力で 解決したる 爆炎のエンジニア鈴木

Slide 5

Slide 5 text

突然ですがこんな現場の課題?ありませんか(その1) 5 CI/CD上の運用課題 爆炎のエンジニア鈴木 氷雪のエンジニア佐藤 ちょっと待ってください。 そんな闇の呪文を書かれたら、 オンボーディングやトラブルシュートのコ ストがあがってしまいます。

Slide 6

Slide 6 text

突然ですがこんな現場の課題?ありませんか(その1) 6 CI/CD上の運用課題 爆炎のエンジニア鈴木 氷雪のエンジニア佐藤 運用課題を解決していない 運用コストの増大

Slide 7

Slide 7 text

突然ですがこんな現場の課題?ありませんか(その2) 7 土震のエンジニア高橋 疾風のエンジニア田中 この作業単調だし、 量が多くて 毎回ダルいんだよなー この間作った 自前のスクリプト流して 一発で終了や! 自動化されていない ちょっとしたオペレーション群

Slide 8

Slide 8 text

突然ですがこんな現場の課題?ありませんか(その2) 8 土震のエンジニア高橋 疾風のエンジニア田中 - 依存解決がうまくいかなくて動 かない - 環境をあまり汚したくない - 中身を理解してないと結局上 手に使えない - 自分以外の環境で動くか不明 - 動かすための事前インストール 作業を思い出せない 自動化されていない ちょっとしたオペレーション群 スクリプトを共有されても... スクリプトを共有したくても...

Slide 9

Slide 9 text

開発者体験が良いとは? 9 開発者が作業を進めるために必要なプロセスやツールが ストレスなく扱えて、効率的に開発が行える状態 - 生産性の向上 - 品質の向上 - モチベーション向上 - エンジニア自身のスキル獲得 ビジネスKPIの達成

Slide 10

Slide 10 text

アジェンダ 10 - コンテナ技術おさらい - 構成と運用フロー - 今後やっていきたいこと - まとめ

Slide 11

Slide 11 text

コンテナ技術おさらい 11

Slide 12

Slide 12 text

コンテナ技術おさらい 12 可搬性の高さを 利用する

Slide 13

Slide 13 text

コンテナ技術おさらい 13 $ docker run \ -v $(PWD):/work \ -e A=xxx \ ContainerImageName \ Command ボリュームマウント 環境変数の定義 利用するイメージの 指定 コンテナ環境下で実 行するコマンド

Slide 14

Slide 14 text

社内共通コンテナレジストリの理想 14 コンテナレジストリ みんなでメンテナンス、みんなで利用

Slide 15

Slide 15 text

コンテナレジストリ選定ADR 15 ○ ECR ■ ❌Pull権限をAWSのユーザーとしてもっていなければならない。 ■ ❌ImagePullする際にSwitchRoleしないとならない為、開発体験が低下する恐れがある。 ■ ❌マルチアーキテクチャイメージ非対応(Arm,Intel) ■ ⭕脆弱性管理がECRのEnhanced Image Scanを利用することができるため楽 ○ Docker ■ ❌昨今の値上げ事情があって、依存性を高めてしまうこと自体にリスクがありそう。 ■ ⭕Pull権限管理はDockerID単位で可能 ■ ⭕マルチアーキテクチャイメージ対応(Arm,Intel) ■ ⭕利用料金はDockerのユーザー課金に含まれるため実質無料 ○ ⭐GitHub Container Registry ■ ❌マルチアーキテクチャイメージ非対応(Arm,Intel) ■ ⭕GitHub ActionsからのPullする際の認証認可制御が楽 ■ ⭕Pull権限管理はGitHubアカウント単位で可能 ■ ⭕利用料金の一部はGitHub Enterpriseの課金に含まれるため50GBまで無料

Slide 16

Slide 16 text

構成図 16

Slide 17

Slide 17 text

フロー図 17

Slide 18

Slide 18 text

リポジトリのディレクトリ構成 18 docker-tools ┣.github ┃┗workflows ┃ ┗BuildAndShip.yml ┣CategoryName ┃┗ImageName ┃ ┗Version ┃ ┣dockerfile ┃ ┣… ┃ ┗README.md ┗README.md

Slide 19

Slide 19 text

Build ShipのGitHub Actions Workflow 19

Slide 20

Slide 20 text

今後やっていきたいこと 20 ■コンテナアプリケーション作成講座 実装難易度の敷居を下げるのは大事。 コンテナイメージサイズが軽量であることも大事。 軽量にするためのTipsは色々あるので ノウハウ蓄積していきたい。 ■コンテナアプリケーションコンテスト 腕が鳴るよなぁぁぁ!?

Slide 21

Slide 21 text

まとめ 21 ■ビジネスKPIを達成するためにも開発者体験は 向上させていく価値がある。 ■運用上の課題をソフトウェアの力を使って解決するのには、 さまざまな障壁が存在する。 ■コンテナ技術は開発者のためのツールとしても機能する。

Slide 22

Slide 22 text

さいごに 22 より高みを目指した開発を みんなで楽しんでいきましょう!! ご静聴ありがとうございました!! ちょこっとだけPR こんな規模感やフェーズのSREチームを一緒に盛り上げてくれる仲間大募集中です! ご興味ある方はTwitter(@kitta0108)でDM下さい!! ゆるく雑談させてください!!