Ruby PaaS「MOGOK」
~ ソフトウェアエンジニアのためのクラウドサービス~
     ウ    ジ   ため ク ウド  ビ




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




                             1
目次

はじめに
クラウドサービスの普及による変化
クラウドサ ビスの普及による変化
ソ ウ ア ンジ ア 仕事 変化
ソフトウェアエンジニアの仕事は変化したか
処方箋は何か
Ruby PaaS「MOGOK」によるソリューション
        S「 OGO による リ   シ
MOGOK β版のご紹介
MOGOKチュートリアル
MOGOKのこれから
終わりに
                             2
はじめに




       3
クラウドサービスの普及による変化




                   4
クラウドサ ビスとは何か
クラウドサービスとは何か

    ネットワーク経由で様々な
 ITリソースを利用するサービスの総称
クラウドサービス事業者
クラウドサ ビ 事業者                利用者


                  ネットワーク

ITリソースとは
   サーバリソース
   ストレージリソース
    ト  ジリ
   アプリケーションインスタンス ...
                                 5
クラウドサ ビスの提供形態
クラウドサービスの提供形態
             お客様への提供価値
  特定業務の 開発生産性 物理的制約 アセットレス
  即時開始   向上   からの解放   化



特定アプリケーション

  SaaS   開発・実行環境
         開発 実行環境

  PaaS           仮想サーバ
                 仮想サ バ

  IaaS                   物理サーバ
                         物理サ バ
  HaaS
                                 6
クラウドサ ビス市場の傾向
クラウドサービス市場の傾向

      現在はIaaSが中心


IaaSとは?
    サ バインスタンスを提供するサ ビス
    サーバインスタンスを提供するサービス
    =「素のOS」渡し
    クラウドサービス事業者はサーバインス
    クラウドサ ビ 事業者はサ バイ
    タン の動作のみ保証
    タンスの動作のみ保証
    ミドルウェアやアプリケーションは利用者
    が導入
                          7
IaaSの普及による変化

 サーバエンジニアの仕事が激減
  どう変わったか?
     データセンタのラックを確保し、サー
     データセンタのラックを確保し サー
     バをキッティングし、ラッキングし、
     ケーブリングし、OSインストールし...
       ブ  グ
     という仕事がまったく不要になった
     サーバ構築を中心とするインテグ
     レーション市場は縮小の見通し
     レ シ ン市場は縮小の見通し
     代わって、クラウドコンサルティング
     なるビジネスが勃興
                            8
ソフトウェアエンジニアの仕事は
ソフトウ ア ンジ アの仕事は
     変化したか




                  9
ソフトウェア ンジ アのお仕事
ソフトウェアエンジニアのお仕事

 会議、会議、会議 ...           社会人としてのお勤め




 企画/要件定義/設計/実装/テスト
             装
 (いわゆる開発5工程/狭義の「ソフトウェア開発」)



                             対外発表/
 環境構築           調査/検証
                              勉強会


                                     10
何かが変わったか?

   クラウドサービスが普及しても
   ク ウドサ ビ が普及し も
 ほとんど変化していない
  狭義の「ソフトウェア開発」はまったく楽
  になっていない。
   な   な

  サーバエンジニアのやっていたことが、
  API等を使えばソフトウェアで制御でき
  API等を使えばソフトウ アで制御でき
  るようになっただけ。(むしろ、やる き
  るようになっただけ。(むしろ、やるべき
  ことが増えている)
                        11
何かが変わったか?(続き)

  ソフトウェアエンジニアの仕事を
      広義でとらえても
いまだクラウドの恩恵はない
 まだクラウドの恩恵はな
   会議
                そもそも人間系で
   社会人としてのお勤め   むず
                むずかしい
   対外発表/勉強会

   環境構築         楽できる可能性
   調査/検証        あるかも?
                           12
楽をする?


  × 楽をする = さぼる



  ○ 楽をする
  = 最小限の労力で目的達成
  = 開発生産性を上げる
                  13
処方箋は何か




         14
開発生産性を上げるための方法

 様々な方法があるが特効薬はない

古くて新しい方法(=ずっと未解決)
   開発生産性が高いプログラミング言語や
   フレ ムワ クの採用
   フレームワークの採用
   ソフトウェア再利用
   標準化/共通化
   標準    通
   コ ドジェネレ ション
   コードジェネレーション
   静的解析ツール
   テスト自動化ツール
   テスト自動化ツ ル
                        15
クラウドサ ビスによる処方箋
クラウドサービスによる処方箋

   ソフトウェアエンジニアのより多くの仕事を
           ジ     多   事
       クラウド側に転嫁する
                           ソフトウェア
 クラウドサービス
                           エンジニア

                 ネットワーク

                             狭義の
言語実行環境/ミドルウェア
                          「ソフトウェア開発」
フレ ムワ ク/ライブラリ群
フレームワーク/ライブラリ群
バージョン管理リポジトリ
バグトラッキング
                          それ以外   それ以外
継続的インテグレ ション
継続的インテグレーション         転嫁
デプロイツール
                                        16
Ruby PaaS「MOGOK」による
R b P S「MOGOK による
      ソリ
      ソリューション
           ション




                      17
PaaSとは何か



お客様アプリケーション
お客様アプリケ ションのための
   開発支援環境と
 実行環境を組み合わせたもの


                  18
Ruby PaaS MOGOK」とは
     PaaS「MOGOK」とは



 Ruby on Railsアプリケ シ ンの
              アプリケーションの
      開発支援環境と
 実行環境を提供するクラウドサ ビス
        を提供するクラウドサービス



                          19
MOGOKのソリュ ション
MOGOKのソリューション

     Ruby on Railsの採用
  オブジェクト指向言語Rubyで再利用性を
  オブジ クト指向言語       再利用性を
  向上
  少ないコード記述量で開発できるRuby
  on R il で開発生産性を向上
     Railsで開発生産性を向上
     オンラインサインアップ
     オンラインサインア プ
  オンラインサインアップすればすぐ使える
  面倒な環境構築は不要

                           20
MOGOKのソリュ ション(続き)
MOGOKのソリューション(続き)

      自動デプロイ機能
  Gitリポジトリから実行環境への自動デプ
  G リポジトリから実行環境   自動デプ
  ロイ機能
       実行環境の提供
  自動デ
  自動デプロイされたRailsアプリケーショ
        され      ア リケ シ
  ンをすぐ動かせる
  開発環境として、または、そのまま本番
  開発環境として または そのまま本番
  環境としても使える
                          21
MOGOKの全体像
Ruby App開発者                           エンドユーザ
       MOGOK          ローカル
        SDK           Gitリポジトリ

               git push
                          インターネット

ユーザポータル
   サインアップ
   SDKダウンロ ド
   SDKダウンロード
   デプロイ実行                           リクエストルータ
                                    リクエストル タ
...

                                     サーバプール



                          デプロイ
  Portal
  P t l        リモ ト
               リモート
               Gitリポジトリ
                                 Web Job
                                 W b J b DB
                                               22
MOGOK β版のご紹介




               23
MOGOK β版のご提供内容

       開発支援環境
  ユーザポータル
      ザポ タ
  クライアントパッケ ジ
  クライアントパッケージ
  Gitリポジトリ

        実行環境
  Webプロセス
  DBプロセス
  Jobプロセス(提供予定)
                  24
ユ ザポ タル
ユーザポータル
• オンラインサインアップ後、MOGOKに対す
  オ ラ     アッ 後、      対す
  る様々な操作が可能




                          25
クライアントパッケ ジ
クライアントパッケージ

          Ruby実行環境
   CRuby 1.8.7 または 1.9.2
   Linux版RPMパッケ ジ
   Linux版RPMパッケージ
   Windows版インストーラ

  コマンドラインツール(mogokコマンド)
ex.
  $ mogok craete アプリケ ション作成
                 アプリケーション作成
  $ mogok rake   rakeタスク実行
  $ mogok deploy アプリケーションデプロイ
                                26
Gitリポジトリ

     リモートGitリポジトリ提供
  1アプリケーションあたり100MB
    プ ケ シ あたり
  一般的なGitクライアントで操作可能
   般的なGitクライアントで操作可能


    実行環境への自動デプロイ
  ユーザポータル/mogokコマンドで指示



                         27
Webプロセス

         Ruby/Gems
  CRuby 1.8.7
  CR b 1 8 7 または 1 9 2
                   1.9.2
  bundlerでrubygems.orgから任意のgem
              yg     g     g
  をインストール
        アプリケーションサーバ
          プ       バ
  Thin 1 2 11
       1.2.11
   アプリケーションサイズの制限
  ファイルサイズ100MBまで(gem含む)
  メモリ200MBまで
                                 28
DBプロセス

         RDBMS
  MySQL 5 5
  M SQL 5.5
  InnoDBのみサポート対象
  準同期レプリケーション構成
  ノンストップ機能
  複数世代のバックアップ機能あり

      データサイズの制限
  メモリ100MBまで
  データファイル100MBまで
  デ タ         ま
                    29
MOGOKチュートリアル




               30
オンラインサインアップ
 ユ ザポ タルのWebUIでサインアップ
 ユーザポータルのWebUIでサインアップ
     (オープンβ版公開までは停止中...)




                           31
SDKダウンロ ド/インスト ル
SDKダウンロード/インストール




                   32
ロ カル側の操作
ローカル側の操作
Ruby App開発者                           エンドユーザ
                      ローカル
        SDK           Gitリポジトリ

               git push
                          インターネット

ユーザポータル
   サインアップ
   SDKダウンロ ド
   SDKダウンロード
   デプロイ実行                           リクエストルータ
                                    リクエストル タ
...

                                     サーバプール



                          デプロイ
  Portal
  P t l        リモ ト
               リモート
               Gitリポジトリ
                                 Web Job
                                 W b J b DB
                                               33
ロ カル側の操作手順(1)
ローカル側の操作手順(1)
> mkdir ¥rails_app         ワーキング
> cd ¥rails_app         ディレクトリ作成

> rails ne mogok sample -d m sql
        new mogok-sample d mysql
  create ...
                      Railsアプリケーション
  create ...                作成
  create ...

> cd .¥mogok-sample
          g        p
> rake db:create:all
                       ロ カルDB作成
                       ローカルDB作成

                                      34
ロ カル側の操作手順(2)
ローカル側の操作手順(2)
> rails generate scaffold Bookmark
title:string url:string    ローカルDBに
> rake db:migrate
          db migrate       テーブル作成
                           テ ブル作成

                                    ロ カルのWEBrick
                                    ローカルのWEBrick
> rails server                         で確認



  http://localhost:3000/bookmarks




                                                   35
ロ カル側の操作手順(3)
ローカル側の操作手順(3)
> git init
> git add .
> git commit -m "first commit"
              m
  create mode ...
                          ローカルリポジトリの
  create mode ...              作成
  create mode ...

> git status
  g                         確認
# On branch master
nothing t commit (
  thi to      it (working di t
                     ki directory cl
                                   l
                                       36
MOGOK側の操作
Ruby App開発者                           エンドユーザ
                      ローカル
        SDK           Gitリポジトリ

               git push
                          インターネット

ユーザポータル
   サインアップ
   SDKダウンロ ド
   SDKダウンロード
   デプロイ実行                           リクエストルータ
                                    リクエストル タ
...

                                     サーバプール



                          デプロイ
  Portal
  P t l        リモ ト
               リモート
               Gitリポジトリ
                                 Web Job
                                 W b J b DB
                                               37
MOGOK側の操作手順(1)
                           SSH公開鍵・
> ssh-keygen -t rsa        秘密鍵作成

Generating p blic/pri ate rsa key pair
           public/private     ke
...                         MOGOKに
                           公開鍵登録
> mogok key add ./.ssh/id_rsa.pub
> mogok key
1: ssh-rsa AAAB3NzaC1yc2EAABIwA
                        y
...                          確認

                                         38
MOGOK側の操作手順(2)
                      MOGOKに
                    アプリケーション作成
> mogok create mogok-sample
               mogok sample
Creating App: mogok-sample
              mogok sample
Done!
Git remote mogok added
                     リモートリポジトリも
                          ポジ も
                     同時に作成される




                                  39
MOGOK側の操作手順(3)
> git remote -v
mogok git@git.mogok.jp:mogok-
sample.git
sample git (fetch)
mogok git@git.mogok.jp:mogok-
        git@git.mogok.jp:mogok
sample.git (push)      ローカルリポジトリから
                      リモートリポジトリに
                      ソースコードをpush
> git push mogok master
Compressing object 100%. done.
      p     g j
Writing object 100%. done.
...
                                     40
MOGOK側の操作手順(4)
                       リモ トリポジトリから
                       リモートリポジトリから
> mogok deploy         実行環境にデプロイ
Info checking..
     checking
Git pulling..
Bundler installing..
App deploying..
Gem deploying..
       deploying
Done!                   このホストで実行

http://mogok-sample.ruby.iijgio.com/

                                       41
MOGOK側の操作手順(5)
                                     MOGOKに
                                   DBテーブル作成
> mogok rake db migrate
             db:migrate


                                 ロ カルWEB i kと
                                 ローカルWEBrickと
                                同じ表示が出たら成功!
  http://mogok-sample.ruby.iijgio.com/bookmarks/




                                                   42
MOGOKのこれから




             43
MOGOKの将来像


                MOGOK
                                ⽇本語
REST API型   Mem
                    BTS   CI   テクニカル
 ストレージ      Cache
                               サポート



               ソフトウェアエンジニアが
              プログラミングに集中できる
               サービスを目指します!
               サ ビスを目指します!
                                       44
終わりに




       45
http://mogok.jp/




                   46
一緒にMOGOKをつくりませんか?
 緒にMOGOKを くりませんか?




Ruby R b
R b / Ruby on
Railsの経験者
募集中!



                    47
ご清聴ありがとうございました
                ご清聴ありがとうござ ま た

お問い合わせ先 IIJインフォメーションセンター
TEL:03-5205-4466 (9:30~17:30 土/日/祝日除く)
info@iij.ad.jp
http://www.iij.ad.jp/




                                         48
インターネットの先にいます。

IIJはこれまで、日本のインターネットはどうあるべきかを考え、
つねに先駆者として、インターネットの可能性を切り拓いてきました。
つねに先駆者として インタ ネットの可能性を切り拓いてきました
インターネットの未来を想い、イノベーションに挑戦し続けることで、世界を塗り変えていく。
それは、これからも変わることのない姿勢です。
IIJの真ん中のIはイニシアティブ        IIJはいつもはじまりであり、未来です。




                                    お問い合わせ先 IIJインフォメーションセンター
                               TEL:03-5205-4466 (9:30~17:30 土/日/祝日除く)
                                                               info@iij.ad.jp
                                                           p         j    jp
                                                        http://www.iij.ad.jp/




                                                                                49

【17-E-2】Ruby PaaS「MOGOK」 ~ ソフトウェアエンジニアのためのクラウドサービス ~ 藤原秀一氏