/ aws

JAWS DAYS 2018

JAWS DAYS 2018 に行ってきました。 😃

タイムテーブルはこんな感じでした。相変わらず充実している…。

午後からの参加でしたが…!感想など書きます。

スライドは公開されたら追記します。

[Serverless] ユーザー企業におけるサーバレスシステムへの移行

ダイソーの方の発表でした。ダイソーの商品管理のシステムなどをオンプレから AWS に移行した話。

移行の話とはあまり関係がないけど、ダイソーって27ヶ国展開してたんですね…。すごい。国毎の相場で値段を均一にしているらしい。

ダイソーが抱えていた課題。

  • 大きいシステムはいや
    • システム変更による影響範囲が大きい -> テストも大きくなる
    • 時間がかかるとお金(人件費など)もかかるし…
    • etc
  • 密結合はいや
    • 密結合では結局大きいシステムと同じ(一つ変更を加えたら他のシステムも芋づる式に…)
  • インフラ管理は嫌
    • データセンターを持ってる
    • 色々大変(土地かって自家発電設備入れて etc )
  • スケールアップは嫌
    • データが多い(膨大な商品データ)とスケールアップでは限界がある
    • 分散処理(スケールアウト)の方が良い

システムを小さく、疎結合に、インフラを持たず、スケールアウト型にすれば課題が解決する、という理由で AWS を選んでサーバレス化した。

うろ覚えで書いても間違えそうなのでスライドが公開されたら見てほしいんですが、具体的には S3, Lambda, DynamoDB, SQS などを活用していた。かっこいい。

Tips の紹介が面白かった。

  • S3 で全てのオブジェクトを mv すると失敗することがある(何個か残ることがある)
    • サポートに問い合わせても原因が謎(うぐぐ)なのでファイルが残っていたらもう一回実行する仕組みを入れている
  • ファイル名をハッシュ値 + ファイル名にしている(アクセスしやすいので)
  • SQS は複数回動くことがある
    • 冪等性をプログラムロジックに入れて解決
  • SQS は順番保証されない(キューイングした順番で取り出されない)
    • それを前提にしたプログラムにする(結果整合性)
    • どうしても順番が必要な場合は FIFO オプションがあるが今のところダイソーでは使っていない(お金も結構掛かる)
  • 拡張性を見越して PUB/SUB を利用
  • Lambda は5分しか動作しない
    • 時間内に処理できる量を把握する、事前に処理できる量に加工しておく
  • プログラムのデータも 50M まで。でもライブラリでたまに 40M とかあるやつがある。こういう場合の解決策がわからない
  • DynamoDB の書き込みキャパを超えると待ちが発生して Lambda がタイムアウトする
    • Lambda の同時実行数制限をかけることで解決

開発手法について。

Cloud9 を使っている。ローカルでの開発だとマシンのスペックに依存するので。 Cloud9 はコマンドも実行できるので便利。

ソース管理は Github 。テストとデプロイは CircleCI で自動化。 CloudFormation でこれらの構成を管理。ただ最新の機能は CFn に対応してない時がある…。そういう場合は CFn 実行後にさらに awscli を叩くことで対応している。

苦労した??

  • App エンジニアは(最初は)苦労した
  • 初物はなんでも苦労する
  • でも慣れると簡単
    • AWS のサービスは制約があるので、それによって判断を迷わなくなってくる

Design For Failure (サーバやデータセンターは止まるもの、を前提にした設計)にするのが大事

感想

全力でサーバレスしていて楽しそう。サーバレスシステムってピタゴラ感ある。

サーバレス独特の作法の話を感じられた。あとデータセンター作って使っていたとかすごいな…しかもそこから AWS に移行するとは…!

コンテナを守る技術2018

コンテナのセキュリティの話。

オフィシャルでも脆弱なイメージは多い。イメージの脆弱性テストするイメージに脆弱性とか…。 😂

ホストとコンテナを適切に管理できる時代。

  • ホストも管理したいなら ECS (コンテナごとにセキュリティグループが使える)
  • ホストを管理したくない場合は Fargate

ECS はタスク定義で Docker が持つセキュリティ強化に役立つオプションが使える。Fargate も制約は ECS より多いけど使える。

タスク定義と IAM Role などでサービスのセキュリティを実現。

セキュリティのポリシーテストも必要。

  • 新しく発見される脆弱性があるので、アプリに変更を加えていなくても定期的なセキュリティチェックが必要

インスタンスハードニングに便利なツール。

こんな感じでひたすらホスト、 Docker コンテナ、アプリケーションといった各層でセキュリティを固めるやり方の紹介がり非常に勉強になった。

感想

コンテナのセキュリティの話面白い。インターネットにさらされる環境で Docker を使ったことが無いので勉強になった。 Docker は今までのセキュリティ上のポイントとはまた別の視点が必要ということがよくわかった…。

まとめ

お祭り感覚で興味のあるセッションを覗いてみるのが好きです。人気のある登壇者のセッションは結構埋まりますが、レシーバーがあるし立ち見も出来るので聞きたいやつはだいたい聞ける印象(ハンズオン系は流石にだめですが…)。

だいたいその時の流行りを反映したタイムテーブルになっているので面白い。今回は IoT や AI 、 Serverless 周りの話が多かった気がします。

来年また行けたらいいな。