はじめに

プラットフォームを維持することは難しい.

一部の方には何を今更と言われるかもしれないが,この記事の方向性を示すためにもこの”難しい“について説明したい.

背景

現代のソフトウェア開発,インフラ管理のために使用されているツールは多様だ.サーバ本体はVMやコンテナ等複数の仮想化レイヤーを有しており,ソフトウェアもGit等を利用してバージョン管理するようになった.環境によってはリポジトリをローカルに構築しているかもしれないし,コードをプッシュしたときには、自動的にリリースを行うためのパイプラインが設置されているかもしれない.

クラウドネイティブにまつわる数多くのソフトウェア

これらのツール、仕組みは使いこなせば強力で、リリーススピードを向上させるだけでなく人的ミスを減らしたり、障害からの復旧速度に良い効果を及ぼすだろう.

しかし私の周囲ではそれらが維持できないという問題が発生している.

以下の例は特に新たにそのプロジェクトに所属した人を想定しているが,

  • 例えばコンテンツが配置されているVM,コンテナが分からない.
  • 例えばソフトウェアをGithubに管理したとして,実際に存在するソフトウェアとリポジトリの関係が分からない.
  • 例えばArgoCDを構築したとして,その管理画面へのアクセス方法が分からない.

などなど…多くの分からないことが発生する.

開発環境が分からない…

これに対して「いやいや,普通そういう時は引継ぎ資料を作るよ」と思うかもしれない.

そんな人に,私の所属する研究室の事例を一つ.

私の所属する研究室では後期から3年生が参加する.その3年生には基本的に4年生引継ぎを行う.つまり引継ぎに充てられる時間は半年になる.
さらに言えば3年生の時点でも研究活動を開始するためもっと短い.

有志で集まったプロジェクトなど,入れ替わりの多い企画でも同等の事象が発生するはず.

更にこの状態は,1度でも引継ぎに失敗した場合にその技術が完全に失われてしまうという問題を引き起こすのだ.

コロナの影響を大きく受けた高校の部活などでは実際にこのような問題が発生し,知識が失われてしまった(Togetter).
私の知る限りこの状態は属人化と呼ぶはずだ.

ここまでの説明で情報は実体よりも簡単に失われるということが伝わっていたら嬉しい.

本題

さて,一度実体の話に戻そう.今日ではSREの発展によりサーバの可用性が強固に維持されてきた.
デプロイの手順は自動化され人的ミスは削減,IaCによって宣言的に作成されたインフラ環境は回復力を生み出し,さらに自動回復不能な障害が発生したときには迅速に管理者に通知が飛び,速やかに対処が行われる.

これはインフラに対して強い信頼を与えた.

しかし前述のとおり情報は脆い.これはまるで情報の可用性が強い信頼の足を引っ張っているように感じられる.

さてこの情報の可用性だが,これに対して私はあるエンジニアリング手法が対処を画策していると考えている.
それがプラットフォームエンジニアリングである.

プラットフォームエンジニアリングと情報

私はプラットフォームエンジニアリングの専門家ではないためこれからの内容でミスリードをしてしまったら申し訳ない.もしミスがあれば私のTwitterのDMでそれとなく教えてほしい.

プラットフォームエンジニアリングについて調査したところCircleCIさんのブログが見つかった.

https://circleci.com/ja/blog/what-is-platform-engineering

このブログによると,プラットフォームチームには内部開発者プラットフォーム(IDP)という仕事があるらしい.
これは,アプリケーションの管理を抽象化し,開発とデリバリーを高速化する効果があるそう.
更に重要なのは開発者にリソースをセルフサービス形式で利用できるようにすることだ.

このIDPは正に情報の可用性に寄与していると考える.
開発者が特殊な訓練なしにリソースを使用できるのならば,それはもはや引継ぎからの脱却を意味するだろう.

これからは情報の可用性のためにプラットフォームエンジニアリングが重要だというのが現時点での私の結論だ.

情報の維持に対する苦悩

これ以降はタイトル回収のための完全な私の悩み事となる.具体的な解決策はもう提示されていないため,答えを求めてこの記事へたどり着いた方はこれ以降読む必要はない.

予防線を張ったところで,私が現在情報の維持に悩んでいることについて.
あわよくば誰かの研究テーマになってくれると嬉しい.

ここまでの内容で,情報の維持にはセルフサービスが大切だとまとめた.しかし,このサイトの運営者は現在私一人だ.

当然私とは別に私がプラットフォーム専属チームを立ちあげることはできない.
私のクローンを作るという非現実的な解決策は置いておくとして,開発のためのサービスを私が運営したとしても,それは維持すべきサービスが2つに増えることを意味する.だからと言ってクラウドサービスを利用するのは少々お高い.VRゴーグルとか欲しいし,バイト代をすべてサーバに投入する勇気はない.

プラットフォームエンジニアリングのエッセンスだけでも個人開発に適用できる,そんな頭のいい方法があればなぁと思いつつ日々を過ごしている.

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA