Serverless Framework Composeで複数サービスをまとめて管理する
2022/04/20にServerless Frameworkの新機能Serverless Framework Composeがアナウンスされました。 Introducing multi-service deployments via Serverless Framework Compose 名前からも想像できるようにDocker Composeのように、Serverless Framework Composeは関数のオーケストレーションをするものです...
記事を読むドメイン駆動設計のコンテキストマップ
庄司です。 ドメイン駆動設計の戦略的設計では、システム全体をどのように境界づけられたコンテキストを統合するかを表すコンテキストマップ (Context Map) を描きます。さらに、このコンテキストマップには時間の経過とともに、コンテキストが追加、更新、削除のように修正されていくことも考慮しておく必要があります。 したがって、コンテキストマップは単なる画像としてではなく、git などのバージョン管理ツールで比較が容易なテキストで記述できると便利です...
記事を読む話題の CI/CD ツール Dagger を体験してみる
Dagger は、Docker を開発した人たちによるポータブルな CI/CD ツールです。先月末公開されました。 Introducing Dagger: a new way to create CI/CD pipelines ポータビリティ実現のためコンテナ環境が前提になっています。 Dagger は DAG (Directed Acyclic Graph)に由来するものと思われますが、CI/CD の文脈で DAG はパイプラインを構成するジョブの依存関係グラフのことです...
記事を読む分散トレーシング(OpenTelemetry / Jaeger)
今回はアプリケーションのパフォーマンスに焦点を当てます。 アプリケーションのパフォーマンスを分析するにはどうすれば良いでしょうか? 従来は処理時間等の情報をログに残し、これを集計することが多かったと思います。 単一サービスで構成されるシステムではこれで事足りることが多いですが、多数のサービスで構成されるマイクロサービスとなるとそうはいきません...
記事を読むMinikube のプロファイルを使いこなす
Minikube を使ってコンテナアプリを開発してると、目的別にクラスターを切り替えて使いたくなることがあります。 ふだんアプリ開発に使っているクラスターと別のクリーンなクラスターで作業をしたい テストのため、特定のバージョンの kubernetes でクラスターを構成したい Docker 以外のコンテナランタイムを試したい など。Minikube はデフォルトで minikube というプロファイルでクラスターを起動します...
記事を読むGitHub Actions ワークフローで個別ジョブのリランが可能に
先月、GitHub Actions でワークフロー内のジョブを個別にリランできる機能がリリースされました。 GitHub Actions: Re-run only failed or individual jobs | GitHub Changelog 以前の GitHub Actions ワークフローにおけるジョブ制御の記事で作ったサンプルのワークフローを利用して試してみました...
記事を読むLambda Function URLでLambdaをHTTPで直接実行する
2022/04/06 AWSはLambdaをHTTPで直接呼び出す機能追加を発表しました...
記事を読むログ収集・分析(Fluent Bit / Amazon CloudWatch)
前回はログの収集にFluent Bit、その分析にAWS OpenSearchを使用しました。 AWS OpenSearchは、非常に高機能な検索とリッチなUIを提供しますが、デメリットもあります。 まず、OpenSearch自体のセットアップ作業が別途必要です。特に、高スループットが予想される商用環境では、マルチノードでクラスターを組む必要がありますし、構成に応じてかなりのコストが発生します...
記事を読むHelidon Tips - Helidon MP Testing with JUnit5を使ってみる
CDIのテストはCDIコンテナが必要となる点やアノテーションをもとにした静的な依存解決が中心になることから融通が効きづらく悩ましい点がありました。Helidon MP Testing With JUnit5(Helidon MP Testing)は言ってしまえばHelidonを使ってJUnit5からCDIのテストを行えるようにしてくれるだけのライブラリですが、実際に使ってみると非常に便利で悩み多きCDIのテストを激変させる威力を秘めています...
記事を読むIntel / M1 Mac で動作する Electron バイナリを作る - 2022.4
M1 Mac では Rosetta により Intel Mac 用のバイナリを動かせますが、できれば Apple Silicon 用のバイナリを提供したいところです。 electron-builder は M1 Mac にも対応しており、Intel Mac と M1 Mac でクロスコンパイル可能です...
記事を読むログ収集・分析(Fluent Bit / AWS OpenSearch)
今回はログの収集と分析に焦点を当てます。 いつの時代もアプリケーションが出力するログは、障害解析やアクセス/証跡管理に欠かせません。 マイクロサービスのような分散アーキテクチャを採用した場合、1つのアプリケーションは複数のサービスで構成されることになります。 このため、管理対象ログファイルの数は以前と比較すると飛躍的に多くなり、ファイルレベルでなく、全体のログを一元管理するためのバックエンドサービスは不可欠と言えます...
記事を読むお手軽便利MicroProfile Config
勝手に選んだMicroProfile厳選仕様を紹介していく2回目はMicroProfile Config(MP Config)です。MP Configは前回の概要編で触れたとおりマイクロサービスでの利用が考慮された使い勝手の良い設定機能です。今回はその基本機能から特徴的な機能や応用機能まで実装例をもとに紹介していきます。 なお、記事はコードの抜粋を記載します。全体を見たい場合や動作を確認したい場合は以下のGitHubリポジトリを参照ください...
記事を読む豆蔵デベロッパーサイトローンチから4ヶ月のふりかえり
本サイトもローンチから4ヶ月経ちました。 「豆蔵デベロッパーサイト」ローンチのお知らせ | 豆蔵デベロッパーサイト この期間の活動を軽くふりかえってみます。 継続的な記事公開 # 当初からある「コンテナ」カテゴリー。 コンテナ | 豆蔵デベロッパーサイト Kubernetes チュートリアルが、環境構築編、開発編を経て運用編に突入。ハンズオン形式で実践的な内容になっていると思います。チュートリアル以外の活用編の記事を含めると30本近くの記事を公開しています...
記事を読むGitHub issue からブランチ作成する新機能 - issue と PR を自動リンク
issue の画面からブランチを作成する機能がリリースされました。 Create a branch for an issue | GitHub Changelog issue からブランチが作れると何が嬉しいのかパッとは分かりづらいですね。この機能により、従来 Pull Request (PR) 作成時 issue にメンション飛ばしたり issue から PR をリンクしたりしてたのが自動化されます。では使い方を見ていきましょう...
記事を読むHelidon Tips - SLF4J+LogbackへのLogger切り替え
HelidonのLogger実装にはJavaSEのJUL(java.util.logging)が使われています。これは標準を意識しての選択だと思われるためスタンスは理解できるのですが、実際のところJULはちょっと勘弁、、が正直なところかと思います。このため、使い慣れたLogger実装に切り替えたいところですが、SLF4Jなどのブリッジを利用せずコード上で直接java.util.logging.Loggerを利用する実装となっているため、他のLogger実装への切り替えが一筋縄ではいきません...
記事を読むS3 の静的 Web サイトをセキュアに Envoy でホスティング
庄司です。 モダンな UI のフレームワークは静的なコンテンツとしてパッケージングされることが主流となっています。これは変化の激しい UI とそれと比較すれば比較的変化のスピードが遅くてよいバックエンドとの関係で理にかなっています。UI のこうした静的なコンテンツの配信では多くの SaaS 製品で CloudFront のような CDN が利用されています。しかし、エンタープライズで利用されるフロントエンドの場合には VPN を通じたアクセスのみを許可している場合が多くあります...
記事を読むコードが仕様の源泉MicroProfile OpenAPI
勝手に選んだMicroProfile厳選3仕様を紹介する初回はMicroProfile OpenAPI(MP OpenAPI)です。MP OpenAPIは前回の概要編でも説明したとおり、API仕様の取得リクエストに対しソースコード上のアノテーション情報をもとに動的にOAS(OpenAPI Specification)ドキュメントを生成しレスポンスとして返す一連の仕組みを定めた仕様です...
記事を読むメトリクス収集・可視化 - OpenTelemetry / CloudWatch
前回はPrometheusとGrafanaを利用して、Kubernetesおよびアプリケーションに関するメトリクスの収集・可視化を行いました。 今回はOpenTelemetryとCloudWatchを使って同じことをしてみましょう。 OpenTelemetryとは? # OpenTelemetryは、メトリクス、トレース、ログ等のテレメトリー[1]情報のやりとりに関するインターフェースを規定する仕様です(現状ログはまだドラフトです)...
記事を読むスタンドアローンおよび言語組み込みの WebAssembly ランタイム Wasmer
WebAssembly (Wasm) はブラウザで実行可能なバイナリフォーマットの標準として策定され、各ブラウザベンターにより実装されました。その後 Wasm の実行効率、ポータブルでセキュアな特徴をブラウザ外でも利用可能にするため WebAssembly System Interface (WASI) が策定されました。Wasmtime や Wasmer などの WASI 対応 Wasm ランタイムが開発されています...
記事を読むメトリクス収集・可視化 - Prometheus / Grafana
今回のテーマはモニタリングです。 アプリケーションの運用が開始されると、ピーク時間帯や各種イベントに応じてシステム負荷は大きく変動します。 特に、マイクロサービスアーキテクチャでは、臨機応変なスケーラビリティや、無駄なのないリソース効率性とそれに応じたコスト最適化が求められます。 このような状況下では、各サービスレベルできめ細かい情報を収集・可視化することがより重要となります。 モニタリング編では、以下の項目に焦点を当て、それぞれハンズオン形式で実施してみたいと思います...
記事を読む