はじめに
今年の2月からエンジニアになりました。最近業務で少しずつAWSを使用するようになりました。
良い機会ということで3日間AWSサミットに参加する機会を頂いたので、参加した感想や学びをまとめていきたいと思います。
AWSサミットとは
AWS Summit は、クラウドコンピューティングコミュニティが一堂に会して、アマゾン ウェブ サービス (AWS) に関する情報交換やコラボレーション、学習を行うことができる日本最大級のカンファレンスです。世界 25 ヵ国 35 都市で開催され、あらゆる業界や学習レベルの技術者が、AWS を利用することでいかに自社のビジネスを迅速に革新し、柔軟で信頼性の高いソリューションを大規模に提供できるかを発見できる機会です。
年々参加者が増加したため今年は初めて幕張メッセで開催することになったようです。
感想
まずエンジニア以外の方も多く来ているのを会場で実感しました。自分の想像以上にクラウドの一般化が進んており、今後IT業界にとどまらずすべてのビジネスマンが持つべき知識になるのかなと感じました。
初心者向けのセッションが多く開催されており、AWSの知識があまりない方でも勉強になると思います。むしろこれからAWSに関わるという方は短い時間でまとまった情報が得られるのでとても有意義に過ごせるなと感じます。
参加したセッション
1日目
- デジタル変革の最前線で選ばれ続けるクラウドへ ~デジタライゼーション時代のカスタマーサクセス~
- 【入門】AWSome Day at Tokyo Summit(半日)
2日目
- AWSで実現する攻めのシステムモニタリング
- 技術でメディアを拓く:AI と日経の記事・動画・文化事業
- 【初級】AWS におけるデータベースの選択指針
- 【初級】AWS の機械学習サービス入門
- 視聴体験を向上するメディアデータ分析・機械学習 事例
- AWSを活用したユーザー認証実装パターン解説
- DMM.comの変革とAWS
- クラウドにおけるアーキテクチャの設計原則
- 【初級】AWSでのデータ収集、分析、そして機械学習
3日目
- 基調講演
- 【初級】AWS コンテナサービス入門
- 【初級】今からはじめるサーバーレスアプリケーション
- ミッションクリティカルなDBをAWS環境に!メインフレームやSAPのデータをリアルタイムで連携
- 【初級】クラウド環境におけるモニタリングの重要性について
- Amazon CloudFrontとLambda@Edgeで開発する質の高いアプリケーション開発
- クラウドネイティブなモダンアプリケーション開発を始めよう!クラウドネイティブ設計とデプロイメントパターン
学んだこと
AWSサービス全体
すべてベスト・プラクティスに従う必要はない。ベスト・プラクティスを知りその上で判断することが大切。
購入オプションの活用するべし。例えばEC2の場合常時可動しているものはリザーブドインスタンスオプションを利用することを進めるほうがお得。最大で75%引き。
意外と知られていないが、CloudFrontとDynamodbにもリザーブドオプションがある。
認証情報はコードに含めない。
東京リージョンは全リージョンで真ん中のくらいの価格帯。
コストについて
AWS Organizatiionsで複数アカウントの請求管理できる。
コスト配分タブでアプリケーション毎にコスト把握は可能
Cost ExplorerでコストをGUIで確認できる。
AWS Budgetで予算管理や想定外のコストも通知できる。
AWS Trust Advisorで無駄を発見できる
事例
技術でメディアを拓く:AI と日経の記事・動画・文化事業
- 企業の決算サマリー(記事)を自動生成。
- 記事自動翻訳機能。(固有名詞などの翻訳精度を重点的に強化)
- 日経AR
- AWSと日経ラボの関係は、研究開発のためのリソースのために使用。サービス運用やプロダクト開発には使用していない。AIの研究開発に最適、不可欠。
- 校正業務においてAIはニーズがあった。
- AI設計の基本的な発想として、実用性と即時性、単純さ・わかりやすさ、現実的な外的制約を意識した。
視聴体験を向上するメディアデータ分析・機械学習 事例
- メディア業界は大きな変革を遂げている。
- 生活者が絶対的な権限を持つようになった。生活者第一主義。生活者の動きを分析して生活者に合わせることがより重要になった。
- メディアはデータに触れる機会が少ない。記事や映像、放送によってどうなったかを今まで見える化ができていなかった。メディアはデータに触れることが大切。
- テレビの課題はデータ不足。
DMM.comの変革とAWS
- 情報配信は検索と機械学習の世界
- テックカンパニーとは、技術志向・ソフトウェア化、データドリブン、アジリティ。事業のすべてがソフトウェア・エンジニアリングで改善される状態を理想。
- クラウドの大きな価値はマネージドであること。
- 移行の手厚いサポートや社内教育への強力なバックアップも大きい
- 自立性の向上、システム向上や変更へのレビューが挑戦しやすい環境になった。
VPC
ネットワーク設計以前にアカウント設計からまず考える。支払いアカウント、リソースアカウント、外部に権限を渡すアカウントなど。
命名規則を考えることも重要。事前にVPC、サブネットなど命名ルールを最初に決めておくと良い。
構成ルールを決めてしっかり管理メンテナンスをすることが大切。
従来のvpcはピアリング接続していた。ピアリングしないかぎり直接接続ができないので、規模が大きくなるとピアリングの数が増えて複雑化してしまう課題を抱えていた。
SharedVPCで異なるアカウントを同一のVPCで接続できる。よってシステムの共通機能(プロキシ、エンドポイントなど)を集約できる。重複機能を削減できる。VPCピアリングのような制約がない。サブネット単位で制御できる。
Transit Gateway
複数のVPCを繋げられる。
有償機能で自由度が高いのでコストの上昇に注意。
拡張・構成のルールを決めることが重要。
S3
主なユースケースはデータ保護移行、データレイク、Webサービスのコンテンツオフロードの3つ。
リソースにはロールを使う。
S3のリソースポリシーについては、バケットポリシーを使用する。
データベース
万能のデータベースは存在しない。
アマゾンのデータベースサービスは現在7種類もある。すべてマネージド・サービス。アプリケーション開発に注力できる。導入&運用面でメリットが大きい。まずマネージドサービスを検討するのが良いのでは。
Nosqlはトランザクションは限定的、高いスケーラビリティ。ユースケースは、オンラインゲームデータやEコマースなど。
ドキュメントデータベース(DocumentDB)は、JSONやXMLなどの不定形なデータ構造に対応。頻繁に変更される属性情報がある場合に検討。
インメモリーデータベース(Elastck Cashe)とは、メモリで処理をするので短い応答時間を実現できる。キャッシュによく使われる。リアルタイム性の高いアプリケーションなどで使われる。
グラフ思考のデータベース(Neptune)は、SNSニュースフィードやレコメンデーションで使われる。
時系列データベース。タイムスタンプが唯一の主軸。株価や気温など。IoTデバイスデータやアプリケーションイベントなどで使用。大量のログデータを格納し、分析も両立させる。
台帳データベース(QLDB)、データの変更、削除が不可能。暗号技術を使う。医療カルテや保険のログ、不動産登記、会計上の証跡などに使われる。
機械学習
機械学習とはデータに基づいて分類や予測などを行うための技術。
機械学習の応用例:レコメンデーション、チャットポット、製品の外観検査、医療診断。
機械学習のハードル:機械学習のアルゴリズムの実装。機械学習システムの構築。数学や統計学、アプリ開発の知識など色々必要。
サービススタック:AIサービス、MLサービス、MLフレームワーク&インフラストラクチャ
AIサービス:データを用意するだけで、APIから機械学習を利用できる利用する機械学習は、AWSによって最適な実装がされている。
AIサービス例:静止画動画認識、音声処理、テキスト処理、チャットポット、時系列データ予測、レコメンデーション
Sagemakerがサービス実装に必要な環境を提供。
機械学習の進め方:機械学習のためのループを作る。データを管理する機械学習のための組織をつくる。機械学習サービスありきではなく、ビジネス課題から出発。
最も時間がかかるのはデータを蓄積すること。
やりたいことはあとから必ず変わる、増えるということを意識する。
データレイクはS3が最適:データを任意のファイル形式で保存できる。容量の制限なし。高い耐久性。低コスト。多様な権限管理や暗号化によるセキュリティ。APIにより様々なプログラム言語やサービスとの連携。
データ活用フローの設計のポイント:万能のツールは存在しない。やりたいことに集中してすばやく試行錯誤するためにマネージドサービスを作る。サーバーレスで構築する。
あとから増やせないので可能な限り細かくデータを取る
ETL処理もサーバーレスが基本方針
機械学習を活用する意味を考える:機械学習で解ける問題を理解する、注力する領域を決める
コンテナサービス
環境毎で差異が出てしまっている解決策の一つがコンテナ。すべての環境で同じコンテナを動かす。
仮想マシンは立ち上げに1分ほどかかるが、コンテナは数秒。似ているが、コンテナは軽量な仮想マシンではない。仮想マシンはマシン、コンテナはただのプロセス。実行環境を隔離しているだけ。だから起動が早い。
コンテナイメージの作成方法は2つ。Dockerfileとコンテナ内で作業してコミット。
Dockerの責務は同一サーバ上のコンテナライフサイクル管理。複数サーバーのことは考えていない。責務外。
そこでコンテナオートスケーリングが出てくる。手作業でのコンテナイメージのダウンロード実行はミスを生み出す。なのでオーケストレーションツールとしてAWSではECSがその一つ。
kubernetesはオープンソースのオートスケーリングツール。比較的運用難易度が高いと呼ばれている。EKSを出したのはリクエストがあったから。aws上でkubernetesを使う人が多くいたからその管理運用をawsが引き受けた。
EKSは運用難易度が高いkubernetesのマネージド・サービス、エコシステムのOSSやツールをそのまま利用可能。各種AWSサービスとも連携できる。オープンソース。高い表現力を持つ。
ECRはフルマネージドなプライベートコンテナレジストリ。IAMと連携、セキュア-保管イメージの自動暗号化。
Fargateは仮想マシンの管理運用が要らなくなる。見えるのはコンテナだけ。仮想マシンの管理がなくなったのでスケールアウト・インが自由。
サーバーレス
サーバ管理が不要、柔軟なスケーリング、アイドル時のリソース確保が不要。アプリケーションの本質に集中できる。
サーバーレスは幅広いユースケース。ウェブアプリ、バックエンド、ビッグデータ、チャットポットなど。
よくあるデザインパターン:モバイルバックエンド、ワークフロー、画像処理・データ加工、
アーキテクチャの設計原則
障害を見越した設定:冗長化、障害の検出、永続データストレージ、複数データセンターを用いた自動復旧
全レイヤでのセキュリティ実装:徹底的な防御、セキュリティサービスを積極使用、特権アクセス制限、リアルタイム監査
伸縮性の実現:ブートストラッピングやゴールデンイメージ、サービス継続性を重視
並列で考える:一1台で100時間=100台で1時間、なめらかなスケーリング、障害影響範囲を小さく、ソフトウェアの書き換え
疎結合はあなたを楽にする:よいインターフェイス定義、サービスディスカバリ、対応できないときの非同期処理、失敗時の適切な処理
制約を恐れない:制限には理由がある、提供できるものを計画する、うまくいくものを出荷する、できるときに出荷する、繰り返し繰り返す
必須:アカウント用不要と権限管理、証跡。IAMユーザ/グループの設定。CloudTail、Config、GuardDuty、SecurityHub、MFAの有効化。使わないリージョンは無効化する。
セッション情報は外に出す。。スケールさせやすくするために。
SQSを挟んでFrontendとBackendを疎結合にする。
Firewallによる防御レイヤ追加
DDoS対策用の防御レイヤを追加
モニタリング
devopsとはソフトウェア開発者とシステム運用者が今日協力してビジネスの価値を高めるという考え方
カスタマーエクスペリエンス:測定するべき項目:レスポンスタイム、ステータスコード
パフォーマンス:CPU使用率、アプリケーション使用時間
傾向分析:ニーズの高いコンテンツの特定、エラーメッセージ
セキュリティ:クラウド上でのアクティビティ、リソース校正の変更履歴、サービスへの脅威状況
コスト:クラウドサービスの利用料金、細かい状況が可視化されているか
チェックするべき監視項目:リソース監視、ログの監視、APM、外形監視、セキュリティ、コスト
モダンアプリケーションのベスト・プラクティス
アプリケーションのライフサイクル全体に渡ってコンプライアンスとセキュリティを構築する。イノベーションの速度を下げずにセキュリティを担保する
アプリケーションの構造をマイクロサービスの集まりにする。AOIと疎結合なコミュニケーションが自動化を可能にして信頼性を向上
可能な限りサーバーレスの技術で構築する。自動化と抽象化によって課題から開放。コンピュートの選択はトランスフォーメーションの革新
アプリケーションのモデリングとインフラにコードを利用する。
CI/CDを利用して高品質な機能を迅速にリリースする。
モニタリングによってアプリケーションのふるまいの洞察を得る。