あなたの側で、あなた以上に考える。 サーバレス構成の運用・監視と 自社製Data○ogもどきの話 1
あなたの側で、あなた以上に考える。
サーバレス構成の運用・監視と
自社製Data○ogもどきの話
1
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
2
あなたの側で、あなた以上に考える。自己紹介
前職では特定業種向けのASPサービスの企画・開発・運用までを担当
数名でサーバ構築・運用・監視 / PHPプログラム開発・保守を実施
サービス提供企業数が年間100社程スケール → 負荷が増大する中でインフラ設計・保守業務の重要性や楽しさを経験し、現在の会社では様々な角度から
お客様のサーバ構築・運用業務にまつわる下記を担当しています。
- 自社システム開発、業務効率化、自動化
最近
- サーバレスアーキテクチャ含むAWSインフラ設計・構築・PoC・IoT
- Infrastructure as Code請負い、開発会社様へのCI/CD環境提供
株式会社スカイアーチネットワークス
技術本部開発課 神津 崇士 (こうづ たかし)
tktk19
http://kouzu.info
あなたの側で、あなた以上に考える。アンケート
•商用サービスでコンテナ利用されている方
•商用サービスでサーバレス構成を利用されている方
•開発者の方
•インフラエンジニア・運用をお仕事にされている方
4
あなたの側で、あなた以上に考える。
ウェブサービスに最適な
クラウドインテグレーター↑コンサルティングから設計、開発、運用・保守・管理を一括で行う
スカイアーチ実績
あなたの側で、あなた以上に考える。クラウドでサービス構築 過去から現在
7
4年前
AWSをクラウド基盤として採用する企業が少しづつ出始める
EC2(サーバ)のみで作成された物が大半
3年前
AWSをクラウド基盤として採用する企業が多く出始める
ELB(ロードバランサ)、EC2、RDS(PaaSのDBサービス)
で作成された物が大半
AWS顧客数の増加に伴いInfrastructure AS Codeを急ピッチで進める
2年前
AWSをクラウド基盤として採用する企業が90%程
S3でのイメージホスティングやAutoscale機能の活用
Elastic Beanstalk等 アプリケーションデプロイのみで
インフラ自動構築・運用サービス利用が出て来る
2013 2014 2015 2016 2017
弊社お客様 - AWS利用企業数
あなたの側で、あなた以上に考える。ここ2年間の変化
8
1年前
IoTやBigDataをキーワードにPoCのお手伝いを行う機会を頂く
APIGateway、Redshift、DynamoDB及びAPI開発案件のお引き合いを頂く
SQSやElasticacheの利用事例も増える
今年
サーバレスをキーワードにした開発案件のお引き合いを多数頂き、受注→納品弊社ではAPIGateway、Cognito、DynamoDB等々を利用したバックエンド部開発サーバレス案件や、ECSを利用した運用にも携わることが出来ました。
→ これまでAWSをサーバ中心で利用していた方々がサーバレスを実践・採用し始めている!
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
9
あなたの側で、あなた以上に考える。重たいバッチ処理
10
目的 : 超短納期である程度スケーラブルで安価な長時間バッチ実行環境構築
Webサーバ
(CMS)バッチサーバ
バッチ処理が予想以上に重たい!
m4.4xlarge インスタンスで2種類のJob
2分程の物と、2時間程掛かる物
• バッチの並列実行を行いたい
• 変換処理は即時実行させたい
• バッチサーバはなるべく電源入れずコスト抑えたい
• バッチサーバでジョブキュー実装が難しい
• 諸々事情があり1週間でなんとかしたい
当初構成両方共常時稼働
あなたの側で、あなた以上に考える。1日目 ~ 6日目まで
11
AMIから生成
バッチ処理データ スクリプト
AWS Data Pipeline
実際のインスタンス生成→バッチ→終了までOKDataPipelineで行けそう!
Data PipelineのGUI難しい!
ShellCommandActivity?
このリソースへこの設定値もたせられる?→ 出来ない!
複数パラメータ渡しどう実装する?→ 出来た!
等々有りましたがなんとか
S3バケット上のスクリプトを指定して
AMIから生成したサーバ上で動作するように
Web/APサーババッチサーバ
あなたの側で、あなた以上に考える。7日目
12
終わりが見えた途端幻になってしまう痛恨のミス
Web service limit exceeded: Exceeded number of concurrent
executions.
連結テストを行い、ジョブを連続で呼んだ所
Data Pipelineの On Demand 実行 (API経由での即時呼び出し) の並列動作に失敗
スケジュール実行であれば可能な模様だが今回の要求に合致せず
※本来の利用用途に合致すればコードレスで色々実行出来る便利なサービスです
あなたの側で、あなた以上に考える。8日目 延長戦
13
①バッチサーバ生成
Userdataにてパラメータ等引き渡し
② 最新のバッチをS3より取得
Inputデータ取得
③ バッチ実行
④ S3へ結果・ログをアップロード
⑤ 自身をTerminate
バッチ処理データ スクリプト
Web/APサーバ バッチサーバ
AWS Lambda
Instance disposer
instance_id job_id Instance_status job_status
i-0ebf9373931c69312 20171030 Terminated Finished
i-0ebf9373931c69312 20171031 Running Running
AWS CLI 最高!!
定期実行Lambdaで
バッチ終了済み or 長時間残留サーバの削除
あなたの側で、あなた以上に考える。サーバレス化実施にあたり 注意点
開発にあたり
1. 使い所がフィットするか確認を慎重に(スケジュール・進め方)
2. 実際に試してみないと制約等分からない事が多い
→ PoCフェイズを挟む
普段からサーバレスアーキテクチャの最新情報を追っておく事で
コードレスで行けるようなサービスを利用して行けるように
14
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
15
あなたの側で、あなた以上に考える。
16
サーバレスアーキテクチャ例
最大で1,000リクエスト/秒が予想される一方で普段のリクエスト数は少ないリクエスト受け後の処理の遅延はある程度許容安く済ませたい
API Gateway
リクエスト送信元
→ 後続をどのように作るか
あなたの側で、あなた以上に考える。
17
サーバレスアーキテクチャ例
Lambda1API Gateway
SQS
Lambda2 DynamoDB
リクエスト送信元
リクエストをキューイングする事で疎結合を保ち時間差で捌く!
後続処理
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
18
あなたの側で、あなた以上に考える。サーバ状態取得システム改善 実施の背景
提案型のシステム・サーバ運用を加速する
あなたの側で、あなた以上に考える。
サーバ情報/1hパッケージバージョン
プロセス情報
etc…
旧サーバ状態 取得・確認ツール
︙
1,000台以上
データ取り込み時間が伸び
取得頻度・情報を増やすのは
もう限界…
メール取り込み時間の増大
DB検索クエリの実行時間長
脆弱性対象確認
クラッキング等検知
過去プロセス確認
目的 : 増え続けるデータを取りこぼしなく利用するための基盤構築
あなたの側で、あなた以上に考える。新サーバ状態 取得・確認ツール
︙
1,000台以上
サーバ情報/10minパッケージバージョン(詳細)
プロセス情報(詳細)
通信状況
サーバ構成情報/1day
etc…
これまでの10倍以上の情報処理
スケーラブルで信頼性が高いシステムをスモールスタート
②見える化③機械学習→提案
将来的に実施したい!
2014年度から
全台Chefによるサーバ構築
提案型のシステム・サーバ運用を加速するために、鮮度の高い情報取得→提案自動化(したい!)
Amazon
DynamoDB
Amazon
Redshift
AWS
LambdaData
Pipeline
BIツール
Amazon Machine
Learning
①データ蓄積
Amazon
S3
暗号化してPOST
監視/モニタリングはZabbixで実施
あなたの側で、あなた以上に考える。新サーバ状態 取得・確認ツール
あなたの側で、あなた以上に考える。新サーバ状態 取得・確認ツール
あ!サーバ再起動後にMySQLが起動していない!
あなたの側で、あなた以上に考える。BIツール画面
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
25
あなたの側で、あなた以上に考える。運用で確認しておくとても重要な部分
26
あなたの側で、あなた以上に考える。運用で確認しておくとても重要な部分
27
ログ詳細
あなたの側で、あなた以上に考える。Cloudwatch Alarm運用について
28
あなたの側で、あなた以上に考える。Amazon CloudWatchアラームからのメール
29
Cloudwatch alarmにて発報されたメール
あなたの側で、あなた以上に考える。Amazon CloudWatchアラーム
30
CloudWatch
Slack
Alarm
SNS
Lambda
こんな構成で1プロジェクト専属であれば問題ありませんが
あなたの側で、あなた以上に考える。Amazon CloudWatchアラーム
31
AWS AccountID等の条件で振り分け
IFTTT的なサービスで受信したメールを対応者が分かりやすい物に整形してから送信
あなたの側で、あなた以上に考える。Amazon CloudWatchアラーム
32
対応者が安心してアラート対応開始
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
33
あなたの側で、あなた以上に考える。サーバレス環境の監視 サーバレスの場合
34
サーバレスの場合のサービス監視例
AWS
Lambda
Amazon
DynamoDBAWS
Lambda
Amazon API
Gateway
監視用APIリクエストの
定期実行
AWS
Lambda
処理の中心部分
Amazon
CloudWatch
スカイアーチ過去データ蓄積
Zabbix
Sender
後続処理
ログLambda失敗回数
4XX/5XX回数実行時間
等々
チェックポイント①監視用APIリクエストが
到達したか
AWS Step
Functions
OR
AWS
Lambda
サービス監視もサーバレスで実施
あなたの側で、あなた以上に考える。サーバレス環境の監視 サーバレスの場合 実例 (簡略図)
35
Lambda S3
AWS WAF
Amazon API
GatewayAmazon
CloudFront
WAF機能(IPアドレス制限)を利用するためCloudFrontを利用
定期実行Lambdaにてサンプルリクエストを実施しレスポンを確認(サービス監視)
Lambda
Amazon CloudWatchalarmAmazon
SNS
・・・
リクエスト
あなたの側で、あなた以上に考える。サーバレス環境の監視 サーバレスの場合 実例
36
リクエスト結果が正常な場合返却値として 1が返る
あなたの側で、あなた以上に考える。Agenda
1. 自己紹介/会社紹介
1. クラウド利用の過去から現在
2. サーバレスアーキテクチャの運用・開発実例
1. 重たいバッチ処理のサーバレス化
2. 秒間1,000アクセスを捌くサーバレスアーキテクチャ
3. 自社製Data○ogもどきの話
3. サーバレスアーキテクチャの運用(監視)
1. Amazon CloudWatch アラーム
2. サービス監視のLambda活用
4. まとめ
37
あなたの側で、あなた以上に考える。サーバレス化実施にあたり まとめ
運用にあたり
1. サービスを運用できる・易いやすい体制を整える
2. サービス監視、状態把握のための可視化
アラートが上がった・問題が起きてしまったがどこで何が起きているのか分から
ない
→ 切り分けを行い状況判断が行えるように、可視化し改善を行えるように
3. アラートが上がった時の対処法を考慮しておく事
38
あなたの側で、あなた以上に考える。サーバレス化実施にあたり まとめ
落とし穴
1. 基本的に一度動き出したサーバレスシステムへの手出しは難しい
→ CI/CD等無停止デプロイ等を考慮しておく必要があるか検討
2. 高負荷時の動作確認をしておく事
ロードテストを必ず実施し、想定通り適切にスケールするかを確認
設定・Limit次第でLambda利用 = スケールできない事も (stream処理等)
3. DynamoDB絡みの案件は設計が命+キャパシティ管理がとても重要
万能に見えるDynamoDBですが、癖が多いです
39
ご清聴ありがとうございました。