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
420
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
AIと開発者の共創: エージェント時代におけるAIフレンドリーなDevOpsの実践
bicstone
1
240
似たような課題が何度も蘇ってくるゾンビふりかえりを撲滅するため、ふりかえりのテーマをフォーカスしてもらった話 / focusing on the theme
naitosatoshi
0
390
LangChainとLangGiraphによるRAG・AIエージェント実践入門「10章 要件定義書生成Alエージェントの開発」輪読会スライド
takaakiinada
0
130
“パスワードレス認証への道" ユーザー認証の変遷とパスキーの関係
ritou
1
430
All You Need Is Kusa 〜Slackデータで始めるデータドリブン〜
jonnojun
0
140
Devinで模索する AIファースト開発〜ゼロベースから始めるDevOpsの進化〜
potix2
PRO
6
2.7k
入社後SREチームのミッションや課題の整理をした話
morix1500
1
240
20250413_湘南kaggler会_音声認識で使うのってメルス・・・なんだっけ?
sugupoko
1
390
Amebaにおける Platform Engineeringの実践
kumorn5s
6
900
大規模サービスにおける カスケード障害
takumiogawa
3
800
古き良き Laravel のシステムは関数型スタイルでリファクタできるのか
leveragestech
1
630
食べログが挑む!飲食店ネット予約システムで自動テスト無双して手動テストゼロを実現する戦略
hagevvashi
1
160
Featured
See All Featured
Testing 201, or: Great Expectations
jmmastey
42
7.4k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
104
19k
Facilitating Awesome Meetings
lara
54
6.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
29
5.6k
Stop Working from a Prison Cell
hatefulcrawdad
268
20k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
47
2.4k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Why You Should Never Use an ORM
jnunemaker
PRO
55
9.3k
jQuery: Nuts, Bolts and Bling
dougneiner
63
7.7k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
656
60k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
19
1.1k
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 生まれたばかりのツールキットですが、 あたたかくその成⾧を見守っていただけるとありがたいです