Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
CloudNativeなサービス用環境を構築するツールキット Eponaを作った/toolki...
Search
Yuichi Kiri
March 23, 2021
Technology
0
400
CloudNativeなサービス用環境を構築するツールキット Eponaを作った/toolkit to create cloud-native environment for our services
2021/3/19開催のイベント TIS Developers Night(
https://tidev-meetup.connpass.com/event/199990/
)での発表資料です。
Yuichi Kiri
March 23, 2021
Tweet
Share
More Decks by Yuichi Kiri
See All by Yuichi Kiri
自己組織的な開発チームを如何にして作り上げるか / how to build self-organizing team
kiririmode
8
9.2k
なぜぼくがbitcoinに心惹かれるのか
kiririmode
1
1k
このConsulがすごい!/consul is great!
kiririmode
0
450
Other Decks in Technology
See All in Technology
Introduction to OpenSearch Project - Search Engineering Tech Talk 2025 Winter
tkykenmt
2
220
Log Analytics を使った実際の運用 - Sansan Data Hub での取り組み
sansantech
PRO
0
110
Apache Iceberg Case Study in LY Corporation
lycorptech_jp
PRO
0
380
Global Databaseで実現するマルチリージョン自動切替とBlue/Greenデプロイ
j2yano
0
160
事業モメンタムを生み出すプロダクト開発
macchiitaka
0
110
20250304_赤煉瓦倉庫_DeepSeek_Deep_Dive
hiouchiy
2
130
AIエージェント入門
minorun365
PRO
33
20k
2/18 Making Security Scale: メルカリが考えるセキュリティ戦略 - Coincheck x LayerX x Mercari
jsonf
0
260
開発者のための FinOps/FinOps for Engineers
oracle4engineer
PRO
2
260
AIエージェント開発のノウハウと課題
pharma_x_tech
9
4.8k
職位にかかわらず全員がリーダーシップを発揮するチーム作り / Building a team where everyone can demonstrate leadership, regardless of position
madoxten
3
2k
RaspberryPi CM4(CM5も)面白いぞ!
nonnoise
0
110
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
30
2.3k
Automating Front-end Workflow
addyosmani
1369
200k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
175
52k
Speed Design
sergeychernyshev
27
820
Site-Speed That Sticks
csswizardry
4
420
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
129
19k
Build The Right Thing And Hit Your Dates
maggiecrowley
34
2.5k
Save Time (by Creating Custom Rails Generators)
garrettdimon
PRO
29
1.1k
Six Lessons from altMBA
skipperchong
27
3.6k
Scaling GitHub
holman
459
140k
RailsConf 2023
tenderlove
29
1k
How GitHub (no longer) Works
holman
314
140k
Transcript
© 2020 TIS Inc. CloudNativeなサービス用環境を構築する ツールキットEponaを作ってみた
© 2020 TIS Inc. 2 自己紹介 • 木利 友一 (@kiririmode)
• 経歴 – 2015年 TIS転職 • 主としてバックエンドのアプリケーションアーキテクトとして、 プロジェクトのリードやスクラムマスター – Java – Golang、Bitcoin、gRPC – 2018年 育児休業(今日は子供の声がBGMとして入ります) – 2020年度よりテクノロジー&エンジニアリングセンターへ異動 • AWS、Terraform • Blog: 理系学生日記
© 2020 TIS Inc. 3 Epona 自社サービス用のCloudNativeなDevOps用環境を オンデマンドで構築できるツールキット • サービスを運用できる本番環境
• 本番環境と同様の構成を持つテスト環境/ステージング環境 • チーム開発が可能な開発環境 ターゲットとするクラウドサービス • Amazon Web Services (AWS) ツールキットの提供する「モジュール」を 組み合わせることで、様々なサービス用環境を実現できます
© 2020 TIS Inc. 4 ターゲット ★開発・運用の中で「DevOps」を行う自社サービス 先進技術・ノウハウを駆使し、ビジネスの革新と市場創造を実現する • ユーザニーズの変化への適応
• 開発・運用の一体化 • オーナーシップを持ったサービス・プロダクトの成⾧ ※
© 2020 TIS Inc. 5 Epona • Epona – Terraformモジュール+
Guide を含むリポジトリ – https://gitlab.com/eponas/epona • Getting Started – Eponaを組み込んだ環境構築スクリプト用リポジトリ • Eponaはモジュール群なので、それを実際に組み込んだ一連のTerraform構成ファイル – https://gitlab.com/eponas/epona_aws_getting_started • Epona AWS Getting Starter (公開予定) – Terraform BackendやEponaの初期適用をサポートするCLIツール – https://gitlab.com/eponas/epona-aws-starter-cli • Fintan – https://fintan.jp/?p=6330
© 2020 TIS Inc. 6 目次 1. Eponaによって何が解決できるのか 2. 具体的なコンテンツのご紹介
3. SIerの中での困難さとやりがい
© 2020 TIS Inc. 7 これまでの課題 • サービスを動かせる環境の調達や構築に時間がかかる • 素早くサービスを立ち上げたいのに、どのようなクラウドリソースを使ったらよい
のか、組み合わせたらよいのかわからない • サービスの調査や環境の立ち上げに時間がかかる • サービスを立ち上げてはみたものの利用者の評価がわからない • システムの状況が把握できない。ログやデータベースを参照する必要があり、 必要な時にタイムリーに確認できない。 • サービスの価値向上に時間を使いたいのに、 セキュリティパッチ適用や監視構築といった 価値に直結しない作業に時間が吸い取られている • 今の環境がどうやってつくられたのか分からず、サービスの 要求に合わせて変更していくのが難しくなる • 環境構築手順が陳腐化しており、テストや検証などのために 新しく環境を用意することが困難
© 2020 TIS Inc. 8 これまでの課題 • サービスを動かせる環境の調達や構築に時間がかかる • 素早くサービスを立ち上げたいのに、どのようなクラウドリソースを使ったらよい
のか、組み合わせたらよいのかわからない • サービスの調査や環境の立ち上げに時間がかかる • サービスを立ち上げてはみたものの利用者の評価がわからない • システムの状況が把握できない。ログやデータベースを参照する必要があり、 必要な時にタイムリーに確認できない。 • サービスの価値向上に時間を使いたいのに、 セキュリティパッチ適用や監視構築といった 価値に直結しない作業に時間が吸い取られている • 今の環境がどうやってつくられたのか分からず、サービスの 要求に合わせて変更していくのが難しくなる • 環境構築手順が陳腐化しており、テストや検証などのために 新しく環境を用意することが困難
© 2020 TIS Inc. 9 Eponaによって何が解決できるのか
© 2020 TIS Inc. 10 サービスの調査や環境の立ち上げに時間がかかる Eponaによって何が解決できるのか • Eponaの提供するモジュールを適用すれば、「データベース」、「CDパイプライン」、「ログ収 集」といったユースケースを実現できます。
ネットワーク データベース コンテナランタイム フロントエンドランタイム Webアプリケーションファイアウォール ログ収集 仮想セキュアルーム VPC RDS ALB+ECS CloudFront+S3+Lambda@Edge WAF Datadog+Lambda Workspaces+Directory Service ユーザ・権限 IAM 提供する モジュール群 (一部) デプロイメントパイプライン CodePipeline+CodeDeploy CodePipeline+CodeBuild どのクラウドリソースを使い組み合わせたらよいのかわからない サービスを動かせる環境の調達や構築に時間がかかる サービスを動かせる環境の調達や構築に時間がかかる
© 2020 TIS Inc. 11 Eponaによって何が解決できるのか 「Amazon QuickSight の新しい API
とテーマ機能で、分析をさらに進化させる」 (https://aws.amazon.com/jp/blogs/news/evolve-your-analytics-with-amazon-quicksights-new- apis-and-theming-capabilities/)2020年11月13日 23時時点の最新版を取得 サービスを立ち上げてはみたものの利用者の評価がわからない システムの状況が把握できない。必要な時にタイムリーに確認できない • KPIやシステムメトリクスを可視化することによって、リアルタイムにサービスやシステム の状態を把握できるようになります
© 2020 TIS Inc. 12 Eponaによって何が解決できるのか 価値に直結しない作業に時間が吸い取られている 価値に直結しない作業に時間が吸い取られている • マネージドサービスやSaaSを積極的に利用することで、セキュリティパッチ適用、
モニタリングシステムの構築といった作業から開発チームを開放します • それにより、顧客満足度に直結する「魅力的品質」の向上に集中できます 「狩野モデルと商品企画」(https://www.juse.or.jp/departmental/point02/08.html) 2020年11月13日 23時時点の最新版を取得 差別化できない当たり前品質は マネージドサービス、SaaSに任せる • 「作り込む」のではなく、マネージドなサービスを 積極採用。開発チームを「お守り」から解放する • SaaSはEponaで基本的な使い方を ガイディング サービス開発で 集中すべき領域
© 2020 TIS Inc. 13 Eponaによって何が解決できるのか 今の環境の構築方法が分からず、サービスの成⾧に合わせた変更が困難 環境構築手順が陳腐化し、新しく環境を用意することが困難 • どのような操作で当該環境が実現されているのかをコードから追うことができます
• コードレビューやバージョン管理等、これまでのソフトウェアエンジニアリングの知見 がインフラ環境にも適用でき、品質向上に貢献します review discussion $ terraform apply
© 2020 TIS Inc. 14 DevOps環境構築キットで実現できることの一例 無停止でデプロイ可能なパイプライン(※1) サービスの状態を可視化するダッシュボード(※2) Single Page
Application (SPA)を ホストできるフロントエンド環境 コンテナベースのバックエンドアプリケーションを ホストできるバックエンド環境
© 2020 TIS Inc. 15 使い方 1. ユースケースに応じ、使いたいモジュールを選ぶ – Eponaはユースケース毎のモジュール集です
2. モジュールの入力パラメータを設定する – ガイド上の入力パラメータをご参照ください 3. 適用する PJのユースケースに 合わせて選択 Epona • CPUは4つ • メモリは1GB • ヘルスチェックのエンドポイントは /health Etc. ガイド $ terraform apply (snip) apply complete! Resources: 2 added, 0 changed, 0 destroyed.
© 2020 TIS Inc. 16 Eponaのコンセプト • Self-Service – サービスチームの自律性を重視し、サービスチーム自らが開発・運用を行う
ための環境を構築する手段を提供します • Operation-Less – 価値提供に直接結びつかないシステム自体の運用に煩わされることのない よう、SaaS、マネージドサービスを積極的に採用します • Switchable – 環境がサポートする機能はできる限り疎結合にし、サービス開発者による無 効化、別手段への切り替えを容易にします
© 2020 TIS Inc. 17 全体アーキテクチャ (AWS) • AWSのマルチアカウント構成を基本とした環境 –
各自社サービスごとにマルチアカウント環境を構成 • Shared型ではない、サービス固有の環境 Runtime環境 本番環境、ステージング環境等のサービスが稼働する 環境。個々の環境がAWSアカウント1つに対応する Delivery環境 Runtime環境に共通するデリバリの仕組み、 IAMユーザ等を配置する環境 SaaS群 GitLab、Slack or Microsoft Teams、 Datadog、PagerDutyと連携
© 2020 TIS Inc. 18 具体的なコンテンツのご紹介
© 2020 TIS Inc. 19 フロントエンドホスト環境(cacheable_frontend) SPAをホストするフロントエンド用ランタイム • Amazon S3に静的コンテンツを配置
• Amazon CloudFront経由でインターネット公開 • Lambda@Edgeでセキュリティ系ヘッダを付与 See: https://gitlab.com/eponas/epona/-/blob/v0.2.1/guide/patterns/aws/cacheable_frontend.md
© 2020 TIS Inc. 20 フロントエンドコンテンツの継続的デリバリ(cd_pipeline_frontend) SPAの継続的デリバリ • Delivery環境のS3への 静的コンテンツ配置をトリガーに起動
• EventBusでRuntime環境にCWE を伝搬させ、CodePipelineをキック • CodePipeline + CodeBuildで OriginのS3バケットに静的コンテンツ を配置 See: https://gitlab.com/eponas/epona/-/blob/v0.2.1/guide/patterns/aws/cd_pipeline_frontend.md
© 2020 TIS Inc. 21 バックエンドホスト環境(public_traffic_container_service) コンテナ化されたアプリケーションのホスト環境 • AWS Fargateでコンテナをホスト
• 前段にALBを配置 • DNSレコードやSSL/TLS証明書への対応 See: https://gitlab.com/eponas/epona/-/blob/v0.2.1/guide/patterns/aws/public_traffic_container_service.md
© 2020 TIS Inc. 22 サポートするアクティビティ DevOpsを実現するため、以下のアクティビティをサポートします – コミュニケーション –
ITS/BTS – VCS Provider – デプロイメントパイプライン – バックアップ – セキュアな本番アクセス – インフラセキュリティ – モニタリング 各アクティビティの詳細は https://eponas.gitlab.io/epona/guide/activities/をご参照ください
© 2020 TIS Inc. 23 Terraformだけで実現できないこと ガイディングする
© 2020 TIS Inc. 24 Terraformだけで実現できないこと 伝えるしかない
© 2020 TIS Inc. 25 SIerの中での困難さとやりがい
© 2020 TIS Inc. 26 SIとDevOps SIer – 受託開発型中心の情報システム開発 –
多重下請構造 我々が直面しているもの(※個人の感想です) • 求められているシステムを確実かつ効率良く完成する価値 • 求められているものがわからない中で、 それを素早く見つけ改善していく価値 「令和元年版 情報通信白書」 (https://www.soumu.go.jp/johotsusintokei/whitepaper/ja/r01/pdf/index.html) どちらの価値を提供するかで 組織構造も戦略も異なる (bi-modal) 双方への対応 【これまでのSIer】 【これからのSIer】
© 2020 TIS Inc. 27 Eponaの持つ可能性 • Eponaの目指すもの: 迅速・オンデマンドな環境構築 –
DevOpsの促進 – クラウドアーキテクチャのテンプレート集 SIer ・たくさんのプロジェクトの経験 ・多種多様な要件に対応したノウハウ 求められているシステムを 確実かつ効率良く完成する価値 求められているものがわからない中で それを素早く見つけ改善していく価値
© 2020 TIS Inc. 28 生まれたばかりのツールキットですが、 あたたかくその成⾧を見守っていただけるとありがたいです