Spring&AWSに参加。自身の学びになったこと、スライドに書かれていないこと、それらに対する個人的な意見を中心にメモ。稼働させるスライドはこちら。発表者はAWSジャパンの白山文彦さんで、アプリケーションプロトタイピングソリューションアーキテクト...という肩書き。「オンプレのこれをAWSに持っていきたいんだけど...」という案件について、客先で一緒に一週間程度プロトタイピングを無料で行っているとのこと。AWSとしては継続的に使ってもらえれば利益が入るから、販促費として無料でもペイする...ということかと。会場アンケート一部書き漏らした気がするけど、だいだい以下のような感じ。母集団が「この勉強会に来た人」なので、かなりのバイアスがかかっているはず。Kotlinは、バイアスを差し引くと世の中ではまだまだ...という感じかな。Dockerは8〜9割の方が使ったことあるようで、ここまでとは思っていなかったので驚いた。末尾再帰の際にtailrecというキーワードを付けており、スタックオーバーフローを防げるメリットがあるとのこと。今どきのコンパイラって、末尾再帰なら自動的にwhileループに置き換えてるものだと思ってたので調べてみた。ここによると、Kotlinではtailrecを付けていない場合は末尾最適化が行われないとのこと。キーワードにより明示的にしている理由は、「デバッグしやすくするため」「末尾最適化できるかどうかチェックする(実装ミスを防止する)ため」の2つらしい。Java相互運用Javaからの呼び出しを考慮する際、以下のアノテーションを使うと良いらしい。@JvmStatic:Javaから呼び出せるStaticメソッドとして定義することができる@JvmOverloads:デフォルト値を指定しているメソッドを、オーバーロードしてJavaからも呼び出せるようにするJavaとKotlinは互換性が高いとは言われるが、やはり細かい所ではいろいろあるなーという印象。今までこれらのアノテーションが欲しいと感じる場面はなかったが、知ることができたのは良かった。手段としては用意されているものの、こういうアノテーションは極力使わない構成にしなければいけないと感じた。一回こういうアノテーションをつけると外すタイミングが難しいし、本質的でない部分に学習コストを費やすのは非効率なので。ServiceACSでは以下のような概念が出てくる。コントロールプレーン:コンテナの管理制御・制御。ECS:ちょっとしたことをやるには、こちらがお手軽EKS:Kubernetes互換データプレーン:リソース資源EC2:問題発生時、sshでログインして調査したりできるFargate:コンテナの下のレイヤーを意識しなくてよい。ECRにイメージの登録タスク:どのくらいCPUやメモリが必要かを定義する。Dockerコンテナと考えればよいサービス:「APIサーバ」「HTTPサーバ」などの役割を1単位として、複数のタスクを構成する。クラスタ:複数のサービスを束ねたものコントロールプレーンやデータプレーンについては知らなかったので、今後のために覚えておきたい。ECSやFargateを使うと手軽に試すことができそうだなーという印象。CodeStar詳しい紹介はありませんでしたが、CodeStarというCI/CD環境について少し触れられていた。CodeStarを使うとビルド、ECRの作成、ECSへのデプロイなどが自動化できるとのこと。聞いたときは「GitLabとかじゃ駄目なの?」と思ったが、ググってみるとCI/CD環境を一瞬で用意できるらしい。新規プロジェクトでは試してみる価値はあるかもしれないが、既存の環境に適用する価値があるかどうかは不明。個人的には、そもそもこういう開発環境がAWSにロックインされるのはちょっと抵抗があるなーと感じた。優先度低めで、気になったら試してみるくらいになりそう。