Upgrade to Pro — share decks privately, control downloads, hide ads and more …

第一回ライブラリ開発について考える会

Naomichi Yamakita
May 26, 2024
72

 第一回ライブラリ開発について考える会

Naomichi Yamakita

May 26, 2024
Tweet

More Decks by Naomichi Yamakita

Transcript

  1. ©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」プロダクトオーナーを兼任
  2. ©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. • システムの全体像を俯瞰的に捉え、インフラの⾃動化、障害対応、アプリケーション

    の最適化を通じて可⽤性を確保し、信頼性を⾼めることを⽬的とする • 主な指標 ◦ サービスレベル⽬標 (SLO) ◦ 監視 ◦ モニタリング ◦ ポストモーテム ◦ トイルの削減 (運⽤の⾃動化) SRE (Site Reliability Engineering) とは?
  3. ©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. • CI/CD

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

    課題 ◦ 複数のプロダクトでGitHub Actionsを⽤い たWorkflowを構築している 各Workflowで共通化したい処理‧機能があ るとき、どのようにActionを実装するべき か?
  5. ©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
  6. ©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. IaC (Infrastructure

    as a Code) • 課題 ◦ アプリケーションを稼働させるための、信 頼性が⾼く、安全かつ効率的なインフラ基 盤を構築したい (Terraformで)
  7. ©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 |- ...
  8. ©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. • 課題

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

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

    ◦ コードはLambdaで実装 (Go、Rubyなど) ◦ 共通ライブラリはLambda Layerで実装 ▪ ベンダーライブラリもLambda Layerに いれることでアプリケーションのサイズ を削減できる トイルの削減
  11. ©2024 Metaps Holdings, Inc. ©2024 Metaps Holdings, Inc. まとめ (ライブラリ開発で注意している点)

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