- 2018/3/10
- https://jawsdays2018.jaws-ug.jp/
- https://jaws-ug.doorkeeper.jp/events/69135
- 資料は↓に掲載されるはず
- 資料まとめ
A story of cloud journey with Community
- Seiji Akatsuka(サーバーワークス)
- https://www.slideshare.net/akatsuka3/jaws-days-2018-a-story-of-cloud-journey-with-community
Enterprise Serverlessを実現するための信頼性エンジニアリング
- 照井 将士(サーバーワークス)
- https://speakerdeck.com/marcyterui/reliability-engineering-for-enterprise-serverless
- https://www.slideshare.net/marcyterui/reliability-engineering-for-enterprise-serverless
Serverlessとは
- FaaS
- BaaS
- サーバオペレーションがなくなる
- システムオペレーションはある
- 実行した分だけの課金
- 非同期かつ並行
- イベントドリブン
- https://github.com/cncf/wg-serverless/blob/master/whitepaper/README.md
Serverlessの信頼性
- Reliability
- RASIS
FaaSの課題
- テストどうやるか
- functionの粒度
- 他のfunctionやbackendとの連携
- エラーハンドリング
- トレーサビリティ/ログ
BaaSの課題
- どのサービスをえらべばいいか
- 監視
FaaSの実態
- コンテナ内で非同期に呼び出される関数
BaaSの実態
- フルマネージドかつ抽象化されたミドルウェアやライブラリ
信頼性の担保
- 結局は今までの技術と同じだから信頼性担保はできる
- 関数とミドルウェアとライブラリ
- 信頼性は自分で作る
- アプリの層にいろいろ移ってきている
- シンプルを保つ
- functionの数はは多くても良い
Serverlessの設計
イベントは一方向に流す
- 結果が必要なら同期で返さず取りに行かせる
- 自然と非同期になる
- 同期だとエラーハンドリングとか考えないと
- 非同期でもタイムアウトとかは考慮いるけど
- 結果整合性/冪等性
- リトライすればいい
- 同期だとエラーハンドリングとか考えないと
サービス間のエンドポイントを集約する
- マイクロサービス
- ドメインでサービスを分ける
- サービスごとに唯一のエンドポイントというわけではない
- 特定のサービスの特定のオペレーションは1つのエンドポイントに
トレース
- 一連の処理には同じIDを付与
- ログ収集しましょう
データモデリング
Serverlessの実装
- ユニットテストを書く
- ただの関数なので書ける
- 依存サービスはモック化
- DBとかつなげてやりたい場合
- ServerlessFWとかSAMとか使う
- E2Eテストも継続的に
- traceableIDつけておく
監視
- エラー通知をしっかり作ること
- どんなエラーが出たか分かって追えるようにしておく
- メトリクス取れるサービスはとる
- データ制限あるサービスとかは確認
- 何秒間に何回しか呼べないとか
- データ制限あるサービスとかは確認
まとめ
- Serverlessは特別なものじゃない
ランチセッション
「AWS Technical Evangelists Special talk session -スペシャルトークセッション AWSとユーザーコミュニティが生み出すNo borderな未来-」
- Jeff Barr
- Randall Hunt
- Julio Faerman
- Channy Yun
- 亀田 治伸
Alexa for Businessとワークスタイルの未来
働き方改革
- 超長寿社会
- 今までの働き方だとだめ
- 柔軟な働き方
業務シーン
- 情報を社外に出せない
- 帰社しないと作業できない
- 子育てとの両立
ソリューション案とベネフィット
- 生産性向上
- ダイバーシティ
- いつでも
- どこでも
- 誰とでも
AWSの提供するサービス
- WorkSpaces
- AppStream
- Alexa
alexa for business
- 色んな所における
- 倉庫、会議室、受付
- 生産性向上
- 電話、会議スケジュール
- 集中管理
- デバイス、ユーザ管理
- SharedDevice
- デバイス、ユーザ管理
- PersonalDevice
- スキル管理
- パブリックスキル
- プライベートスキル
- スキル管理
まとめ
- AWSのサービスを活用することで
- いつでも働ける
- どこでも働ける
- 誰とでも働ける
- その中の1つとしてalexa for business
コンテナを守る技術 2018
Dockerイメージの安全性
- DockerHubのイメージにもたくさんの脆弱性
- オフィシャルのものでも
- コンテナの機能を活かせば他への影響なしにセキュアなサービスを提供できる
AWSで構成するなら
- ECSを使う
- awsvpcモード
- コンテナ(アプリ)毎にセキュリティグループを設定できる
- Fargate
- ホストを管理したくない場合
アプリ開発
ホストとコンテナ
- 守りやすい環境を整える
- セグメントを分ける
- クラスタを分割
- ネットワークを分割
- スケールアップよりスケールアウト
- role.SGの解放は最小限に
ホストとコンテナ
- コンテナを使うからといって変わるものでない
- https://github.com/docker/docker-bench-security
Dockerコンテナ
- リソースの分離はVMほど厳密じゃない
- ホストのカーネルで走る
- ホストのリソースをほぼ直接利用
- リソース制約
- ulimits
- memory指定し超えたらコンテナ落とす
- read only
- いろいろオプションある
- マウントしたフォルダ以外書き込み禁止
- マウントしたフォルダの書き込み禁止
- ルートユーザ使わない
- 実行ファイルの管理
- 不必要なファイルは削除/無効化
- できれば静的リンクに
- 通信を制限
- 通信先/解放ポートも最小限に
- システムコールを制限する
CI
- Static Application Security Testingツール
- Dockerイメージのポリシーを定義&チェック
deploy
- aqua
- AWSの各サービスとも統合された商用ツール
- ECRのイメージ解析
- 設定不備検知
- 実行時防御
- NeuVector
秘密情報
- 2016年はS3に置いてIAM適切に
- 環境変数だといろんなとこから見えちゃう