Slide 1

Slide 1 text

©2024 Metaps Holdings, Inc. 第⼀回ライブラリ開発について考える会 SRE領域におけるライブラリ開発の 取り組み 株式会社メタップスホールディングス プロダクトオーナー 兼 SREチーフエンジニア ⼭北 尚道 1

Slide 2

Slide 2 text

©2024 Metaps Holdings, Inc. ⾃⼰紹介 ⼭北 尚道 株式会社メタップスホールディングス srestプロダクトオーナー 兼 SREチーフエンジニア Yamakita Naomichi @sre_yamakita ベトナム‧ハノイでのオフショア事業⽴ち上げからキャリアをスタートし、ア プリケーション開発からマネジメントまでを経験 2015年に当社参画。徐々にクラウドインフラにも携わり、現在は横断的なテッ クリードやSREチーフエンジニアとして従事 「AWS DevDay Tokyo」登壇、「Amazon Web Services ブログ」、 「builders.flash」寄稿、AWS Community Builderメンバー 昨年よりSREのためのダッシュボード「srest」プロダクトオーナーを兼任

Slide 3

Slide 3 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● システムの全体像を俯瞰的に捉え、インフラの⾃動化、障害対応、アプリケーション の最適化を通じて可⽤性を確保し、信頼性を⾼めることを⽬的とする ● 主な指標 ○ サービスレベル⽬標 (SLO) ○ 監視 ○ モニタリング ○ ポストモーテム ○ トイルの削減 (運⽤の⾃動化) SRE (Site Reliability Engineering) とは?

Slide 4

Slide 4 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● CI/CD ● IaC (Infrastructure as a Code) ● トイルの削減 トピック

Slide 5

Slide 5 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. CI/CD ● 課題 ○ 複数のプロダクトでGitHub Actionsを⽤い たWorkflowを構築している 各Workflowで共通化したい処理‧機能があ るとき、どのようにActionを実装するべき か?

Slide 6

Slide 6 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● 提案 ○ Composite Actionを使う ○ Actionにより⼊⼒パラメータを渡したり、 Composite Action内で条件分岐することが 可能 ○ 開発したライブラリはプライベートリポジ トリとして共有可能 jobs: dependabot: if: ${{ github.actor == 'dependabot[bot]' }} runs-on: ubuntu-latest steps: - uses: metaps/action-dependabot-auto-merge@main CI/CD

Slide 7

Slide 7 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. IaC (Infrastructure as a Code) ● 課題 ○ アプリケーションを稼働させるための、信 頼性が⾼く、安全かつ効率的なインフラ基 盤を構築したい (Terraformで)

Slide 8

Slide 8 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● 提案 ○ Terraform modulesを利⽤する ○ AWSやGoogle Cloudが公式moduleを公開 しているほか、組織独⾃のmoduleを作成す ることも可能 IaC (Infrastructure as a Code) github.com/metaps/terraform-modules |- modules |- aws |- ec2 |- fargate |- rds |- datadog |- monitor |- ...

Slide 9

Slide 9 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● 課題 ○ AWS環境において、複数のプロダクトで利 ⽤可能なトイルを削減するアプリケーショ ンを開発‧配布したい トイルの削減

Slide 10

Slide 10 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● 提案 ○ AWS Serverless Application Repository (SAR) を使うことで、開発したアプリケー ションをAWSのリポジトリから配布するこ とが可能 トイルの削減

Slide 11

Slide 11 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. ● アプリケーションの実装例 ○ コードはLambdaで実装 (Go、Rubyなど) ○ 共通ライブラリはLambda Layerで実装 ■ ベンダーライブラリもLambda Layerに いれることでアプリケーションのサイズ を削減できる トイルの削減

Slide 12

Slide 12 text

©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. まとめ (ライブラリ開発で注意している点) ● 開発は属⼈化させない ○ テスト‧レビュー‧ドキュメンテーションを通して、複数⼈が開発に携わる体制を作る ● トレンドに流されない ○ その時々で流⾏りの⾔語やパッケージは変わるもの ○ PaaSはプラットフォーム依存となるため、メンテナンスのしやすさ (EOL‧アップグレード対応 など) を考慮する ● バージョン管理はしっかりと ○ SRE領域のライブラリ開発は、API経由での呼び出しが多く、バグ1つで多数のサービスに影響を 与えてしまう可能性があります。後⽅互換性を含め、バージョニング戦略を設計する