エンジニアサポートCROSS 2014 に参加してきた

ブログを書くまでがイベントですよと言うことで書く!

Tech-Party CROSS

まずこのイベントを知ったのが、開催の二日前で facebook のウォールに流れてきて、楽しそうだなぁと思って参加を即決。なんとか仕事も落ち着いていたので、朝からフル参戦してきましたよ。

参加したセッション

  • 現場に聞く!テスト/CI/DevOps、実際のところどうなの
  • BaaS 一問一答 千本ノック
  • コードレビューCROSS 〜ぶつかり稽古 2014初場所
  • 技術書の未来はどっちだ!
  • クロスアンカンファレンス

ほとんどメモも取らずに聞き入ってしまってたので、それぞれのセッションの感想を書くのは難しいけど、僕自身が感じたこと、今後に活かしておきたい事を書こうと思う。

  • テストを書くことの意識向上
  • CIツールを導入したい
  • コードレビューもやっていきたい
  • github でもっとアウトプットしたい
  • pull request もしていきたい
  • 転職したい!

休憩時間では、CodeIQ の問題にチャレンジしておにぎりと限定キットカット、そして巫女さんにお祓いしてもらった!今年はなんかいい年になる気がする。いやいい年にする!

あと、たまたまイベント会場で前職の後輩にも会って話をする機会もあった。声を掛けられた時は、顔は知ってる声も聞いたことがある。でも、名前が出てこなくて本当にごめんなさい。一人で参加してたから会話が出来て本当に楽しかったです。

最後に2014年は今まで以上に技術系のイベントに参加していこうと思う。

インフラエンジニアの教科書読了

タイムラインに「インフラエンジニアの教科書」が流れてきて興味があったので、買って読んでみた。

インフラエンジニアの教科書

インフラエンジニアの教科書

仕事の合間に時間を見つけて、2日で読了したので感想を書いてみる。

まず感じたのは、ページ数にして180ページくらいの薄い本に、インフラエンジニアの業務領域であろう内容が網羅されているということですね。当然インフラエンジニアとして仕事をしていくためには、実作業の経験をしていく必要があります。しかしながら、入門書として知識の整理として読むには最適だと思います。

個人的に良かったところは、データセンタやネットワーク機器(レイヤは違うけど)等の選択方法の考え方が学べたのが大きい。エンジニアとして業務に携わっているが、この手の経験がなかったり少なかったりする。低いレイヤの経験も少ないので、座学として知識を入れることが出来たのも大きいと感じている。

私は2日かけて読んだけど、集中して読めば2時間程度で読みきれそうなくらい読みやすいです。個人的には自信を持っておすすめできます。

PSGI 化に踏み切った

最近の業務でPSGI 化に踏み切った。その際に導入したこと等をメモとして残しておく。
レイヤの違うものも混ざるけどあまり気にせずに。

  • Amon2
  • Teng
  • Text::Xslate
  • Cinnamon
  • Starlet
  • supervisor
  • orepan

新規の開発案件で PSGI 化することに舵を切って何とかやりきったのは個人的に大きい。まず、開発スピードが段違いに上がった。以前は CGI::Application が好きでよく使ってたけど、それ以上に開発がさくさく行ったね。


デプロイに関しては、当初は Capistrano を導入しようと思って色々触っていたのだけど、個人的にはちょっと仕様が大きくて、Cinnamon を使うのに落ち着いた。今のところ機能としては必要十分で満足している。


今後、導入していこうと考えていることについてもまとめておこうと思う。
こちらもレイヤの違うものも混ざるけど気にしない。

  • nginx
  • redis
  • Fluentd
  • GrowthForecast
  • Carton
  • serverspec
  • chef

少しずつ自分のペースでやっていこうと思いまふ。

CentOS 6.4 に Python 2.7.5 をインストールした

pythonbrew でも pyenv でもなく単純なソースコンパイルで入れた。これはその時のメモである。

なぜ Python 2.7.5?

Python 3 系ではなく 2.7.5 を入れた理由はただひとつ、supervisord が非推奨だったからだ!実は、Python 3.3.2 をインストールしてみたんだけど、supervisord にそのバージョンはダメよ的なことを言われて、しょんぼりしながらバージョンを落としたのである。

ライブラリ群

Python 3.3.2 をインストールする際に入れたものなので、実際には必要ないものも含まれているかもしれない。

% sudo yum install zlib-devel \
 openssl-devel \
 readline-devel \
 ncurses-devel \
 sqlite-devel \
 expat-devel \
 bzip2-devel \
 tcl-devel \
 gdbm-devel \
 libbsd-devel

コンパイル & インストール

淡々とコマンドを貼っていく。

% wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2
% tar xpvf Python-2.7.5.tar.bz2
% cd Python-2.7.5
% ./configure --prefix=/usr/local/python-2.7 --enable-shared
% make
% make test
% sudo make install

その他諸々設定

シンボリックリンクを張っておく方が使いやすいと思う。

% sudo ln -s /usr/local/python-2.7/bin/python /usr/local/bin/python

パス通しもしておく。

% sudoedit /etc/ld.so.conf
/usr/local/python-2.7/lib

% sudo ldconfig

easy_install

ついでなんで、easy_install のインストールもしておく。途中エラーになったりしたので、無駄な手順もあるかもしれないけど、それも含めてメモとして残しておく。

% wget https://pypi.python.org/packages/source/d/distribute/distribute-0.6.49.tar.gz
% tar xpvf distribute-0.6.49.tar.gz
% sudo /usr/local/bin/python distribute-0.6.49/setup.py install
% sudo ln -s /usr/local/python-2.7/bin/easy_install /usr/local/bin/easy_install


なんかエラーが出たので↓を実行したら直った

% cd distribute-0.6.49
% sudo /usr/local/bin/python distribute_setup.py

なぜ、エラーが出てこれで直ったのか原因は調べてないので、分かったら追記しようと思う。

CentOS(6.4) に daemontools をインストールした

PSGI なアプリを運用するにあたり、落ちた時に自動起動して欲しいなと思うわけです。そこで daemontools を導入しようと考えている。runit や monit 等同様なツールもあるわけだけど、 ネットで調べる限りだと daemontools での運用実績はかなり多そうなので良さそうかと思ったのだ。

インストール手順

何はともあれインストールしないと始まらないし、さくっとインストールしてみる。
パッチを当てないとコンパイルに失敗するので、併せてダウンロードしておこう。

本体&パッチのダウンロード

% wget http://cr.yp.to/daemontools/daemontools-0.76.tar.gz
% tar xpvf daemontools-0.76.tar.gz
% cd admin/daemontools-0.76
% wget http://qmail.org/moni.csi.hu/pub/glibc-2.3.1/daemontools-0.76.errno.patch

パッチ適用&コンパイル

% patch -s -p1 <./daemontools-0.76.errno.patch
% ./package/compile

このままインストールすると /command にシンボリックリンクが張られて、そこからさらに /usr/local/bin にシンボリックが張られるのだが、気持ち悪いし直接 /usr/local/bin にインストールする。

svscanboot の設定に /command の記述があるので、/usr/local/bin に修正しておこう。他のファイルも同様に修正しておくとよい。

% cd command/
% sudo install -o root -g root -m 0755 -s envdir /usr/local/bin
% sudo install -o root -g root -m 0755 -s envuidgid /usr/local/bin
% sudo install -o root -g root -m 0755 -s fghack /usr/local/bin
% sudo install -o root -g root -m 0755 -s multilog /usr/local/bin
% sudo install -o root -g root -m 0755 -s pgrphack /usr/local/bin
% sudo install -o root -g root -m 0755 -s readproctitle /usr/local/bin
% sudo install -o root -g root -m 0755 -s setlock /usr/local/bin
% sudo install -o root -g root -m 0755 -s setuidgid /usr/local/bin
% sudo install -o root -g root -m 0755 -s softlimit /usr/local/bin
% sudo install -o root -g root -m 0755 -s supervise /usr/local/bin
% sudo install -o root -g root -m 0755 -s svc /usr/local/bin
% sudo install -o root -g root -m 0755 -s svok /usr/local/bin
% sudo install -o root -g root -m 0755 -s svscan /usr/local/bin
% sudo install -o root -g root -m 0755 -s svstat /usr/local/bin
% sudo install -o root -g root -m 0755 -s tai64n /usr/local/bin
% sudo install -o root -g root -m 0755 -s tai64nlocal /usr/local/bin
% sudo install -o root -g root -m 0755 svscanboot /usr/local/bin

/service ディレクトリを作成する。

% sudo ./package/run

Upstart の設定をする。

% sudo vim /etc/init/svscan.conf
start on runlevel [12345]
respawn
exec /usr/local/bin/svscanboot

起動する

% sudo initctl reload-configuration
% sudo initctl list
% sudo initctl start svscan

これで daemontools が使用できるようになった。
と、daemontools のインストールをしておいてなんだが、supervisor を使ってみたいと今思ってる。