scorpion_tech_notes

Web関連アプリ、モバイルアプリ中心のメモです。

カテゴリ: Cloud


久しぶりにワクワクする技術に出会った。

カリフォルニア州San Meteorに本拠を置くSnowflake Computing(http://snowflake.net/)の提供するクラウドサービス「Snowflake」だ。CEOのBob MugliaはWikipediaによればMicrosoftのCEO Steve Balmer直属の4人のpresidentの一人であった。MSのサーバー技術やクラウド技術を熟知したスペシャリストである彼が Azure SQL DatabaseやAmazonのRedshiftに真っ向勝負を挑むのが「Snowflake」サービスだ。

2015年半ばから本格的にサービスを開始しているが日本語の情報は少なく、「snowflake データウェアハウス」で検索してもデータモデルとしてのスノーフレークモデルしか出てこない。

snowflake

偶然見つけた 「あの Bob Muglia が率いる Snowflake が、Azure と AWS にガチンコ勝負を挑む」というブログくらいしか見当たらないので、英語のサイトを探してようやく満足できる記事”Snowflake Computing’s Elastic Data Warehouse Service”を見つけた。これを読み進む内にそのユニークな革新的技術に興奮してしまい、久々にブログ投稿するに至ったわけだ。以下の内容は上記の英文記事と本家サイトならびに直接コンタクトして得た情報を元にしたものだ。

1)性能
50GB、1億6千万行のCSVを4分以下でロード可能。
データは6.6GBに圧縮されており、インデックスは不要。
MS SQL Serverの10倍以上の性能を発揮するとのこと。
インフラはAWSを使用している。

2)コスト
CAL(クライアントユーザーライセンス)不要。
DBサイズとコンピュータリソースのみで従量課金。最低月額200ドル+1TBにつき月額100ドル(この価格は一般公開されていない)。想像だが100GBほどのデータベース(月額10ドル)でそれほどヘビーに使わなければ月額500ドル以下??
時間帯を決めて一時停止・再開させて料金節約も可能。
逆にピーク時間帯のみ多くのリソース割り当てしてレスポンス改善も可能。

3)柔軟性
”The First Elastic Data Warehouse Service”とうたっているだけあって非常に柔軟性がある。
・自動的に、ロード時にリソースをスケールアップしクエリー時には適切にスケールダウン。
・90日まで過去の任意の時点に復元可能な「Time Travel」機能。「60分前」とか「何月何日何時何分」とか自在にさかのぼれる。したがってバックアップ不要。
・バックアップというよりはテスト用に瞬時に任意の時点のテーブルのクローン作成も可能。おそらくクローン後の差分更新を管理。SQLはこんな感じ。

CREATE TABLE test_table01 CLONE table01;
CREATE TABLE five_min_ago_table01 CLONE table01 AT (OFFSET => -60*5);

・JSONやXMLもそのままぶち込めて、SQLで検索もジョインも可能。(MongoDBを移行して超高速検索できそう)

技術的にはとても興奮するソフトだが、欠点は簡単にお試しできないこと。ユーザ登録して担当者とメール交換して、電子契約書にサインしてようやくトライアル用の400ドル相当のクレジットがもらえる。
まだまだスタートアップの小さな会社なので日本で使用するには言葉の壁、時差の壁があることも心配だ。

今日契約書に署名したばかりなので、まだ触れていないのだが、これからが楽しみだ。

続報に、乞うご期待。
 
 
 


Drupalはとっても面白そうだからちょっと勉強してみようと決心しても、どこにどういう風にインストールすればいいのかと戸惑う人は少なくないだろう。


自分が自由にいじくれるサーバー環境にApache, PHP, MySQLがインストールしてあれば
https://drupal.studio-umi.jp/blog/Drupal-8-tutorial-installation
に公開されているスタジオ・ウミさんの詳しい解説ページを参考に、さほど問題もなくインストール出来るはずである。


そこで、ここではDrupalの必須環境も含めて、なるべく時間とコストをかけずに簡単に構築して勉強を始める方法についていくつか参考になる情報を整理してみた。


1) Acquia(https://www.acquia.com/downloads)

MacまたはWindowsのデスクトップ用のインストーラが無償でダウンロード可能で簡単にDrupal環境が手に入る(ただし現時点ではDrupal7の環境)。アプリは結構高機能で複数のサイトを構築して管理できる。

また、別途開発したサイトの公開用のAcquia Cloudサービスも提供されており、デスクトップでの開発からサーバ公開へのシームレスな環境が提供される。しかしこのCloudサービスはやや高価でミニマムな構成でも技術サポート料を含めて$100/月以上の費用が発生するので、個人レベルではちょっと二の足を踏んでしまうだろう。
しかしなんと言ってもDrupalに特化した製品・サービスなので安心はできる。


2) Bitnami(https://bitnami.com/stacks )

オープンソースの多様なスタックを提供している会社である。 Drupal スタックのページhttps://bitnami.com/stack/drupal を見ると分かるように、各OS向けのインストーラ、インストール済みVMイメージ、Docker コンテナ、AWSを始めとする各種クラウドサービス向けのスタックなどなど実に多種多様な環境向けにスタックが提供されている。これだけあれば自分の好みのものが見つかるはずだ。すでにDrupal向けのサーバー環境のある人も既存のシステムに影響のない形でのテスト環境が手に入るであろう。

ちなみにここのデスクトップ環境はすでにDrupal8になっている。さらにAcquiaのアプリに比べると簡単にdrush, Git, PHPMyAdminも同時にインストール出来るところなどは便利であるが、複数サイトの構築には簡単に対応できないようである。

独自のクラウドサービスはないが、AWS用の開発用のスタックは無償提供のようなので、すでにAWSのアカウントを持っている人は追加インスタンスだけでサイトが公開できるはずである。恐らく他のクラウド用のスタックも無償であろう。


3) Pantheon(https://pantheon.io/

DrupalとWordPressに特化したクラウドサービスが提供されている。すでにDrupal8対応済みで無料のアカウントで2つまでサイトを保存できる。日本語の言語環境もインストール時に選択できる。さらに無料アカウントでもGitリポジトリ付きであり、開発=>テスト=>本番公開のステージング機能もありチーム開発にも利用できる。有償のサービスも$25/月からあるので、1)のAcquiaよりは敷居が低い。


4) Digital Ocean(https://www.digitalocean.com/ )

AWSよりは手軽なわかりやすい価格体系のクラウドサービスとして人気があるサイトである。

Dropletという名前のVMイメージを構築する段階でOSやサーバースペックを選択でき、加えてOne-Click Appsの中から各種のアプリを選択しVMにインストールができる。Appsには今のところDrupal 7があるだけでDrupal 8はない。1)から3)のサービスと比べればDrupalに特化していないので、その分手間はかかるかもしれないが、$10/月程度の料金で1GBのメモリーと30GBのストレージが確保でき、グローバルIPも取得できるので、単なるテストでなくうまくいけば一般公開するつもりであれば良い選択肢かもしれない。
なお同様のサービスは他にもいくつかあって、例えばlinode(https://www.linode.com/ )ではやはり各種アプリ導入用のスクリプトが提供されているようであるが、調査し切れていない。


5) Cloud9(https://c9.io/ )

Cloudベースの開発環境とIDEも色々とある。私はCloud9を使っているが、結構人気のあるサービスのようである。無料でも512MBメモリーと1GBのストレージを持つワークスペース1つが利用できる。

$9/月の料金では1GB+10GBになり、パブリックな512MB+1GBのワークスペースは無制限となる。

ワークスペースのテンプレートにはWordPressはあるが残念ながらDrupalはない。しかしいわゆるAMP環境のテンプレートはあるので、drupalのインストールは容易である。

IDEの機能が結構充実しているし、GitHubやBitbucketとの連携も容易なのでDrupalの学習環境としては非常にコストパフォーマンスが良いと思う。


開発環境の構築はおおむねこれらのどれかの中から選べるはずだが、Drupalは多機能で奥が深いCMSなので系統立てて学ぶのがなかなか難しい。本屋にもWordPressの本は山積みであるが、Drupalの本は少ない。


個人的には本ではなく、Webベースのチュートリアルかe-Learningの方が理解が深まると思うのだが、いずれにしても残念ながら日本語の教材は少ない。


以下の情報は全て英語ベースであるが、まずビデオ教材は、

などに比較的多数のDrupal教材がある。特にOSTrainingはCMSに特化した感じでWordPressとDrupalについては初級から上級まで教材が豊富である。まだまだ数多くオンライン講座のサイトはあるが、サイトによってはDrupal教材が殆どないところもあり要注意である。逆に少々受講料は高いがBuildAModule(http://buildamodule.com/ )のように完全にDrupal専門のサイトもあるので、本腰を入れて取り組むならば最適であろう。






EvernoteはPC, Mac, iOSデバイスでノートの同期ができるのが売りもの。
とは言っても最近iOSデバイスでの同期をさぼっていたので久しぶりに同期させてみた。
ところが、なかなか終わらない。ほうっておくと「同期に失敗しました」というエラーが出る始末。

1,2週間前は確かうまくいったはずだがと思って色々考えた。iOSアプリの中で進行状況のログは見ることができて、それを見る限りは同期は進行しているように見える。でも長時間かかると何らかの理由であきらめてしまうみたいだ。

そういえば、セキュリティ向上のため1~2ヶ月前に2段階認証を有効にした。ひょっとすると同期中何らかの中断が生じて再接続しようとするときに2段階認証だからうまくいかないのでは?

ということで、2段階認証を外して同期をリトライ。今度はそこそこ時間がかかったが成功した。

やはりセキュリティと利便性はまだまだトレードオフの関係にあるようだ。

dockerが流行している。
そのイメージが公開されているリポジトリを見るとLinuxベースの多彩な開発ツールや環境が手に入る。
新しい技術を試しにいじくるにはdockerは最適だろう。

最近ではcloudベースの開発環境サービスの母体にも多く使用されており、
などが代表的なサービスだ。これらもCaaS(Container as a Service)とは言えるが、あくまで開発・テスト環境としての利用を前提としているように思える。
グローバルなURLで公開は出来るのだが、ドメイン名やポート番号が限定されていたり、プロセス起動毎に変動したりするので、本格的なアプリの提供の前に限られたメンバーに公開して、口コミで拡げてもらおうとした場合にでも不便だ。

スモールスタートからある程度までスケーリングするようなサービスをdockerイメージをそのまま使って公開できるサービスとして、sloppy.io(http://sloppy.io/)という「Dokcer Hosting Cloud」サービスがベータ版として限定公開されている。
自分の作ったdokcerイメージをリポジトリに格納すれば、あとはsloppy.ioにお任せという段取り。
コマンドベースのツールがWIndows(64bit限定)、Linux、Mac用に提供されており、これを用いて、
  • sloppy.ioのアカウントへのログイン、ログアウト
  • イメージからのコンテナインスタンスのスタート、リスタート
  • インスタンスの管理、停止
などができる。一旦稼働したインスタンスはログアウトしても停止させるまで稼働している。
そのインスタンスにはsloppy.zoneドメインのサブドメインまたは自分の管理するドメインを割り当てられるのでグローバルなサービスが提供できる。
もろもろの設定はjsonファイルで定義し、これをsloppyコマンドに与えて起動する仕組みで、
  • 起動すべきコンテナイメージとそれらの依存関係
  • URLやポート番号
  • 再起動するためのヘルスチェック条件
などを定義する。sloppy(手抜き・ずさん)という名前にふさわしくない充実ぶりだ。

dockerは本番業務に使うのはセキュリティ、安定性の面で不安があるというのが現在の世間の認識のようだが、スタートアップ段階での利用には適しているように思う。
例えばsloppyを使ってベータサイトを公開して、クラウドファンディングで本格サービス稼働の資金を集めるみたいなことは出来そうだ。
ちなみにsloppy.ioのページには「No matter if you build e-commerce sites, online marketing campaigns or mobile backends. 」とか「Making our service 2x faster than both Amazon EC2 and the Rackspace Cloud.」書いてあり、ヘビーでミッションクリティカルなサービスにも使って欲しそうな感じがする。


   

↑このページのトップヘ