のんびりSEの議事録

プログラミング系のポストからアプリに関してのポストなどをしていきます。まれにアニメ・マンガなど

AWS Summit day3 report

AWS Summit day 3 レポートです。

2日目のレポートはこちら

carefree-se.hatenablog.com

基調講演

AWS

  • セキュリティに関して、高い信頼度
  • クラウド移行に関して、データ転送サービスも幅広くサポート
    • 140,000以上のデータベース移行実績
  • アプリケーション移行
  • ハイブリッド
    • シームレスにオンプレと連携できるサービス
  • モノリシックからマイクロサービスへ
  • インスタンス
  • コンテナ
    • ECS
    • Fargate
    • EKS

mercari事例

ML

Image Search
AWSを使う理由
  • 積み上がりつづける信頼・実績
  • 無数の新機能が常にリリースされ続ける
  • Customer Obsession

サーバレスアプリケーションアーキテクチャ

  • AWS Lambda
    • 数十万のユーザが活用
  • AWS App Mesh
    • マイクロサービスからマイクロサービスへ
    • 粒度の高いトラフィック制御

Database

Aurora

DynamoDB

  • Global Table
  • どんな規模でも信頼できるサービス
  • Epic Game
  • 1億単位を分析

Blockchain

  • 契約管理

    • 台帳システム
  • QLDB

    • 透過的でイミュータブル。暗号的に検証可能なトランザクションログを提供するフルマネージドサービス。台帳データベース。
  • Amazon Manaed Blockchain

データレイク

  • S3

AWS Lake Formation (Preview)

  • 安全なデータレイクを数日で構築できるセキュアなサービス

IoT

  • 同じデータモデルで同じエッジでつかえる

Panasonic

  • vieureka
    • 来客分析

機械学習

  • P3dn Instance
  • G4 Instance

    • 100GBネットワーク
  • SyntheticGestalt

    • Amazon SageMakerで薬を設計
  • AWS DeepLens

  • AWS DeepRacer

Amazon Pinpoint でユーザーを掴んで離すな

なぜデジタルエンゲージメントが重要なのか

  • ユーザの興味は多種多様

    • 750億のエンドポイントが2025年までに相互に接続される
  • 84%のユーザは数値ではなく人として扱われることを非常に重要視

    51%のマーケットリーダはユーザの期待に完全には答えられていない

  • 絶えず進化しつづけるユーザの期待値

    • 単純な一括メッセージング -> 個人に最適化されたメッセージング(パーソナライズ)
    • サイロ化(孤立)した体験 -> 連続性のあるつながった体験
    • 形式的なコンタクト -> より自然なコンタクト

エンゲージメント向上に役立つAWSのサービス群

Amazon Pinpoint

  • AWSによるユーザエンゲージメントプラットフォーム
  • マーケターにもデベロッパーにも使いやすいプラットフォーム
  • ダッシュボードは1分で反映
  • 改善効果が大きいところがわかりやすい 
  • イベントベース通知機能
    • 特定のアクションをしたユーザにメッセージをリアルタイムに送信
  • Voiceチャネルサポート
    • 電話をかけて自然な自動音声を届ける新しいチャネル
  • 配信性能ダッシュボード

    • Emailがちゃんと受信箱に届いているかをチューニング
  • インポート機能による柔軟なセグメンテーション

  • イベントストリームを活用したより柔軟な分析

事例

  • RoomClip
    • マーケターがSQLかけたのがハマった
  • Disney Streaming Service

Pinpoint + Amazon Personalize

  • 予測的ユーザエンゲージメント

Pinpoint + QuickSight

  • QuickSight

    • すべてのユーザのためのサービス
  • PinpointからQuickSightにデータをフィードする

    • ユーザ数に関係なくスケールし、高速な計算エンジンSPICEがQuickSight

まとめ

  • 適切なカスタマーエンゲージメントは今後より重要
  • 機械学習、データ分析、可視化

Kubernetes on AWSAmazon EKS実践入門)

コンテナ(Docker)

  • ソフトウェアをOS内の独立した環境で実行する技術
  • どこでも動く
  • いつでも作れて、いつでも捨てれる

  • Build : Image化 (Dockerfile作成 build)

  • Share : Docker Hub等
  • Run: オンプレ, EC2等

ユースケース

  • マイクロサービスのアプリケーション
  • ジョブ実行
  • CI/CD
  • 機械学習

Run時の課題

  • 1台で動かせるリソースには限界がある
    • 規模が大きくなると...
  • 耐障害性
    • コンテナのホストが停止したら全滅
  • 運用性
  • スケール

Kubernetes

人気の理由

  • 活発なコミュニティ
  • ポータビリティ(クラウドでもオンプレでも)
  • 様々なエコシステムが利用できる

機能

公式pickup

  • ノードにコンテナを自動配置
  • 失敗したコンテナの自動フッキュ
  • 手動すケース/オートスケール
  • 自動ローリングアップデート
  • 機密情報の設定

  • maser群 : コントロールプレーン

  • node部分 : データプレーン

    本番時には冗長構成にする

オブジェクト

  • Pod : k8sの最小単位, Pod内コンってなはIPアドレス等共有
  • Service : PodにDNSをつけてアクセスできる, ロードバランス(L3/L4)
  • Deployment : Podを維持、レプリカセットの管理

マニフェスト

  • 宣言的設定、あるべき状態を設定
  • yml, json

  • k8s 51% AWS上で動かされてる

  • 今まではEC2 on k8sだった

  • k8sのコントロールプレーンの運用は重労働

    • 冗長化は必須
    • バージョンアップはたいへん

Amazon EKS

  • k8sコントロールプレーンをマネージドで提供
  • 既存のエコシステムがそのまま動作

使う理由

  • 堅牢なコントロールプレーンをマネージドで提供
  • k8sの運用を支援
  • AWSマネージドサービスとスムーズな連携が可能
  • 選択可能なデータプレーン(ノード)

提供する価値

  • ビジネス価値の送出に集中出来る

デプロイ

eksctl

  • IAM
  • コマンドインストール
    • eksctl
    • kubectl
  • eksctlコマンドで作成実行
    • 裏でCloudFormation実行

ユースケースAWS連携

  • HTTPS/HTTP対応のロードバランサを使いたい

    • SSLオフロード、バスルーティグ等
      • Ingressオブジェクトによるロードバランサ
    • ALB Ingress Controller
      • Application Load Balancerを自動デプロイ
  • KubernatesマニフェストをかいてAWSのマネージドサービスをデプロイ/コントロール可能

ログを集約したい

  • FluentdのDeamonsetを利用して、ログを集約
  • CloudWath Container Insights(Preview)
    • コンテナログ、メトリ空をCloudWatchに集約
    • 数個のマニフェストを適用するだけの、簡単なセットアップ

オートスケールしたい

  • 2種類の水平オートスケール
    • Podレベル : 水平オートスケーリング
    • Nodeレベル : クラスタオートスケーリング

デプロイ効率化したい

  • Codeシリースを利用して、パイプラインを構築

  • Amazon ECR

堅牢なデータストア

  • Aurora, DynamoDB, ElasticCacheなどを利用

まとめ

  • EKSはk8sの運用負担を大きく減らせる

次世代の分析プラットフォーム - Amazon Redshift - 最新アップデート

特徴

  • 1万5千超える
  • 1ネイtに2EBを超える
  • 最速
  • コスト効率
  • データレイクと連携

歴史

  • 元々はPostgreSQLのフォークだった
  • 横にスケールアウトできる
  • 2013年2月14日のバレンタインにローンチ
    • 150バッチ適用, 240機能追加

アーキテクチャ

  • JDBC/ODBC, Postgresql ドライバ
  • コンピュートノードで分散処理していく

Redshift Spectrum

  • スケールアウト型 サーバレスコンピューティング
  • RedshiftクエリをS3データレイクに拡張

  • AWSデータハウスとデータレイクの連携によりあらゆる分析ワークロードが可能

  • 自由にETL, SQL, BIツールを選択可能

アップデート

パフォーマンスの向上

  • 最新のRedshiftは2年前に比べて10倍高速
  • 1日あたりのクラスターキュー待ち時間
    • 87% : キューの待ち時間ほとんどない
    • 13% : 平均10分待ち

Concurrency scaling

  • 急な同時実行リクエストに対応するために一時的なクラスタを自動的に数秒で追加し、一貫して高速なパフォーマンスを発揮
  • 1h/24hは無料

  • 同時使用ユーザ数に応じてRedshiftスケールアップ

機械学習ベースのアクセラレーション

  • クエリ実行時間予測
  • ショートクエリは高速キューに
  • クエリ結果がキャッシュされていない場合は、クエリの実行後にキャッシュする

結果セットのキャッシュ

  • クエリをリーダーノードにうつす
  • キャッシュにクエリ結果があれば、処理をせずに返却

その他パフォーマンス向上

  • 繰り返しクエリ
  • 一括削除
  • 単一業の挿入
  • コミット

スケールの向上

  • Spectrum
  • データウェアハウスをS3データレイクに拡張

  • Elastic Resize

シンプル化

  • Redshiftクエリエディタ

    • コンソール上で用意
  • Redshift Advisor

    • 自動レコメンデーションの提供
  • メンテナンス自動実行

    • ほぼメンテナンスフリー
  • Redshiftによる自動管理

    • 自動分散キー

セキュリティの向上

  • ビルドインされたセキュリティ

  • AWS Lake Formationとの連携(近日リリース)

オンプレ移行がより容易に

  • 最小限のリスクで移行

    • AWS PoCガイド、テクニカルヘルプ
  • Redshiftでのストアドプロシージャ実行

    • pL/pgSQL形式のストアドプロシージャをサポート
    • 既存のストアドプロシージャを実行可能

サーバーレスアプリケーションのためのセキュリティアーキテクチャ

サーバレスアプリケーションの構成要素を知る

  • サーバ管理が不要
  • 柔軟なスケーリング
  • アイドル時リソース破棄不要
  • 高可用性

開発者とAWSの役割分担

  • EC2
    • OSの導入まではAWSが担保
  • サーバレス

サーバレスなアプリケーションモデル

イベントソース > ファンクション > サービス呼び出し

基本的なサーバレスアーキテクチャ

Client > Amazon API Gateway -> AWS Lambda -> Amazon DynamoDB

AWS Lambda

  • サーバを気にすることのないアプリケーション開発・実行

  • インフラ管理不要

  • 高いコスト効率
  • 自分のコードを実行

API Gateway

どんな規模であっても、簡単にAPIの作成、配布、保守、監視、保護

  1. APIの定義とホスティング
  2. ネットワークトラフィック管理
  3. AWSの認証の仕組みを活用

ユースケース

  • Web
  • Backend
  • Chatbots
  • Alexa etc...

Data Processing

IoT -> Amazon Kinesis -> Lambda function -> Amazon DynamoDB

サーバレスアプリケーションを構成する要素

サーバレスアプリケーションをセキュアに設計する

Well Architected Serverless Application Lens

クラウドにおけるシステム設計・運用のベストプラクティス集

https://d1.awsstatic.com/whitepapers/architecture/AWS-Serverless-Applications-Lens.pdf

  • ワークロード固有の考え方やベストプラクティスにフォーカスを当てたLens

セキュリティの柱

  • IDとアクセス管理
  • 発見的統制
  • インフラストラクチャ保護
  • データ保護
  • インシデントレスポンス

IDとアクセス管理の考慮事項

  1. APIアクセスの認証認可をどのようにしているか
  2. Lambdaファンクションがアクセス出来るAWSサービスをどのように保護しているか

Amazon Cognito User Pools

ウェブ/モバイルアプリケーションの認証、認可、ユーザ管理をサポート

API Gatewayアクセス認可の方法

  1. Cognit User Pools Authorizer
  2. 一般ユーザ認証/認可
  3. API GatewayはCognitoからのTokenをvalidate
  4. AWS IAM Authorization
  5. 管理ユーザ認証/認可
  6. Identity Pools
  7. Lambda Authorizer
    • カスタム Authorizer lambda内でSocial IDを検証

発見的統制の考慮事項

ログの考慮

AWS X-Rayを使ったトラブルシューティング

  • サービス感イベント繊維を可視化
  • Lambdaファンクションから他のサービスに対する呼び出しと時間をトレース
  • 消えたイベントのスロットルの監視

インフラストラクチャ保護の考慮事項

  • VPCリソースのネットワーク境界保護
    • WAFのルールに基づいた保護がAPI Gatewayで可能
    • Security Group

データ保護

  • サーバレスアプリケーション内の機微な情報の保護
  • 入力値チェック
保護すべきデータの外部化
  • AWS Systems Manage Parameter Store
  • AWS Secrets Manager
AWS Secrets Manager
  • 裏側でRDSの鍵をローテートしてくれる

インシデントレスポンス

  • 侵入テスト

    • 事前申請が必要なく、Lambda, API Gatewayできる
  • AWS WAF セキュリティオートメーション

めざせ!サーバレスプロフェッショナル

サーバレスとは

  • サーバ管理が不要
  • 柔軟なスケーリング
  • アイドル時リソース破棄不要
  • 高可用性

AWS Lambda

AWS サーバレスの核をなす

開発テスト・フレームワーク

AWS SAM Serverless Application Model

  • 関数、API
  • サーバレスアプリケーションのデプロイと管理を簡略化
  • CloufFormationの拡張
    • package
    • deploy
  • yaml, jsonで定義

  • DynamoDB

    • Serverless;;SimpleTable
  • SAMのサンプルをもとにやるとよい

AWS AAM CLI

  • ローカルでのテスト
  • ローカルでのログ確認

複数環境 ・CI/CD

  • リソースの重複使用を避けたい
  • ユーザーに影響を与えずに安全に新しいコードをテスト
  • インフラストラクチャの返納を安全にテストしたい

  • アカウント分ける

  • 環境変数
  • SAM
  • CI/CD

アカウント戦略

  • 同じアカウントでスタックを分ける (小規模向け)
    • 許可やアクセスn分離が難しい
  • アカウントを分ける (大規模向け)
    • 複数のアカウントとそれらの間のコントロールが難しい

Lambda ; 環境変数

  • オプションでKMS経由で暗号化出来る
  • ステージごとに環境分けるのに便利

Lambda+ バージョニング・エイリアス

API Gateway : ステージ

  • 環境変数のように利用できる
  • contextオブジェクトで利用できる

SAM

1つのテンプレートから複数の環境を構築

SAMについて今年調べた記事があるので参考までに

carefree-se.hatenablog.com

CI/CD

Codeサービスと組み合わせ - Code Commit - Code Pipeline - Code Build - Code deploy - Code Star

Hook
  • 特定のLambdaをhook

API Gateway Canaryリリース

再利用

  • SAM
  • CloudFormation
  • Serverless Repository

監視・モニタリング

  • CloudWatch ログ/メトリクス (API Gatewayはサポートしてる)
  • AWS X-Ray
    • リクエスト実行状況
    • 問題の検出
    • パフォーマンス改善
    • さまざまなアプリに最適
AWS X-Ray機能
  • トレースレビュー
  • サービスマップ

Going Deep on Amazon Aurora with MySQL Compatibility

Aurora

  • パフォーマンス・スケーラビリティ
  • 可用性と堅牢性
  • 高セキュリティ
  • フルマネージド

AWSサービスとの連携

  • AWS Lambda
  • IAM
  • S3
  • CloudWatch

パフォーマンス改善

パフォーマンス最適化に加えて、HWプラットフォームもアップグレード

ストレージ

  • SSD
    • 10GB ~ 64TBまでシームレスに自動でスケールアップ
    • 実際に使った分だけ課金
  • 3AZに6つのデータのコピーを作成
  • Log structured
    • redo logを複数の小さなセグメントに分割
    • Log pageによってData pageを作成

I/O profile

Auroraはmysqlの35倍のトラフィックをさばいた

ストレージクラスタ

  • Protection Group 枚に6つのストレージノードを使用
  • 各ログレコードはLSN(Log sequence number)を持っていて不足・重複しているレコードを判別可能

ディスク障害検知と修復

  • 2つのコピーに障害が起こっても、読み書きに影響は内
  • 3つのコピー障害は読み込み可能
  • 自動検知、修復

クォーラムモデル

メンバーシップチェンジ

  • Auroraはクォーラムセットとエポックを使用
  • 停止なしのAZ+1のフォールトトレランス、積極的に障害を検出可能
  • 一番復旧時間の早いものを自動に割合てる

クォーラムの効率化

  • Auroraはどのノードが最新でレイテンシが少ないかの情報を持っている
  • リードクォーラムは修理やクラッシュリカバリに必要

コストを抑えるための工夫

  • 6つのコピーはすべて同一ではない
  • 6つのコピーが必要だが、物理ストレージとして必要は6倍でなく3倍より少し多い程度
  • ストレージ料金は、実際に使った容量のみ

レプリケーション

Auror lock mnagement

  • ここのロックチェーン内の複数スキャナロックフリーデッドロック検出
  • 多くの同時セッションをサポートする、高い更新スループット

新機能

  • Custom Endpoints
    • Auroraクラスター内の、どのインスタンスを含めるかをユーザが指定可能なエンドポイントが作成可能
    • オンラインクエリ用のリードレプリカと分析クエリ用のリードレプリカを分離することが可能に

Global Database

Aurora Serverless

  • 負荷の少ないアプリケーション
スケールアップ・ダウン
  • リトライせずにAuroraのスケールアップ・ダウン可能
コンソール
  • コンソール上からAuroraにクエリを投げることができる
Data API
  • HTTP経由でデータベースに接続が出来るようになった
  • Lambda等で利用しやすい

Parallel Query

  • 複数の分析クエリを同時実行
  • クエリをストレージのどの数千のCPUにプッシュダウン

Performance Insights

  • slow query
    • どれくらい負荷かかってた

Backtrak

  • 瞬時に特定の時点へ巻き戻す
  • 事故ったときとかに活用

Database cloning

  • コストを増やすことなくDBのクローンを作る
  • ストレージ料金は変わらず、インスタンス料金のみ

AuditログをCloudWatchで管理

  • slowlog -> CloudWatch フィルタリング出来る

感想

AWS Summitは初参加でしたが、AWSを利用している企業の様々な事例や、どうビジネスをAWSで回しているかとかも知ることができ、充実した内容でした。