NRIネットコム Blog

NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

AWSサービスの迷路を抜けて ~新入社員のCDK奮闘記~

こんにちは。新入社員の宇都木です。
配属されて「CDKを使います」と言われ、「なんじゃそりゃ」と思った日から半年が経とうとしています。 今日まで一緒にやってきたCDKとの苦闘を振り返ってみようと思います。

AWS CDKってなに?

CDK(Cloud Development Kit)とは、コードを使用してインフラを構築するIaC(Infrastructure as Code)の1つです。
TypeScript、Pythonといったプログラミング言語でAWSリソースを定義してAWSアカウントへ展開できるサービスで、複数のAWSリソースを1つのファイルからデプロイ・管理することができます。

CDKを使う上でぶち当たった壁

CDKを使ってみて戸惑ったこと、苦労したことがいくつもありました。
CDKだけではなくTerraformやCloudFormationなどのIaCを使われている新人の方には「だよね!」、ベテランの方には「そんなこともあったな~」と共感いただけるのではないでしょうか。

セットアップの壁

まず、配属された人が一番最初につまずくのが、環境構築だと思います。
「手順通りにやったのに」、「周りの人はうまくいっているのに、自分だけうまくいかない」などはあるあるですよね。
私もその一人でした。

AWSが用意した手順書を元に、CDKのローカル開発環境のセットアップを行いました。インストールやコマンドなど記載のあるものはすべて指示通りに実施したにもかかわらず、問題なくスムーズに全部うまくいくなんてことはなく…
無慈悲にも出力されるエラーをネットで検索しては、上位のものから順に試していき、また違うエラーが出たらネットで調べて試してと繰り返していきましたが、依然としてうまくいきませんでした。

結局うまくいかないまま、環境構築を始めて1週間が経ってしまい、見かねた先輩にお力添えいただきながらも、原因究明に3時間弱かかりました。

最終的な原因は初期のエラーで試行錯誤して自分で設定したものが邪魔していたことでした。

わたしはこうするべきだった

その時の反省として、「どの設定をどう変更したかメモしておけば良かったな」と思います。

「今までどの設定を変えたの?」と聞かれても、その時の私は、ただネットの情報を元に動かすbotと化していたので、自分で何をいつの段階で変えたのか覚えていませんでした。

どこを変えたのかもっと早い段階で共有できていれば、もっとスムーズにセットアップが終わったなと今ながらに反省しています。早めの共有は大事

IaCの壁

環境が整って、やっとスタートラインに立ちました。これからが長い道のりです。

私はまだAWSについて赤子レベルなので、「このサービスを使って、こんな感じの構成で、こういう流れで動くようにCDKで実装して」と解説付きで仕事を振っていただいています。

話を聞き、「分かる!いけるぞ!」と奮起していざ、コードと相対してみると、どこのファイルにどうやって書くべきか、どこのコードから手を付けるべきか分からなくなり、悶々と悩むことがありました。

こういうものを実装したいという目的とこうやって実装していくという手段の間に大きな隔たりがあったのです。

先人の知恵をお借りしようと、ネットで実装方法を調べてみますが、そうそう簡単にCDKかつ同じ言語を使っていて、作りたいものが一致しているサイトが見かるなんてことはありません。同じサイトや検索ワードをループするような状態になっていました。

わたしはこうするべきだった

私はCDKはコードで管理するものだから、コードでどうにかしないとという思い込んでいたのです。
そういうときは、「ひとまずマネジメントコンソール上で作ってみる」ことで、目的と手段の隔たりを小さくなって、意外とスムーズに実装できます。

ネット上にはCDKで作成するサイトの何倍もマネジメントコンソール上で作成するサイトが存在し、目的と近いものや分かりやすいと思えるサイトも見つけやすかったりします。

一度作ってみて、完成したものを眺めてみると、目的が鮮明化し、どういう順序でどんな設定をするべきかという手段の細分化と道筋も立てやすくなります。

新入社員がAWS CDKを使ってみて

最初はCDKを使うと聞いて、知らないことだらけでやっていけるのか不安でいっぱいでしたが、なんとか今までやってこれています。 実際に使ってみて、CDKは試行錯誤がしやすくていいなぁと感じました。

CDKは自分用のスタックをデプロイできるので、他の人のリソースを書き換えてしまうことはありませんし、 コードを保管していれば、コマンド1つで自分のスタックの作成も削除も容易にできます。

動画を見たり、手順通りに実施するのもタメになりますが、自分の意思で動かしてみるときが一番身に付きやすく、記憶に残りやすいと思います。

これから

今現在でも、APIリファレンスの壁、AWS試験の壁などたくさんの壁にぶち当たっています。今までは満身創痍の状態でなんとか乗り越えていました。
これからはもっと軽やかに乗り越えるために、知識をつけて、考え、実践して学んでいき、装備を拡充していきます。

まだまだ、壁は幾度も立ちはだかってきますが、よじ登っていきましょう。

執筆者:宇都木夢香
ひよっこインフラエンジニア