Home
Slides
Blog
slide.seike460.com
Home
Slides
Blog
Home
Slides
PHPerKaigi 2020
PHPerKaigi 2020
PHPerKaigi 2020
2020年2月9日
PHP
PHP
Architecture
Design Pattern
Keyboard Shortcuts
←
→
Navigate slides
Space
Next slide
F
Fullscreen
ESC
Exit fullscreen
Home
First slide
End
Last slide
B
.
Pause
S
Speaker notes
?
Reveal.js help
Close
## Serverless Pattern PHPerKaigi 2020 株式会社Fusic  清家史郎(@seike460) 
## Everything Will Be Serverless これは確定した未来ではありません 僕はその未来を信じてトークしようと思います
# Who? ###### Fusic Co., Ltd.  ###### 清家史郎 ([@seike460](https://twitter.com/seike460))  ###### Evangelist / Engineer ###### FullStack Backend (PHP、Go)
# 今回お話する内容 - なぜ Serverless なのか - Serverless Patternとは - Web Serverless Patternの紹介と解説 - まとめ
## なぜ Serverless なのか
# なぜ Serverless なのか ## あなたはなぜコードを書くのか #### 技術が生み出す価値提供
###### 技術が生み出す価値  - 効果 - 速度 - 精度 ###### 出来上がったアウトプットもたらす価値
###### 時間は有限  - 完成された仕組みを上手く利用する - やらなくてよいことはやらない - クリエイティブなアウトプットに集中 ## Serverlessを利用
###### Serverlessを利用するということ  - クラウドベンダーが提供している高品質なサービスを活用 - APIを公開しているSaaSを利用する事もServerless - メンテナンス、リソースコントロールを委譲 ある程度決まったデザインパターンが存在する ## Serverless Pattern
## Serverless Patternとは
# Serverless Patternとは - AWS - [形で考えるサーバーレス設計](https://aws.amazon.com/jp/serverless/patterns/serverless-pattern/) - [AWS モダンアプリケーション開発](https://pages.awscloud.com/rs/112-TZM-766/images/wp_mad_201906.pdf) - Heroku - [The Twelve-Factor App](https://12factor.net/ja/) - Serverless - [Serverless Code Patterns](https://serverless.com/blog/serverless-architecture-code-patterns/) - Kong - [A pattern language for microservices](https://microservices.io/patterns/index.html) #### Serverless Architecture Pattern
# Serverless Architecture Pattern - N-tier - Web Queue/ Event Driven - Micro Service
# N-Tier 多層アプリケーション - プレゼンテーション層 - ロジック層 - データ層 
# プレゼンテーション層 ユーザーからの入力、ユーザーへの出力等の インターフェイスを受け持つ / UI 
# ロジック層 入力を元に、アプリケーション動作の制御を受け持つ 
# データ層 ロジック層からの要求に応じて データの保存、変更、削除、参照を受け持つ 
# Web Queue / Event Driven - メッセージキューを受け取る - メッセージキューを処理する 
# Web Queue - リクエストをメッセージキューとして受け取る 
# Event Driven - メッセージキューを利用して処理を行う 
# Micro Service - コンポーネントを幾重にも作成し個別動作や相互に呼び合う 
Serverless Architecture PatternをWebアプリケーションに組み込む ###### Web Serverless Pattern
# Web Serverless Pattern - 動的Web - モバイルアプリケーション - IoT Backend - Web Queue/ Event Driven ###### AWS
## 動的Web
# 動的Web 静的ページ配信を行い、JavaScriptからAPIにアクセスする APIからデータを取得しながら動的Webを構築 
# AWS S3 + Amazon CloudFront オブジェクトストレージ + CDN S3にHTML・CSS・JavaScriptを配置 ###### AWS CloudFrontのオリジンをS3に設定して静的コンテンツの配信 
# Amazon Cognito マネージドな認証を提供 Oauth 2.0、SAML 2.0、Open ID Connectもサポート Tokenの有効期限は変更不可なので注意 ###### JSで認証を行う 
# Amazon API Gateway マネージド API Endpointを提供 Cognitoを利用した認証や負荷に応じたスケーリングを提供 ###### JSでAPI Gatewayにアクセスを行う 
# AWS Lambda AWS の Serverlessの核 様々な言語のランタイムを提供 カスタムランタイムを利用するとPHPも利用可能 バックエンドはコンテナ、コールドスタートに注意 ###### API Gateway から渡されたリクエストを利用して処理を行う 
# Amazon DynamoDB スケーラブル NoSQL DB 料金、パフォーマンスの観点からキャパシティユニット設計に注意 ###### データの保存、参照を行う 
###### 僕たちはSQL使いたいんだ!
# Amazon RDS マネージド リレーショナルデータベース インスタンスを管理する事を代償に利用可能 ###### データの保存、参照を行う 
# VPC Lambdaの課題は解消されている - VPC Lambda コールドスタート問題 - [Announcing improved VPC networking for AWS Lambda functions](https://aws.amazon.com/jp/blogs/compute/announcing-improved-vpc-networking-for-aws-lambda-functions/) - コネクション枯渇問題 - [Amazon RDS プロキシのご紹介 (プレビュー)](https://aws.amazon.com/jp/about-aws/whats-new/2019/12/amazon-rds-proxy-available-in-preview/)
## モバイルアプリケーション
# モバイルアプリケーション リアルタイム通信要件、オフライン処理を考慮した GrpahQLベースのアプリケーション 
# AWS AppSync マネージドなGraphQLでリゾルバにDynamoDB、Lambdaを使える オフラインの対応も可能 ###### Query参照、Mutetion更新、Subscription通知 
## IoT Backend
# IoT Backend IoTデバイスからの大量のデータを 高速、セキュアに受け取り処理する 
# AWS IoT Core API Gateway の様にエンドポイントを提供 HTTPやMQTTなどのプロトコルも利用可能 ###### 各種プロトコルを利用して通信 
# Amzon kinesis 大量データをバッファリング ###### ストリーミングしたデータをBackend(Lambda)に流す 
## Web Queue/ Event Driven
# Web Queue/ Event Driven 時間がかかる処理をWebから受け付けなければならない API Gateway Proxy機能を利用したり、Lambda利用 
# SQS マネージドなキューイングサービス FIFOを利用した順番保証したキューも利用可能になった ###### メッセージをイベントソースにしてLambdaを実行 
# S3 マネージドなオブジェクトストレージ ###### オブジェクトの配置をイベントソースにしてLambdaを実行 
# DynamoDB ###### DynamoDBに保存したイベントを元に ###### DynamoDB Streamsを利用して Lambdaを実行 
Webにおける様々なパターンを Serverless にすることが出来ます あとはロジック部分をコーディングする事で価値提供を行えます 圧倒的スピードで開発、デプロイメントを繰り返す
Serverlessではないシステムは悪なのか そうでは無いと思います
重要なのは僕たちが選択出来る事
僕たちは技術で価値を生み出したい
最大限効果を発揮できるアーキテクチャを選択しましょう
## Everything Will Be Serverless そんな未来はもしかしたら来ないのかも知れません
Serverlessに価値があることを信じ 学び続け、行動しようと思います
We are Hiring! Thank you!  https://recruit.fusic.co.jp
Swipe to navigate
Previous
Next
Related Slides
PHPで作るWebSocketサーバー
2024/6/1
View
PHPを書く理由、PHPを書いていて良い理由
2024/1/1
View
有効な使い方を正しく理解して実装する PHP8.3の最新機能の「ウラ側」
2023/11/1
View