kariaの日記 @ Alice::Diary

ノリツッコミの鳩子がはてなブログ書いちゃうよ

Amazon ECSにおけるnetworkMode,パブリックIPアドレス,VPC外部との通信可否を整理する

Amazon ECSにおいて、EC2とFargateそれぞれの場合にどういうネットワーク設定にできるのかすぐ忘れるので、早見表にした。

機能名 EC2 Fargate
networkMode: awsvpc 対応 対応
networkMode: bridge 対応 非対応
networkMode: host 対応 非対応
networkMode: none 対応 非対応
awsvpcにおけるパブリックIPアドレス つけられない つけられる

※表を簡素化するためOSがWindowsの場合は除外しLinuxに限定した。

networkModeをbridgeとかhostにしたタスク定義は、Fargateにそのまま持って行っても起動することができない。

注目ポイントとしては、ECS on EC2かつawsvpcを採用した場合にタスクにはパブリックIPアドレスを付与することができない。このため、タスクがLBを介さずにVPC外部(インターネット)と通信したい場合、プライベートサブネットにタスクを配置することとNAT Gatewayを設置することが必須要件となる。

このことはAmazon ECS開発者ガイドにも記載がある。

Amazon EC2 Linux インスタンスで awsvpc ネットワークモードを使用するタスクをホストする場合、タスク ENI にはパブリック IP アドレスが付与されません。インターネットにアクセスするには、NAT ゲートウェイを使用するよう設定されたプライベートサブネットでタスクを起動する必要があります。詳細については、「Amazon VPC ユーザーガイド」の「NAT ゲートウェイ」を参照してください。インバウンドのネットワークアクセスは、プライベート IP アドレスを使用する VPC 内からのものか、その VPC からロードバランサーを経由させルーティングされたものである必要があります。パブリックサブネット内で起動されたタスクは、インターネットにアクセスできません。

docs.aws.amazon.com

つまり、ECSタスクがLBを介さずにVPC外部と通信できるのかできないのかに着目して表にすると以下の様になる。

networkMode VPCサブネットの種別 EC2のタスク Fargateのタスク
awsvpc パブリック 外部通信できない 外部通信できる
awsvpc プライベート 外部通信できる 外部通信できる
bridge,host パブリック 外部通信できる (起動できない)
bridge,host プライベート 外部通信できる (起動できない)

パブリックサブネットにタスクを配置する場合、EC2とFargateでnetworkModeを別にしなければならない。あまりないかもしれないが、もしパブリックサブネットでEC2/Fargateが混在する環境ではタスク定義を別々にしなければならず不便を強いられる。パブリックIPアドレスは課金されるようになったことも考慮すると、基本的にはプライベートサブネットを利用するべきだろう。

SRE NEXT 2024に参加してきた

会場入ってすぐ横にあったフォトパネル

夏のSRE関連イベントオフライン参加するぞ祭り(自主開催)の最終回。2日間通しチケットに加えて、なぜか懇親会参加券も有りのフルセットを買ってしまいました。ぼっち参戦なのに懇親会どうするの……?

以下感想を書いていくのですが、行動順時系列で書くとかなりまとまりが無い感じになるので「印象に残ったセッション」「見られなかったけどチェックした発表資料」「懇親会」「スポンサーブース」の順にまとめて書いていこうと思います。

印象に残ったセッション

登壇資料まとめは以下の記事にまとまっています。2日目寝坊したりスポンサーブース回ったりした影響で、見ることができたセッション自体がかなり少なかったです。もっと見たかったなあ。

zenn.dev

工学としてのSRE再訪

speakerdeck.com

セッションの中で一番面白かった。すごく印象に残ったスライドが多いので一部引用させていただきながら感想書いていこうと思う。

SRE文脈における工学性

一番印象に残ってるのがこれ。いわゆる「運用に溺れてる状態」が左側で、技芸的というのは決して悪いことではない(と発表者の方も仰っていた)けれど、やはり長期的・持続的改善を考えていく上で目指すべき状態というのは右側でしょう。そう考えていくとSREというのはもっと工学的に解決ができるはずだよね?という風に自分の中で解釈しました。

そこから「工学思考に基づく(と思われる)代表的貢献の一部」としてチームトポロジーの紹介があったりとか(この後ほかのセッションでも触れられていたので買いました)。

あとは、「99.99%のトレースデータはゴミ」というアグレッシブすぎるタイトルの論文の紹介があったりとか(障害の発生前後のトレースデータだけ取ってあればいいよねという発想らしく、それはなるほど感)。

「Metastable Failure」もすごく納得感あった。「障害の根本原因はもう治したはずなのに、なーんか挙動不安定なままだよねえ?なんで?」ってなるあの現象のことね。

このように普段肌感で感じてることに名前が付くことの快感が詰まってて非常に面白かったです。もっと面白い論文いっぱいあるんだろうなあ。読んでみたいな。

巨大インフラ産業で戦うSRE

speakerdeck.com

オープンロジ、よくVTuberのグッズ買ったときに発送メールが来るのでお名前は存じ上げているけれど何のサービスかよくわかってないというところからセッション視聴。事業内容も興味深かったけど、それ以上にSREの一事例として興味深かったです。SREチームとしての取り組みが具体的かつ改善を実感できる内容なのがとてもよかった。

すごくよくある話。でも最近は「SRE」とか「Platform Engineering」とかセクションごとに名前がついてきたおかげで、いわゆる「インフラなんでも屋さん」のお仕事内容が分類しやすくなってきたこと自体は、いい時代になってきたよねと思うよ。

オープンロジラムネもらった

スポンサーブース行ったらラムネをいただいたのですが、開け方を完全に忘れててあたふたしました。

Enabling Client-side SLO

speakerdeck.com

Client-side SLOってなんだ?と思ったら、iOS/AndroidアプリへのDatadog SDK導入をSREが直接コーディングしたらしい。確かにClient-sideだわ。

LCPの75パーセンタイルという閾値、参考にしていきたいよね~~わかる~~という気持ち。

An Efficient Incident Response Training with AI

speakerdeck.com

AIが障害対応訓練のゲームマスターしてくれるんだって。なるほどね、これはもうGMレスのTRPGだな。

セッション翌日にスポンサーブースでツールのデモを見学させていただいたのだけれど、Slackでポコポコと障害対応指示が現れて(ランブックと呼ぶらしい)、あとからそのログを拾って時系列ドキュメント(ポストモーテム)を自動生成したり、それを共同編集したりできるそうで、インシデント管理ツールとしてかなり面白そうでした。インシデント管理していきたい。

見られなかったけどチェックした発表資料

このセクションは現在進行形で発表資料をチェックしている最中なので、後で増えていくかも。

プロダクト全体で取り組むSREing イシューから始める信頼性・生産性向上の実践

speakerdeck.com

イシューの見極め方の実例紹介。優先順位の付け方がこれだけ体型的に説明できると良いね。しかし、2019年に半年間新規開発をストップとか、Struts2のリプレースとか、事例がなかなかハードそうだ。

FourKeysを導入したが生産性向上には至らなかった理由

speakerdeck.com

「FourKeysはソフトウェアエンジニアのパフォーマンスを測る指標」「開発生産性を測るものではない」というところになるほど。LTのためあまり多くが語られていないのだけれど、(開発チーム自身ではなく)SREチームが主体となって開発チームの生産性を可視化したかった理由が気になるところでした。セッション参加して聞くべきだったなあ。

懇親会

1日目の終わりに会場を地下のクラブへ移動し、Cloudebaseさんの「CTOが趣味で作った」という佐渡島産のオリジナルクラフトビールで乾杯。アルコール度数7%と少し強めなIPA、かなり好みな味でした。

さすがに懇親会で話した内容は書けないけど、テーブル囲んでたまたま近くになった方とワイワイ話して、思ったよりかは楽しめました。「発表してくださいよ~」って言われたけど、ど、どうしようかな……。

スポンサーブース

今回スポンサーブースがかなり充実しており、全部回ってきました。

無料配布うちわの裏側がスタンプ帳のようになってて、スポンサーブースを回ってここにシールを集めると最後に抽選に参加できるよという仕組みがあってですね。特に知り合いもいないと「ブース行ったとて何話せばいいんだろう……」ってなりがちなのが、とりあえずシールを集めるという動機で話しかけることができるので良い仕組みだなと。

そもそもスポンサーブースって採用目的なんじゃ?という先入観があったのですが、ブースによってかなり趣向を凝らしていたし、結構話せるSREの方が多くて面白かったですね。ということで、印象に残ったブースのことを2つほど載せておきます。

CyberAgent

今回の会場提供もしているサイバーエージェントさんは、ただゲームの紹介とシステム構成図を展示しているだけという硬派なブースながら、「他所のシステム構成図ほと面白いモノはないじゃん!」と興味深く見させていただきました。帰ってから調べたら一部はこのスライドやブログなどに出ている内容で、一部は出ていない内容みたい(時期未定だけどそのうちブログに出るとか)。

speakerdeck.com

Aurora Serverless v2、ノーメンテでDBのスケールアップ/ダウンができるのすごい魅力的だな。スケールするときの瞬断はあるけどv1より時間も短くなっており、深夜帯なんかは勝手にスケールダウンしていくのでコストもそこまででもないらしい。最初大きめのスペックにしておいて、アクセスが落ちついて来たら徐々に最適化をかけていく流れがすごく理想的だなあ。

SMS

私「すいません~事業内容とか全然存じ上げてなくて……」
「いえいえ!ところで今『SREあるある缶バッジ』をお配りしてまして」
私「へえそうなんですね」
「好きなの1個選んでください!人気なのは『オブザーバビリティ』ですね」
私「うーん……じゃあこれで」

SREあるある缶バッジ

まとめ

最初は面白いセッションに何個か当たればいいや、ぐらいのつもりで申し込んでみたけど、蓋を開けてみればスポンサーブースも懇親会も思ったより楽しめたなという印象だし、セッションは分身して見に行きたいぐらい重複していた裏枠も見たい気持ちでいっぱいでした。

個人的反省点を挙げるとしたら英語のセッションが全然聞き取れず(同時翻訳があるものだと思い込んでいた)、スライドが日本語だったのでかろうじて雰囲気は掴めたが、やはり英語のリスニングが出来ないのは大きなマイナスだなあと痛感した次第でした。リスニングの勉強するか……?

Classmethod Odyssey / DevelopersIO 2024 4日目に参加してきた

7月5日から7月30日まで1ヶ月近くにわたりオンライン・オフラインの双方でセッションをやりまくるという激ヤバテックイベント「Classmethod Odyssey」の、オフラインセッション最終日に参加してきました。オフラインイベントのほうを「DevelopersIO 2024」と呼んでいるのかな?その辺の使い分けがよくわからず。

classmethod.jp

別用や昼飯などあり到着したのは14時頃。午前中や昼過ぎのセッションでも気になるトピックのものが多かったので聴けなかったのは残念でしたが、午後からでもかなり収穫はあった感じでした。

以下目次。

※おことわり:ステマ規制の関連があるので一応書いておきますが、オフラインセッションは本来有料のセッションであるところ、招待コードをいただいて無料で参加しております。なお、本記事は企業から依頼されたものではなく、個人的に感想を残しておきたかったため書いております。

進化をつづけるエッジプラットフォーム DB/AIへの展開

Cloudflareなんだかんだで使ったことなくて、気になるので見に行ってみようみたいな感じで行きました。到着してすぐだったので途中入室&スライド未公開なこともありだいぶうろ覚えなんだけど、印象的だったのはこれかな。

2014年とか2015年あたりのSSL/TLSで相次いで見つかった脆弱性を契機に、CDNにまかせておけばこのあたりが安心できるという空気感ができていったとか。確かに昔はCDNといえば大規模配信のためというイメージが強かったけど、今は安心のためにとりあえず入れておけみたいな印象が強くなってきてますね。

Cloudflare workers気になるなあ。

生成AI時代に必要な検索とレコメンドをざっくり抑える

dev.classmethod.jp

最近RAGだRAGだとAI界隈がワイワイしているけど、「それで君たちはRAGのR(検索)の事には詳しいのかい?」ということで、検索とレコメンドに再入門するような内容でした。といっても40分で触れられる内容には限界がありますが、必要なキーワードとか文献には触れられる内容だったかなと思います。

パラッとは読んだんだけどさ!

サーバーレスAPI(API Gateway+Lambda)とNext.jsで 個人ブログを作ろう!

dev.classmethod.jp

タイトルから想像するに、技術スタックの紹介&ハンズオンに近い内容なのかな?と思いきや、ゴリゴリにブログを作り込んでいてかなり分量多めなセッションでした。フロント回りは正直あまり詳しくないのだけれど、デザインにfigma使ったり、認証にパスキー使ったりととにかく意欲的。ハッシュタグ見てたら「リアルタイムプレビューを自前で実装するのは凄い」ってコメントがありましたね。それはそう。

個人開発を行うことによるメリットにも言及があったりして、私もつい最近個人用Slackbotを直したり導入したりと試行錯誤したばっかりだったんで(コードはほぼAIに書かせたが)、割と親近感ある内容だったと思います。

「個人開発が業務に生きることありましたか?」って質問してみたんだけど、「フロントと認証の繋ぎ込みのところで役にたった」というようなことをおっしゃってて、「あ~認証は実際試してみないとわからんこと多いよね……」という感想でした。

エンジニアの生存戦略クラウド潮流の経験から紐解く技術トレンドのメカニズムと乗りこなし方

初手、10年前に作ったという「物理的にキックしたらEC2がキックスタートする」っていうネタ動画から始まるという芸人感。使ってるモーションセンサーが「キネシス」って聞こえたんだけどKinectのことかな?とにかく、そのモーションセンサーで動かす対象が初音ミクMMDだったりと10年前の空気感を感じる動画でした。

しかし本編は打って変わって真面目な内容。エンジニアの成長ってどうすればいいんだろうね、効率的な学習ってなんだろうねといった切り口から様々な理論を紹介してもらった感じでした。知らなかったワードがざくざくあったのだけれど、特に印象に残ったのは「垂直的成長」ってキーワードかな。

「水平的成長」は簡単なんだよ、本読むなり手を動かすなりすればそのうちスキルとして身についていくからさ。「垂直的成長」をどうすればいいかは難しいけど、垂直的成長というキーワードがあることを認識しているだけでも違うと思うので、結構大きな収穫だったのではと思いました。

データ分析を支える技術 生成AI再入門

現時点でスライドが未公開のようだったので著者の方のページにとりあえずリンクを。

dev.classmethod.jp

「再入門」ってことで、データ分析以前に生成AI自体の再入門からスタート。

生成AIの再入門はさすがに知ってる内容がほとんどかと思いきや、プロンプトエンジニアリングのパートで初めて触れる内容がありました。再入門大事だ。

atmarkit.itmedia.co.jp

ざっくり言うと、ChatGPTに数学の問題の答えだけ聞くと間違った回答を平気でしてくるんだけど、計算の途中過程を答えさせて、それを与えた上で次の問題の回答を求めることでより正確になるという話。算数とか数学の筆記テストと同じだね。

次のRAGの話もさっき聞いたしな……と思いきや、RAG自体の分類の話は初めて聞きました。

このスライドの元になったAWS blogの記事がこれ。

aws.amazon.com

帰ってから調べたのですが、Advanced RAGというのが、RAGで検索をかけるときに検索クエリをLLMに生成させたり(検索の前処理)、検索結果の評価をLLMにさせる(検索の後処理)ことでより検索の精度が高まるのではないか?という方向性のようで、ブログ記事では前処理のほうは実際に効果が確認できたとのこと。

確かに、人間が発する問い合わせって曖昧で不正確だという前提に立つと、そこをコンシェルジュ的な感じで補ってくれるなら効果あるのかもしれないね。

で、最後にやっとデータ分析基盤の話。

実際にRAGを組み込んだ生成AIアプリケーションの構成と、データ分析基盤との関わりはこんな感じ。結局のところデータ統合とデータガバナンスが大事だよね、より重要になるよね、という。「それはそう」ボタンを100万回押したい。

個人的に気になったのが「オリジナルのモデル生成するのとRAGと、どちらを採用するかの判断基準」は聞けたら聞きたかった。今のままいくとRAGのほうが圧倒的にお手軽だし、生成AIアプリケーション作るなら何もかもRAGでいいじゃんという結論になってしまいそうなんだけど、自前で巨大なデータセットを持っていてコンピューティングリソースが十分な場合には、イチからモデル生成する方にもメリットはあるのだろうか。質問の時間なくなっちゃったので聞かなかったけど。

まとめ

個人的にデータ分析基盤・生成AI・サーバレス技術あたりが割とアツいトピックだったのでこういうセッション選択になったけど、裏でやってた「Google Cloud の RDB を徹底比較」とかも気になったし、時間的に間に合わなかった「可視化プラットフォームGrafanaの基本と活用方法の全て」も帰ってからスライド読んだし、1日でこれだけのセッション盛りだくさんなのは濃いな~。良い刺激を受けた一日でした。