Recommended
[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
Attestation Mechanisms for Trusted Execution Environments Demystified - Prese...
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
開發人員不可不知的 Windows Container 容器技術預覽
Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話
快速上手 Windows Containers 容器技術 (Docker Taipei)
20190222_インベントリ収集のオープンソースOpenAudITの機能紹介とIT資産管理で必要なこと
単なるキャッシュじゃないよ!?infinispanの紹介
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
Quarkus Technical Deep Dive - Japanese
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
浸透するサーバーレス 実際に見るユースケースと実装パターン
Serverless Application Security on AWS
More Related Content
[AWSマイスターシリーズ]Amazon SNSモバイルプッシュ通知
Attestation Mechanisms for Trusted Execution Environments Demystified - Prese...
[NDC13] 70명이 커밋하는 라이브 개발하기 (해외 진출 라이브 프로젝트의 개발 관리) - 송창규
What's hot (20)
Kafka・Storm・ZooKeeperの認証と認可について #kafkajp
RISC-V : Berkeley Boot Loader & Proxy Kernelのソースコード解析
開發人員不可不知的 Windows Container 容器技術預覽
Azure Appservice WebAppsでWordPressサイトを構築すると運用が劇的にラクになる話
快速上手 Windows Containers 容器技術 (Docker Taipei)
20190222_インベントリ収集のオープンソースOpenAudITの機能紹介とIT資産管理で必要なこと
単なるキャッシュじゃないよ!?infinispanの紹介
実践!OpenTelemetry と OSS を使った Observability 基盤の構築(CloudNative Days Tokyo 2022 発...
VSM (Value Stream Mapping)を用いた開発プロセス可視化のお話
Quarkus Technical Deep Dive - Japanese
M08_あなたの知らない Azure インフラの世界 [Microsoft Japan Digital Days]
Similar to サーバレスアプリケーション構築入門 (20) 浸透するサーバーレス 実際に見るユースケースと実装パターン
Serverless Application Security on AWS
20201118 AWS Black Belt Online Seminar 形で考えるサーバーレス設計 サーバーレスユースケースパターン解説
AWS Lambda ハンズオン 2-Tier アーキテクチャで未来へ
[20171116 三木会] AWSを利用したサーバーレス開発の実践 by アイレット株式会社 cloudpack事業部 高橋 直樹 氏
AWSで始めるサーバレスな RESTful API システム
AWS Black Belt Online Seminar AWS Amplify
202202 AWS Black Belt Online Seminar AWS SaaS Boost で始めるSaaS開発⼊⾨
LambdaとMobileの美味しいかもしれない関係
Serverless services on_aws_dmm_meetup_20170801
AWS Black Belt Online Seminar AWSサービスを利用したアプリケーション開発を始めよう
AWS Introduction for Startups
[AWS Developers Meetup 2017] DeveloperのためのライブAWSウォークスルー 〜 AWS SDKの使い方 〜
AWS Black Belt Online Seminar - Amazon Lightsail
AWS Black Belt Online Seminar 2017 AWS re:Invent 2017速報
20120319 aws meister-reloaded-s3
20120319 aws meister-reloaded-s3
Going Serverless, Building Applications with No Servers
20180710 AWS Black Belt Online Seminar AWS入門者向け: AWSで実現するウェブサイトホスティング
サーバレスアプリケーション構築入門3. 講師、会社紹介
• 名前
– 堀苑 芳弘
• 所属
– 株式会社UNITE
• インサイドエンジニア
• 好きなAWSサービス
– DynamoDB
– S3
– API Gateway
4. 講師、会社紹介
• 会社名
– 株式会社UNITE
• 設立
– 2015年3月2日
• 開発事例
– Webサイト構築・運用
– Webクローラ開発
– オンプレからクラウドへの移行支援
– BI導入・分析用ダッシュボード開発
– VDI(仮想デスクトップ)構築
..etc
34. 3. AWSハンズオン
• Static website
hostingを有効化
• “このバケットを使用
して…”を選択
• インデックスドキュメ
ントに”index.html”
と入力
• “保存”を選択
S3を用いたWebサイトホスティング
42. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• Lambdaとは、サーバレスコンピューティン
グのサービス。
– 実行基盤はAWSが管理
– サーバをユーザ側で用意せずにコードを実行できる
サービス
– コード実行時間に対しての課金でありコスト効率が非
常に高い
44. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• フォルダを作成
– (bucket-name)/img/
– (bucket-name)/thumbnail/img/
46. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• Lambda関数を作成
• “一から作成”を選択
• “名前”を入力
• “既存のロール”に
”lambda_basic_execute”を設定
※ lambda_basic_executeロールは事前に適切
な権限で作成済みです。
50. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• 最初は下記のようにコードが記述されています
• 次のページからコードを編集していきます
51. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• FsとAWS-SDKとnode-imagemagickを読み込みます
• Async構文でかかれているため修正しましょう。
52. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3バケットに関する定義を記述します
• S3からオブジェクトを取得します
55. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3のコンソールから
– (bucket-name)/imgを開く
• JPEGファイルをアップロードしてみましょう
56. 3. AWSハンズオン
S3 & Lambdaでサムネイル画像を作成する
• S3のコンソールから
– (bucket-name)/thumbnail/imgを開く
59. 3. AWSハンズオン
• API GatewayとはAPIの作成と管理が簡単に
できるサービス
– Lambdaで実行しているコードを
簡単にAPIから呼び出せる
– インフラの保守に煩わされない
– APIに対するリクエスト数とレスポンス
のデータに対してのみ課金
APIGatewayで画像投稿機能を作成する
76. 3. AWSハンズオン
• API Gatewayのマネジメントコンソールを開きます
• 先程作成したPOSTメソッドとLambda関数を紐づけて
いきます。
APIGatewayで画像投稿機能を作成する
95. 3. AWSハンズオン
• Auto Scalingの”読み込みキャパシティー”
と”書き込みキャパシティ”のチェックを外
します。
※今回はRead Capacity,Write Capacityに5は
多すぎるため、1に設定をします。
DynamoDBを使ってコメント機能を作成する
111. 3. AWSハンズオン
• API Gatewayのマネジメントコンソールを開
きます
• 先程作成したGETメソッドとLambda関数を紐
づけていきます。
画像表示機能を作成する
112. 3. AWSハンズオン
• API Gatewayのマネジメントコンソールを開
きます
• 先程作成したGETメソッドとLambda関数を紐
づけていきます。
画像表示機能を作成する
127. 4. 実務におけるサーバレスアプリケーション
AWS Serverless Application Model(SAM)
https://www.slideshare.net/AmazonWebServices/serverless-architecture-and-best-practices
• サーバレスアプリケーションの管理フレームワーク
• CloudFormationテンプレートで管理
Editor's Notes #2: こんにちは、みなさん。本日はお忙しいところ、お集まりいただきましてありがとうございます
本日のテーマは、サーバレスアプリケーションについてです。
サーバレスアーキテクチャという単語は近年バズワード化していますが、耳にしたことはありますか?
本日は、AWSを利用した簡単なウェブアプリケーションの開発を通じて、サーバレスアプリケーション
の考え方を知っていただき、Webアプリケーションとして作成して行く際にどのような構成をとればよいのか?
実際のコードを交えながらハンズオン形式で解説していきます
また、終盤ではサーバレスアプリケーションにおけるフレームワークなどについても触れていきたいと思います。
よろしくお願いします。
#3: はじめに、本日のセミナーの大枠を説明させていただきます。
#4: 堀苑芳弘と申します。芳しいに弘とかいてよしひろです。
出身は九州の鹿児島県です。
普段は受託案件のインフラの構築やアプリケーションの開発を行っております。
AWS のテクノロジーを使用して安全で堅牢なアプリケーションを構築およびデプロイするための知識を有しているAWS 認定ソリューションアーキテクト – アソシエイトです。
#5: 私の所属する会社も紹介させていただきます。
株式会社UNITEです。 #6: AWS上にある各種サービスを、
サーバレスアーキテクチャを用いて連携させ、簡単なWEBアプリケーションが開発できるようになることを目的とします #8: AWS概要
Amazon Web Serviceとは
クラウドとは
クラウドのメリット
サーバレスコンピューティング概要
サーバレスコンピューティングとは
サーバレスコンピューティングのメリット
導入事例
S3を用いたWebサイトホスティング
S3&Lambdaでサムネイル画像を作成する
画像投稿機能を作成する
コメント機能を作成する
画像表示機能を作成する
#10: インターネット小売大手のAmazonが提供するクラウドコンピューティングがAWSです。
AWSはネットショッピングで有名なAmazonが、
自社の大量商品の在庫管理やデータ分析を行うため、
ITを駆使して構築したインフラやアプリケーションを一般ユーザーにも公開したのが始まりです。 #11: AWSは世界中の(18 個の)地理的リージョンと(1 つのローカルリージョンにある 55 個) とアベイラビリティーゾーン(DC)
AWSのグローバルなバックボーンは、「リージョン」と呼ばれる地理的に離れた領域がそれぞれ接続されることで構成されています。
各「リージョン」ではAWSのサービスがそれぞれ独立して提供されています。
言い方を変えると「リージョン」はお互いに完全に分離されるよう設計されたAWSのネットワークとサービスの「集合」となります。
たとえば、日本には東京リージョンがあり、米国にはバージニア北部リージョン、オレゴンリージョンなどがあります。
また、政府の業務に関わる米国連邦政府、州、各地方自治体、契約業者にお使いいただけるGovCloud(米国)リージョンなんていうものもあります。
「リージョン」が完全に分離されていることによって、AWS全体としては最大限の耐障害性と安定性が実現されています。
AWSにおけるリージョンは2つ以上の「アベイラビリティーゾーン」から成り立っており、「アベイラビリティーゾーン」は1つ以上の独立したデータセンターで構成されています
#12: AWSはクラウドコンピューティングの概念の上に成り立っているサービスですので、まずはクラウドコンピューティングについて理解しておく必要があります。言葉としてはメジャーになってきましたが、「クラウド」、そして対をなす「オンプレミス」についておさらいしていきたいと思います。
#13: オンプレミス
オンプレミスサーバーとは、クラウド対して自社でサーバー、データセンターを保有します。
クラウドサービスの登場以前はこのオンプレミスが主流でした。
#14: クラウドサービス
皆様で例えるならば水道や、電気です。
利用の仕方や、日常生活に必要不可欠という意味で非常に似ています。
家の蛇口をひねると必要な量の水が出てきますが、 イメージはそれに近いです。
具体的には、インターネットを経由して、サーバーやデータベース、アプリケーションを 必要な時に必要な分だけ利用することが可能となっております。
料金体系も光熱費と同様、使った分だけ支払う従量課金制が取られております。 #15: システムはユーザーが利用するフロントから、それを裏で支えるバックエンドまで、階層になっています。
クラウドに関しても、どの範囲までを包含してくれているかでクラウドコンピューティングのタイプは分類されております。 #16: 下から
IaaS (イアース)
Infrastructure as a Serviceの略で、インフラだけを担ってくれるサービスです。
いわゆる「サーバを借りる」のイメージがこれです。サーバー、ネットワークなどインフラ部分を提供してくれるので、 その上に必要なOSやミドルウェア、アプリケーションをインストールして利用します。 自由がききますので御社独自のシステムを動かしたいという場合、 ほとんどがこちらのタイプを選択することになります。
さくらレンタルサーバ、AWSの仮想マシンもこれに当たります。
PaaS (パース)
Pratform as a Serviceの略で、サーバーなどのインフラ設備に加え、OSやミドルウェア(MySQL, Oracleなど)まで提供してくれます。データベース環境やアプリケーション実行環境などを形成することができるため、スムーズにソフトウェア開発やアプリケーション開発を行うことができます。これは主に開発を進めるユーザー向けです。「アプリさえ乗せればすぐ使えるサーバ」というとわかりやすいでしょうか。
Google App EngineやHerokuがこれに当たります。
SaaS (サース)
Software as a Serviceの略で、アプリケーションそのものが提供されます。利用者は開発が一切必要なく、そのまま利用することができます。Google AppsやSalesforceがこれに当たります。
#17: クラウドを提供する企業は数多ありますが、現状4社が世界の5割超のシェアを占めており、クラウド界のBig4と呼ばれております。 #18: その中でもAWSはダントツでトップを走っており、世界クラウド市場の3割のシェアを占めていると言われています。
なぜAWSのシェアが高いか?
先行者としてクラウド市場に参入していた(2006年〜)という事実はありますが、
より重要なことはMicrosoftやIBMがクラウド市場がそこまで成長するとは思っていなかったということが大きいようです。
AWSのCEOであるAndy Jassyは次のように話しております。「当初、MSやIBMがクラウドについて言っていたことは、まず、誰もクラウドを使わない。
次に使う人がいても、それはスタートアップぐらいだし、しかも本番環境には使わない。もちろん、企業は使わない。しかし、今彼らはそのクラウドで何かをやろうとしている。その動きはAWSから6,7年遅れている。」
この遅れの間に、AWSがノウハウを蓄積し、名実ともにトップとしての地位を固めたという背景があるといわれています。 #19: ・ハードウェアやソフトウェアの購入が必要ないため、初期のコストがかかりません。
・オンプレミスのようにサーバー選定や、HDD容量の検討など煩わしいことはありません。
・従来必要だった人的リソースをより有効利用することができます。
クラウドサーバーは世界中のデータセンターでネットワークを介して稼働しています。
常に最新世代ハードウェア・ソフトウェアへと定期的にアップグレードされています。そのため、質は常に高く保たれております。
クラウドを考えた時にセキュリティを懸念される方は多いですが、 昨今のトレンドとしては、むしろオンプレミスサーバーより、 クラウドサーバーの方が安全という意見もあります。実際、オンプレミスサーバーを常に最新のセキュリティ状態を保つのは難しい。
ここまでである程度AWSとクラウドについてご理解いただけたのではないかと思います。 #20: 続いて、本日のテーマの主題であるサーバレスについてです。
#21: 開発者がサーバーのソフトウェアおよびハードウェア管理の必要性を排したソフトウェアのデザインパターンです。
また、サーバレスとはイベントドリブンなアーキテクチャです。
イベントドリブンとは?
通常のサーバでないアーキテクチャであれば、サーバは常に目を覚まして、イベントまっている状態にあると言えます。
サーバレスに関しては、イベントが発生した際にサーバを確保、起動して、処理を実行するようなアーキテクチャです。 #22: アプリケーションは通常、何らかのサーバーインフラの管理が伴います。
一般的には、アプリケーションには管理を要する物理的なサーバー、オペレーティングシステム、およびWebサーバーの構築プロセスが必須です。
IaaS(Infrastructure as a Service)型サービスでクラウドの仮想サーバーを使用すると、物理的なハードウェアについて気にしなくてもよくなりますが、
依然としてオペレーティングシステムやサーバーのソフトウェアの管理がいくぶんか必要です。
つまり、サーバの管理から完全に逃れることはできません。
IaaS型サービスで仮想サーバを使用しても、問題の発生する箇所がオンプレからクラウド上に移行しただけです。
そこで、サーバの管理もせず、アプリケーションのみを自分たちで運用・管理する考え方がでてきました。
それがサーバレスコンピューティングの概念です。
#23: 柔軟性のあるスケーリングとは
・実行時に自動的に必要なリソースが割り当てられるため、性能の見積もりも設定も不要
高可用性の自動化
・可用性と耐障害性のための機能が組み込まれている
・サービスがデフォルトで提供するため、設計する必要がない
・実際に使用したリソース量に基づいて従量的に課金されるため無駄がない
・特にリクエストに波があるシステムでは大幅なコスト削減が期待できる
#29:
データ容量に依存しない性能
(ユーザが、サーバ台数、媒体本数、RAID、RAIDコントローラを考える必要がない)
#31: オブジェクトの保存場所
#42: WEBで大きい画像は重たい
だからサムネイルをつくっておいた方がいいよね?
そこをやります #127: CloudFront
・AWSが提供するCDN(Content Delivery Network)サービスです。 そのコンテンツをリクエストしたユーザーに低レイテンシーで配信する仕組み
コンテンツをキャッシュしてユーザーへ高速に届ける
キャッシュの活用によりアプリサーバーへのトラフィックを軽減できる(約7分の1に減少した事例あり)
カスタムエラーページ(4xx,5xxの場合にsorryページ等)を定義できる
Cognito
・ウェブアプリケーションやモバイルアプリケーションの認証、許可、ユーザー管理をサポート
フルマネージドな数億ユーザまでスケールするセキュアなユーザー管理サービス
ユーザー名・パスワード認証以外にも外部認証(Facebook/Twitter/SAML...etc)をサポート
ユーザーの複数デバイス間でデータの同期をサポート
#128: サーバレスアプリケーションの管理フレームワーク
CloudFormationテンプレートで管理 #129: テンプレート例 #130: テンプレート例