• 検索結果がありません。

IIJ Technical WEEK アプリ開発を楽にするRuby PaaS「MOGOK」について

N/A
N/A
Protected

Academic year: 2021

シェア "IIJ Technical WEEK アプリ開発を楽にするRuby PaaS「MOGOK」について"

Copied!
54
0
0

読み込み中.... (全文を見る)

全文

(1)

アプリ開発を楽にする

Ruby PaaS「MOGOK」のご紹介

株式会社インターネットイニシアティブ

プラットフォームサービス部プラットフォーム開発課

阿部

博 <[email protected]>

(2)

本セッションの概略

IIJが提供するPaaSであるMOGOKを紹介

します。

MOGOK/PaaSを利用すること

により何がどのように楽に/便利にな

るのかを技術的側面を含め解説しま

す。

(3)

発表内容

IIJとPaaS

MOGOKについて

PaaSの本質

MOGOKのシステム

MOGOKの今後

(4)
(5)

IIJの強み

自社回線(

Internet, Backbone, Mobile)

自社データセンター

自社クラウド(

IIJ GIO)

(6)

IIJとクラウド

IaaSは既にできている(それなりに売れている)

IIJ GIO

SaaSもそれなりに売れている

間を取って

PaaSは?

そもそも日本に市場が余り存在しない

トライする価値あり(市場を作る意味でも)

(7)

そもそも

PaaSとは?

Platform as a Service

プラットホームを提供するサービス

IaaSよりも運用管理が楽

開発に注力ができる

お手軽なデプロイ方法

(8)

PaaSの市場規模

IDCのPaaS市場規模予想

国内

PaaS市場(2012年)

前年比

63.4%増の263億円と予想

2016年の市場規模で

1,070億円

ちなみに

IaaS市場は...(2012年)

前年比

49.6%増の316億円と予想

2016年の市場規模で

1,035億円

(9)

PaaSの市場規模

IDCのPaaS市場規模予想

国内

PaaS市場(2012年)

前年比

63.4%増の263億円と予想

2016年の市場規模で

1,070億円

ちなみに

IaaS市場は...(2012年)

前年比

49.6%増の316億円と予想

まだ伸びしろ

がある!!

(10)
(11)

MOGOKについて

http://mogok.jp/

(12)
(13)

MOGOKについて

サービス内容

Ruby on Railsのアプリを動作させる

WebインスタンスとDB、その他の

機能/環境を提供(

PaaS)

環境占有型ではなく共用型

(14)
(15)

mogokコマンド

20個ほどのコマンドオプションがある

主に以下の3種類

アプリケーションを管理するコマンド

サーバの設定を行うコマンド

開発・保守・調査のためのコマンド

(16)

アプリの起動まで

コードを書いて必要なコマンドを打つと

...

$ cd hogehoge

$ git init

$ git add .

$ git commit -m ‘first commit’

$ mogok create fugafuga

$ git push mogok master

$ mogok build

(17)

アプリの起動まで

(18)

ソースコードの保存

MOGOKのgitリポジトリに保存

$ cd hogehoge

$ git init

$ git add .

$ git commit -m ‘first commit’

$ mogok create fugafuga

$ git push mogok master

(19)

MOGOKについて

簡単に登録できる!!

簡単に環境セットアップができる!!

(20)
(21)

なぜ

PaaSか?

アプリ開発を楽に!!

開発者が開発に専念

(22)

なぜ

PaaSか?

開発者が開発に専念

コード記述に集中できる

お手軽なデプロイツール/デプロイ方法を利用できる

運用からの解放

環境(

VM、ハードウェア)の調達/運用

ソフトウェアの管理(

Webサーバ、DBなど)

セキュリティ対策

(23)

PaaSの本質

ユーザ建前

(24)

PaaSの本質

ユーザ本音

「開発に専念させて下さい」

(25)

PaaSの本質

運用を

PaaS事業者へとアウトソース

(26)

アプリ開発を楽に!!

ソースコードは

gitサーバで管理

buildの自動化

Webサーバも提供される

DBサーバも提供される

処理が重くなったらスケールアップ/スケー

ルアウトできる

(27)

アプリ開発を楽に!!

運用は

IIJにお任せ

24時間/365日の運用をアウトソース

サーバ/アプリケーションのセキュリ

ティ対策も

IIJにお任せ

年に数回から数十回の対応

(28)

MOGOK

本音と建前の実現

MOGOK =

PaaSの本質を実現する環境

PaaSの本質=本音と建前の両方の実現

建前 本音 開発に専念する 運用のアウトソース

(29)
(30)

システムイメージ

request router

app server

app1 app2 XXXX appy

git

repository

bundle server

bundle

1 bundle2 XXXXbundle bundle N

HTTP Request Git Client command proxy mogok

command The Internet

Git Push mogok build bundle install package create HTTP Request Request Routing Database Access package deploy & lxc execute

(31)

3つのポイント

リクエストルーティング

bundle install

LXC

(32)
(33)

リクエストルーティング

request router

app server

app1 app2 XXXX appy

git

repository

bundle server

bundle

1 bundle2 XXXXbundle bundle N

HTTP Request Git Client command proxy mogok

command The Internet

mogok build bundle install package HTTP Request Request Routing Database package deploy & lxc execute Git Push

(34)

リクエストルーティング

外からの

HTTP/HTTPSリクエストはまず何で受けているか?

Nginx

Nginxから直にユーザアプリへとリダイレクトされるのか?

リクエストをルーティングしないとアプリへ届かない

リクエストルータを利用

http://

XXXX

.ruby.iijgio.com/ の

XXXX

解析し、アプリケ

ーションサーバで動作するユーザアプリへとリクエス

トを転送する

(35)

リクエストルーティング

リクエストルータ

Nginxから受け取ったHTTP RequestのURLを解析

して、正しいアプリへとリクエストを転送する

ルーティング情報はキャッシュされる

新しいルーティング情報が追加・削除されるた

びに情報は注入される

(ユーザが新しいアプリを

デプロイ/削除した時など

)

(36)

リクエストルーティング

Nginx request router request router

app1 app2 XXXX appy appb apps app7 app9

http://XXXX.ruby.iijgio.com/ へのアクセス Nginxでのロードバランス リクエストルータでの ルーティング ユーザアプリ XXXXへの ルーティング

(37)

リクエストルーティング

Nginx request router request router http://XXXX.ruby.iijgio.com/ へのアクセス Nginxでのロードバランス リクエストルータでの ルーティング ユーザアプリ XXXXへの ルーティング XXXXへの ルーティング 複数のインスタンスが 起動している 場合には リクエストごとに ロードバランス

(38)
(39)

bundle install

request router

app server

app1 app2 XXXX appy

git

repository

bundle server

bundle

1 bundle2 XXXXbundle bundle N

HTTP Request Git Client command proxy mogok

command The Internet

mogok build bundle install package HTTP Request Request Routing Database package deploy & lxc execute Git Push

(40)

bundle installとは?

Gem

Rubyで使われるアプリやライブラリのパッケージ

RubyGems

Gemを管理するシステム

gem install XXX で必要なアプリをインストールできる

rubygems.orgでたくさんのライブラリが公開されている

Bundler

BundlerはRubyGemsと一緒に使われるアプリケーションの依存関 係を管理するツール

bundle installを実行すると必要なライブラリがインストールされる

(41)

MOGOKでbundle install

mogokコマンドにbundle installは存在しない?

mogok build」を実行するとサーバサイドで

bundle installが自動的に実行される

Gemfileにインストールしたいライブラリ

を明記

Gemfileはgit pushしておく

source 'https://rubygems.org'

# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'

(42)

mogok buildコマンド

1. gitリポジトリからソースコード取得

2. bundle installの実行

3. 実行アプリケーションのパッケージ作成

Gemfileに指定されたライブラリを含む

mogok start」時に作成されたパッケージ

がアプリケーションサーバで実行される

(43)
(44)

LXC

request router

app server

app1 app2 XXXX appy

git

repository

bundle server

bundle

1 bundle2 XXXXbundle bundle N

HTTP Request Git Client command proxy mogok

command The Internet

mogok build bundle install package create HTTP Request Request Routing Database Access package deploy & lxc execute Git Push

(45)

LXCで何を実現したいか?

ユーザのアプリの隔離

他のユーザへと悪さをさせない

動作するサーバ(母艦)への悪さをさせない

bundle install実行時に悪意のある挙動を防ぐ

gitサーバにソースコードを保存できるので、悪

意のあるプログラムを保存/実行可能

(46)

LXCについて

Linux Container

完全仮想化ではなく一部リソースの共有

cgroupとnamespace

(47)

LXCの2種類のコンテナ

LXCには2種類のコンテナが存在する

アプリケーションコンテナ(特定のプロセスをコンテ

ナ内で実行)

システムコンテナ(独立して

OSをコンテナ内で実行、

VMと同等のイメージ)

MOGOKでは

アプリケーションコンテナ

を採用

Ruby on Railsを動作させるための専用コンテナイメージ

(48)

LXCを利用した動作環境

app server bundle server bundle 1 bundle 2 bundle

N app1 app2 app3 appN

コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ コンテナ bundle installは個々の LXCコンテナで行われる。 コンテナ間の通信は禁止。 ユーザアプリは個々の LXCコンテナで実行される。 コンテナ間の通信は禁止。 X X X X X

(49)
(50)

MOGOKの今後

有償版

無償版

(51)

有償版

法人向けサービス

サービススペック

複数アプリケーション(最大

20アプリ)

複数インスタンス対応(アプリあたり

5インスタンスまで)

Worker(非同期実行ジョブ)

Job(cronの様な物)

専用

DBサーバ

(52)

無賞版

無償版も継続

Webインスタンスを無料で提供

有償版は法人向けだから個人で契約できない?

今の所できないが救済処置あり

使い込んでくれた方/宣伝してくれた方には

無料(契約無し)で有償機能を利用していた

だけるようにしました

:-)

FREE!!

(53)

まとめ

IIJのPaaSについて考え方とMOGOKにつ

いて紹介しました

PaaSの本質とMOGOKのシステム説明、

MOGOKの今後について解説しました

(54)

参照

関連したドキュメント

つの表が報告されているが︑その表題を示すと次のとおりである︒ 森秀雄 ︵北海道大学 ・当時︶によって発表されている ︒そこでは ︑五

児童について一緒に考えることが解決への糸口 になるのではないか。④保護者への対応も難し

「系統情報の公開」に関する留意事項

はありますが、これまでの 40 人から 35

基本的金融サービスへのアクセスに問題が生じている状態を、英語では financial exclusion 、その解消を financial

すべての Web ページで HTTPS でのアクセスを提供することが必要である。サーバー証 明書を使った HTTPS

そこで生物季節観測のうち,植物季節について,冬から春への移行に関係するウメ開花,ソメ

「1.地域の音楽家・音楽団体ネットワークの運用」については、公式 LINE 等 SNS