MoinMoinの移設作業は開発環境でDockerイメージを作成するところから始めます。現在はCentOS6.5 + Apache + mod_wsgiで動いていますが、Ubuntu + Nginx + uWSGIに移行してみました。データボリュームコンテナはdocker-lloydを使ってIDCFオブジェクトストレージにバックアップしたかったのですが、コードを読んでも動作がわからなかったので、これまで通りテンポラリのコンテナを経由してアーカイブの操作をします。
MoinMoinをDigitalOceanのCoreOSに移設する - Part1: はじめに
来月にはDockerをプロダクション環境で使いたいので、まずは自分のサービスを移行してみます。さくらのVPSで2年半ほど運用しているMoinMoinを、DigitalOceanのCoreOSで動かすことをゴールにしました。現在はCentOS6.5 + Apache + mod_wsgiで動いていますが、Ubuntu + Nginx + uWSGIに移行します。コンテンツが増えて検索が遅くなってきたのでこの機会にXapianも使おうと思います。
Spark Core an IoT device - Part1: Maker Shedで購入
Spark Coreというインターネットに接続できるマイコンボードを見つけました。Raspberry PiやBeagleBone BlackはLinuxサーバーになっているので、IoTのデバイスはArduinoみたいなボードで遊んでみたいです。Sparck CoreにはWi-Fiのチップアンテナが組み込まれています。Spark CloudやSpark OSを組み合わせると、インターネットに接続する端末がすぐに開発できます。SparkOSはREST APIでデバイスを操作できるので、クラウドベースのMicroOSとしても見てみたいです。
Micro Services with Docker or OSv - Part2: ClojureをOSv上で動かす
CoreOS,SmartOS,OSvといったMicro OSの台頭はとても重要だと思います。さっそくIDCFクラウドで試してみようとOVA for VMWare ESXiをダウンロードしてデプロイしてみましたが失敗してしまいました。ovaをuntatarしてみるとovfのVirtualSystemTypeがvmx-08でです。PackerのOVAで確認したように、ESXi4にデプロイする場合はvmx-07にする必要があります。他にも嵌まりそうなので、とりあえずローカルのOSXでOSvを動かしてみようと思います。
IronMQの非同期処理をNewRelicで監視 - Part7: mackerel-agentをFabricでインストール
DockerコンテナにNewRelicエージェントをインストールしましたが、今度はMackerelエージェントをインストールしてみます。
Mackerelははてなが提供している監視SaaSです。Freeプランがあるので気軽に試すことができます。
Docker監視環境 - Part3: cAdvisor, InfluxDB, Grafanaの構築
Riemannに続いて、cAdvisor, InfluxDB, Grafanaを使った監視環境を構築していきます。メトリクスを保存するバックエンドとして時系列データベースのInfluxDBの使い方を学習するのが目的です。Continuous Queriesを使って逐次的にデータを間引いたり、データの保持期間を決めたりできるようです。Measure All The Thingsを実践していて、Whisperのリテンションが間に合わなくなって自滅した経験があるので、RiemannやHekaを使ったメトリクスのStream Processingのバックエンドとして最適だと思います。
Docker監視環境 - Part2: Riemannの構築
Docker監視環境 - Part1 cAdvisor, collectd, Riemann, InfluxDB, Grafanaで決めたアーキテクチャのPoCをしていきます。最初にRiemannを構築します。RiemannはClojureらしい分散システムの監視ツールです。似たようなストリーム処理のフレームワークにLaminaやStormがあります。Stormのようなクラスタでビッグデータを処理するほどでもなく、Do-it-yourself CloudWatch-style alarms using Riemannにあるような用途が主です。system metricsとapplication metricsの収集 ブラウザで可視化とクエリ実行 閾値を監視してnotificationやtriggerを実行 clostackを使ってCloudStackでオートスケールなんておもしろうそうです。
Docker開発環境をつくる - Emacs24とEclimでOracle Java 8のSpring Boot開発環境は失敗したのでOpenJDK 7を使う
Eclimを使いSpringBootを試すことができたので、もう少し開発環境を整えていきます。Webアプリの開発用にweb-modeなどEmacsパッケージを追加します。expand-region.elをはじめて使ってみました。最近の中で一番便利な気がします。大きな範囲のリージョン選択でキータイプが減ってうれしいです。これからはOracle Java 8に切り替えてモダンなJavaも勉強していきたいのですが、eclimdの起動に失敗してしまいました。仕方がないのでopenjdk-7-jdkのまま使うことにします。
EclimでSpring Boot入門 - Part1: Hello World
EmacsとEclimの開発環境ができたので、Spring BootのHello Worldを作ってみます。Eclimを使うとEmacsからEclipseに接続してサブセットの機能が使えます。Eclipseと連携したMavenも実行できるのでGUI環境でなくてもJavaの開発ができます。Spring Boot入門ハンズオンをテキストにしてモダンなJavaのWebアプリを学習していこうと思います。
Docker開発環境をつくる - Emacs24とEclimからEclipseに接続するJava開発環境
ClojureやMicro Servicesの学習のためにJavaを使う機会が増えました。OSvを使うとJavaだけで理想のアーキテクチャができそうです。以前Javaの開発ではEclipseを使っていました。auto-completeがないとJavaの開発はつらいです。その後RubyやPythonで開発するようになり、メインの開発環境はEmacsになっています。最近では開発はクラウド上のDockerコンテナ内でプログラミングをしているので、さらにGUI環境から遠くなりました。X11 forwardingでEclipseもおもしろそうですが、Eclipseをネットワーク接続してEmacsから使う方法を試してみます。