Successfully reported this slideshow.
Your SlideShare is downloading. ×

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

Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad
Ad

Check these out next

1 of 45 Ad

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

Download to read offline

JAWS Festa Kyusyu 2015 というイベントの九州のAWS活用事例セッションで発表しました。
JobAntennaという求人サイトをAWSを使って構築した事例を紹介しています。

JAWS Festa Kyusyu 2015 というイベントの九州のAWS活用事例セッションで発表しました。
JobAntennaという求人サイトをAWSを使って構築した事例を紹介しています。

Advertisement
Advertisement

More Related Content

Slideshows for you (18)

Viewers also liked (20)

Advertisement

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

Recently uploaded (20)

Advertisement

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

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

Editor's Notes

  • クラウドネイティブが行ういまどきWebサービス開発
  • 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から直接配信しています。

×