AWS使いがAzureの現場に放り込まれて、クラウドの「方言」に苦しんだ話
2020年の秋、物流会社の配車システム構築案件に参加した。
言語はJavaとSpring Boot。
体制は10名ほど。
私の主な役割は、開発環境の構築と、Dockerコンテナのデプロイ方法の確立だった。
ここまでは、よくある話である。
問題は、クラウドだった。
Azureである。
当時の私は、完全にAWS漬けの人間だった。
EC2、Lambda、S3。
AWSのサービス名なら、寝ていても出てくる。
一方、Azureはほぼ初めてである。
それでも、正直こう思っていた。
「クラウドなんて、一つ知っていればだいたい同じでしょう」
この考えが甘かったという話を、今日はしたい。
概念は同じ。名前が全部違う
Azureを触り始めて、最初に気づいたことがある。
確かに、概念はだいたい同じなのである。
仮想マシンがあって、オブジェクトストレージがあって、サーバレスの実行環境があって、キューがある。
クラウドの解剖学は、AWSもAzureも変わらない。
ただし、名前が全部違う。
LambdaはFunctions。
S3はBlob Storage。
SQSはQueue Storage。
ECRはContainer Registry。
EC2に相当するものは、App ServiceやらVMやら、文脈によって顔を変える。
私は頭の中に「AWS→Azure翻訳辞書」を作って、いちいち変換しながら仕事をすることになった。
「これ、S3に置きましょう。あ、いや、Blobに置きましょう」
会話のたびに、脳内で辞書を引く。
外国に行った初日の、あの疲れ方である。
「だいたい同じ」が一番危ない
名前の変換だけなら、まだよかった。
数週間もすれば慣れる。
本当に苦しんだのは、微妙に思想が違うところだった。
たとえば、リソースの管理単位。
Azureには「リソースグループ」という概念があり、すべてのリソースはどこかのグループに属する。
AWSで言えばタグ運用に近いが、近いだけで、同じではない。
権限まわりも、Active Directoryの世界が土台にあって、IAMの感覚で触ると微妙に噛み合わない。
ポータルの画面構成も、AWSコンソールとは設計思想からして違う。
まったく違う技術なら、人は最初から謙虚に学ぶ。
厄介なのは「だいたい同じ」ものである。
分かったつもりで進んで、細部で足を取られる。
方言だと思って聞いていたら、実は文法が違う言語だった、という感じだ。
大阪弁のつもりで聞いていたら韓国語だった、くらいの落差が、たまに来る。
本業はコンテナのデプロイだった
この案件での私のミッションは、DockerコンテナをAzure上でどうデプロイするか、その方法を確立することだった。
コンテナ自体は、クラウドを選ばない。
Dockerfileは、AWSでもAzureでも同じように書ける。
コンテナという技術のありがたみを、私はこのとき一番感じた。
アプリケーションを箱に詰めてしまえば、箱の運び方だけ考えればいい。
Container Registryに箱を置いて、それをどう本番に運ぶか。
CI/CDの流れをどう組むか。
そこだけがAzure固有の勉強だった。
もしコンテナがなかったら、環境構築のすべてをAzure流で学び直すことになっていたはずである。
クラウドの方言に苦しみながら、方言の影響を受けない共通語のありがたさを噛みしめていた。
2つ目のクラウドが教えてくれたこと
この案件は2ヶ月ほどで終わり、私はまたAWSの世界に戻った。
ただ、戻ってから気づいたことがある。
AWSの見え方が、変わっていたのである。
それまでの私は、「S3」や「Lambda」という製品名で物事を考えていた。
Azureを経験してからは、「オブジェクトストレージ」「サーバレス実行環境」という概念で考えて、そこにAWSの製品名を当てはめるようになった。
つまり、本質と製品名が、頭の中で分離したのだ。
外国語を勉強すると、母語の文法に初めて気づく、とよく言う。
あれと同じである。
クラウドを一つしか知らないうちは、その仕様が「クラウドの常識」なのか「そのベンダーの都合」なのか、区別がつかない。
二つ目を触って初めて、どこまでが共通語で、どこからが方言なのかが分かる。
この感覚は、その後の設計の仕事で、ずいぶん役に立った。
で、その後Azureは使ったのか
ここまで良い話風にまとめてきたが、白状しておく。
この案件のあと、Azureの案件は、ほぼ来ていない。
私の脳内のAWS→Azure翻訳辞書は、使われないまま埃をかぶっている。
たまにAzureの話題を見ると、サービス名がまた変わっていたりして、辞書の改訂すら追いついていない。
マルチクラウドの時代と言われて久しいが、現場の人間は、結局どこか一つの村の住人である。
それでも、あの2ヶ月を後悔はしていない。
隣の村の言葉を一度でも話したことがある人間は、自分の村の言葉を、少しだけ疑えるようになる。
エンジニアの学びというのは、案外そういうものだと思っている。