2024.12.10
“放置系”なのにサイバー攻撃を監視・検知、「統合ログ管理ツール」とは 最先端のログ管理体制を実現する方法
アンチCDKだったわたしが「CDK、できる・・」と思ったところ(全1記事)
リンクをコピー
記事をブックマーク
岡智也氏:それでは、「アンチCDKだったわたしが『CDK、できる……』と思ったところ」ということで、岡からプレゼンします。
岡と申します。今日は、個人として参加しており、私が話したことや資料の内容は、所属する組織とはなんら関係ありませんので、あらかじめご了承いただければと思います。
まず、「アンチのくせにCDKカンファレンスにお前は何をしにきたんや」というところなんですけれども。やはり歳を取ってくると、新しいものが出てきた時に、おっちゃんは拒否したくなっちゃうんですよね。
あれこれ理由をつけて、まずは否定から入るみたいなところありますよね。例えば「CDK?」「もうCloudFormationとか、Terraformとかあるし、なんでそんなの使わなあかんの?」とかですね。
あと「え? TypeScriptやPythonでコード書くの?」「それ保守で引き継ぐ時メンテできんの?」みたいな、そういうツッコミをしたりとか、「CloudFormationとかTerraformと比べるとネットの情報は少ないじゃないですか。なにかトラブルが起きたらどうするんですか?」とか、「え? アプデでちょいちょい言語仕様変わる? そんなもん怖くてProductionで使えるかよ」みたいに、否定しちゃうわけですよね。
やはり経験だけは多いんで、それっぽい理由をつけるんですが、単に面倒くさいだけというケースが多かったりもします。
アンチの類例ですね。「AWSのサービスアップデート怖い病」というので。これ、僕も罹っているのですが、歳を取ってくると、AWSの新しいサービスや新機能が発表されても、クイックにサササッと動かすのができなくなってくるんですよ。
今週、(※登壇当時)LambdaのURLを生やせるアップデートが出たじゃないですか。そういうアップデートが出ると、「あ、いかん! これはキャッチアップして実践投入できるか確認しなくては!」と思うんですけど、「でも試す時間がない!」とか言って、強いストレスを感じるわけですね。でもTwitterをやる時間はあったりするわけですよ。
なので、歳を取るといろいろと良くないということで、このCDKも試そう、試そうと思いながらずっと怠けていたわけです。
ここから本題ですね。CDKと私との邂逅(かいこう)。「邂逅」という言葉を使いたかっただけですが、ある神本が出たんですよ。
『AWS Cookbook』。『AWS Cookbook』ですよ、みなさん。実は、O'REILLYのCookbookシリーズのAWS版が出たんですよ。しかも見てくださいこれ、2021年の年末に出たんですね。だから最新版なんですよ。
著者のお二人は、実はAWSの中の人だそうです。なんと、JAWS-UGの名誉顧問、Jeff Barrさんがはしがきを書いているということで、もうこれは買わざるを得ないということで、買いました。リンクをここに貼っておきます。
これを買ったんですが、お値段がぜんぜんかわいくないんですね。1万円近くするんですよ。高いと思ったんですが、試し読みしたら中身がメッチャ良くて、思わず買ってしまいました。
これはCookbookなので、例えばセキュリティ、AWSのAIやMachine Learningのサービスなど含めて、AWSを活用するためにやりたいことの単位でレシピが書かれているんですね。AWS CLIやシェル、bashかZshで実行できるようにCookbookが書かれているんですよ。メチャクチャ読みたくなったでしょう?
CLI実行する前提でこのレシピを試すために、AWS上に環境構築が必要になるものがあります。その環境構築のためのIaCのコードがCDKだったんです。v2で、しかも僕が使いたいPythonだったんですよ。
なぜPythonを選んだのかはわからないので、大村さん(※大村幸敬氏)か沼口さん(※沼口繁氏)、著者に聞いてみてください。GitHubで、Pythonのコードが公開されているんですよ。
ソースも公開されていて、本の中身も書いてあるので、「なんだこれ。本を買わなくてもよかったじゃん」と思ったんですけど(笑)。まぁいいんです、いいんです。すごくいい本なのでいいんです。けっこう内容がいいので、「これだったらちょっとCDKをやってみようかなー」と思って、手を出しました。
というのが僕とCDKとの出会いです。この本の出版年月日から逆算してもらうと、僕がCDK素人であることがわかってもらえるかと思います。
CDKを実際に使ってみる前のイメージと認識について。僕も仕事でAWSを使っているので、CDKがサポートする、プログラミング言語があるとか、CloudFormationやTerraformと比べると、コード量が少なくて済むとか。条件分岐みたいなものは当然TypeScriptやPythonで書けるから、自由度が高いんだろうとか思っていたのですが、「その他のメリットってなんなのかしら」と思っていました。
さっきの『Cookbook』のレシピをGitHubからプルしてくれば、若干前準備は要りますが、試せます。コードを読んでいて、CDKがサポートするプログラミング言語の経験が要るかどうかというと、正直そうでもないなと感じました。
オブジェクト指向を駆使して、環境差異を吸収するみたいな、書き方もできますが、大村さん(※大村幸敬氏)の講演にもあったとおり、Constructを並べていくだけでもけっこうな処理ができるので、言語の経験はそんなに要らないだろうなという感じがしました。
あと、CloudFormationやTerraformと比較するとコード量が少なくて済むというのはそのとおりだと思います。また、繰り返しや条件分岐など、メッチャ使うコードも書けると思いますが、むしろいい意味で型にはめようとしているなという印象を持ちました。
その他のメリットは、これですね。やはり「CDKはOSSである」という点が大きいので、そういう貢献できるというのが一番大きいのかなと思いました。(スライドを示して)この後述のところは、ちょっと説明します。
まず、いい意味で型にはめようとしているというところですが、AWSではプラクティスになっている実装があるじゃないですか。例えばプライベートサブネットからインターネットに出る時は、NATゲートウェイをサブネットに置いて、そこを経由してインターネットに出るとかあるじゃないですか。そういうのはこのEC2の、「PRIVATE_WITH_NAT」という宣言をするだけで、いい感じに作ってくれるんですよ。
ほかにも、そのサービスを利用するうえで自明な作業については、抽象化されているんですね。先ほど渡邉さん(※渡邉洋平氏)のお話の中にもあったように、ECSでアプリ公開する時は、普通前段にALBを置きますよね。そういうのはもうecs_patternsとして定義されていて、少ないコード量で書くとecsのクラスタも、そのためのALBもできるしということで、すごく抽象化されています。
これはまだ発展途上なので、今全部を任せられるかと言ったらそうではありませんが、この方向性で進化していけば、もしかしたら「とりあえずCDK」で、今は存在しないナンタラというソリューションを使っておけば、基盤はOKみたいな感じになるんじゃないかなと、期待をすごく持ちました。ぜひそうなってほしいなと思っています。
やはり、AWSを使って基盤を作る時のデザインパターンはもういっぱいあるじゃないですか。ビジネスドメインで業務の違いはありますが、インフラレベルでそんなに差が出るかなとずっと思っています。
先ほど、大村さん(※大村幸敬氏)が発表された、すばらしい「BLEA」とか、そういう大ヒットプロダクトが出て、「AWSのインフラはこれを使っておけばセキュアだし、ベストプラクティスがあらかじめ反映されているし、みんながこぞってオープンソースで更新してるし」みたいな、そういう世の中が来るんじゃないかなというのを、CDKは感じさせてくれました。
「CFnではできなかったこと」。CloudFormationは、正直AWSのアップデートを待つ必要がありましたよね。でもCDKは、気に入らない部分や足りない部分があると思ったら、Construct Hubとかで自分で書けばいいんですよね。
僕もおっさんですが、「まずはお友だちから始めましょう」ではありませんが、ちょっとタイポを修正してみるとか、そういうところから貢献をちょっとしてみようかな、ブログを書いて情報発信していこうかなと思いました。
あとOSSというところで、これを言うと怒られるので冒頭に「個人の発表です」と言ったのですが、AWSにはBabelfishとかBottlerocketとかFirecrackerとか、諸々あって、他のクラウドを使っている人から「AWS、ちょっとただ乗りしているんじゃないの?」みたいなことをちょっと言われる時があるんですね。
ほら、Googleは、MapReduceとか。KubernetesはもともとBorgとかありますもんね。CDKTF(Cloud Development Kit for Terraform)とかですね、CDK8s(Cloud Development Kit for Kubernetes)とか出ているようなので、オープンソースとしてCDKが盛り上がるように、僕もなにかできればなというふうに思いました。
まとめです。食わず嫌いは良くないということで、否定する前に手を動かしましょう。この『AWS Cookbook』は神本なので、みなさんに買ってもらいたいですが、内容はGitHubで読めるので、ぜひ読んでください。
CDKはハードルが高そうですが、初めのところは大丈夫です。ただ、やはりProductionで利用に耐え得るコードを書こうと思うとハードルは高くなってくるので、そこはご注意ください。
先ほど、抽象度が高い、型にはめようとしているという話をしましたが、これはまた良し悪しがあります。自分が意図していなかった設定が勝手にされたりする可能性はあるので、ピアレビューやCIで静的解析ツールなどを使ってチェックするのは必須だなと思いました。
あとCDKはオープンソースなので、みんなでがんばって盛り上げていく必要があるなと思いました。私の発表は以上です。ありがとうございました。
関連タグ:
2024.12.10
メールのラリー回数でわかる「評価されない人」の特徴 職場での評価を下げる行動5選
2024.12.09
10点満点中7点の部下に言うべきこと 部下を育成できない上司の特徴トップ5
2024.12.09
国内の有名ホテルでは、マグロ丼がなんと1杯「24,000円」 「良いものをより安く」を追いすぎた日本にとって値上げが重要な理由
2023.03.21
民間宇宙開発で高まる「飛行機とロケットの衝突」の危機...どうやって回避する?
2024.12.10
職場であえて「不機嫌」を出したほうがいいタイプ NOと言えない人のための人間関係をラクにするヒント
2024.12.12
会議で発言しやすくなる「心理的安全性」を高めるには ファシリテーションがうまい人の3つの条件
2024.12.06
嫌いな相手の行動が気になって仕方ない… 臨床心理士が教える、人間関係のストレスを軽くする知恵
PR | 2024.11.26
なぜ電話営業はなくならない?その要因は「属人化」 通話内容をデータ化するZoomのクラウドサービス活用術
2024.12.11
大企業への転職前に感じた、「なんか違うかも」の違和感の正体 「親が喜ぶ」「モテそう」ではない、自分の判断基準を持つカギ
PR | 2024.11.22
「闇雲なAI導入」から脱却せよ Zoom・パーソル・THE GUILD幹部が語る、従業員と顧客体験を高めるAI戦略の要諦