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
390
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
9k
なぜぼくがbitcoinに心惹かれるのか
kiririmode
1
970
このConsulがすごい!/consul is great!
kiririmode
0
430
Other Decks in Technology
See All in Technology
強いチームと開発生産性
onk
PRO
30
10k
Engineering at LY Corporation
lycorp_recruit_jp
0
750
マルチモーダル / AI Agent / LLMOps 3つの技術トレンドで理解するLLMの今後の展望
hirosatogamo
31
9.1k
開発生産性を上げながらビジネスも30倍成長させてきたチームの姿
kamina_zzz
1
1.5k
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
2
910
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
320
スクラムチームを立ち上げる〜チーム開発で得られたもの・得られなかったもの〜
ohnoeight
2
340
FOSS4G 2024 Japan コアデイ 一般発表25 PythonでPLATEAUのデータを手軽に扱ってみる
ra0kley
1
150
Going down the RAT hole: Deep dive into the Vuln-derland of APT-class RAT Tools
nttcom
0
470
Application Development WG Intro at AppDeveloperCon
salaboy
0
110
State of Open Source Web Mapping Libraries
dayjournal
0
240
Incident Response Practices: Waroom's Features and Future Challenges
rrreeeyyy
0
150
Featured
See All Featured
Fireside Chat
paigeccino
33
3k
The Invisible Side of Design
smashingmag
297
50k
Happy Clients
brianwarren
98
6.7k
Put a Button on it: Removing Barriers to Going Fast.
kastner
59
3.5k
Testing 201, or: Great Expectations
jmmastey
38
7.1k
Building a Scalable Design System with Sketch
lauravandoore
459
33k
Teambox: Starting and Learning
jrom
133
8.8k
Visualization
eitanlees
145
15k
Java REST API Framework Comparison - PWX 2021
mraible
PRO
28
8.2k
Navigating Team Friction
lara
183
14k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
The Cult of Friendly URLs
andyhume
78
6k
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 生まれたばかりのツールキットですが、 あたたかくその成⾧を見守っていただけるとありがたいです