読者です 読者をやめる 読者になる 読者になる

おくみん公式ブログ

おくみん公式ブログ

okumin.com が GCP 上で不死鳥のように蘇りました #GCP

GCP Docker

f:id:okumin:20161204200212p:plain

壊れて動かなくなっていたおくみん公式サイト(okumin.com)を復活させました。

新しい okumin.com はただの静的サイトですが、裏では色々と新しいことに挑戦しています。

チャレンジ

GCP

okumin.comGoogle Cloud Platform 上で動いています。

これまで自分は主に VPS を用いてホムペ作りをしていました。 そろそろクラウドをガッツリ使っていきたい気持ちになったので、最近東京リージョンが出たばかりの GCP を使ってみることに。

後述する GKE のように、GCP には魅力的なマネージド・サービスがたくさんあって日々便利さを感じています。

Docker

流行りの Docker を導入してみました。

以前『Docker実践ガイド』を読んだときは、よさはあるがネットワーク設定を管理してくれるシステムがないと実運用は難しそうだなという印象を受けました。

その点 GCP には Kubernetes のマネージド・サービスである Google Container Engine(GKE) があるので、なんとかなるかなと思いつつ利用してみると、これがありえんくらい使いやすかったです。

GCP、Kubernetes、Docker と登場人物が多いので最初は少し戸惑ったものの、一度使い方を覚えてしまえば手軽にコンテナのデプロイができるようになりました。 その上 Kubernetes にはローリングアップデート機能や、コンテナの死活監視及び再起動を自動で行ってくれる機能があり、運用が非常に楽になります。 コンテナからの標準出力を自動的に Stackdriver Logging に集約し、さらにそれを BigQueryGoogle Cloud Storage へ継続的にエクスポートすることも可能です。

これまで Docker の主なメリットは性能やポータビリティであると思っていました。 今ではむしろ、各種プロセスがコンテナという共通の仕組みに乗っかることで、さまざまな効率化・自動化が実現できることこそ Docker の真価であると感じています。

HTTPS

これまた流行りの Let’s Encrypt を用いて HTTPS 対応しました。 これからのインターネッツはすべて HTTPS であってほしいです。

まとめ

復活した okumin.com の裏側についてまとめました。

今後は全サーバを GCP 上に設置したいと思うくらい、GCP によさを感じました。 無料トライアルでもらった300ドル分のクレジットがなかなか減らないので、データベースやビッグデータ系のマネージド・サービスなんかも試していきたいです。

Influent が Fluentd Related Projects の仲間になりました

Fluentd

f:id:okumin:20161119193057p:plain Related Projects | Fluentd

先日公開した Influent を、http://www.fluentd.org/Related Projects に載せていただきました。

経緯

Qiita へ投稿した『Java で Fluentd の in_forward っぽいことをするライブラリを作りました』が @repeatedly さんの目に触れて、それっぽい反応をなさっていたのでぜひぜひとお願いしました。

今後の抱負

できたばかりでまだ安定しているとはいえないライブラリですが、頑張ってメンテしていきたいと思います。

ビッグデータ界隈は JVM 言語が広く使われているので、そのあたりで使えないか模索しています。 とりあえず Spark Streaming の Fluentd Receiver を実装してみる予定です。

関連リンク

C++ で Apache Kafka を実装してみた

C++ Kafka

C++11/14 コア言語』を読んで C++ に惹かれ、使ってみたくなったので、Apache Kafka を実装してみました。

作ったもの

Cafca

C++ を書くならせっかくだしミドルウェアを作ってみよう、というわけで比較的構造がシンプルな Apache Kafka を移植しました。

とはいっても習作であり、プロダクトとして利用できるレベルではないです。 Produce API, Fetch API あたりしか実装していません。 分散周りが未実装で、無数のバグがあり、かつパフォーマンスも出ないであろうという状態です。

C++ 感想

C++ は想像していたより先進的な機能が多く、自分のようなモダンプログラマでも楽しめる言語でした。 テンプレートやラムダ式を駆使すれば表現力に定評のある Scala に負けないくらい、パワフルな記述が可能です。

例えばテンプレート特殊化を使えば型クラスっぽい多相を実現できます。ネットワーク IO ライブラリ Boost.Asio はラムダを使ってハイレベルで使いやすい抽象化に成功していると感じました。

今後

Kafka のソースコードを読んで、データ構造、ディスク IO 周りをアーキテクチャレベルで見直せばよくなる余地があると直感しています。

なので暇があればその辺を作り直して、API も揃えて、本物の Kafka とベンチマーク結果を比較したいという気持ちが若干あります。 そこまで行くと Kafka とはかなり違ったものになるので、一から新しいものを作ることになるかもしれませんが……

ScalaMatsuri 2016 で LT してきました #ScalaMatsuri

Scala

人がたくさんいてとても緊張しました。

関連リンク