2022-01-01から1年間の記事一覧

Envoy Proxyを使ったファイルベースの動的コンフィグレーションとk8sのライフサイクル

みらい翻訳のカレンダー | Advent Calendar 2022 - Qiita に投稿した2つの記事 (「Envoy Proxyを使ったファイルベースの動的コンフィグレーション」、「Envoy Proxyを使ったファイルベースの動的コンフィグレーション (EKS)」) では、いずれも起動前に Envoy…

Envoy Proxyを使ったファイルベースの動的コンフィグレーション (EKS)

メリークリスマス ! こんにちは、ed (edward) です。 この記事は、みらい翻訳のカレンダー | Advent Calendar 2022 - Qiita の25日目です。 前回17日目はローカルPC上の Kubernetes を使ったファイルベースの動的コンフィグレーションを説明しました。 今回…

Envoy Proxyを使ったファイルベースの動的コンフィグレーション

こんにちは、ed (edward) です。 この記事は、みらい翻訳のカレンダー | Advent Calendar 2022 - Qiita の17日目です。 さて、SaaS として提供している Mirai Translator のようなプロダクトの場合、原則として機能追加等のデプロイ、リリースをゼロダウンタ…

ドメイン駆動設計と「コントロールプレーン」、「データプレーン」

これは、ドメイン駆動設計(DDD) Advent Calendar 2022 9日目の記事です。 ドメイン駆動設計では、レイヤー化アーキテクチャ (Layered Architecture) でエンティティやバリューオブジェクト、ドメインイベント、ライフサイクルに関連する集約 (Aggregate)やリ…

リアクティブシステムとドメイン駆動設計の学習コンテンツ

これは、ドメイン駆動設計(DDD) Advent Calendar 2022 6日目の記事です。 2022年11月28日から12月2日の間のラスベガスでの AWS イベント、re:Invent のキーノートの冒頭で非同期の重要性が説明されました。 リアクティブシステムは、非同期とイベント駆動型…

関数型プログラミング超入門

Scala Advent Calendar 2022 - Qiita 3日目の記事です Scala はオブジェクト指向プログラミング、関数型プログラミングのどちらもできるプログラミング言語ですが、ここでは関数型プログラミングについての基本的なところを説明します。 1. Referential Tran…

AWS認定 SAP-C01 を取得した話

2022年11月15日に Solutions Architect Professional 試験が改定されて新しいバージョンになるということで、改定される前に取得しておきたいと思って、10月22日に、試験センターに行ってきました。 試験が終わって画面に「合格」と表示された時はうれしかっ…

Output webcam directly via hdmi on tv (ATEM Mini)

ATEM Mini を購入したのを機に、Raspberry Pi を使って、USB 接続した WebCam をそのまま HDMI に出力してみました。 ここで説明する方法は、Desktop (GUI) は不要です。コンソールログイン ("B1 Console" or "B2 Console Autologin") を使用します。 方法は…

ソフトウェアのパターンランゲージ年表

年月日 タイトル 日本語版タイトル 1994-10-31 Design Patterns: Elements of Reusable Object-Oriented Software オブジェクト指向における再利用のためのデザインパターン 2002-11-05 Patterns of Enterprise Application Architecture エンタープライズア…

コンテナ環境での依存性注入 (DI)

コンテナ環境でアプリケーションのコード変更なしの依存性注入パターン (dependency injection pattern) について考えてみます。 横断的関心事をアスペクト指向 (aspect oriented) に解決する方法については別の記事で概要を書いています。 アスペクト指向 …

OpenFaaS

OpenFaaS は「Raspberry Pi 3 で Amazon Linux 2」 でインストールした containerd だけでも実行するだけなら可能です。後述の custom functions の作成では docker-ce をインストールする必要があります。 インストール faasd に記述された手順を参照して f…

開発者と運用者の役割

ここでは、Java によるエンタープライズ Web アプリケーションを例に DevOps を導入した場合の開発者と運用者の役割について考えてみました。 初期の頃のオンプレミスで実行される Web アプリケーションを概略図で示すと下図のようになっていました。 一般的…

Envoy と Open Policy Agent を使用した認可

Envoy proxy は API を使って動的に構成すると無停止で設定変更等を行うことができます。このような操作は 通常 Istio や AWS App Mesh のようなコントロールプレーンで行うことになります。 この一連の記事では Envoy proxy 単体の機能を説明するために静的…

Envoy を使用して ID Token (OIDC) を検証する

以前構築した S3 にアクセスする Envoy proxy を拡張して、Amazon Cognito Userpool で認証されたユーザのみがこの静的コンテンツにアクセスできるようにしたいと思います。 Envoy proxy は API を使って動的に構成すると無停止で設定変更等を行うことができ…

コンテナ化に適したアーキテクチャ

現在では、図のようなアーキテクチャがモダンとされています。 呼び方は、ヘキサゴナルアーキテクチャやオニオンアーキテクチャ、Clean Architecture (クリーンアーキテクチャ) などさまざまです。 最も外側はインフラストラクチャーであり、独自のシステム…

S3の静的WebサイトをEnvoyでホスティング

S3 に静的なコンテンツを配置して公開する場合、よく見られる構成は CloudFront とを組み合わせるパターンです。ほとんどの場合、これで問題ありません。しかし、一部のパターン、例えばエンタープライズで利用されるフロントエンドの場合には、VPN を通じた…

横断的関心事の実装

Java 言語、例えば、Spring Framework を使用してアプリケーションを実装する場合に、認証といった横断的関心事は、Spring Security などのライブラリにより実現することがこれまでよく行われていました。 Spring Framework やこれらのライブラリは、Servlet…

Raspberry Pi 3 で Amazon Linux 2

2022年2月2日、Raspberry Pi OS (以前は Raspbian と呼ばれていました) の 64bit 版が発表されました。これにより、BCM2710 を採用している、Raspberry Pi Zero 2、Raspberry Pi 3 と BCM2711 を採用している Raspberry Pi 4 などで AArch64 (arm64) に対応…