JAWS DAYS 2018 参加レポ #jawsdays

JAWS DAYS 2018 に参加しました。

f:id:s4kr4:20180311223734j:plain

jawsdays2018.jaws-ug.jp

少し前に大阪のエンジニアイベントでこのイベントの存在を教えてもらい、またちょうど前日までArchitecting on AWS受講のために東京に滞在する予定があったので、急遽参加を決めました。

JAWS-UG 山形の赤塚誠二さんによるキーノート「A story of cloud journey with Community」の後、A~Iの8トラックでそれぞれのセッションが始まりました。

どのセッションも魅力的でしたが、自分の今現在の興味から、Serverless/セキュリティ系のセッションを中心に参加していきました。

参加したセッションは以下のとおりです。

Time Title Speeker
10:10 ~ 11:00 Keynote】A story of cloud journey with Community Seiji Akatsuka
11:10 ~ 12:00 Enterprise Serverlessを実現するための信頼性エンジニアリング 照井 将士
12:15 ~ 12:55 【ランチタイムセッション】 アールスリーインスティテュート / 株式会社 はてな / アイレット株式会社 / Sansan株式会社
13:00 ~ 13:50 KeynoteAWS Technical Evangelists Special talk session -スペシャトークセッション AWSとユーザーコミュニティが生み出すNo borderな未来- Jeff Barr / Randall Hunt / Julio Faerman / Channy Yun / 亀田 治伸
14:00 ~ 14:50 サービスをスケールさせるために〜AWSAWS利用者の技術 荒木 靖宏
15:00 ~ 15:50 実践Serverless x Microservices こにし ひろき
16:00 ~ 16:50 AWSセキュリティ事始め〜基礎からはじめてクラウドセキュリティの恩恵を受ける〜 臼田 佳祐

A story of cloud journey with Community

スピーカーはAWS Samurai 2016に選ばれた赤塚誠二さんでした。 AWS Samuraiというのは、AWSの普及に努めた方の中から数名が認定される称号のようなものです。

自身のAWSコミュニティへの「巻き込まれ」体験から見えてきたコミュニティの目的・価値について話されていました。 コミュニティの価値とは

  • Find new heros!
    • プレゼンの上手い/下手等ではなく、本当のリーダーを探す・育てる
    • 「スター」ではなく「ロックスター」がいい
  • Have fun!
    • アウトプット(登壇、ブログ、……)を楽しむ
  • Make a difference!
    • アウトプットに対して別の角度からのフィードバック
    • 新しいものを作っていく
  • Go Global!
    • 海外に展開する
    • 自分の領域から一歩踏み出してみる
    • コミュニティの輪をどんどん広げる

であり、次世代のヒーローを育てて、新たな価値を生み出していくことが大切だとのことでした。


Enterprise Serverlessを実現するための信頼性エンジニアリング

ステートを持たせづらく、実行履歴等の関連性がつかみにくいServerlessなシステムをどのように設計・運用していくかについてのセッションでした。

以下メモ

Serverlessってなんだっけ?

github.com

  • サーバーオペレーションは必要ないけど、システムオペレーションは必要
  • 従量課金制

設計に際して

  • システムをつなぐノリではなく、全体のことを考えなければならない
  • スパイクに耐えられる設計
  • ステートレス、エフェメラ
  • イベントドリブン => 常時監視は不要

  • システムの信頼性とは? RASIS Reliability Availability Serviceability Integrity Security

Serverlessの信頼性をどう担保する?

  • どこに問題が発生したかを追跡しにくい
  • 技術的な課題もある

  • 課題

    • テストどうする?
    • エラーハンドリング
    • バックとの連携
    • RDSと連携しにくい?
  • FaaS

    • コンテナの中で非同期に実行される関数
  • BaaS

=> Serverlessは結局抽象化された関数/ミドルウェアなので、 従来通り信頼性は担保できるはず

  • シンプルに考える
  • シンプルに保つ
  • できるだけアプリケーション層でいろいろ解決する

実装のポイント

  • シンプル

    • 処理は1方向に(結果を返さず、何処かに保存し、必要なサービスがそれを取りに行く) => ポーリングが必要?できればプッシュ型が望ましい
  • エンドポイントの集約

    • 関連性のあるサービスのAPIをまとめる等
  • 追跡性

    • 一連の処理には同じIDを付与する
    • Elasticsearch等に入れると検索性Up
    • Lambdaは「最低1回」の実行が保証 => 2回以上実行されることもある
      • IDがあると何が何回実行されたかがわかりやすい

データモデリング

  • RDBとの相性は悪い

    • DynamoDBと仲良くなる
  • DynamoDB

信頼性

  • テスタブルな実装
  • ユニットテストは必ずする
  • E2Eを継続的にテスト
  • エラーは必ずLogging

まとめ

  • Serverlessは特別な何かではない
  • 自分たちで信頼性を作っていく
  • シンプルに考え、シンプルさを保つ

AWS Technical Evangelists Special talk session -スペシャトークセッション AWSとユーザーコミュニティが生み出すNo borderな未来-

f:id:s4kr4:20180311223701j:plain

Jeff Barr, Randall Hunt, Julio Faerman, Channy Yun という錚錚たる面々がJAWS DAYS 2018のために来日されていました。

僕は恥ずかしながら知らなかったのですが、Jeff Barrは「AWSといえばJeff Barr」というレベルで有名なチーフエバンジェリストです。

僕にこのイベントを紹介してくれたエンジニアが「紫頭の有名な人も来るよ」と言っていた意味がやっとわかりました。

AWSの中の人ならではの、興味深く面白いトークでした。

以下メモ

AWSサービスのキャッチアップはどうすればいい?

  • Jeffのブログを読む
  • 全てをキャッチアップするのは無理 => 自分の興味のある分野を中心に見ていく
  • サービスのキャッチアップも大事だが、その土台となる知識を育てていくことも重要

AWS認定に向けての勉強方法は?

  • 一番良いのはドキュメントをじっくり読むこと
  • 設計事例なども見る
  • Well-Architected Framework

プログラミング言語は何がおすすめ?

  • 言語は問題ではなく、ただのツールなので、それぞれに適した言語を使う
  • インタプリタ言語とコンパイル言語、どちらも使えると良い

プロであり続けるためには何をすればいい?

  • 将来何が起こるかは分からない
  • 「今」何が起こっているのかをしっかり理解する

サービスをスケールさせるために〜AWSAWS利用者の技術

「壊れない」サービスを作るのではなく、壊れてもすぐに検知・復旧が可能なサービスを作ることを目指すとよい、とのことです。

そのためには、あらゆるシステムをコード化・自動化しておくことが大切です。

また、実際に障害が起こった際の対応を「避難訓練」することも助けになります。

以下メモ

ユーザーはサービスをどうスケールすればよいか?

  • 新機能追加

    • AWS Media Service
    • AWSに任せられるものは任せる
  • 面倒のアウトソース

    • AWS PrivateLink
      • ユーザにVPCのエンドポイントを通してサービスを提供できる
    • Inter-Region VPC Peering
      • リージョン間のVPCピアリング
    • Direct Connect Gateway
  • 地理的拡大

    • DynamoDB Global Tables
      • データをグローバルに展開
      • 低レイテンシ
    • 大阪ローカルリージョン
    • AZをつなぐトランジットセンター
    • ネットワーク集中 => トランジットセンターにカスタムルーター
    • カスタムルーターにカスタムチップ

High Availavilityを実現するために

"あらゆるものは壊れる" を前提とする

  • 開発

    • いつ壊れても良いようなサービスを作る
    • テストの自動化
  • 運用

    • インフラのコード化
  • Auto Scaling

    • スケールイン/アウトでIPが変わる? => ELB(NLB)の固定IPで解決
  • Automatic Feedback Control

  • Continuous Delivery & Test Automation

    • テストコードも自動生成?
  • Game-day Testing

    • 本番環境で異常事態への対応を訓練
    • AWS CloudFormation
  • Error Injection

    • Netflix Simian Army
      • Chaos Monkey
      • Chaos Gorilla, Chaos Kong

実践Serverless x Microservices

このセッションはかなりの人気で、ブースの席がすぐ埋まって立ち見の人も多数出るほどでした。

その期待感通り、Serverless/Microservicesを実践したときの知見に溢れたよいセッションでした。

午前中のセッションで聞いた「一連の処理に一貫したIDをもたせることでトレーサビリティを向上する」という手法がここでも登場したのが印象的でした。

以下メモ

参考になる書籍

なぜマイクロサービス?

  • 素早いリリース
  • 無停止リリース

マイクロサービス化のポイント

  • サービス分割

  • データの分離

    • 各サービスごとに分割
  • メッセージング

  • トレーサビリティ

    • 各サービスでログを吐く
    • 処理にIDを付与する
  • レジリエンス

    • 障害が他に波及しない
    • 自動復旧
  • 無停止デプロイ

    • デプロイを自動化
  • テスト戦略

サービスの癖を見抜く

  • Kinesis

    • Kinesis => Lambda
      • ポーリング間隔の制限がある
      • 間にStepFunctionsをかませる
  • StepFunctions

    • 順序保証ができない
      • DynamoDBで処理状況を管理
  • X-Ray

  • DynamoDB

    • Auto Scaleがスパイクに間に合わない
  • ElasticSearch

    • Full GC後のアクセスにラグが生じる

サービス全体の監視

  • イベントIDは持たせよう

AWSセキュリティ事始め〜基礎からはじめてクラウドセキュリティの恩恵を受ける〜

50分で以下の資料(117ページ)を全て紹介する、怒濤の発表でした。

dev.classmethod.jp

聴き入っていたのでメモなどは取っていないのですが、要点は全て上の資料内に詰まっています。

印象に残っているトピックは、

  • 結局AWSはセキュリティ的に安全なのか?
  • オンプレとクラウドを比較するのはナンセンス
  • クラウドに偏見を持っている人を説得するために
  • 権限を正しく設定すること
  • ベストプラクティス集を読もう
  • Developers.IOも読んでね!

という感じです。


まとめ

時間的な都合で夜の懇親会&LT大会には参加できませんでしたが、前日まで受講していたArchitecting on AWSで勉強した内容の実践編という位置付けで楽しむことができました。

かなりの知識をインプットできたので、これからはどんどんアウトプットして定着させていきたいです。