前回:未経験からの基盤構築挑戦記 第5回:Consul・ELK編
はじめに
第0回から第5回まで、無料の範囲で基盤構築の一通りを体験してきた。最終回として、シリーズ全体を振り返る。
こんな方におすすめ
- これから基盤構築系の学習を始めたい方
- 無料環境でどこまで実践的な経験が積めるのか気になる方
- シリーズ全体のダイジェストだけ読みたい方
やってきたことの一覧
| 回 | 内容 |
|---|---|
| 第0回 | サーバー・仮想化・クラウドの基礎知識を整理 |
| 第1回 | Google Cloud ShellでLinux環境を用意し、nginxを構築、GitLabでソース管理 |
| 第2回 | Terraformでnginxコンテナをコード化(IaC) |
| 第3回 | Puppetで、あるべき状態への強制復元を体験 |
| 第4回 | Vaultでシークレットの保存・バージョン管理を体験 |
| 第5回 | Consulで死活監視、ELKスタックでログ収集・可視化を体験 |
すべて、クレジットカード登録が不要なGoogle Cloud Shell上、無料の範囲で完結した。
無料環境でどこまでできたか
できたこと
- 主要なOSSツール(Terraform、Puppet、Vault、Consul、Elasticsearch、Kibana、Fluentd)を、実際にインストールして動かす
- 各ツールの基本的な思想(差分適用、強制復元、シークレット管理、死活監視、ログ収集)を、手を動かして体感する
- バージョン不一致やコマンドの仕様違いなど、実務でも起きる種類のトラブルシューティングを経験する
できなかったこと・制約として残ったこと
- Cloud Shellは環境が一定時間でリセットされるため、都度インストールし直す手間が発生した(裏を返せば、コード化された部分の復旧が容易だったことの確認にもなった)
- 実際の金融システムのような、複数のアプリケーション・複数台のサーバーが連携する大規模構成は再現できていない
- Vaultの動的シークレットのような、実際のデータベースと連携する機能は、練習環境の制約で体験できなかった
- Keycloak(認証基盤)は、他の要素との依存関係が複雑になるため、今回は扱わなかった
一番の収穫:「何のためにやっているか」が分かるようになったこと
手順通りにコマンドを打つこと自体は、比較的すぐにできるようになった。ただ、それ以上に大きかったのは、シリーズの終盤で改めて整理できた「全体の構造」だった。
- サーバーには「物理の土台」と「その上で動くソフトウェア」の2つのレイヤーがある
- nginxは「サイトやサービスへの入り口」という役割を持つソフトで、Terraform以下のツールは、その入り口(今回は最小構成)を作り・維持し・守り・見張り・記録するための、それぞれ独立した周辺の仕組みだった
- Terraformは「差分だけ変更する」設計、Puppetは「実行のたびに、あるべき状態へ問答無用で戻す」設計。同じ「コードで管理する」という考え方でも、ツールによって思想が違う
- パスワードや権限を細かく区切るのは、組織への不信からではなく、1箇所が突破されても被害を広げないための設計(最小権限の原則)
これらは、コマンドを覚えるだけでは分からなかった部分で、実際に手を動かしながら「これはなぜこうなっているのか」を1つずつ確認していく過程で、ようやく言語化できた内容だった。
まとめ
未経験の状態から、無料の範囲だけで、基盤構築の主要な要素に一通り触れることができた。今回の経験がそのまま実務の即戦力になるとは思っていないが、少なくとも「現場で使われている単語を聞いたときに、何の話をしているか見当がつく」という状態には到達できたはずだ。
次に似たような機会が来たときは、今回よりずっと有利なスタート地点に立てている。このシリーズが、同じように未経験から挑戦しようとしている誰かの参考になれば幸いです。