オートスケーリング - Horizontal Pod Autoscaler(HPA)
商用環境で実際にサービスが運用されると、時間帯やイベント等、様々な要因によってトラフィックが変動し、それに合わせてシステム負荷も増減します。 コンテナ以前の従来のシステムでは、あらかじめ最大のスループットを見積もり、それに合わせてサーバーのサイジングをすることが一般的でした。 ただ、これはほとんどのケースでオーバースペックとなり、費用対効果が良いとは言えない状況でした...
記事を読むServerless Framework v3新機能のStage Parameters紹介
2022/1/27にServerless Frameworkのメジャーアップデート(v3)がありました。 Serverless Framework V3 Is Live! CLIの改善以外にそれほど大きな変更はなさそうですが、v3でStage parametersという新たな機能が導入されました。 これをうまく活用することで、環境ごとに異なる設定を簡潔に記述できます。 今回はこのStage parametersを紹介したいと思います...
記事を読むS3 の静的 Web サイトを Envoy でホスティング
庄司です。 S3 に静的なコンテンツを配置して公開する場合、よく見られる構成は CloudFront とを組み合わせるパターンです。ほとんどの場合、これで問題ありません。しかし、一部のパターン、例えばエンタープライズで利用されるフロントエンドの場合には、VPN を通じたアクセスのみを許可している場合があります。このような場合、世界中の多数のユーザに低レイテンシーな配信を目的としている CloudFront のような CDN が適切とは言い難いものとなります...
記事を読むMarkdown でスライドを作れる Slidev を使う
Slidev は Markdown でスライドを作成できる NPM パッケージです。 ドキュメントは日本語版もあります。 概要ページに書かれている機能性を見ると、普段コードを書いてる人をターゲットにしていることが分かります...
記事を読むelectron-quick-start のコミット履歴で見る Electron プログラミングモデルの変遷
electron-quick-start は Electron でのプロジェクトのひな形となるアプリのリポジトリです。 GitHub - electron/electron-quick-start: Clone to try a simple Electron app Electron が1.0に到達する以前の2015年からメンテナンスされています。Electron の進化とともにファイル構成やプログラミングモデルも変わってきました。その歴史をコミット履歴から見ていきましょう...
記事を読むKarpenterのオートスケールを試してみました
2021/11/29に、AWSはKarpenterというKubernetesのオートスケーラーをGAリリースしました。 Introducing Karpenter – An Open-Source High-Performance Kubernetes Cluster Autoscaler これは有料のサービスではなく、OSSとしての提供です。現在はAWSのみに対応していますが、構造上はそれ以外のクラウドプロバイダーでも使えるものになっています...
記事を読む継続的デリバリ - ArgoCD
前回は、GitOpsの産みの親であるWeaveworks社が開発したFluxを導入して、継続的デリバリを実現しました。 今回はもう1つのGitOpsツールとして人気を集めるArgoCDを導入します。 Flux同様に、ArgoCDもGitOpsを体現したツールですが、最も大きな違いとして、ArgoCDはリッチなWeb UIを組み込みで持っています[1]。 このUIにより、Gitとクラスタ環境の同期状況が視覚的に把握可能です...
記事を読む継続的デリバリ - Flux
アプリケーション開発編では、お手製のアプリをローカル環境やクラウド環境(AWS EKS)にデプロイしてきました。 しかし、ローカル環境はSkaffoldを使って自動化したものの、クラウド環境はkubectl applyを使って手動デプロイしました。 ここでは、GitOps[1]を体現する継続的デリバリツールとして人気のFluxを導入します。 最終的には、以下のような構成となります。 Fluxは、以下を行うコンポーネント群(GitOps Toolkit)です...
記事を読むRancher Desktop 紹介
庄司です。 つい先日 (2022年1月21日) に、lima 紹介 という記事を書いたばかりですが、Mac (M1/Intel) と Windows のどちらにも対応し (さらに Linux にも)、それぞれ Lima と WSL2 を利用してコンテナランタイムを実行する、Rancher Desktop がついに v1.0.0 に到達したというニュースを受け取りました...
記事を読むクラスタ環境デプロイ - EKSクラスタ(デプロイ)
本記事は、クラスタ環境デプロイ - EKSクラスタ(Kustomize導入)からの続きです。 これまで、DynamoDBやS3等のAWSリソースを準備し、環境差分を吸収するために、Kustomizeを導入しました。 ここからは、仮想の商用環境としてAWS EKSにアプリケーションをデプロイします。 まずは、前回ローカル環境向けにパッチファイルを準備したように、EKS環境向けのoverlaysを用意します。 最終的には、以下の構成となります...
記事を読むクラスタ環境デプロイ - EKSクラスタ(Kustomize導入)
本記事は、クラスタ環境デプロイ - EKSクラスタ(AWS環境準備)からの続きです。 ここでは、Kubernetesのマニフェストファイルを、Kustomizeに対応した構成へと見直していきます。 Kustomizeはbaseと呼ばれる環境共通部分にパッチを当てることで、各環境の完全なマニフェストを生成します。 以下のようなフローで最終的にデプロイする形になります。 Kustomizeのパッチは、以下の方法をサポートしています...
記事を読むクラスタ環境デプロイ - EKSクラスタ(AWS環境準備)
前回で、コンテナレジストリを導入し、コンテナイメージ用のリポジトリを準備しました。 今回はアプリケーション開発編の仕上げとして、Kubernetesクラスタ環境のEKSにアプリケーションをデプロイしましょう。 一般的なプロジェクトでは商用環境だけでなく、結合テスト、受け入れテスト等、様々なフェーズに応じた環境が準備されています。 また、各環境で外部システムとの接続先等の環境固有の設定/構成が必要だったり、コストの関係で全て同等のスペックで準備することが難しいといったケースがほとんどです...
記事を読むEC2にS3をマウントする方法
FTPサーバーとして使用しているEC2がファイルを受け取った際に、S3トリガーでLambdaを動かすようにしたときのメモです。 AWS Transfer for SFTPも検討しましたが、コストの問題からEC2にS3をマウントする方式を採用しました。 以下、その手順です...
記事を読むlima 紹介
庄司です。 M1 チップ搭載の mac で Windows の WSL2 のような感覚で仮想 Linux 環境を手に入れたいとの思いから、lima というプロジェクトがあることを知り早速使い始めました。 インストールは、Homebrew を使うと楽にインストールすることができます。 brew install lima 仮想マシンの起動 # 次のようにコマンドを実行するとデフォルトの仮想マシンが起動します...
記事を読むクラスタ環境デプロイ - コンテナレジストリ(ECR)
さて、ここまででWeb・バッチアプリケーションの開発が終わり、ローカル環境で動作確認ができました。 いよいよここからは、AWS EKSにアプリケーションをデプロイしていきます。 その前に、アプリケーションをEKSにデプロイする際、コンテナイメージはどこで管理すべきでしょうか? 今まではコンテナのビルドと実行が同一環境(ローカル環境)のため、イメージビルド後にそのまま実行できていました[1]...
記事を読むsb2md - Scrapbox ページを Markdown に変換する CLI
Scrapbox の記法はシンプルでサクサク書けます。ただ、書いた記事をブログなどに転用する際 Markdown に変換するのがちょっと手間です。sb2md は Scrapbox のページを Markdown に変換するための CLI です...
記事を読むAWS を利用して遠隔地にあるサーバを管理する
庄司です。 遠隔地にサーバや Raspberry Pi や Jetson Nano などの IoT デバイスを配置する場合、これらのメンテナンスのためのアクセス手段をセキュアに構築する方法を考えることは頭の痛い課題の一つです。特に、このために ssh ポートを開放することは攻撃者に絶好の口を提供することになります...
記事を読むKubernetesマニフェスト作成 - バッチアプリケーション
前回は、ローカル環境のKubernetesでタスク管理ツールのWebアプリケーションを動かすことができました。 今回は日次でタスク完了レポートを出力するバッチアプリケーションを作成してみましょう。 Kubernetesを利用する主なメリットとして、セルフヒーリングによる耐障害性強化や、大規模トラフィックに耐えられるスケーラビリティが得られる等の印象が強いかと思います...
記事を読むElectron - WebView から BrowserView に移行する
--> 2024.7.22、8.28追記BrowserView は WebContentsView に置き換えられ、現在非推奨になっています。BrowserView の API は残っていますが、新規開発では、WebContentsView を使いましょう。以下の記事でも紹介しています...
記事を読むeleventy-plugin-code-clipboard
eleventy-plugin-code-clipboardは、静的サイトジェネレータツールの1つであるeleventy(以下11ty)のカスタムプラグインです。 このプラグインは、マークダウンのコードブロックで生成されたものに対して、クリップボードコピー機能を提供するもので、本サイトでも使用されています。 プラグインは以下の2つの機能で構成されます。 markdown-it カスタムレンダラー # 11tyのマークダウンパーサー markdown-itのカスタムレンダラーです...
記事を読む