SlideShare a Scribd company logo
クラウドネイティブが行う
いまどきWebサービス開発
Yuji Arakaki
琉球インタラクティブ株式会社
11/3 2015
JAWS FESTA Kyusyu 2015
自己紹介
• 新垣 雄志
• 琉球インタラクティブ株式会社
• Webプログラマー(Ruby, JavaScript, PHP)
• テクノロジーグループ マネージャー
• Twitter: @arakaji
自己紹介
• 新垣 雄志
• 琉球インタラクティブ株式会社
• Webプログラマー(Ruby, JavaScript, PHP)
• テクノロジーグループ マネージャー ← 昨日(11.2)就任した
• Twitter: @arakaji
きょう話すこと
JobAntennaという求人サイトを
AWSをつかって構築したので
その開発を事例にして紹介します。
そのまえに・・・
タイトルにある
クラウドネイティブってどういう意味
か?
Google先生に聞いてみる
ICT用語時点
クラウドネイティブ[Cloud Native]
提供するサービス自体が、最初からクラウドコンピューティング
をベースに構築されていること。およびそのサービスの提供企
業。
参考
http://www.ntt.com/business/techsupport/dictionary/word/071
4.html
自分の場合
そもそもクラウド
上でしかサービ
スを構築したこと
が無い!
オンプレを知らな
い世代のWebプ
ラグラマーです!
これこそ
クラウドネイティ
ブではないか!!
そういうことで
「クラウドネイティブが行う
いまどきWebサービス開発」
という発表タイトルになりました^^;
JobAntennaとは
• 沖縄にある働きがいのある企業を紹介する求人メディア
• メインコンテンツ
– 企業
– 求人
– 特集記事
アプリケーション構成
• JobAntenna本体(RubyonRails)
• 運営用管理画面(SPA by React)
AWS構成図
Elastic Beanstalk
EC2
Elastic Load
Balancing
RDS
ElastiCache
S3
画像配信
本体
管理画面
SES
LambdaS3
画像加工
この構成でおいしいところ
1. Elastic Beanstalkによるデプロイフロー
2. 管理画面をSPAで実装し、S3にホスティング
3. Lambdaによる画像加工処理
1. Elastic Beanstalkによるデプロイフロー
自前でデプロイフローの自動化を作るのはしんどい
Capistranoでデプロイフローをゴリゴリ書くの大変
(rsync、bundle install, rake db:migrate, 再起動・・・・)
デプロイ実行時も、
デプロイするサーバーをロードバランサーから外し・・
デプロイ完了したらロードバランサーに戻し・・
それをすべてのサーバーに対して行なう。
そこで諸先輩方のお言葉が
「オンプレの時に比べたら
AWSのAPI使えるからだいぶ
自動化が楽になったんだ
よ?」
しかし
私はオンプレの苦しみなどそも
そも知らないのでもっと楽がし
たいのです。
Elastic Beanstalkとは
PHP, Python, Ruby, Docker・・・などを使用して開発されたウェブア
プリケーションやワーカーをAWSのサービスを使って簡単にデプ
ロイ・スケーリングできるサービス
• LoadBalancing => EC2 x N個 のような構成が簡単に作れる。
• デプロイフローを提供(ローリングデプロイ、CNAMEスワップ)
• AutoScaling
ローリングデプロイ
Beanstalkによるデプロイの仕組みの一つ。
Beanstalkの環境にあるインスタンスをバッチという単位で分割し、そ
のバッチ毎にデプロイを行なう。
デプロイ対象のバッチはロードバランサーから外されてデプロイされ
る。
デプロイが完了するとロードバランサーに接続し、ヘルスチェックに合
格するとトラフィックが流される。
デプロイ中は古いバージョンのバッチにトラフィックが流されているた
め、ダウンタイムなしのデプロイが可能に!!
Beanstalkが提供するデプロイフ
ローにのることで自動デプロイ構
築でやるべきことを減らしてくれま
した!
デメリットもある
• デプロイフローがBeanstalkロックイン
- 他のクラウドへの移行が難しい
- デプロイフローの修正に別環境が要る
2.管理画面をSPAで実装し、
S3にホスティング
管理画面をSPAで実装し、S3にホスティング
• SPA(HTML, CSS, JS)で実装しているのでEC2い
らない
• データへのアクセスは管理者のみ許可してい
るWebAPIで行なう。
なぜそうしたか?
• 別で管理用のアプリケーションを作りたくない。
– モデルの実装が重複するので開発コストも増える
• EC2を増やしたくない
– 運用、監視などしたくない
– EC2、お金もかかるし・・・
– S3なら静的ファイルを上げておいたら、心配することはほぼない。
• 本体のフロントエンド開発との分離
– 昨今のフロントエンド開発の変化は激しい
– 分離しとくと、捨てやすいし試しやすい
• デプロイはファイルを上げるだけになる
3.Lambdaによる画像加工処理
Lambdaによる画像加工処理
管理画面からS3にアップロードされる求人情報、企業情報、記
事などの画像を適切なサイズにリサイズする。
1. S3に画像をダイレクトアップロードする
2. S3に画像が作られたイベントをLambdaが受け取る
3. 画像をリサイズし、その画像をS3にアップロードする
最初はアプリ側で実装していた
1. 管理画面からアプリサーバーに画像をアップロード
2. 元の画像をS3にアップロード & リサイズを行なうタスクをタ
スクキューに入れる。
3. 別プロセスで動いてるワーカーがタスクを受け取り、元画像
をリサイズした画像をS3に再アップロードする
問題点
• 画像アップロードのたびにサーバーに負荷がかかる
– 切り取るサイズの種類が増えると心配
– フロントにNginxを置いているので接続時間の長いアクセスを避けた
い
• 実装がちょっと複雑になる
– ファイルよりもテキスト(json)の方がAPI作るのが楽。
Lambdaで行なうメリット
• 画像アップロードをアプリを介さずに行える
– S3にダイレクトアップロード
– そのイベントをうけて、Lambdaが加工処理
– アプリ側に余計な負荷は一切ない
• WebAPIがシンプルになる
- S3にアップロードした結果のファイル名やパスを保存しておけばいい。
- テストも簡単
• 新規メンバーに任せやすい
– アプリとは関係ない、単純なnodejsアプリとして書ける
事例紹介 以上です。
AWSとどう付き合うべきか
自分の考えを話してみます。
AWSとどう付き合うべきか
今はすでに「クラウドを使う」ことが有利
になる時代ではない。
AWSとどう付き合うべきか
勝負は「クラウドサービスの特性を理解して上
手く使いこなせるか」というところにある。
AWSとどう付き合うべきか
クラウドサービスの種類や用途を知らないと・・・
AWSとどう付き合うべきか
アプリケーション開発中はどうしても
コードで解決しようとしてしまう。
すべてをEC2で解決しようとする。
それじゃあ旨味が少ない。
AWSとどう付き合うべきか
クラウドの旨味は
マネージドサービスを上手く使うこ
とにある。
例:
Lambda、S3、RDS・・・・
AWSとどう付き合うべきか
マネージドサービスを上手く使うには、
自分で使ってみるのも大事だが、
詳しい人との情報交換を積極的に行なう事も大
事!
一人で網羅するのはかなり厳しい・・・
つまりは・・・・
地元のAWSのコミュニティに参加しよう!!!
ということですね!!!
ありがとうございました!

More Related Content

PPTX
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
PPTX
クラウドネイティブなアーキテクチャでサクサク解析
PDF
プログラマに贈るクラウドとの上手な付き合い方
PDF
AWSで実現するクラウドネイティブなアプリ開発のポイント
PDF
クラウドネイティブ化する未来
PPTX
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
PDF
JAWSDAYS2017 新訳 とあるアーキテクトのクラウドデザインパターン目録 AMI Maintenance Environment
PDF
UnityとAmazon Web Servicesで生み出す新しい価値
AWS & Google Cloudを使ったシステム開発/技術選定のはなし
クラウドネイティブなアーキテクチャでサクサク解析
プログラマに贈るクラウドとの上手な付き合い方
AWSで実現するクラウドネイティブなアプリ開発のポイント
クラウドネイティブ化する未来
jawsdays 2017 新訳-とある設計士の雲設計定石目録_3
JAWSDAYS2017 新訳 とあるアーキテクトのクラウドデザインパターン目録 AMI Maintenance Environment
UnityとAmazon Web Servicesで生み出す新しい価値

What's hot (18)

PDF
Introducing Serverless Computing (20160802)
PDF
クラウド時代のソフトウェアアーキテクチャ
PPTX
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録
PDF
クラウド・アプリケーションの作り方
PDF
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
PDF
JAWS DAYS 2017 LT 古きを捨て新しきに近づける
PDF
モバイル開発者から見た サーバーレスアーキテクチャ
PDF
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
PDF
AWS クラウドで構築するスマホアプリ バックエンド
PDF
JAWS re:Mote 2015 Nagoya
PDF
Serverless Architecture Overview #cdevc
PDF
Scale Your Business without Servers
PPTX
Jaws days2017-ops jaws-2
PDF
Building Scalable Application on the Cloud
PDF
2014 jaws days-最強のawsに_rtc宮崎
PDF
Serverless Revolution
PDF
AWS Introduction for Startups
PDF
Serverless Architecture on AWS(20151121版)
Introducing Serverless Computing (20160802)
クラウド時代のソフトウェアアーキテクチャ
20170311 jawsdays 新訳 とあるアーキテクトのクラウドデザインパターン目録
クラウド・アプリケーションの作り方
DevOpsとか言う前にAWSエンジニアに知ってほしいアプリケーションのこと
JAWS DAYS 2017 LT 古きを捨て新しきに近づける
モバイル開発者から見た サーバーレスアーキテクチャ
CTO Night & Day Morning Session "スタートアップCTOならおさえておきたいAWS基本構成"
AWS クラウドで構築するスマホアプリ バックエンド
JAWS re:Mote 2015 Nagoya
Serverless Architecture Overview #cdevc
Scale Your Business without Servers
Jaws days2017-ops jaws-2
Building Scalable Application on the Cloud
2014 jaws days-最強のawsに_rtc宮崎
Serverless Revolution
AWS Introduction for Startups
Serverless Architecture on AWS(20151121版)
Ad

Viewers also liked (20)

PDF
Predefを使ったsqlのトレース
PDF
表参道.rb #1 Ruby Gold 2.1 に合格した話
PPTX
第一回チキチキUNICORNチューニング
PDF
私が見てきたあるセカイの物語 Part I & II
PDF
Action pack variantsの話
KEY
Deploying JRuby Web Applications
PDF
gemの複数バージョンカジュアルテスト #shibuyarb
PDF
1 Linux入門 第6章 Webサーバーの概要
PPTX
awsを学ぶ上で必要となる前提知識(DB)
PPTX
AWSを学ぶ上で必要となる前提知識(SSL)
PPTX
3ヶ月間 IoT をやって感じたこと
PDF
Serverless Architecture on AWS (20151201版)
PDF
DB2をAWS上に構築する際のヒント&TIPS
PDF
Wiki (Printed as manuscript)
PPTX
IoT におけるシングルボードコンピュータとワンボードマイコンについて考える
PDF
"fireap" - fast task runner on consul
PDF
SKET Servise Guide
PDF
grifork - fast propagative task runner -
PDF
Introduction to poloxy - proxy for alerting
PPTX
API活用で更に広がるDynamicsエコシステム
Predefを使ったsqlのトレース
表参道.rb #1 Ruby Gold 2.1 に合格した話
第一回チキチキUNICORNチューニング
私が見てきたあるセカイの物語 Part I & II
Action pack variantsの話
Deploying JRuby Web Applications
gemの複数バージョンカジュアルテスト #shibuyarb
1 Linux入門 第6章 Webサーバーの概要
awsを学ぶ上で必要となる前提知識(DB)
AWSを学ぶ上で必要となる前提知識(SSL)
3ヶ月間 IoT をやって感じたこと
Serverless Architecture on AWS (20151201版)
DB2をAWS上に構築する際のヒント&TIPS
Wiki (Printed as manuscript)
IoT におけるシングルボードコンピュータとワンボードマイコンについて考える
"fireap" - fast task runner on consul
SKET Servise Guide
grifork - fast propagative task runner -
Introduction to poloxy - proxy for alerting
API活用で更に広がるDynamicsエコシステム
Ad

Similar to クラウドネイティブが行なういまどきWebサービス開発 (20)

PDF
駅すぱあとWebサービスにおけるAWSとその周辺
PPTX
twilio-ug福岡 twilio開発環境構築ハンズオン
PPTX
ぱぱっと理解するSpring Cloudの基本
PDF
DevLove Kansai AWS
PPTX
Google CardbordとLeapMotion 〜お手軽VR〜
PDF
Bootstrapにちょい足しアニメーション@春のJavascript祭り
PPTX
AWSで動画共有サイトを作成して全社に公開
PPTX
スタートアップと大規模サイトの JavaScript
PPTX
Cloudpackが実現するビジネス課題の解決と新しい価値の提供
PPTX
WEBサービス開発もくもく会@北千住
PDF
SkyWay で ビデオチャットサービス を構築してみた!
PPTX
事業会社で働くエンジニアのマインドセット - DevLOVE関西
PDF
ボクたちのWWW Webクリエイターのこれからを考える
PDF
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
PDF
続Pythonによるwebスクレイピング入門
PDF
Rubyで操るAWS 第67回Ruby関西 勉強会
PPTX
[okaweb × HTML5 fun] HTML5で人気のAPIを使って 未来価値を創造しよう
PDF
Spath for enterprise
PDF
Ipメッセージング勉強会
PPTX
CloudSQL v2は デキる子なのか?
駅すぱあとWebサービスにおけるAWSとその周辺
twilio-ug福岡 twilio開発環境構築ハンズオン
ぱぱっと理解するSpring Cloudの基本
DevLove Kansai AWS
Google CardbordとLeapMotion 〜お手軽VR〜
Bootstrapにちょい足しアニメーション@春のJavascript祭り
AWSで動画共有サイトを作成して全社に公開
スタートアップと大規模サイトの JavaScript
Cloudpackが実現するビジネス課題の解決と新しい価値の提供
WEBサービス開発もくもく会@北千住
SkyWay で ビデオチャットサービス を構築してみた!
事業会社で働くエンジニアのマインドセット - DevLOVE関西
ボクたちのWWW Webクリエイターのこれからを考える
【SoftLayer事例】V-CUBE ミーティングを支えるSoftLayer
続Pythonによるwebスクレイピング入門
Rubyで操るAWS 第67回Ruby関西 勉強会
[okaweb × HTML5 fun] HTML5で人気のAPIを使って 未来価値を創造しよう
Spath for enterprise
Ipメッセージング勉強会
CloudSQL v2は デキる子なのか?

クラウドネイティブが行なういまどきWebサービス開発

Editor's Notes

  • #2: クラウドネイティブが行ういまどきWebサービス開発
  • #16: AWS構成図 JobAntennaの本体はElasticBeanstalkで構成されています。 アプリケーションサーバーは2つのEC2で稼働しており、前段においているElasticLoad Balancingでアクセスを振り分けています。 データベースはRDSのMySQLをつかっています。 アプリケーションサーバーで稼働する非同期タスクのタスクキューとして、ElasticCacheのRedisを使用しています。 メール配信はSESでおこなっています。 求人情報のコンテンツを管理する管理画面はEC2ではなくS3でホスティングしています。 管理画面をSPAで開発し、本体のアプリケーションサーバーとWebAPIで求人、企業、記事やマスターデータの管理を行っています。 管理画面で作成するコンテンツの画像はS3にアップロードし、そのままS3から画像配信も行っています。 画像配信しているS3に裏にLambdaが稼働しているのですが、ここではS3に画像がアップロードしたイベントを受け取ってその画像を適切なサイズにリサイズしてまたS3にアップロードしなおしています。 DatabaseにはRDSを使っています。 ElasticCacheにはRedisを使っていて、アプリケーションサーバーで行う非同期タスクのキューと使用しています。 メール配信はSESを使っています。 管理画面のホスティングはS3で行っていて、本体のアプリケーション用意したAPIを通してコンテンツ管理やマスターデータの更新などを行っています。 管理画面からアップロードするような画像は画像配信用のS3バケットにアップロードされます。 S3に画像がアップロードされたイベントを受け取って、Lambdaが画像のリサイズなどの加工処理を行い、加工済みの画像をまたS3にアップします。 ユーザーがサイト上で見ている画像はこのS3から直接配信しています。