SlideShare une entreprise Scribd logo
1  sur  43
Télécharger pour lire hors ligne
SEO対策したサイトを
API Gateway+Lambdaで作ってみた話
株式会社カラダメディカ 平田 貴大
自己紹介
氏名:平田 貴大
経歴:2011〜2015 エムティーアイ
ヘルスケア系アプリ開発やWeb開発
 2015〜 カラダメディカ出向
データ可視化やDevOps推進、
新規事業立ち上げなど
エンジニア〜POまで
趣味:ビリヤード
なんでも楽しいことに取り組みたい。
※こう見えて2児の父です
使っている技術
「CaraCoro」
https://caracoro.jp
2016/09リリース
ユーザーの質問に
医師が回答するQ&A
がベースのメディアサイト
※某サイトと違って
弊社では現役医師が
回答しております
今日伝えたいこと
SEO対策したサイトを
API Gateway+Lambdaで作ってみた話
SEO対策したサイトを
API Gateway+Lambdaで作ってみた話
でのアーキテクチャ変遷と実体験
開発環境
・Serverless Framework 1.4
 0系から最近移行しました
・node.js 4.3
・Typescript 1系
・アーキテクチャ
 ・後でお話しします
ちなみに
Serverless Framework
0系→1系への移行のポイント
プロキシ統合
プロキシ統合
プロキシ統合
環境の切り替え
環境の切り替え
API Gateway Lambda
移行前 prod/rc/dev 1つのみ aliasで切り替え
移行後 prod/rc/dev prod/rc/dev
ちなみに
テスト方法とかデプロイ方法とか
テストはserverless--offlineとか使ってみてるけど微妙に歯がゆい感じ。。。
デプロイはsls deploy --stage dev とServerlessそのまま
※あまり参考にならなくてすみません
本題
最初に考えた
アーキテクチャ
HTMLは静的にして
クラインアントのajaxで
動的にデータとってくれば
いいっしょ
アーキテクチャ初代
サーバーレスでよくありそうなお手本
html,css,js,imageはS3で
サイト配信
動的コンテンツの取得
のみAPIで実現
クライアントはvue.jsを使用
しかし問題が!
動的にURLを処理できない
動的にURLを処理できない
/qa/1234
のリクエストに対して、/qa/index.htmlをS3から返却し、
ajaxを使って1234の記事をAPIから取得したい。。。
でもcloudfront + S3 でそんなすべはない
さらに
404返せない
404の挙動を404ステータスコードで返せない
/qa/1234
のリクエストに対して、/qa/index.htmlをS3から返却し、
ajaxを使って1234の記事をAPIから取得する
1234の記事がnot foundだとしても、htmlを200で返却してしまっている
どうしたものか
そうだ
アーキテクチャ
変えよう
API Gatewayで
HTML返せばいいじゃん
新アーキテクチャ
パスによって
Cloudfrontが振り分け
/apiはコンテンツ取得
のためにApi Gatewayへ
/cssや/scriptや/image
→S3へ振り分け
それ以外のパス
→API gateway→lambdaがS3から
htmlを取得して返す(その際に404でないかはチェック)
しかし、また問題が!
クローラーめ。。。
どうしたものか
そうだ
サーバーサイド
レンダリングに
変えよう
新新アーキテクチャ
htmlをすべてLambda内に
ファイルとして配置
vue-server使ってレンダリング
API Gatewayのcatch-allに早く対応しないと。。。
問題はまだある!
パフォーマンス悪い。。。
たまにTimeout
パフォーマンス悪い
ENI作成処理で初回起動が遅い問題
参考:西谷さんの記事
→http://qiita.com/Keisuke69/items/1d84684f0511a062e968
Lambdaのポーリングを実施
実際15分間隔のポーリングではダメで5分間隔にしてやっとほぼほぼ解消された
(完璧ではない)
といっても超えられない
レイテンシの壁
レイテンシ
Cloudfront + API Gatewayで300ms×2に近いレイテンシ
API Gatewayのcatch-allに早く対応して前段のCloudfront取り除かないと。。。
でもキャッシュがあると10msで表示されるしな。。。
でも一応、数百msは保てている
→SEO対策としてはもっと頑張りたい
まとめ
まとめ
メリット
 アーキテクチャの組み替えでいろんな要件を満たせるのは楽しい
 AWSのサービスで色々できるようになってきていて可能な要件は増えている
 SEO的にも問題ないサイトは作れる
デメリット
 気をつけないとピタゴラスイッチ化しかねない
 パフォーマンス的な制約があるのでキャッシュなどにおいて
 もっと良い設計が必要になる
ご清聴ありがとうございました

Contenu connexe

En vedette

Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)Naoto Teruya
 
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話Yutaro Miyazaki
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Yutaro Miyazaki
 
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門Amazon Web Services Japan
 
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)Toshihiro Setojima
 
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するAWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するmizugokoro
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所真吾 吉田
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから真吾 吉田
 
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発真吾 吉田
 
2016-10-25 product manager conference 資料
2016-10-25 product manager conference 資料2016-10-25 product manager conference 資料
2016-10-25 product manager conference 資料Takeo Iyo
 
ゼロからはじめるプロダクトマネージャー生活
ゼロからはじめるプロダクトマネージャー生活ゼロからはじめるプロダクトマネージャー生活
ゼロからはじめるプロダクトマネージャー生活Takaaki Umada
 

En vedette (11)

Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)Serverless Framework 使ってる話(node.js)
Serverless Framework 使ってる話(node.js)
 
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
Vue.js 2.0 で自社プロダクトを SPA + SSR 化した話
 
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
Nuxt なしで Vue App 作る時に乗り越えるべき5つの壁
 
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
AWS Black Belt Online Seminar 2016 AWS上でのサーバーレスアーキテクチャ入門
 
20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)20170210 jawsug横浜(AWSタグ)
20170210 jawsug横浜(AWSタグ)
 
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化するAWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
AWS Step FunctionとLambdaでディープラーニングの訓練を全自動化する
 
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
サーバーレスのアーキテクチャパターンとそれぞれの実装・テストの勘所
 
サーバーレスの今とこれから
サーバーレスの今とこれからサーバーレスの今とこれから
サーバーレスの今とこれから
 
AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発AWS SAMで始めるサーバーレスアプリケーション開発
AWS SAMで始めるサーバーレスアプリケーション開発
 
2016-10-25 product manager conference 資料
2016-10-25 product manager conference 資料2016-10-25 product manager conference 資料
2016-10-25 product manager conference 資料
 
ゼロからはじめるプロダクトマネージャー生活
ゼロからはじめるプロダクトマネージャー生活ゼロからはじめるプロダクトマネージャー生活
ゼロからはじめるプロダクトマネージャー生活
 

Similaire à SEO対策したサイトをAPI Gateway+Lambdaで作った話

【第5回jduc】【勉強会】dynamics 365 web apiとの接し方
【第5回jduc】【勉強会】dynamics 365 web apiとの接し方【第5回jduc】【勉強会】dynamics 365 web apiとの接し方
【第5回jduc】【勉強会】dynamics 365 web apiとの接し方Kazuya Sugimoto
 
全てのWebディレクターに捧ぐ、 これだけは抑えて欲しい SEO内部要件基礎講座 (前編)
全てのWebディレクターに捧ぐ、これだけは抑えて欲しい SEO内部要件基礎講座(前編)全てのWebディレクターに捧ぐ、これだけは抑えて欲しい SEO内部要件基礎講座(前編)
全てのWebディレクターに捧ぐ、 これだけは抑えて欲しい SEO内部要件基礎講座 (前編)ナイル株式会社
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」naoki ando
 
リンクに依存しないSEO内部改善のポイント forスクー
リンクに依存しないSEO内部改善のポイント forスクーリンクに依存しないSEO内部改善のポイント forスクー
リンクに依存しないSEO内部改善のポイント forスクーMotoho Jitsukawa
 
【20121124】word bench大阪
【20121124】word bench大阪【20121124】word bench大阪
【20121124】word bench大阪Raysus Co.,Ltd.
 
リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話
リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話
リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話ナイル株式会社
 
エンタープライズSEOの課題と対応
エンタープライズSEOの課題と対応エンタープライズSEOの課題と対応
エンタープライズSEOの課題と対応DemandSphere
 
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門Kenyu Miura
 
ウェブマスターツールの使い方徹底講座
ウェブマスターツールの使い方徹底講座ウェブマスターツールの使い方徹底講座
ウェブマスターツールの使い方徹底講座ナイル株式会社
 
インハウスSEOの課題と対応
インハウスSEOの課題と対応インハウスSEOの課題と対応
インハウスSEOの課題と対応DemandSphere
 
インハウスSEOの課題と対応_コメント付き
インハウスSEOの課題と対応_コメント付きインハウスSEOの課題と対応_コメント付き
インハウスSEOの課題と対応_コメント付きDemandSphere
 
NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )Yuji Otani
 
営業提案のためのGoogle analytics活用法
営業提案のためのGoogle analytics活用法営業提案のためのGoogle analytics活用法
営業提案のためのGoogle analytics活用法Popinsight
 
SharePoint Online 開発の最初の一歩
SharePoint Online 開発の最初の一歩SharePoint Online 開発の最初の一歩
SharePoint Online 開発の最初の一歩Yoshitaka Seo
 
フロントエンドエンジニアが知るべきFirebaseの世界
フロントエンドエンジニアが知るべきFirebaseの世界フロントエンドエンジニアが知るべきFirebaseの世界
フロントエンドエンジニアが知るべきFirebaseの世界Kenjiro Kubota
 
AWSとReactで始めるShopifyアプリ開発
AWSとReactで始めるShopifyアプリ開発AWSとReactで始めるShopifyアプリ開発
AWSとReactで始めるShopifyアプリ開発Takaaki Kurasawa
 
インハウスSEOの課題と対応_forEC_20121207
インハウスSEOの課題と対応_forEC_20121207インハウスSEOの課題と対応_forEC_20121207
インハウスSEOの課題と対応_forEC_20121207DemandSphere
 

Similaire à SEO対策したサイトをAPI Gateway+Lambdaで作った話 (20)

【第5回jduc】【勉強会】dynamics 365 web apiとの接し方
【第5回jduc】【勉強会】dynamics 365 web apiとの接し方【第5回jduc】【勉強会】dynamics 365 web apiとの接し方
【第5回jduc】【勉強会】dynamics 365 web apiとの接し方
 
全てのWebディレクターに捧ぐ、 これだけは抑えて欲しい SEO内部要件基礎講座 (前編)
全てのWebディレクターに捧ぐ、これだけは抑えて欲しい SEO内部要件基礎講座(前編)全てのWebディレクターに捧ぐ、これだけは抑えて欲しい SEO内部要件基礎講座(前編)
全てのWebディレクターに捧ぐ、 これだけは抑えて欲しい SEO内部要件基礎講座 (前編)
 
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
パソナテック Find Your Ability 講演資料 「ディレクターにとってのWeb業界って? 」
 
リンクに依存しないSEO内部改善のポイント forスクー
リンクに依存しないSEO内部改善のポイント forスクーリンクに依存しないSEO内部改善のポイント forスクー
リンクに依存しないSEO内部改善のポイント forスクー
 
【20121124】word bench大阪
【20121124】word bench大阪【20121124】word bench大阪
【20121124】word bench大阪
 
リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話
リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話
リンクは買わずに”集める SEOで本当に考えるべき、コンテンツと被リンクの話
 
My cordovaprojectstory
My cordovaprojectstoryMy cordovaprojectstory
My cordovaprojectstory
 
事業企画
事業企画事業企画
事業企画
 
Vip2 清水資料
Vip2 清水資料Vip2 清水資料
Vip2 清水資料
 
エンタープライズSEOの課題と対応
エンタープライズSEOの課題と対応エンタープライズSEOの課題と対応
エンタープライズSEOの課題と対応
 
スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門スマホアプリ開発者のためのWeb api開発入門の入門
スマホアプリ開発者のためのWeb api開発入門の入門
 
ウェブマスターツールの使い方徹底講座
ウェブマスターツールの使い方徹底講座ウェブマスターツールの使い方徹底講座
ウェブマスターツールの使い方徹底講座
 
インハウスSEOの課題と対応
インハウスSEOの課題と対応インハウスSEOの課題と対応
インハウスSEOの課題と対応
 
インハウスSEOの課題と対応_コメント付き
インハウスSEOの課題と対応_コメント付きインハウスSEOの課題と対応_コメント付き
インハウスSEOの課題と対応_コメント付き
 
NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )NoSQL勉強会資料(2015/03/12@ヒカラボ )
NoSQL勉強会資料(2015/03/12@ヒカラボ )
 
営業提案のためのGoogle analytics活用法
営業提案のためのGoogle analytics活用法営業提案のためのGoogle analytics活用法
営業提案のためのGoogle analytics活用法
 
SharePoint Online 開発の最初の一歩
SharePoint Online 開発の最初の一歩SharePoint Online 開発の最初の一歩
SharePoint Online 開発の最初の一歩
 
フロントエンドエンジニアが知るべきFirebaseの世界
フロントエンドエンジニアが知るべきFirebaseの世界フロントエンドエンジニアが知るべきFirebaseの世界
フロントエンドエンジニアが知るべきFirebaseの世界
 
AWSとReactで始めるShopifyアプリ開発
AWSとReactで始めるShopifyアプリ開発AWSとReactで始めるShopifyアプリ開発
AWSとReactで始めるShopifyアプリ開発
 
インハウスSEOの課題と対応_forEC_20121207
インハウスSEOの課題と対応_forEC_20121207インハウスSEOの課題と対応_forEC_20121207
インハウスSEOの課題と対応_forEC_20121207
 

SEO対策したサイトをAPI Gateway+Lambdaで作った話