Category Archives: インフラ技術

gcp ja night #27に参加してきました。(+Google Cloud Platformとクラウドプラットフォームの今をおさらい付き)

gcp ja night #27 - connpass
に参加してきました。

僕とgcpja night(旧称appengine ja night)

私事で恐縮ですが、僕は旧appengine ja nightの常連だと思っていました。一時期毎回のように参加をしていたと思います。しかしどうやら、僕が最後に参加したのはappengine ja night #19 : ATNDのようです。。。2年以上ブランク開けちゃってたのですね!
その間、僕は勤務先の会社での仕事で一杯一杯*1でしたが、外部へ視野を広げることをいかに怠っていたのかを反省します。

ここ最近のクラウド界隈の動きとか(予習)

その間にGoogle App Engine界隈、いや、Google Cloud Platformの状況がだいぶ変わっていました。例えば最近GoogleとAmazonでクラウドサービスの値下げ合戦がありましたね。
Google、クラウド・プラットフォームで全面攻勢―大幅値下げ、新サービスをローンチ | TechCrunch Japan
Googleに負けじとAmazonがS3, EC2, ElastiCache, Elastic MapReduce, RDSを大幅値下げ | TechCrunch Japan

そもそも、いつの間にか、GoogleはEC2の競合サービスを出していたのですね!昨年末に正式リリースされています。
Google Compute Engineが正式サービスへ。Docker、FreeBSD、CoreOSもサポート。ストレージは1GBあたり月額4円へ値下げ - Publickey

また、rebuild.fmを聞いていると、最近はImmutable Infrastructureとか Disposable Componentとかのキーワードがホットになっています。Immutable Infrastructureって何でしょうか。

Immutable Infrastructureとは「Immutable(不変な)」の意味通り「一度セットアップし運用中のサーバは変更をしない」という運用スタイルです。サーバの設定変更などをしたい場合は、現在運用している環境(サーバ群)を変更せずに、まったく新しい環境を用意し、環境の設定変更が終わったら、ルータやロードバランサ等で新しいサーバ群に切り替えるというものです。

今年流行りそうな「インフラエンジニア」向けトレンドのまとめ その1 (Blue-Green DeploymentとImmutable Infrastructure編)


Immutable Infrastructure を調べてみると、Dockerというキーワードがヒットします。
Docker: Linuxコンテナを使ってアプリケーションの配置を支援する

そして、上記記事にもありますが、CoreOS というディストリビューションが出てきます。みんながCentOSと見間違えるCoreOSについて調べると

CoreOS は Alex Polvi が設立した会社であり、OS、新しい Linux Distribution である。OSS で公開されている。
Polvi 氏といえば Rackspace に 買収された CloudKick を立ち上げ、その後も Rackspace 働いていたクラウドの専門家とも言えるだろう。
その Polvi 氏以外にも Googler や Linux 関連の人材、アドバイザーに Linux の stable branch のメンテナ
を迎えるなど、Linux に関する知識がかなり豊富なメンバーが集まっている。
その彼らが作っているのが CoreOS である。

CoreOS は Google や Facebook などの環境を参考にしており、柔軟にスケールし、さらにはインフラ構築その...

CoreOS 入門 - Qiita

そして、上の方の記事で、CoreOSはGoogle Compute Engineでもサポートされてるってありますね!

ふう、やっとつながった。


というのは、ここ1,2ヶ月で浦島太郎状態だった僕がようやく追いついた、にわかインフラ知識ですが、今、クラウド関連の世界はこうなっているんだっていう背景知識を持っていないと、今回の勉強会はキツイのではないでしょうか。

appengineとかslim3とか触ってた人たちが、旧に最近Dockerとか使い始めたのはなぜなのか知っておく必要があるようです。

勉強会報告

gcp ja night #27は、六本木ヒルズのグーグル 東京オフィスで開催されました。
発表内容知らなかったのですが、昼間にもイベントがあったようですね。Togetterは勝手に夜の部が始まる2ページ目をリンクしときます。(18:45くらいからnightの部になります)
2014.4.22 gcp ja night #27 & 「Google Cloud Platform セッション 最新技術と日本での展開について」 #gcpja - Togetterまとめ

発表内容と会場の反応はconnpassとtogetterを参照してください(てきとーだなw)

発表内容でオフレコを支持されたものが多く、参加できてよかったなあと思います。テレビ番組連動のリアルタイム通信の事例はただただ面白かったです!しかもGCPを使ったらめちゃくちゃ安かったとか!

@shin1ogawa さん+ @sinmetal さんのManaged VMの話も興味深かったです。Managed VMとは

これはGoogle App Engineの環境の下で仮想マシンを走らせることにより、仮想マシンの面倒をApp Engineが見てくれるというもの。仮想マシンの構成は開発者が自由に行えます。

[速報]Google、「Managed Virtual Machines」発表。Google App Engine内で仮想マシンを管理 - Publickey

shin1さんの説明では、GCEにappengineのプラットフォームを載せたようなものだって言っていました。その方がわかりやすい。

まだ、日本語での情報は上記記事を除いて殆ど無く、この発表のスライドも公開されないと思いますので、まだ一部の人達しか触れないヴェールに包まれた存在ですが、会場では、SSHとか使えない仮想マシンに対してSSHは使えるようです。*2、Webブラウザ越しであんなことやこんな(ry
Docker的なニュアンスがチラ見えしました。

これは面白いです。インフラの運用って大変ですから、我々Webエンジニアはあまりやりたくない、でも、従来のGoogle App Engineは、ファイルの保存ができなかったり、サーバーにパッケージをインストールできなかったりするので、融通が利かないという問題がありました。

これを使えば、今までできなかったサーバーのカスタマイズをしながら、ファイルに保存しながら、appengineアプリを開発できるんですね!

個人的には、需要があるかわかりませんが、JavaのMayaaテンプレートエンジンがManaged VMでまともに使えるようになるのではないかと期待しています。*3

ただ、会場の雰囲気だと、スピンアップに7秒くらいかかるJavaはどうなの?っていうコメントが多く、かつて、appengine ja night で slim3 とか追いかけていた人たちも、最近の興味はGoとかに行っているようです。

ここでも、Javaは不遇な子。。。。
かつて、GAE/J, GWT, Guiceなど、GoogleのJavaに対するアウトプットを僕は好きでした。

感想

このエントリの前半に書いたようなにわか知識でなんとか付いて行けましたが、正直自分の遅れっぷりに呆れました。しかし一方でこの勉強会で登壇されている方はかなり先進的な領域にいる方だと思います。

上記の「にわか知識」自体がかなり尖った領域で、Google検索してもまだ日本語の情報が足りない状況なので、今から勉強しても十分追いつけるような気がします。逆に今ついていかないと、途中から追いつくのはとても大変だったと思います。

GCP $500 無料券をもらったので、さっそく、自分も試してみようと思います。

写真

え、会場は銭湯?
f:id:s-ishigami:20140422223612j:plain

こんなものまでGoogle製
f:id:s-ishigami:20140422223537j:plain

このシャワーは使えるのだろうか?
f:id:s-ishigami:20140422223550j:plain

銭湯でピザ取り分けていますw
f:id:s-ishigami:20140422204037j:plain

$500 無料券(え、500円じゃない?すげー!!)
f:id:s-ishigami:20140423132501j:plain

*1:その間に会社は全サービスをオンプレミスからAWS等のクラウドに移行を済ませ、僕自身は一プログラマーから開発チームリーダーに転身し、事務所は秋葉原から飯田橋に移転し、15人くらいだったメンバーが40人を超え……

*2:https://twitter.com/sinmetal/status/458842820355166208

*3:Mayaaは、キャッシュファイルをファイルシステムにキャッシュする機能があるので、ファイルシステムを使えるManaged VMがあれば実用に耐えるのではないかと思っています。これまでは、ファイルシステムへのキャッシュができなかったので、メモリのみのキャッシュになりますが、スピンアウトしてしまうとキャッシュが消えてしまうので、致命的でした。もちろんキャッシュをmemcachedに格納するとかすればできるでしょうけど、まあそこまでしてまでってのもあって。。。

Java8をインストールしたMacでもさくらVPSのVNCは使えましたという報告

今日のお題:

さくらVPSのVNC機能を使う場合はJava6を入れなきゃいけないという誤解→ウソ→Java8でも動いたよ!

筆者環境

MacBook Air (11-inch, Late 2010)
OSX 10.9.2 Maverics
Safari 7.0.3
java version "1.8.0"

経緯:

急にサーバー立てたくなりまして。世間ではDockerとか流行ってるんですが、ここ数年サーバーとは離れてしまってCUIコマンドに対しても自信がないLinux弱者と化しているので、まあ、ライト路線でさくらVPSでも契約して勉強し直そうかと思いたちますした。

東京リージョン、メモリ1GB、HDD 100GB、2コアという、最小構成で契約をし、さて、使うかと思ったら初期OSがCentOS、別になんでもいいんだけど、学生の頃Debian Etchと親しんだのでapt系がいいなと思い、さくっとOS再インストールボタンをポチ。

ブラウザーからVNCが立ち上がって簡単OSインストールが出来るのがVPSの売りでしたよね。って、あれ?VNCウィンドウが立ち上がりません。

Java6を入れなきゃいけないという誤解

おかしいなと思って、調べてみるとこんな記事が。。。

MacでさくらVPSのVNC - 一茶庵

さくらVPSのVNCコンソールはJava 7 で使用できない
Java 6にダウングレードするとVNCコンソールが動く

そうなのか?それを裏付ける情報続々

さくらVPSのVNCコンソールを mac maverics から起動する | 新なんでもありBLOG

Java を全てアンインストールし、Apple 社の Java-6 をインストールし、JavaAppletプラグインのシンボリック・リンクを張り直して、何とか maverics(10.9.1) からさくらVPSのVNCコンソールが動くようになった。

えーーー。

僕はJavaエンジニアだから、複数のバージョンのJDKをインストールすることは互換性検証のためにも構いませんが、自分がアプリを使う実行環境としては、最新のものでないとちょっと怖いです。

しぶしぶ Apple Developer Center から "Java for OS X 2013-005 Developer Package" をダウンロード、インストール。シンボリックリンク張り直しそしてブラウザとの関連付けをしようとしましたが、やっぱり怖いよう。ウィルスとか入るかもしれない。

Java7でも大丈夫だよという情報

そう思ってもう一度ググり直してみました。

ひとりぶろぐ » さくらVPSのVNCコンソールをJava 7で起動させる

危険を冒してJava 6にダウングレードしなければならない
的な認識で対処方法を書いているサイトも見かけましたが、それは誤解。ダウングレードの必要はありません。

そうでしょ!やっぱそうでしょ!

試しにリンク先の方法で試してみます。と言っても、簡単で、「システム環境設定」から「Java」を選んで、「Javaコントロールパネル」が開いたら「セキュリティ」のタブをクリックし、「例外サイト・リスト」欄の「サイトリスト編集」をクリック、「追加」をクリックして「https://secure.sakura.ad.jp/」を追加。

以上で、特にマシンの再起動とかもせず、ブラウザも再起動せず、別ウィンドウにVNCウィンドウが立ち上がりました。

めでたしめでたし。

OSインストールは後日

今日は遅くなっちゃったんで肝心のOSインストールは後日にします。
DebianとUbuntuどっちにしようかと見てみるとUbuntu 14.04がそろそろ出そうなので、ちょっとだけ待ってみますかね。*1

*1:毎回サーバー立てようとすると、Ubuntu ??.04 がもうすぐ出そうってなってる気がする。春は鯖立てしたくなる季節です

JVM Operation Casual Talks に参加してきました。

JVM Operation Casual Talks : ATND に参加してきました。

会場はLINE株式会社渋谷オフィス、ヒカリエの27階です。中も景色も綺麗ですね。

 

「カジュアルトーク」なんて言うものだから、きっと、どこかの「基礎勉強会」のような怖い勉強会であることを覚悟して行きました。僕みたいな現場で場当たり的にやってるエンジニアは刺されて来るのではないかと((((;゚Д゚))))ガクガクブルブル

 

コンテンツは

@stanaka15分でわかるJVMのメモリ管理

@oranieCassandra運用で実施しているJVM監視について

@waysakuSpray(Akka)運用でJVMをCPUスケールさせるために行った事

その後LTでした。

 

中でも、最初に発表された@stanakaさんのスライドが非常に網羅的に説明されていますので、JVMに関わる可能性がある方は一度目を通す価値があると思います。

 

さて、僕は、自分がJavaプログラマーとして開発したWebアプリケーションを自社のインフラチームと協力して、時にはGCオプションやインフラの調整を依頼し、時にはアプリのコード改修などを行える立場でJVMと接しています。一方、ここで発表された方々は、他人が作ったJVM上で動くアプリケーションを運用する立場の人たちでした。そういう意味ではうちのインフラチームの人たちに近い立場の方々ですが、自分でソースをいじることが容易ではない状況下での運用の苦しさもあるでしょう。

 

内容は意外と業務を通じて関わってきたことだったので、刺されるというよりは、みんな同じように苦労してるんだなと共感することが多かったです。

 

ちなみに、現時点の僕のうとい理解ではこんな感じです。

G1GC

トータルのGC時間は多く、一回あたりのGC時間が短い

6G、あるいは10GB以上のヒープサイズを割り当てている時に効果がある

Webなどの無停止で運用したいサービスで、メモリサイズが贅沢に割り当てられるときに有効

CMS

トータルGC時間が短い

コンパクションが無いため断片化する。長く無停止運用をすると遅くなる

バッチなど、トータルスループットが求められるときに有効

JVMオプションでのチューニングが必要(nekopさんのエントリを見るべし!)

 

ラストのパネルディスカッションのコーナーでは、なぜJVMを使うのかの問に対して、パネラーの皆さんは「使いたいアプリ(Hadoop、Solr、Cassandra等)がJVM上で動くから」とおっしゃっていました。特にPerlなどのLL出身の人には、GCでStop the Worldしたり、気軽に落とせないということが不満らしく、その反論として落ちないことが良い、という意見がありました。それに対し、いつ落ちてもいいように環境を構築するべきなど色々議論が深まりました。

 

僕にとっては、Javaでしか業務経験がなく、JVMを選択する理由としては「JVMが一番知っているから」というそれこそウルトラ消極的な理由しかありません。今回は、別のバックグラウンドがある人達がJVMに触れた感想を聞くことができたことは非常に有意義でした。

 

ちなみに、この発表の最中僕は下記の間違ったツイートをしたので訂正します。

既に削除していますが、Togetterに残ってしまっているのでごめんなさい。

PalallelGG => Compactionしないので時間が経つと遅くなる #jvmcasual そうなんだよね。

正しくはConcurrent Mark Sweep (CMS)の説明です。「そうなんだよね」とか知ったかもいい加減にです。orz

これは、うちのインフラチームの方がこの辺りチューニングして色々苦労していた話を聞いたので、このことかなと思ったのですが、後になって間違いに気づいた時には既にTogetterにまとめられていたので遅かったです。

 

写真

f:id:s-ishigami:20140408100444j:plain

ヒカリエオフィスエリアのエントランス(広っ!)

 

 

f:id:s-ishigami:20140408100210j:plain

 

 

 

27階景色いい

f:id:s-ishigami:20140408100408j:plain

 

 

入館証もLINE!退館時に返さないとこの会場が使えなくなるから!と言ってました。

f:id:s-ishigami:20140408100411j:plain

クリアファイル配ってました。