Postmanを使ってChatworkにメッセージを投稿する

以前 Postman を使って API のテストをしていましたが、いつの間にか Flows という機能が登場していて、それを使うと API Gateway や Lambda を用意しなくても簡単な Web サービスの連携に使えることを知りました。 これを知ったきっかけのイベントは 【大阪…

WSL2のUbuntuにamazon-ssm-agentをインストールした作業ログ

ドキュメントに書かれていた snap コマンドではエラーになったので、次のコマンドでインストール。 mkdir /tmp/ssm cd /tmp/ssm wget https://s3.amazonaws.com/ec2-downloads-windows/SSMAgent/latest/debian_amd64/amazon-ssm-agent.deb sudo dpkg -i amaz…

ネイティブ呼び出しが気になった件

これは Java Advent Calendar 2023 の20日目の記事です。 Testcontainers でDockerにアクセスできることからUNIXドメインソケットの利用にネイティブ呼び出しが使われているのでは?と気になって調べてみました。 UNIXドメインソケットとは何かですが、Unix…

Momento Topics を調べた

Momento Advent Calendar 2023の18日目の記事です。 さて、皆さんは pub/sub って聞いたことがありますか。pub/sub とは Enterprise Integration Patterns の Messaging Patterns の1つとして挙げられていて、Publish-Subscribe Channel というのが正式な名…

Javaの帰還 (Return of the Java)

この記事は AWS Lambda と Serverless Advent Calendar 2023 14 日目の記事です。 昨年2022年re:Invent 2022のAWS Lambda SnapStartの発表でJava Runtimeが再び注目されました。 AWS Lambdaの登場からの歴史 2014年11月にAWS Lambdaが発表されました。この発…

AWS Community Builders program に参加できてよかったこと

この記事はAWS Community Builders Advent Calendar 2023の12日目の記事です。 私は COVID-19 パンデミックの前 Java Community の JJUG や 関ジャバ、あるいはScala関西で数回登壇したことがありました。その後パンデミックになりオンライン登壇も何度かし…

サービスメッシュの利点

複数のサービスで構成されたシステムにサービスメッシュを採用するモチベーションについて説明します。 「サービスメッシュ必読ガイド - 第2版: 次世代のマイクロサービス開発」によると、サービスメッシュが解決しようとする課題は次のとおりです。 サービ…

Akka gRPC で Hello World

プログラミング言語として Scala を使う場合、フレームワークとして Akka がよく利用されます。 また、gRPC の API は Protocol Buffers (protobuf) という Schema 定義言語で規定します。これは日本CTO協会が監修・編纂しているDX Criteriaで良いプラクティ…

KeycloakのSAML2 IdPをAmazon Cognito user poolsと連携する

Keycloak は SAML の Identity Provider (IdP) としてあるいは OpenID Connect (OIDC) の OpenID Provider (OP) として使用することができます。 2層アーキテクチャ (Two-tier Architecture) や 3層アーキテクチャ (Three-tier Architecture)、またはより多…

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) に対応…

Active Directory と SaaS の連携

「みらい翻訳 Advent Calendar 2021」2日目の記事です。 この記事では次のことを説明します。 Active Directory と ADFS による SAML 2.0 について EC2 上に Active Directory と ADFS を構築する手順 SAML 2.0 の IdP をテストする手順 2018 年 9 月時点で…

Raspberry Pi 3 Model B をブリッジで使用する

手元に何台かの Raspberry Pi や Jetson Nano があり、Raspberry Pi は初期の Model B や B+、2 Model B などもあり、Raspberry Pi OS にはデフォルトでは、USB で使用するタイプの wifi のドライバが入っていないこともあるので、下図のようなネットワーク…

jetson-nano の設定のいろいろ

arm64 でいろいろ試したいということで、jetson-nano を引っ張りだしてきました。 GUI をオフに UbuntuのGUI(デスクトップ)をオフにする に書かれた通りに実行しました。 # systemctl set-default multi-user.target 必要になったら、以下のようにすればよい…