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.1k
なぜぼくがbitcoinに心惹かれるのか
kiririmode
1
980
このConsulがすごい!/consul is great!
kiririmode
0
440
Other Decks in Technology
See All in Technology
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
24
11k
日本版とグローバル版のモバイルアプリ統合の開発の裏側と今後の展望
miichan
1
130
スタートアップで取り組んでいるAzureとMicrosoft 365のセキュリティ対策/How to Improve Azure and Microsoft 365 Security at Startup
yuj1osm
0
210
podman_update_2024-12
orimanabu
1
260
10個のフィルタをAXI4-Streamでつなげてみた
marsee101
0
160
非機能品質を作り込むための実践アーキテクチャ
knih
3
840
Fanstaの1年を大解剖! 一人SREはどこまでできるのか!?
syossan27
2
160
ブラックフライデーで購入したPixel9で、Gemini Nanoを動かしてみた
marchin1989
1
520
多領域インシデントマネジメントへの挑戦:ハードウェアとソフトウェアの融合が生む課題/Challenge to multidisciplinary incident management: Issues created by the fusion of hardware and software
bitkey
PRO
2
100
WACATE2024冬セッション資料(ユーザビリティ)
scarletplover
0
190
大幅アップデートされたRagas v0.2をキャッチアップ
os1ma
2
520
サーバレスアプリ開発者向けアップデートをキャッチアップしてきた #AWSreInvent #regrowth_fuk
drumnistnakano
0
190
Featured
See All Featured
Fireside Chat
paigeccino
34
3.1k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Side Projects
sachag
452
42k
Responsive Adventures: Dirty Tricks From The Dark Corners of Front-End
smashingmag
251
21k
The Invisible Side of Design
smashingmag
298
50k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
Designing for humans not robots
tammielis
250
25k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
For a Future-Friendly Web
brad_frost
175
9.4k
Raft: Consensus for Rubyists
vanstee
137
6.7k
Git: the NoSQL Database
bkeepers
PRO
427
64k
Fantastic passwords and where to find them - at NoRuKo
philnash
50
2.9k
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 生まれたばかりのツールキットですが、 あたたかくその成⾧を見守っていただけるとありがたいです