ありログ

ありログ

ITに関するテーマや日常に関してゆるく発信します

AWS ECS ServiceConnectを試してみた

ServiceConnectとは

ECSサービス間通信を実現するソリューション

ECSサービスの間にALBを挟むなどといったケースが考えられるが、コストや運用を考えると余分にリソースを増やしたくない・・という時に良さそう

 

構成図の例 (同一VPC内でECSサービス間通信)



ServiceConnectを利用する際は、Cloud Mapで作成した名前空間にECSサービスを登録することで、同一の名前空間に属するECSサービスと通信できるようになります。

Memo

  • Linuxコンテナのみがサポート対象
  • ECSのスタンドアロンタスクでは利用できない
    • 例えばEventBridgeのスケジューラーを用いた定期起動タスクで別サービスと疎通させたい!という要件がある場合、利用できない
  • 異なるVPCでも利用可能 (VPCピアリング等の設定は必要)
  • 同一リージョンである必要がある
  • ServiceConnectエージェントコンテナがProxyとして通信する
    • タスク定義に追加の記述は不要
  • ServiceConnectの利用自体には料金はかからないが、エージェントコンテナのコンピューティングリソース分の料金はかかる。

使ってみた

CloudMapの名前空間・ECSサービスを作成して実際にサービス間の疎通を試してみます

VPCやIAM Roleの設定等は今回割愛します

CloudMapで名前空間の作成

AWS Cloud Mapから名前空間を作成します

(今回はtest-namespaceという名称で作成)

インスタンスの検出は「API呼び出し」にしておく



ECSリソースの作成

ECSクラスター・サービスを二つ用意します

クラスター1: service-connect-client

クラスター2: service-connect-server

それぞれのクラスターで利用するためのタスク定義も用意しておきます

コンテナイメージは、クライアント側は適当なコンテナイメージ (Amazon Linuxなどcurlが使えるコンテナイメージが望ましい)、サーバー側は httpd を使うことにします。

サーバー側で作成するタスク定義はポートマッピングの設定が必須です。

 

ポート名を設定しておく

 

それぞれのクラスターでECSサービスを作成

サービス1: service-connect-client

サービス2: service-connect-server

サービス作成の際、ServiceConnectの設定を済ましておく必要あり。

作成したCloudMapの名前空間をそれぞれのサービスに割り当てます。(同じ名前空間を使う必要あり)

「クライアントとサーバー」を選択し、作成した名前空間を割り当てる



サービス作成後、[作成したECSサービス] >「設定とネットワーク」からService Connectのエンドポイントを確認することができます

 

エンドポイントは「Service Connect サービス」に記載されている

ECS Execでコンテナに入る

サービス間通信ができるかどうか、クライアント側のコンテナにECS Execを使って試してみます。

 

# ECS Execが有効になっていない場合は、有効化しておく
aws ecs update-service \\ --cluster service-connect-client \\ --service service-connect-client \\ --enable-execute-command
# ECS Execでコンテナ内に入る aws ecs execute-command \\ --region ap-northeast-1 \\ --cluster service-connect-client \\ --task ${起動中のタスクID} \\ --container ${コンテナ名} \\ --interactive --command "/bin/sh"

ServiceConnectのエンドポイントに対してcurlしてみる

curl <http://https-tcp-80.test:80>

<html><body><h1>It works!</h1></body></html>

ApacheコンテナのHTMLが返ってくることが確認できたらOKです!

感想

ECSサービス間疎通においてALBを噛ませるケースが多かったので、わざわざALBを立てずに済むのは良さそうですね!

ECSタスクでも使えたらバッチ処理等でも使えてさらに良いだろうなと思います(アップデートを期待...)

参考

Service Connect を使用して Amazon ECS サービスを短縮名で接続する [AWS公式ドキュメント]

Amazon ECS Service Connect によるサービス間通信の管理 [AWS公式PDF]

 

Amazon ElastiCache (Redis) コスト削減の時に気にするポイント

概要

SRE業務をしていく中でAWSのコスト削減について日々考えています

今回はElastiCacheに関して、コストとパフォーマンスを両立させた上でどうやってノードタイプを選定していくかについてメモを残しておこうかなと思います

ノードタイプの選定をする上で考慮する事項

以下を考慮した上でノードタイプ(インスタンスクラス)を選定すると良さそう

  • ベースライン帯域幅
  • ネットワークバースト幅
  • メモリ容量
  • CPU

利用中のredisインスタンスのメトリクスで以下をチェックする

  • ネットワークトラフィック(Inbound / Outbound)
  • バースト時のネットワークバイト数
  • 解放可能メモリ容量
  • CPU使用率をチェック

どういう状態ならスペック下げてもいいのか?

以下が確認できたらノードタイプのスペックを下げるとよさそう

  • メモリ容量がほぼ上限値のままで、枯渇する気配が全くない
  • インスタンスのベースライン帯域幅に対して、ネットワークトラフィックの送受信容量が明らかに少ない
  • CPU使用率・メモリ使用率が常に低い

ElastiCacheのノードタイプについて

メモリ最適化(r系), ネットワーク最適化(c系), バースト系(t系)などがある

c7g, r7gなど最新の世代だとプロセッサの性能も高いので、古い世代を利用している場合、ノードタイプを最新化するだけでも費用対効果向上が見込めそう

Graviton 3を使用しているモデルはGraviton 2よりもパフォーマンスが25%高いらしい (参考: AWS re:Invent 2021 - Keynote with Peter DeSantis)

ElastiCacheのノードタイプ変更にはどのくらい時間かかる?

実際業務でElastiCacheのノードタイプ変更を行いましたが、10分程度のダウンタイムが発生する様に思われます

MEMO

  • ナビゲーションペインのイベントログを見る感じだと、ノードタイプの変更を開始してからクラスター全体に変更が適用されるまで30分程度かかっていた
  • 体感だとRDSの再起動よりも時間がかかる印象
    • 常時稼働している商用サービス等ではメンテナンス実施の際にノードタイプを変更するのが無難。

頻繁にノードタイプを変更するならAWS re:Invent 2023で発表されたElastiCache Serverlessを検討するのも良さそう

まとめ

  • コスト最適化を意識する上で、ElastiCacheのノードタイプ選定をする際はメモリ容量・CPU使用率・ネットワークトラフィックをチェックする(基本的にはEC2やRDSと同じ)
  • EC2やRDSと同様、インスタンスクラスにはメモリ最適化・ネットワーク最適化などといったタイプがあるので、ワークロードに適したタイプを剪定する
  • 最新世代のGravitonを使用したノードタイプだと高い費用対効果が期待できる。
  • ElastiCacheのノードタイプ変更は10分程度のダウンタイムが想定されるため、メンテナンスを実施することを念頭に置く

参考

Amazon ElastiCache の料金表

Amazon ElastiCache Redis のクラスターを適切にサイジングする際に考慮すべき 5 つのワークロード特性

ITエンジニアとして2年半のキャリアを振り返る

久しぶりのブログ更新です

技術や日常についてのアウトプットを残していこうとブログを再開しようと思います...

今回は久しぶりの投稿なので、直近2年半のキャリアについて振り返ります!

これまでの業務経歴を振り返る

2022年4月に新卒でのキャリアをスタートさせ、現在に至るまでITエンジニアとして2年半のキャリアを歩んできました。

その中で

  • インフラ運用のチーム
  • プロダクト開発のチーム
  • (転職を挟んで) SREチーム

と、3つのチームでの業務を経験しました(1年ごとにチームが変わっている・・)

 

以下は具体的に経験した業務内容です

インフラ・クラウド周り

  • 3層アーキテクチャのWebアプリにおけるAWSインフラの設計・要件定義
  • TerraformでのAWSリソースの構築
  • New Relic, Twilio, Zabbix等, 監視ツールの運用
  • Linuxサーバの構成管理
  • AWSインフラコストの削減 (ECSやRDSのスペック見直し)

Web開発系

  • React, Next.jsを用いたフロントエンド開発
  • NestJSを用いたAPI開発
  • CodeBuild, CodeDeploy, GitHub Actions等を用いたCI/CDの構築
  • Playwright, reg-suitを用いたフロントエンドテストの自動化
  • Core Web Vitalsの可視化・フロントエンドパフォーマンスの改善

その他

  • テックカンファレンスへの参加 (AWS re:invent 2023, SRE NEXT2024など)
  • テックブログ執筆や会社のQiitaアドベントカレンダーへの参加
  • 新卒エンジニア向けにAWSハンズオンの企画

今思えば色々やったなぁ…

転職をした話

今年の6月に新卒で入社した事業会社を退職し、7月にフィットネス系の事業会社にSREとしてジョインしました。

転職しようと思った理由は色々ありますが、主に「自身の専門性をさらに高めたい」「成長中の事業に関わってみたい」という思いがあり、転職に踏み切りました。

転職の際利用したのはFindy, 転職ドラフトです

10社くらい受けて、最終的にはFindy経由で選考に進んだ企業への内定を承諾しました

(余談: 年収が200万円ほど上がってビビりました)

やってよかったこと

Qiitaでアウトプットしまくった

自身のQiitaで結構アウトプットをしていました

(主にTerraformやAWSに関するトピック)

「誰かに見られる記事を書く」という経験をしたことで、自分の知識の見直し・定着にも繋がったし、転職活動の時も評価されたので、これからも続けようと思いました

本筋の業務以外にも様々なことにトライした

ITエンジニアとして開発業務をこなすだけではなく、新卒採用に関わったり、後輩向けにハンズオンコンテンツを行ったり、様々な業務に取り組んできました。

自分自身、開発業務だけではなく色々なことをやってみたい欲求が強いので、こうしたチャンスを掴めたことはよかったなと思います。

こうしとけばよかったなあと思うこと

会社のテックブログでもっと発信する

Qiitaには色々とアウトプットしていましたが、会社のテックブログにはイベント参加レポートぐらいしか書いてませんでした…

後々振り返ってみれば、会社のテックブログに投稿することは以下のメリットがあったよなと感じます。

  • 社内の人に内容を添削してもらえるので、技術的な知見や正しい文章の書き方を得られるチャンス
  • 会社の看板を背負って情報発信するので、会社のブランディングなどそれなりのインパクトを生み出すことができる

ということで、チーム内で行った技術的な取り組みとかもっと発信しとけばよかったなあと思います

技術書をもっと読む

技術書は買ってはいましたが、読んではいませんでした(積読)

インフラ周りを触っていると、コンピューターの基礎的な知識があった方がスムーズに理解が進むので、もうちょっと技術書を読んでいればなあと思いました

多様なビジネスに関するアンテナを張る

「今どんな会社や事業がイケてるのか」「どんな事業に自分は興味あるのか」よくわからない状態で転職活動を進めていました。

事業会社で働き続けたいなという思いがある一方、自分自身ビジネスに関するアンテナを張れていなかったなと気づきました。

今後のキャリアを考える上で「今どんな事業が流行っているのか」「今勢いがあるスタートアップはどこか」といった情報キャッチアップもしていこうと思いました。

これからの抱負

今の会社でSREとしての経験値を積みつつ、日頃の学習やアウトプットもしっかりやっていこうかなと思います。

その一環として今後ブログも更新していきます!

スパイスのある日々

みなさんカレーをスパイスから作る男は好きですか?

私は好きです(自画自賛

 

今回は適当に私が日々作っているスパイスカレーの一部を紹介します

 

 

基本のインド風チキンカレー

基本のインド風カレーです。

玉ねぎを飴色になるまで炒め、トマト缶をペースト状になるまで高温の油で熱するのがポイントです。

そうすると野菜の旨味が濃縮されて美味しいカレーとなります。

あとは調合したスパイスと肉をぶち込めば完成です。

基本はこの作り方で毎週カレーを作っており、たまに鯖とか豆とかメインの具材を変えたりしています。

かぼちゃと豆のカレー + 自作ナン

 

こちらはかぼちゃベースの豆カレーです

かぼちゃの甘さ際立つ優しい味となってます。

かぼちゃベースだとちょっとパンチが足りないと感じるかも・・

 

ナンも自作です、適当にヨーグルトと小麦粉をコネコネして作りました。

発酵とかそんな高度な技術は使ってません。

 

スープカレー

 

ただのスープカレーです。

基本のインド風カレーとは異なり、スープカレー作りではシャバシャバ感を出すためにトマト缶を使わずケチャップを使ってます。

優しいお味です

 

番外編 タンドリーチキン

スパイス・ヨーグルト・ニンニク・生姜・塩を混ぜ混ぜして鶏肉を漬け込んで焼きました。

皮を下にしてフライパンでこんがり焼くと美味しいです。

ダイエット中の方は鶏胸肉でやっても美味しいです

 

マイスパイス

基本のスパイス(コリアンダー・クミン・チリ・ターメリックガラムマサラ)です。

クミン・コリアンダーそれぞれ3に対して、ターメリック・チリ1くらいの割合で混ぜれば大抵いい感じになります(ガラムマサラはなくてもよい)

 

最近はホールスパイスにも手を出しています。

クミンホールを入れるとエスニック感が増します

唐辛子は辛味を出したい時に使います

 

 

今後のカレー作りについて

毎週カレーを作っているんですけど、最近は同じようなカレーばかりになっております・・。

なんか面白いカレーないかなーと創作カレー屋さんの画像とか漁ったりしてます

フードプロフェッサーがあればほうれん草カレーとかも作れそうだし、買ってみようかなーと思います

思い切ってバイタミックスとか高性能なやつ買おうかなーとも思うのですが、5万円くらいします。高いですね・・

 

なんかいいアイデアがあればTwitterとかでコメントください

 

あと大事なこと言い忘れてましたが、カレーを自作すると脂質とか抑えられてヘルシーです。あと洗い物も楽になります(バ○モンドはお皿ベッタベタになります)

みなさんも作ってください。カップラーメンしか作れない男よりカレー作れる方が確実にイケてますよ卍

 

それでは〜いいスパイスライフを〜

 

川崎から鎌倉までチャリで日帰り旅行してきた

先日、ふと「チャリ旅行してみたいな〜」と思ったので、鎌倉に行ってきました

泊まるのもお金がかかるし、今回は貧乏旅行で日帰り温泉と美味い海鮮丼を食べることをテーマにしました

 

出発地は川崎市、鎌倉まで自転車だと約40キロほど

走行時間は片道3時間半くらい(途中休憩含む)

 

8時に自宅を出発・・

家から横浜北部までの道は上り坂・下り坂の連続でしんどくなって、「やっぱ横浜の温泉に行こうかな〜」と妥協を考えていましたが、途中からはずっと平坦な道が続き、なんだかんだ11時過ぎに鎌倉に到着

 

お腹が減ったのであらかじめ調べておいたお店「定食屋 しゃもじ」に突入

f:id:arie0703:20211022181425j:plain

定食屋しゃもじ 海鮮しらす丼+生しらすトッピング (2100円)

自転車を3時間以上漕いだ男の目の前に海鮮丼が出される・・

これはたまらんですね・・・

日替わりで地魚2種が海鮮丼のネタとして使用されるようです(この日は確かカツオとハマチ)

 

ネタが分厚くて最高でした

もう200円出せば、地魚の種類が一種類プラスされた上海鮮丼を注文できたのですが、無意識に安い方を注文してしまいました

せっかくだから一番いいものを注文すればよかったものの、いつもの貧乏性が発動・・(悲しい)

 

腹ごしらえが終わった後は由比ヶ浜近くの温泉へ!

f:id:arie0703:20211022182110j:plain

稲村ヶ崎温泉

1500円という強気な値段設定で温泉は露天風呂と水風呂のみというシンプルな温泉

何より露天風呂から見えるオーシャンビュー、富士山が最高でした・・

この日はとても天気が良い&平日で人も少なく落ち着いているので、最高のコンディションでしたね・・。

 

f:id:arie0703:20211022182524j:plain

外の眺め

写真だと伝わりにくいかもですが、こんな感じに海と富士山が近くに見えます

(実際は写真の何倍も綺麗な眺め)

 

残りわずかな大学生活、平日の昼間から温泉を満喫するという贅沢ができて良かったです

帰るのがだるいとか考えたら負けです

 

f:id:arie0703:20211022182807j:plain

行きの途中

鎌倉へ向かう道の途中、瀬谷の道でも富士山が見えました

横浜北部は坂だらけで自転車にとっては地獄でしたが、この辺は大きな道路で道も平坦でとても走っていて気持ちが良かったです

さらに途中にいくつかコンビニがあるので、そこでコーヒーとパンを買って冷たい風浴びながらちょっと一休みするのもチルいです

コンビニ休憩も自転車旅行の好きな要素の一つですね・・

 

さて、今回かかった費用ですが

昼食(2100円) + 温泉(1500円) + 途中休憩代(1000円)で、4600円しかかかっておりません!

宿泊したり交通機関を使うと数万飛ぶのが普通な旅行ですが、多少贅沢しても数千円でサクッとできるのが日帰り自転車旅行の魅力ですね

 

また「美味い飯 + 温泉」をテーマにふらっと日帰りチャリ旅をしてみようと思います

次はもうちょっと近い方がいいかな・・(往復7時間弱はしんどい)