そんな今日この頃でして、、、

コード書いたり映画みたり。努力は苦手だから「楽しいこと」を探していきたい。

Dockerを本番投入した話

このまま忘れてしまうのも勿体無いので記録に残しておこうかなと。

blue1st.hateblo.jp

技術系のネタは最近は別ブログの方でやってたけど、具体的なコードなんかは無いので今回はこっちで。

blue1st-tech.hateblo.jp

思い出した・思いついたら随時追記していく予定。


概要

フィーチャーフォンの時代からのサービスで、 無茶な拡張や教育不足や委託によるアレな開発状況によって、 コードも環境も技術的負債が山盛りの状態だった。

幸いにしてサーバを移設する機会に恵まれたので、 状況を改善するべく検討を進めた。

解決したかった問題

様々な部分において、環境ごとの差異が看過できない状態になっていた。

サーバによってインストールされているランタイムやモジュールのバージョンが異なることもあれば、 パスが異なることをコードにベタに記述してバージョン管理しないことにより対処している部分があったり、 そもそも環境によって同名のスクリプトの内容が書き換えられていたり。

バージョン管理ももはや正しく機能していなくて、必要なファイルだけ明示的に本番環境に上げるような綱渡りな運用になっていた。

おそらくリアルタイムでは、「急いで対応しなきゃいけないから仕方ない、後でちゃんと揃えよう」とかなんとか考えていたのかもしれないが、 往々にしてそういう意識は長続きしないもの。

結果として、どのサーバ環境での挙動が「正」なのかも分からない状態となっていた。

こうなってくると新たに環境を構築するのも困難だし、 リリース前の検証作業も不確実なものとなってしまう。

Dockerの導入

もちろんそれぞれ個別には対処法はあるにはあるんだけど、 それを全て長期的に完全に徹底していくことは困難なように思えた。

個人的には「気をつければ」とか「ちゃんと確認すれば」とかいった前提で成り立っているような運用というのは即ち無用にリソースを消費している状態なので、 今問題ないからといって看過すべきではなくすぐにでも改善すべきだと思っている。

そういったストレスを抱えながら開発運用していくよりも、 Dockerを用いた「可搬性ある形」を前提として使い方を習得してもらうほうが現実的で長期的なメリットもあると考え導入に踏み切ることにした。

(とはいえ、僕が使いたかったから理由を揃えて押し切ったという側面はちょっとある。 退社時期的にちょっと申し訳ない気もしている。)


続きを読む

Consulに自動でDockerコンテナのサービスを登録する

ここのところすっかりマイ・フェイバリット・ツールなConsulとDockerの話題。

blue1st.hateblo.jp


別件を色々調べてたんだけど、なんだか便利なものを見つけたので。

Registrator

大雑把に言えば、ホスト上で起動しているコンテナの情報を読み取って、 うまい感じにConsulのAPIを通じてサービスを登録してくれるツール。

続きを読む

技術書『プログラマのためのDockerの教科書』感想

これまでウェブの情報を中心に使っていたけれど、 そろそろ実際のプロダクトでも使いそうな雰囲気が出てきたので、 ここいらで書籍としてちゃんと固まったものを一冊ぐらい持っておこうということで買ってみた。

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化

プログラマのためのDocker教科書 インフラの基礎知識&コードによる環境構築の自動化

「教科書」と銘打っているだけのことはあり、 なぜ今これだけDocker界隈が盛り上がっているのかという他のVMとの比較や技術的な背景の説明から マシンへの導入や実運用には欠かせない監視、 そして実際の運用を行う上で検討対象になりうる各種クラウドサービスまで手広く抑えている。

ことに導入編と銘打たれた第一部では、 Dockerの話以前のインフラを考える上で必要な基礎知識の部分にまで解説されているあたりが 「プログラマのための」の部分なのだろう。

続きを読む

GitLab CIをDockerで導入してみた

業務じゃ運用っぽいことやってるくせにCI(継続的インテグレーション)まわりを全然カバーできてないのはそろそろ恥ずかしいので、 自宅サーバで色々動かして勉強してみようという試み。

(以前に軽くJenkinsはさわったことあるけど、スペックとかの問題でまともには運用できてなかったんだよな・・・)

今回導入してみたのはGitLab CI

会社でも自宅でもプライベートリポジトリとして利用しているGitLabなのだが、 都合が良いことに8系からはCI機能が統合されたらしい。

GitLabのCI機能を使うためにはあとはRunnerというビルド等を行う側を用意さえすればよいのだが、 こちらも幸いなことに本体同様にDockerイメージがある。

blue1st.hateblo.jp

そんなわけで、先日のGitLab本体に加えてGitLab CIもDockerで動かしてみることにした。

続きを読む

自宅サーバのOSを入れ替えた

自宅サーバとしてN54Lを購入してからおよそ三年。

blue1st.hateblo.jp

セットアップした当時とは色々と状況が変わったこともあり、 これまでCentOS6系で運用していたものをUbuntu15系にしてみた。

そんなわけで色々メモ的なやつをば。

続きを読む

Dockerのプライベートリポジトリを立てる

またDockerまわりを色々いじる機会があったのでメモ。

ホスト一台だけで使うだけならともかく複数台ホストがある環境で運用しようという場合、 プライベートリポジトリを立ててそこから各ホストにイメージを配信したくなる。

幸いにしてプライベートリポジトリ自体がイメージとして配布されており、 鍵を用意して適切に設定することにより簡単にプライベートリポジトリを立てることができる。

docs.docker.com

続きを読む