Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?

TSG 第15回Web分科会 カンペ

クラウドとWebとの関わりについて学ぶ。

Hello, World!

実習でやるので今回はなし。

クラウドとは

「クラウドコンピューティング」の略。ユーザーがインターネット越しに計算資源を使うことによりサービスを利用するサービス形態のこと。

身近な例で言うと、Gmail, Twitter, Skype, LINE, Slack, iTunes などは全て広義のクラウドか。

IaaSとPaaS

クラウドはWeb開発においてもよく用いられる。上に挙げたサービスはすべて SaaS (Software as a Service) と呼ばれるが、Web開発で用いられるのは主にPaaSやIaaSである。

IaaS

Infrastructure as a Service の略。

一言で言うと本来サーバー管理する際に必要な「物理マシン」「ネットワーク」「電源」「無停電装置」「冷却装置」「ストレージ冗長化」「クラスタリング」などのめんどくさい各種設備の管理を開発者の代わりに行い、開発者はリモートに存在するVPS(仮想プライベートサーバー)にログインして作業すればいいという形で提供されるサービスのこと。

要はVPSである。

有名なものに、

  • AWS EC2
  • Google Cloud Platform
  • Azure VM
  • DigitalOcean
  • さくら
  • ConoHa

など。

PaaS

Platform as a Service の略。

IaaSからさらに一歩進んで、サーバーのことを考える必要もなくしたのがPaaS。アプリケーションのコードを送信すると自動でデプロイしてくれて、

最近流行っている「サーバーレス」という概念の中心にある存在。

有名なものに、

  • Heroku
  • AWS Lambda
  • Azure Websites

など。

その他のクラウドとWeb開発

AWS

AWSはAmazonが提供する、開発者向けのクラウドサービスの総称である。

なのでAWSと一言にいっても50種類以上のサービスが存在し、その全貌を把握している人はほとんどいない。

徹底された1秒単位の細かい時間課金とスケーラビリティが特徴。また、開発者向けクラウドサービスの先駆けであるということもあって、サービス内容が最も充実しており、個人ユースから大規模なWebサイトまで使用できる。ただ初心者にはとっつきにくいかも。学生なら GitHub Education などを経由して20ドル~50ドルのクレジットを手に入れられる。

主要なサービスを挙げると、

EC2

簡単に言うとVPSだが、ずっと立てておくよりはすぐ立ててすぐ潰すみたいな使い方をすることが多い。

EC2では起動状態のサーバーのことをインスタンスと呼び、通常のインスタンスの他に、

  • リザーブドインスタンス: 1年とかそういう単位でインスタンスを貸し切り、半額くらいで使う
  • スポットインスタンス: サーバーの余剰インスタンスを競りにかける。格安でEC2を利用できるが、スポット価格が入札した価格を上回ると突然殺される。

などの種類がある。

S3

ストレージ。基本的にはOneDriveや Google Drive と同じように大容量のデータを保管できる場所と考えれば良い。

EC2のインスタンスから高速にアクセスできるため、EC2で使用するデータを置いておくのがベスト。

Lambda

デプロイしたコードを「関数単位で」実行できるプラットフォーム。利用料はタダ同然。

CloudFront

CDN。

RDS

SQLサーバー。

DynamoDB

NoSQLサーバー。ドキュメンドデータモデル(MongoDB)とKVS(Redis, memcached)。

Route53

DNS。

IAM

他のAWSサービスなどにおけるアクセス権限を一括管理するプラットフォーム。S3やEC2の管理には必須。

Azure

Microsoftがやっているなんかよく分からないクラウド。Microsoftの技術が惜しげなくつぎ込まれているらしいが、博多市は操作性の悪さからあまり好きじゃない。

Google Cloud Platform

Googleがやっているクラウド。Googleの技術が惜しげなくつぎ込まれているらしいがよく知らない。

実習

PaaSの1つであるHerokuに簡単なアプリケーションをデプロイしてみよう。

以下では第4回Web分科会で作成した「曜日計算機」のRailsアプリケーションをデプロイするが、Ruby, Node.js, Pythonなどで書かれたアプリケーションなら何でも良い。

データが残ってない場合は以下の実装を使用できる。 https://github.com/hakatashi/sig-web-04

概ね以下の記事の手順に従って進めていくので、こちらも適宜参照のこと。 http://qiita.com/Arashi/items/b2f2e01259238235e187

Herokuに登録

https://signup.heroku.com/

Heroku Toolbelt のインストール

Herokuへのデプロイなど、Herokuの操作に必要なCLIツール。

https://toolbelt.heroku.com/

Heroku Toolbelt でログイン

$ heroku login
Enter your Heroku credentials.
Email: adam@example.com
Password (typing will be hidden):
Authentication successful.

sqlite3をpostgresに移行

HerokuではSQLiteが使えないので、Postgresに移行する必要がある。

https://github.com/hakatashi/sig-web-04/commit/511bd519ffcb345fedd05e18c31c8d31e1e6c8ab を参考に。

GitHubにおいてある実装を使用した場合は不要。

Herokuにデプロイ

曜日計算機のディレクトリに移動する。

$ cd /path/to/sig-web-04

Gitリポジトリになっていない場合はGitリポジトリにする。

$ git init
$ git add .
$ git commit -m "Initial commit"

Heroku上にアプリケーションを作成する。

$ heroku create
Creating app... done, ⬢ boiling-lake-47499
https://boiling-lake-47499.herokuapp.com/ | https://git.heroku.com/boiling-lake-47499.git

すると、Gitリポジトリにherokuなるremoteが追加される。

$ git remote -v
heroku  https://git.heroku.com/boiling-lake-47499.git (fetch)
heroku  https://git.heroku.com/boiling-lake-47499.git (push)
origin  https://github.com/hakatashi/sig-web-04.git (fetch)
origin  git@github.com:hakatashi/sig-web-04.git (push)

このherokuなるremoteにpushしてやるとデプロイが始まる。

$ git push heroku master
Counting objects: 102, done.
Compressing objects: 100% (89/89), done.
Writing objects: 100% (102/102), 19.83 KiB | 0 bytes/s, done.
Total 102 (delta 20), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote:
remote: -----> Ruby app detected
remote: -----> Compiling Ruby/Rails
remote: -----> Using Ruby version: ruby-2.2.6
...

デプロイが終了するとhttps://(アプリケーションID).herokuapp.com/からアクセスできるようになる。

※曜日計算機は/daysに実装されている。

余力があったら

  • アプリケーションを適当に修正して再度デプロイし、修正が反映されている事を確認する。
  • 任意のアプリケーションをデプロイしてみる
    • 第5回Web分科会のメモ管理アプリとか、第3回Web分科会のTwitterもどきもデプロイできるはず(未確認)。
    • DBが必要なアプリはクレカ登録が必要かも
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.