雑感20190220

Posted on

近況など。

お仕事ではWebアプリケーションのフルリニューアル(フロントエンド/バックエンド全体のフレームワーク/アーキテクチャ変更を含む)が続いており、忙しくしております。

忙しいといってもここ最近は現場の残業NGな雰囲気も手伝って表向きは(?)クリーンなもんです。

個人的にはやるときはガッとやりたいタイプなので、残業できないのはそれはそれでつらいのだけれど。まぁそれならそれでその余剰時間を他に有効活用しましょうということで。


さてその余剰時間でなにをやっているかというと、半分仕事、半分趣味でもっぱらDocker/Kubernetesの勉強をしています。

ちょうど社内システムの移行話が持ち上がったこともあり。
昨今いよいよ避けて通れなくなってきたDockerやKubernetesといったコンテナ仮想化/コンテナオーケストレーション、いつやるの?いまでしょ!(古い)
というわけで検証をやってみているわけです。

で、やってみるとこれがなかなか奥が深い。

DockerやDocker-Composeといったあたりまではそこまで難しくないけれど、オーケストレーション(Kubernetes)に入ると途端に複雑度が増してくる。

今回扱っているシステムは

  • apache + cgi + DB(mysql)で動く、いわゆるWeb3層システム
  • 会議室システムや社員間のスケジュール調整システムなど、計10個のサブシステムから構成される

といったもので、いまやっていて感じている難しさは主に、

  • ローカル開発環境のためのdocker/docker-compose、ステージング環境/本番環境のためのKubernetesで扱うツールや構成単位が変わり、それらの整合性を取らないといけない(一貫した設計方針でないとそれを扱う人たちが理解できない=だれも使わない。またローカルと本番で同じコンテナが動かなければコンテナを使う意味がない)
  • docker, docker-compose, kubernetesで似たような用語が交差して混乱する
  • いきなりdocker-compose、いきなりkubernetesから手を付けようとして混乱死する。(docker->docker-compose->kubernetsとちゃんと定石を踏みながら学び進めるのが吉。これに限った話ではないがやってしまいがち)
  • docker, Kubernetesは特にそうだと感じるが、今まさに盛り上がっている(成熟している)時期で、開発速度が早く、ツールや構成ファイルのバージョンに気をつけないといけない。特にWeb記事など参考にする機会が多いがどのバージョンを対象にしているか気をつけないと混乱する
  • Kubernetesの難しさは、主に勉強のために手元で動かす環境の構築が面倒で実際に動かしながら勉強するところまでいくのが一苦労だったり、クラウド(GCP/Azure/AWS)のマネージドサービスとの連携の部分のごにょごにょ(IAMなどの権限管理、CLIコマンドなど)によるところが大きいと思う。特にいまAWSで構築を検討しているけどAWSは一番面倒&&値段も高い?気がする。GCP使いたい…
  • KubernetesそのものはPod/ReplicaSet/Deploymentなどの似たような概念やそれらを”リソース”として抽象化して扱うところが少しコツがいるけれど、そこまで難しくない。やはり上記の通り面倒な環境構築やクラウドあれこれがKubernetesを複雑に見せている気がする
  • あと純粋にシステムの運用設計はDockerやKubernetsに限らず難しいというところはあるかと思う。自分は特にアプリケーションエンジニアなのでインフラ周りの勘が鈍い。ネットワーク難しい

といったところ。

3月には社内で勉強会をやる予定なので、そこに向けた資料は(見せられる範囲で)ブログ等でも公開できればと思っている。


まとめると今日も私は元気です。

ではでは。