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
AWS Summit Tokyo 2023
Search
Safie
April 21, 2023
Technology
0
2.5k
AWS Summit Tokyo 2023
18 万台のカメラが接続する
Safie のモダナイゼーションへの取り組み
Safie
April 21, 2023
Tweet
Share
More Decks by Safie
See All by Safie
2024年技育祭【秋】セーフィー登壇資料
safie
0
630
MLP Can Be A Good Transformer Learner
safie
1
1.5k
Safie Viewer for iOS の 技術的負債との付き合い方
safie
0
600
Developers Boost2023_Safie
safie
0
360
AWS IoT@Loft#9
safie
0
2.6k
ng-japan2019_Safie Sponsored LT Session
safie
0
400
Other Decks in Technology
See All in Technology
KubeCon NA 2024 Recap / Running WebAssembly (Wasm) Workloads Side-by-Side with Container Workloads
z63d
1
250
成果を出しながら成長する、アウトプット駆動のキャッチアップ術 / Output-driven catch-up techniques to grow while producing results
aiandrox
0
320
第3回Snowflake女子会_LT登壇資料(合成データ)_Taro_CCCMK
tarotaro0129
0
190
Postman と API セキュリティ / Postman and API Security
yokawasa
0
200
生成AIのガバナンスの全体像と現実解
fnifni
1
190
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
220
社外コミュニティで学び社内に活かす共に学ぶプロジェクトの実践/backlogworld2024
nishiuma
0
260
Microsoft Azure全冠になってみた ~アレを使い倒した者が試験を制す!?~/Obtained all Microsoft Azure certifications Those who use "that" to the full will win the exam! ?
yuj1osm
2
110
GitHub Copilot のテクニック集/GitHub Copilot Techniques
rayuron
36
14k
AWS re:Invent 2024で発表された コードを書く開発者向け機能について
maruto
0
190
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
12
11k
UI State設計とテスト方針
rmakiyama
2
590
Featured
See All Featured
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Optimising Largest Contentful Paint
csswizardry
33
3k
Code Reviewing Like a Champion
maltzj
520
39k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
26
1.5k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
229
52k
Product Roadmaps are Hard
iamctodd
PRO
49
11k
Why Our Code Smells
bkeepers
PRO
335
57k
Build The Right Thing And Hit Your Dates
maggiecrowley
33
2.4k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Optimizing for Happiness
mojombo
376
70k
What's in a price? How to price your products and services
michaelherold
243
12k
Transcript
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved.
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved. 18 万台のカメラが接続する Safie のモダナイゼーションへの取り組み 佐伯 航 C U S - 5 1 セーフィー株式会社 開発本部 第1開発部 インフラグループ
自己紹介 ◼名前 • 佐伯 航(さいき こう) ◼所属 • セーフィー株式会社 開発本部
第1開発部 インフラグループ テックリード ◼略歴 • 監視オペレーターからサポートエンジニア、ネットワークエンジニアを経て AWS エンジニアに。2021年7月にセーフィーに入社。 2 ©️ Safie Inc. |
アジェンダ ◼会社紹介 ◼Safie のアーキテクチャ概要 ◼モダナイゼーションへの取り組み ◼今後の取り組み ◼まとめ 3 ©️ Safie
Inc. |
会社紹介 4 ©️ Safie Inc. |
会社概要 5 ©️ Safie Inc. | 企業情報 会社名 セーフィー株式会社 代表者名
佐渡島 隆平 所在地 東京都品川区西五反田 設立年月 2014年10月 従業員数 353名(2023年1月現在) 上場概要 2021年9月29日 東京証券取引所グロース市場へ上場 製品・サービスの概要 事業内容 クラウド録画型映像プラットフォーム 「Safie(セーフィー)」開発・運営
Safie の紹介 6 ©️ Safie Inc. | 6 ◼ クラウド経由で複数のカメラを管理/制御
◼ ライブ映像や録画映像をどこからでも視聴可 ◼ アカウントベースでカメラや映像へのアクセ ス権をコントロール クラウド
カメラ台数とマーケットシェア 7 ©️ Safie Inc. |
導入企業 8 ©️ Safie Inc. |
9 ©️ Safie Inc. | Safie のアーキテクチャ概要
Safie のアーキテクチャ概要 10 ©️ Safie Inc. | ※他にもコンポーネントが存在しますが省略しています Virtual private
cloud (VPC) Amazon Aurora MySQL Amazon Aurora MySQL Amazon Aurora MySQL Amazon Aurora MySQL
Safie のアーキテクチャ概要 ◼水平スケールするために一定のカメラ台数をカバーできるリソースをサブ ネット単位でゾーンという概念で分割 ◼カメラと通信するカメラサーバーもスケールアウトする • 2023 年 3 月時点でカメラサーバーは全ゾーン合計で
1400 台 11 ©️ Safie Inc. |
課題 ◼サービスの成長に比例して手作業で繰り返し行われる作業、いわゆるトイ ルが増えつつある状況だった • トイルが増え続けるとサービスの信頼性向上に繋がる根本的な改善に人的リソースを 割くことが難しくなり、更にトイルが増え続ける…といった負の連鎖に陥りそうな気 配を感じた ◼トイル以外にもセキュリティリスクの低減についても取り組む必要がある と感じた 12
©️ Safie Inc. |
13 ©️ Safie Inc. | モダナイゼーションへの取り組み
チームで行った改善一覧(抜粋) ◼コンテナ移行(AWS Fargate への移行) ※現在も移行中 ◼IAM ユーザーの利用をクロスアカウントアクセスに移行 ◼Amazon EBSボリュームタイプ(gp2 ->
gp3)の変更 ◼NAT Gateway 冗長化 ◼Amazon EC2 Auto Scaling Group, AWS CodeDeploy の導入 ◼AWS Systems Manager Session Manager 導入 ◼Amazon RDS のデータ共有に AWS Lake Formation を採用 ◼AWS WAF Classic から AWS WAF V2 へ移行 ◼AWS Cost Categories によるコスト可視化 ◼一部の SSL/TLS 証明書を ACM へ移行 ◼AWS Config の標準設定を定め Terraform モジュール化 14 ©️ Safie Inc. |
◼コンテナ移行(AWS Fargate への移行) ※現在も移行中 ◼IAM ユーザーの利用をクロスアカウントアクセス方式に移行 ◼Amazon EBSボリュームタイプ(gp2 -> gp3)の変更
◼NAT Gateway 冗長化 ◼Amazon EC2 Auto Scaling Group, AWS CodeDeploy の導入 ◼AWS Systems Manager Session Manager 導入 ◼Amazon RDS のデータ共有に AWS Lake Formation を採用 ◼AWS WAF Classic から AWS WAF V2 へ移行 ◼AWS Cost Categories によるコスト可視化 ◼一部の SSL/TLS 証明書を ACM へ移行 ◼AWS Config の標準設定を定め Terraform モジュール化 15 ©️ Safie Inc. | チームで行った改善一覧(抜粋)
16 ©️ Safie Inc. | IAM ユーザーの利用をクロスアカウン トアクセスに移行
背景と課題 ◼権限の分離や請求情報の明確化のため複数の AWS アカウントを利用 ◼IAM ユーザーが各 AWS アカウントに作成されていた • 複数の
AWS アカウントにアクセスするユーザーは複数の IAM ユーザーを管理 ◼エンジニアは強い権限を持った IAM ユーザーでアクセスキーを発行し作 業しており、漏洩した場合のリスクが高い状態だった 17 ©️ Safie Inc. |
改善内容 ◼IAM 管理用の AWS アカウントを作成 • パスワード、アクセスキー、 MFA デバイスの自己管理権限および sts:AssumeRole
のみ可能な権限を付与した IAM グループを作成 • すべての IAM ユーザーは上記 IAM グループに所属する ◼IAM 管理用 AWS アカウントから作業対象の AWS アカウントの IAM ロールに スイッチロール(AssumeRole)する • 役割ごとに IAM ロールを作成し、信頼関係ポリシーで各 IAM ユーザーを許可 - MFA は必須とするが、利便性を考慮し最大セッション期間は 12 時間に変更 ⁃ AWS CloudTrail イベントでユーザーを識別できるようロールセッション名に IAM ユー ザー名を使用するよう強制 18 ©️ Safie Inc. |
改善内容 ◼IAM ポリシーの例は AWS ドキュメントに記載あり 19 ©️ Safie Inc. |
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/reference_policies_examples_iam_credentials_console.html より引用
改善内容 ◼信頼関係ポリシーの例 20 ©️ Safie Inc. |
ポイント ◼AWS CLI などの CLI ツールを利用するユーザー向けに一時クレデンシャ ルの取得方法をドキュメントに書くことでスムーズに移行することができ た • direnv
と AWS CLI や aws-vault を組み合わせて一時クレデンシャルを取得し環境 変数へセットするサンプルコードを記載 21 ©️ Safie Inc. |
効果 ◼強い権限を持ったアクセスキーを発行する必要がなくなり、漏洩を未然に 防ぐことができた ◼複数の IAM ユーザーを管理する煩雑さの解消 22 ©️ Safie Inc.
|
23 ©️ Safie Inc. | Amazon EC2 Auto Scaling Group,
AWS CodeDeploy の導入
◼AWS Fargate 移行も進めている中ではあるが Amazon EC2 で動作する アプリケーションが多く、Ansible でデプロイ作業を行っていた • Web
API などのアプリケーションは頻繁に変更が入るためデプロイに時間を取ら れ、開発者体験も低下 ◼OS パッケージ更新に伴う Amazon EC2 インスタンスの入れ替えも手動 対応しており、運用コストが高かった 24 ©️ Safie Inc. | 背景と課題
改善内容 ◼Auto Scaling Group 管理へ移行と AWS CodeDeploy による CD を導入
◼GitHub Actions でワークフローを作成 • Amazon S3 に AppSpec ファイルを含んだアーティファクトをアップロードし、 create-deployment を実行 • デフォルトブランチへのマージでステージング環境へデプロイ実行 • リリース作成時にプロダクション環境へデプロイ実行 25 ©️ Safie Inc. |
◼デプロイが成功したリビジョンが存在しない場合 AWS CodeDeploy によ るデプロイは実行されない • Auto Scaling Group で
Amazon EC2 インスタンス起動後、Elastic Load Balancing ヘルスチェック失敗によって Amazon EC2 インスタンスが Terminate されてしま う ◼サービスのリクエストがルーティングされないテスト用のターゲットグ ループなどを作成し、事前に AWS CodeDeploy でのデプロイを成功させ ておく • Amazon EC2 インスタンス起動後にタイミングを見計らって手動で AWS CodeDeploy でのデプロイを実行する 26 ©️ Safie Inc. | ポイント
◼開発効率の向上 ◼運用コストの低減 • Elastic Load Balancing ヘルスチェック失敗時における Amazon EC2 インスタンス
再作成の自動化 • AMI 更新時におけるインスタンス入れ替えも Auto Scaling Group のインスタンスリ フレシュ機能で自動化できた 27 ©️ Safie Inc. | 効果
28 ©️ Safie Inc. | AWS Systems Manager Session Manager
導入
◼セキュリティの向上 • インバウンド SSH の許可が不要になる ◼Bastion サーバーの OS ユーザーと公開鍵の管理コスト低減 •
シェルアクセスの可否は IAM の権限で制御 ◼監査目的のロギング向上 • オペレーションログを Amazon S3 に自動保存可能 • セッション履歴が AWS CloudTrail に記録される 29 ©️ Safie Inc. | モチベーション
◼オペレーションログ取得のため以下の AWS Systems Manager ドキュメ ントは利用を禁止 • AWS-StartSSHSession • AWS-StartPortForwardingSessionToSocket
• AWS-StartPortForwardingSessionToRemoteHost • AWS-StartPortForwardingSession ⁃ (ただし、当社の監査要件によるものなので利用できたほうが便利です) ◼ファイル転送のために Amazon S3 を作成、AWS CLI を全ての Amazon EC2 インスタンスにインストール、インスタンスプロファイルで AWS Systems Manager, Amazon S3 の権限を付与 30 ©️ Safie Inc. | ポイント
31 ©️ Safie Inc. | Amazon RDS のデータ共有に AWS Lake
Formation を採用
◼サービスレベル向上を目的に分析のためにデータ分析基盤へ Amazon RDS(Amazon Aurora) のデータを共有 • サービスが稼働する AWS アカウントとデータ分析基盤の AWS
アカウントは異なる ◼Jenkins(実体はシェルスクリプト)で以下の処理を行っていた • Amazon Aurora クラスターのクローンを作成 • センシティブな情報をマスキング、不要テーブルの削除 • クローンからスナップショットを作成 • データ分析基盤 AWS アカウントへスナップショットを共有 • スナップショットから Amazon S3 エクスポートを実行し、Amazon S3 にデータを 格納 32 ©️ Safie Inc. | 背景
◼Amazon Aurora クラスターごとにクローンを作成するため単純に時間が かかる • サービスで使用している Amazon Aurora クラスターは 19
クラスター( 2023年3 月時点) ◼データ分析基盤で分析、可視化したい項目が増えるたびに共有するテーブ ルを追加(シェルスクリプトの変更)が必要であり、属人化していた 33 ©️ Safie Inc. | 課題
34 ©️ Safie Inc. | ◼AWS Step Functions と AWS
Lake Formation を使った構成に変更 ◼自動スナップショット取得をトリガーに AWS Step Functions を実行 ◼AWS Step Functions の処理 • Amazon S3 エクスポートの実行 • Amazon S3 エクスポートで作成されたオブジェクトを AWS Glue クローラーがク ロールするパスへコピー • AWS Glue クローラーの実行 改善内容
35 ©️ Safie Inc. | ◼AWS Lake Formation は AWS
Glue データカタログを他の AWS アカウ ントに共有することが可能 • AWS Glue 単体でもクロスアカウントアクセスは可能だが、AWS Lake Formation ではタグベースのアクセス制御(TBAC)が可能であり、データベース、テーブル、カ ラムなどの粒度でアクセス制御が可能 改善内容 AWS Step Functions workflow ① Amazon S3 エクスポート実行 ② Amazon S3 オブジェクトをコピー AWS Lake Formation AWS Lake Formation AWS Glue
36 ©️ Safie Inc. | ◼仕組み上ニアリアルタイムな分析が要件の場合はマッチしないが、 Amazon S3 エクスポート ->
オブジェクトコピー -> AWS Glue クロー ラーの実行にかかる時間は1時間程度 • Amazon S3 エクスポートの同時実行数制限(デフォルト: 5)は上限緩和可能 ◼AWS Step Functions, AWS Lake Formation は Terraform で管理して おり、属人化もある程度解消できた 効果
37 ©️ Safie Inc. | 今後の取り組み
今後の取り組み ◼トイルの撲滅活動を継続する • まだまだレガシーな部分や整理が必要な部分が多い • 今後も Amazon EC2 インスタンスは増える傾向にある ◼コンテナ移行も推進する
• アプリケーションの特性によって Amazon EC2 インスタンスを選択する場合もあり ◼AWS Control Tower などを利用したマルチアカウント統制についても検 討したい 38 ©️ Safie Inc. |
39 ©️ Safie Inc. | まとめ
まとめ 40 ©️ Safie Inc. | ◼サービスが成長しつづけるタイミングでは、初期に構築した構成を維持す るのみではなく継続的な改善に取り組むことが大事 • サービスで提供している環境を変更することに抵抗を感じるかもしれないが、
長期的な目線でメリット、デメリットを比較し検討する
© 2023, Amazon Web Services, Inc. or its affiliates. All
rights reserved. © 2023, Amazon Web Services, Inc. or its affiliates. All rights reserved.