-
水準が3つ以上のデータを分析したい
これまで「対応あり・なしの2つのデータ群について差」の検定を実施してきました。 では、3つ以上のデータ群の差を検定するにはどうすればいいでしょうか? 実はt検定は2群の差までしか検定することが出来ません。 3つ以上の条件での分析には「分散分析」を用いることになります。 今回も統計解析ツールjamoviを使ってデータ分析を行っていきます...
記事を読む -
対応のあるデータの差を検定する
前回のブログ記事では「対応なしt検定」について見ていきました。 今回は「対応ありt検定」で例題を解いていきましょう。 今回も統計解析ツールjamoviを使ってデータ分析を行っていきます。 Contentsお題「2種類の試行の差の確認」記述統計での確認対応ありt検定での確認まとめ お題「2種類の試行の差の確認」# 今回のお題は以下を考えます...
記事を読む -
11tyで生成したマークダウン記事の画像を拡大する
早いものでデベロッパーサイトを開設して半年ほど経過しました。継続的に記事も公開し、もうすぐ100本に到達します。 今後は記事の執筆と並行して、サイト自体のUI/UX改善にも取り組んでいきたいと思います。 今回は改善要望として上がっていた記事の画像のズーム機能について対応しました。デベロッパーサイトなのでここではそのやり方も記事として紹介したいと思います...
記事を読む -
ArchUnitで考えるアーキテクチャ構造とその検証
「進化的アーキテクチャ」に続き「ソフトウェアアーキテクチャの基礎(日本語版)」発売で再び注目を浴びてきたArchUnitですがTips的な情報があまりネットにないので、これはArchUnitで検証しておこう!というパターンをよくありそうなアプリケーションを題材に実装例をまとめてみました。また、実装例だけだと味気ないので筆者なりのアーキテクチャに対する考え方を合わせて少しご紹介します...
記事を読む -
品質改善効果を検定で確認する
データ分析・解析系の記事をすばやく検索するために Analytics タグを用意しました。 このタグを使って本シリーズ記事を検索していただけたら幸いです。 今回も統計解析ツールjamoviを使ってデータ分析を行っていきます...
記事を読む -
GitHub Codespaces を使いはじめる
GitHub Codespaces は GitHub が提供するクラウド開発環境です。GitHub 社内で運用されていた Codespaces が間もなく一般にもリリースされそうです。 Codespaces --> InformationGitHub 社内の開発環境は昨年 Codespaces に移行し、社員の環境構築作業が劇的に改善されました...
記事を読む -
箱ひげ図で外れ値を確認する
前回のブログ記事では統計解析ツールjamoviを使って1標本t検定を行う例をご紹介しました。 今回は再度jamoviを使いつつ、データ分析をする上でネックになる”外れ値”を箱ひげ図を使って確認し、分析に適用していく方法をご紹介します...
記事を読む -
Windows、macOS で sshfs を使用する
この記事では、Windows、macOS で sshfs を使用する手順を説明しますが、この説明の前に、sshfs について調べるきっかけになった背景を記述させてください。 私は Docker Desktop の代替として Rancher Desktop を使っています。macOS 上では Rancher Desktop の仮想 Linux 環境に lima が利用されています...
記事を読む -
サービスメッシュが解決しようとしている課題
この記事では、サービスメッシュがどのような課題を解決しようとしているかについて概説します。 アプリケーションは、時間の経過とともに大きく複雑になっていきます。モノリスで始めたアプリケーションもやがて単一のチームでは手に負えなくなります。 やがて分割する時期を迎えます。アプリケーションを分割したそれぞれの部分 (パート) を SOA 時代以降では「サービス」と呼びます...
記事を読む -
統計解析ツールjamoviの紹介
皆様、どんなツールを使ってデータ分析されていますか? 日頃から同僚・後輩・上司に「こんなデータがあるんだけど、これって意味があるデータなのかな?」なんていう相談されて困ってはいないでしょうか? そんな時こそ簡単便利な統計解析ツールの出番です。 もちろんExcelが手元にあればExcelの「分析ツール」を有効化して分析作業は実施できます...
記事を読む -
Flagger と Ingress Nginx でA/Bテストをする
前回は、FlaggerとNginxのIngress Controllerを使ってカナリアリリースを試しました。 Flagger と Ingress Nginx でカナリアリリースをする 今回はA/Bテストの方を試したいと思います。 前回のカナリアリリースは、徐々にカナリアバージョンのトラフィック量を増やしながら切り替えていく形でした...
記事を読む -
GitHub Actions ジョブサマリー機能を使う
GitHub Actions のジョブサマリー機能がリリースされました。 Supercharging GitHub Actions with Job Summaries | The GitHub Blog ワークフロー内で、GITHUB_STEP_SUMMARY 環境変数を用いてワークフロー実行中の情報を出力できます。出力内容はワークフロー実行のサマリーページに表示されます...
記事を読む -
JetBrains Gateway の Gitpod 統合を使って IntelliJ IDEA でリモート開発する
JetBrains の IntelliJ IDEA は根強い人気を誇る IDE です。先月末に JetBrains Gateway と Gitpod を使ってリモート開発が可能になったというアナウンスがありました...
記事を読む -
Flagger と Ingress Nginx でカナリアリリースをする
Kubernetesはデフォルトではローリングアップデート(RollingUpdate)とPod再生成(Recreate)をデプロイ時の戦略として利用できます。 特にデフォルトのデプロイ戦略であるRollingUpdateは、ゼロダウンタイムで順次新バージョンをリリースさせていく方式ですが欠点もあります...
記事を読む -
Backstageで開発者ポータルサイトを構築する - カタログ作成
以前以下のブログでBackstageの紹介と導入に関する記事を書きました。 Backstageで開発者ポータルサイトを構築する - 導入編 今回はこの続きで、Backstageを利用して実際にコンポーネントを登録してみたいと思います。 ここでは、Backstageの以下のコア機能を利用します...
記事を読む -
Mizu(水)でマイクロサービスのトラフィックを分析する
Kubernetesでおもしろいツールを見つけたので、ご紹介したいと思います。 その名もMizuです。ロゴを見れば分かるように日本語の「水」から名付けられたものです。 https://getmizu.io/ その中身はPod間を流れるトラフィックをキャプチャし、可視化してくれるもので、多数のサービスで構成されるシステムの調査で強さを発揮しそうです...
記事を読む -
Kubernetes v1.24がリリースされました
2022/05/03 Kubernetesのv1.24がリリースされました。 Kubernetes 1.24: Stargazer 詳細な変更履歴はこちらで確認できます。 以下個人的に大きいと感じた変更点についてまとめてみました。 Dockershim削除# 今回のリリースで一番の目玉はやはりDockershimの削除でしょうね...
記事を読む -
分散トレーシング(OpenTelemetry / AWS X-Ray)
前回はOpenTelemetryとJaegerを使って、エンドツーエンドでトレース情報を収集・可視化をしました。 ここで利用したJaegerは分散トレーシングに特化したOSSプロダクトで高機能ではありますが、実際に運用する場合は、その構成を慎重に検討する必要があります。 例えば、以下の対応が必須で必要となるでしょう...
記事を読む -
Helidon Tips - MicroProfile RestClientを使ったRESTリースのJUnitテスト
HTTPプロトコルを用いた結合レベルのRESTリソースのテストはどのようにやられていますか? クライアントからE2Eテストでドカンと一緒に確認でしょうか?それともRESTリソースを呼び出す疑似クライアントプアプリを作成して実施でしょうか?あるいは真面目にやっていないとかでしょうか?いずれにせよHTTPレベルでRESTリソース(REST API)に対するテストを細かくやろうと思った場合...
記事を読む -
Backstageで開発者ポータルサイトを構築する - 導入編
依存関係にある他チームで開発しているAPIの情報を探すのに社内リソースを探し回った経験はないでしょうか? 小さな組織ではあまりないかもしれませんが、ある程度の組織になると、管理対象のシステムが数百から数千といったオーダーで構成されることが多いかと思います。 その結果、目的のものを探すためにあちこち探し回り、見つかったと思ったらほしい情報がそこにはなく途方に暮れる。。なんて経験が私はよくあります...
記事を読む -
アーキテクチャ・デシジョン・レコードの勧め
Michael Nygard 氏は「DOCUMENTING ARCHITECTURE DECISIONS」で、特にアジャイル開発では最初の時点でアーキテクチャが決まることはなく、また包括的なドキュメンテーションには価値がなく、小さなピースのドキュメントが全てのステークホルダーに必要であり...
記事を読む -
第7回 らくらくMicroProfile RestClient
MicroProfileの厳選仕様を紹介していくシリーズの最後は第4回で紹介した『これは抑えておくベキ、もしくは使っておくベキ』仕様第1位の筆者一押しのMicroProfile RestClient(MP RestClient)です...
記事を読む -
Serverless Framework Composeで複数サービスをまとめて管理する
2022/04/20にServerless Frameworkの新機能Serverless Framework Composeがアナウンスされました...
記事を読む -
分散トレーシング(OpenTelemetry / Jaeger)
今回はアプリケーションのパフォーマンスに焦点を当てます。 アプリケーションのパフォーマンスを分析するにはどうすれば良いでしょうか? 従来は処理時間等の情報をログに残し、これを集計することが多かったと思います。 単一サービスで構成されるシステムではこれで事足りることが多いですが、多数のサービスで構成されるマイクロサービスとなるとそうはいきません...
記事を読む -
話題の CI/CD ツール Dagger を体験してみる
Dagger は、Docker を開発した人たちによるポータブルな CI/CD ツールです。先月末公開されました。 Introducing Dagger: a new way to create CI/CD pipelines ポータビリティ実現のためコンテナ環境が前提になっています...
記事を読む -
ドメイン駆動設計のコンテキストマップ
ドメイン駆動設計の戦略的設計では、システム全体をどのように境界づけられたコンテキストを統合するかを表すコンテキストマップ (Context Map) を描きます。さらに、このコンテキストマップには時間の経過とともに、コンテキストが追加、更新、削除のように修正されていくことも考慮しておく必要があります...
記事を読む -
Minikube のプロファイルを使いこなす
Minikube を使ってコンテナアプリを開発してると、目的別にクラスターを切り替えて使いたくなることがあります。 ふだんアプリ開発に使っているクラスターと別のクリーンなクラスターで作業をしたい テストのため、特定のバージョンの kubernetes でクラスターを構成したい Docker 以外のコンテナランタイムを試したい など...
記事を読む -
Lambda Function URLでLambdaをHTTPで直接実行する
2022/04/06 AWSはLambdaをHTTPで直接呼び出す機能追加を発表しました...
記事を読む -
GitHub Actions ワークフローで個別ジョブのリランが可能に
先月、GitHub Actions でワークフロー内のジョブを個別にリランできる機能がリリースされました。 GitHub Actions: Re-run only failed or individual jobs | GitHub Changelog 以前の GitHub Actions ワークフローにおけるジョブ制御の記事で作ったサンプルのワークフローを利用して試してみました...
記事を読む -
ログ収集・分析(Fluent Bit / Amazon CloudWatch)
前回はログの収集にFluent Bit、その分析にAWS OpenSearchを使用しました。 AWS OpenSearchは、非常に高機能な検索とリッチなUIを提供しますが、デメリットもあります。 まず、OpenSearch自体のセットアップ作業が別途必要です。特に、高スループットが予想される商用環境では、マルチノードでクラスターを組む必要がありますし、構成に応じてかなりのコストが発生します...
記事を読む -
Helidon Tips - Helidon MP Testing with 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つのアプリケーションは複数のサービスで構成されることになります...
記事を読む -
第6回 お手軽便利MicroProfile Config
勝手に選んだMicroProfile厳選仕様を紹介していく2回目はMicroProfile Config(MP Config)です。MP Configは第4回の概要編で触れたとおりマイクロサービスでの利用が考慮された使い勝手の良い設定機能です。今回はその基本機能から特徴的な機能や応用機能まで実装例をもとに紹介していきます。 なお、記事はコードの抜粋を記載します...
記事を読む -
豆蔵デベロッパーサイトローンチから4ヶ月のふりかえり
本サイトもローンチから4ヶ月経ちました。 「豆蔵デベロッパーサイト」ローンチのお知らせ | 豆蔵デベロッパーサイト この期間の活動を軽くふりかえってみます。 Contents継続的な記事公開継続的なサイト改善社外アピール社内アピールまとめ 継続的な記事公開# 当初からある「コンテナ」カテゴリー...
記事を読む -
Helidon Tips - SLF4J+LogbackへのLogger切り替え
HelidonのLogger実装にはJavaSEのJUL(java.util.logging)が使われています。これは標準を意識しての選択だと思われるためスタンスは理解できるのですが、実際のところJULはちょっと勘弁、、が正直なところかと思います...
記事を読む -
GitHub issue からブランチ作成する新機能 - issue と PR を自動リンク
issue の画面からブランチを作成する機能がリリースされました。 Create a branch for an issue | GitHub Changelog issue からブランチが作れると何が嬉しいのかパッとは分かりづらいですね...
記事を読む -
S3 の静的 Web サイトをセキュアに Envoy でホスティング
モダンな UI のフレームワークは静的なコンテンツとしてパッケージングされることが主流となっています。これは変化の激しい UI とそれと比較すれば比較的変化のスピードが遅くてよいバックエンドとの関係で理にかなっています。UI のこうした静的なコンテンツの配信では多くの SaaS 製品で CloudFront のような CDN が利用されています...
記事を読む -
第5回 コードが仕様の源泉MicroProfile OpenAPI
勝手に選んだMicroProfile厳選3仕様を紹介する初回はMicroProfile OpenAPI(MP OpenAPI)です。MP OpenAPIは前回の概要編でも説明したとおり、API仕様の取得リクエストに対しソースコード上のアノテーション情報をもとに動的にOAS(OpenAPI Specification)ドキュメントを生成しレスポンスとして返す一連の仕組みを定めた仕様です...
記事を読む -
メトリクス収集・可視化 - OpenTelemetry / CloudWatch
前回はPrometheusとGrafanaを利用して、Kubernetesおよびアプリケーションに関するメトリクスの収集・可視化を行いました。 今回はOpenTelemetryとCloudWatchを使って同じことをしてみましょう...
記事を読む -
スタンドアローンおよび言語組み込みの WebAssembly ランタイム Wasmer
WebAssembly (Wasm) はブラウザで実行可能なバイナリフォーマットの標準として策定され、各ブラウザベンターにより実装されました。その後 Wasm の実行効率、ポータブルでセキュアな特徴をブラウザ外でも利用可能にするため WebAssembly System Interface (WASI) が策定されました...
記事を読む -
メトリクス収集・可視化 - Prometheus / Grafana
今回のテーマはモニタリングです。 アプリケーションの運用が開始されると、ピーク時間帯や各種イベントに応じてシステム負荷は大きく変動します。 特に、マイクロサービスアーキテクチャでは、臨機応変なスケーラビリティや、無駄なのないリソース効率性とそれに応じたコスト最適化が求められます。 このような状況下では、各サービスレベルできめ細かい情報を収集・可視化することがより重要となります...
記事を読む -
GitHub のリリースノート自動生成機能を使う
昨年10月 GitHub のリリース機能がリニューアルされ、自動的なリリースノート生成とリリースページ作成 UI の改善が実施されました...
記事を読む -
第4回 使って分かった!お勧めMicroProfile仕様厳選3選
MicroProfileは大小様々な仕様が存在します。 前回紹介したサンプルアプリにMicroProfileの各機能を組み込んでフィット感を試してみた結果、MicroProfileを採用するのであれば『これは抑えておくベキ、もしくは使っておくベキ』と言える仕様がいくつかありました。今回はその中から厳選した3つの仕様をランキング形式で紹介します...
記事を読む -
GitHub Actions - 再利用可能ワークフローを使う
GitHub Actions のワークフローから別のワークフローを再利用する機能が昨年11月にリリースされました。この機能がなくて不便に感じていた人も多いのではないでしょうか...
記事を読む -
第3回 使った、作った、Helidonで! - サンプルアプリの紹介
前回まではMicroProfile全体に関する軟らかめの話でしたが、今回からはMicroProfileでどのようなことができるか?そして使うのか?などの実装的な側面の話をしていきます。 その初回となる今回は、まずは動くものを見てもらう意味も含めMicroProfileを使ったサンプルアプリを紹介し、その後にMicroProfile実装として利用しているHelidonを説明します...
記事を読む -
Rust によるデスクトップアプリケーションフレームワーク Tauri
Tauri はクロスプラットフォームデスクトップアプリのための Rust によるフレームワークです。Electron と同様 Web 技術でアプリの UI を構築します...
記事を読む -
第2回 MicroProfileってなにそれ? - MicroProfileの仕様と実装
前回はMicroProfileの登場からMicroProfileが目指すものまで説明しました。今回はMicroProfileの中身となるMicroProfileの仕様と実装について、私見も交えながら説明したいと思います。若干長い説明となりますが、最後まで目を通していただけたら幸いです...
記事を読む -
KubernetesのPod Security(PSS/PSA)
Kubernetesのv1.21で、今までPodセキュリティを担っていたPodSecurityPolicy(PSP)が非推奨となりました[1]。このままいくとPSPはv1.25で削除される予定です...
記事を読む -
第1回 MicroProfileってなにそれ? - MicroProfileの登場
連載初回となる今回はなにはともあれまずはMicroProfileそのものについて、概要から説明していきたいと思います...
記事を読む -
Debezium によるチェンジデータキャプチャー
Change Data Capture (CDC) は、データベースで発生した変更をキャプチャーして別のシステムに伝播させ、応答できるようにする仕組みです。CDC を利用することで、テーブルの更新をポーリングするバッチ処理などを作り込まずに、イベントドリブンな応答処理を実装できます。CDC はイベントソーシングと並んで分散システムをリアクティブに連携させるためのソリューションとして位置付けられます...
記事を読む -
Podスケジューリング - NodeAffinity / TaintToleration
Kubernetesで作成したPodは、Node[1]が割り当てられ、コンテナランタイムを通して実行されます。 Nodeは、多数のVMでクラスタ構成され、データセンター障害に備えて物理的に分散して配置されることが一般的です。 また、コスト最適化やワークロード要件を満たすために、コア数やメモリ容量だけでなく、OS種類やCPU/GPU、SSD/HDD等様々なスペックを持っていることもあるでしょう...
記事を読む -
macOS 上で Podman を動かす
2022年1月31日で Docker Desktop の移行期間が終了し、企業での使用は無償使用の条件に該当しない限り全て有償化されました。 有償化による金額の大小に関わらず、大企業での作業には予算の認可に時間が掛かったり、中小企業だとそもそも年度の予算が足りなかったりなど、さまざまな理由でライセンス料を支払う事が難しいケースもあります...
記事を読む -
Envoy と Open Policy Agent を使用した認可
Envoy proxy は API を使って動的に構成すると無停止で設定変更等を行うことができます。このような操作は 通常 Istio や AWS App Mesh のようなコントロールプレーンで行うことになります。 この一連の記事では Envoy proxy 単体の機能を説明するために静的な設定を用いて説明しています...
記事を読む -
GitHub Actions ワークフローにおけるジョブ制御
GitHub Actions ワークフローでは、複数のジョブを順次・並列・条件実行できます。各ジョブは異なるマシン(Runner) もしくは コンテナイメージで実行されます。それぞれ具体的に見ていきましょう...
記事を読む -
Envoy を使用して ID Token (OIDC) を検証する
Envoy proxy は API を使って動的に構成すると無停止で設定変更等を行うことができます。このような操作は 通常 Istio や AWS App Mesh のようなコントロールプレーンで行うことになります。 この一連の記事では Envoy proxy 単体の機能を説明するために静的な設定を用いて説明しています...
記事を読む -
オートスケーリング - Horizontal Pod Autoscaler(HPA)
商用環境で実際にサービスが運用されると、時間帯やイベント等、様々な要因によってトラフィックが変動し、それに合わせてシステム負荷も増減します。 コンテナ以前の従来のシステムでは、あらかじめ最大のスループットを見積もり、それに合わせてサーバーのサイジングをすることが一般的でした。 ただ、これはほとんどのケースでオーバースペックとなり、費用対効果が良いとは言えない状況でした...
記事を読む -
Serverless Framework v3新機能のStage Parameters紹介
2022/1/27にServerless Frameworkのメジャーアップデート(v3)がありました。 Serverless Framework V3 Is Live! CLIの改善以外にそれほど大きな変更はなさそうですが、v3でStage parametersという新たな機能が導入されました。 これをうまく活用することで、環境ごとに異なる設定を簡潔に記述できます...
記事を読む -
S3 の静的 Web サイトを Envoy でホスティング
S3 に静的なコンテンツを配置して公開する場合、よく見られる構成は CloudFront とを組み合わせるパターンです。ほとんどの場合、これで問題ありません。しかし、一部のパターン、例えばエンタープライズで利用されるフロントエンドの場合には、VPN を通じたアクセスのみを許可している場合があります...
記事を読む -
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年からメンテナンスされています...
記事を読む -
Karpenterのオートスケールを試してみました
2021/11/29に、AWSはKarpenterというKubernetesのオートスケーラーをGAリリースしました。 Introducing Karpenter – An Open-Source High-Performance Kubernetes Cluster Autoscaler これは有料のサービスではなく、OSSとしての提供です...
記事を読む -
継続的デリバリ - ArgoCD
前回は、GitOpsの産みの親であるWeaveworks社が開発したFluxを導入して、継続的デリバリを実現しました。 今回はもう1つのGitOpsツールとして人気を集めるArgoCDを導入します。 Flux同様に、ArgoCDもGitOpsを体現したツールですが、最も大きな違いとして、ArgoCDはリッチなWeb UIを組み込みで持っています[1]...
記事を読む -
継続的デリバリ - Flux
アプリケーション開発編では、お手製のアプリをローカル環境やクラウド環境(AWS EKS)にデプロイしてきました。 しかし、ローカル環境はSkaffoldを使って自動化したものの、クラウド環境はkubectl applyを使って手動デプロイしました。 ここでは、GitOps[1]を体現する継続的デリバリツールとして人気のFluxを導入します。 最終的には、以下のような構成となります...
記事を読む -
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クラスタ(AWS環境準備)
前回で、コンテナレジストリを導入し、コンテナイメージ用のリポジトリを準備しました。 今回はアプリケーション開発編の仕上げとして、Kubernetesクラスタ環境のEKSにアプリケーションをデプロイしましょう。 一般的なプロジェクトでは商用環境だけでなく、結合テスト、受け入れテスト等、様々なフェーズに応じた環境が準備されています...
記事を読む -
クラスタ環境デプロイ - EKSクラスタ(Kustomize導入)
本記事は、クラスタ環境デプロイ - EKSクラスタ(AWS環境準備)からの続きです。 ここでは、Kubernetesのマニフェストファイルを、Kustomizeに対応した構成へと見直していきます。 Kustomizeはbaseと呼ばれる環境共通部分にパッチを当てることで、各環境の完全なマニフェストを生成します。 以下のようなフローで最終的にデプロイする形になります...
記事を読む -
EC2にS3をマウントする方法
FTPサーバーとして使用しているEC2がファイルを受け取った際に、S3トリガーでLambdaを動かすようにしたときのメモです。 AWS Transfer for SFTPも検討しましたが、コストの問題からEC2にS3をマウントする方式を採用しました。 以下、その手順です...
記事を読む -
lima 紹介
M1 チップ搭載の mac で Windows の WSL2 のような感覚で仮想 Linux 環境を手に入れたいとの思いから、lima というプロジェクトがあることを知り早速使い始めました。 インストールは、Homebrew を使うと楽にインストールすることができます...
記事を読む -
クラスタ環境デプロイ - コンテナレジストリ(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 に移行する
Electron には Web コンテンツを表示する仕組みとして当初から WebView が提供されており、多くのアプリで採用されています。現在 WebView のドキュメント冒頭には使用を避けるよう警告が書かれています...
記事を読む -
eleventy-plugin-code-clipboard
eleventy-plugin-code-clipboardは、静的サイトジェネレータツールの1つであるeleventy(以下11ty)のカスタムプラグインです。 このプラグインは、マークダウンのコードブロックで生成されたものに対して、クリップボードコピー機能を提供するもので、本サイトでも使用されています。 プラグインは以下の2つの機能で構成されます...
記事を読む -
Scrapbox の社内導入
これは、Scrapbox Advent Calendar 2021 - Adventar 22 日目の記事です。 普段 豆蔵デベロッパーサイト では技術情報を中心に紹介しています。 ですが、本記事では技術情報そのものではなく、技術情報をどのように社内で共有・活用しているかについてご紹介します...
記事を読む -
Dapr on Jetson Nano with k3s
マイクロサービスのように、多言語プログラミング (polyglot programming) が前提の環境では、認証認可やログのような横断的関心事 (cross-cutting concern) をアプリケーションのコードとして実装すると、各言語やフレームワークごとに移植が必要となり最新化への足かせとなります...
記事を読む -
分散 IoT Hub プラットフォーム
グローバルに展開する IoT プロダクトの場合、IoT デバイスとの通信のレイテンシーが非常に大きな課題となります。また、それぞれの地域で異なるセキュリティポリシーの課題もあり、可能な限りデバイスに近接したロケーションで処理を行い、中央との通信をフィルターし、通信量の低減も求められます...
記事を読む -
Kubernetesマニフェスト作成 - Webアプリケーション
ここまででローカル環境で開発する準備が整いました。 ここからは、実際に動くアプリケーションをローカル環境にデプロイしましょう。 このチュートリアルでは、一般的によくあるであろうシンプルなWebアプリケーションとバッチアプリケーションを例に見ていきます。 題材としてはタスク管理ツールとします。このツールの機能としては以下になります...
記事を読む -
Windows への Docker CLI のインストール
Docker は背後で Docker デーモンが実行されて、Docker コマンドは Unix ドメインソケット (Linux や macOS の場合) または tcp ソケットで Docker デーモンと通信します。 Linux にインストールした Docker デーモンは設定により Unix ドメインではなく tcp で外部マシンからのアクセスも可能にすることができます...
記事を読む -
ローカル開発環境準備 - ローカルAWS(LocalStack)
これまでローカルでKubernetesを実行する環境としてminikube、開発からデプロイまでを自動化するツールとしてSkaffoldを導入し、いよいよ開発が始められる準備が整ってきました。 最後にアプリケーションが外部プロダクトに依存する場合を考えてみましょう。 一般的にアプリケーションはそれのみで完結することはほとんどなく、DBやキャッシュ等他のプロダクトを利用することが大半です...
記事を読む -
マイクロサービスの Active Directory の活用
新たなサービスの開発では、誰がサービスを使用できるかを確認するための認証 (Authentication) とサービスのどの機能にアクセスしてよいかを確認するための認可 (Authorization) を考える必要があります...
記事を読む -
ローカル開発環境準備 - 自動化ツール(Skaffold)
前回は、minikubeを使ってローカル環境内でコンテナアプリケーションを実行する環境を整えました...
記事を読む -
ローカル開発環境準備 - 実行環境(minikube)
それではここからはアプリケーションの開発編に入っていきましょう。 チームでKubernetesで動作するアプリケーションを開発する場合に、どうやって各開発者がコンテナ環境で動作するアプリケーションを実装・テストすればよいでしょうか? クラウド上に各個人のクラスタ環境を準備するのが理想的ですが、コスト的に難しいというのが一般的かと思います...
記事を読む -
非公式 Scrapbox アプリを開発している話
これは、Scrapbox Advent Calendar 2021 - Adventar 15日目の記事です。 2017年の終わり頃から個人で Scrapbox を使い始めました。それまでは Tumblr にサブアカウントを作って個人用 Wiki 的に使っていたのですが、テキスト(Markdown)編集が使いづらいと感じていました[1]...
記事を読む -
「豆蔵デベロッパーサイト」ローンチのお知らせ
ビジネスソリューション事業部の近藤です。このたび豆蔵デベロッパーサイトを公開の運びとなりました。 このサイトは、豆蔵に所属する開発者が業務内・業務外を問わず注目したり採用したりした技術、使ってみての見解などを開発者の皆さんをターゲットにお届けする場として更新していこうと考えています...
記事を読む -
setup-helmfile
setup-helmfile は Github Actionsで Helmfile を利用するための Action です。 Helmfile は、複数の Helm Chart を纏めて Kubernetes クラスタにインストールするツールです。インストールの順序制御や、インストールの前後にフックを挟んでちょっとしたスクリプトを実行させることもできます...
記事を読む -
sbgraph
sbgraph は Scrapbox のページ間リンクを可視化するためデータを出力する CLI です。 Scrapbox はページ間のリンクを簡単に作成し、ページ配下にリンク先のページが可視化されていくユニークな情報共有システムです。豆蔵では社員の情報共有ツールとして大いに活用されています...
記事を読む -
concourse-k8s-resource
concourse-k8s-resource は Concourse CI で、Kubernetes クラスターにコンテナイメージをデプロイするための Concource カスタムリソースです。 Concourse CI では、Resource という概念で、パイプラインから成果物を取得したり生成するターゲットを定義します。公式・サードパーティ含め多くのリソースが公開されています...
記事を読む -
monorepo-update-checker
monorepo-update-checker は モノレポの変更有無を配下のプロジェクト(リポジトリ)ごとにチェックできる Action です。 モノレポは Git リポジトリ構成戦略で、あらゆるプロジェクトを一つの Git リポジトリで管理する方式です。相対する戦略はマルチレポです。Google の Chrome などのあらゆるプロダクトが巨大なモノレポで構成されているのは有名です...
記事を読む -
buildpacks-action
buildpacks-action は GitHub Actions で Cloud Native Buildpacks を使ってコンテナイメージビルドを実行するための Action です...
記事を読む -
Velero による Kubernetes クラスタのバックアップ・リストア
Velero は Kubernetes クラスタのオブジェクトをバックアップ・リストアするためのツールです。 Velero 概要ページで Velero の想定しているユースケースを見てみましょう...
記事を読む -
ストレージ - AWS EFS
前回はAWS EBSを使ってコンテナにストレージをマウントすることで、Podの再起動時にもデータを消失することなく継続して利用することができました。 今回はNFSプロトコルを利用する共有ファイルストレージサービスであるAWS EFSを使って複数Pod間でのファイル共有を実現します...
記事を読む -
ストレージ - AWS EBS
これまでAWS EKS上でk8sクラスタ環境の構築を行い、Ingress Controllerを導入することでインターネットからのリクエストを受け付けられるようにしました。 ただ、アプリについては固定レスポンスを返すだけで実践的なものではありませんでした。 そこで今回は、データ保存を行うアプリを考えてみましょう...
記事を読む -
Ingress - HTTPS通信(Cert Manager)
今回は、IngressにTLS証明書をセットアップし、セキュアに外部と通信できるようにしましょう。 ゼロトラストネットワークの考え方が普及し、今や開発・テスト環境でも通信のTLS化が当たり前の時代になりました(もちろん暗号化は通信だけではだめですが)。 そこで課題となるのが、暗号化で利用する証明書の管理です。証明書の有効期限切れによる通信障害のニュースもよく耳にします...
記事を読む -
Ingress - AWS Load Balancer Controller
前回はNginxをIngress Controllerとして利用しました。 Nginxはロードバランサーとして利用可能なプロキシサーバーで、実績のある成熟したミドルウェアと言えます。 しかし、AWSにはロードバランサーのフルマネージドサービスとしてELB(Elastic Load Balancing)が存在しますので、あえてNginxを入れなくても、ロードバランサー機能として同等のことができます...
記事を読む -
Ingress - カスタムドメイン管理(external-dns)
前回までは、Ingressに登録したホスト名をHostヘッダを直接指定することで、DNSで名前解決がされた体で確認ました。 当然ですが、実運用でこのようなことをすることはなく、DNSサーバにIngressとのマッピングを追加する必要があります。 これを手動で実施すると、Ingressに新しいホストを追加する度に別途DNSで作業する必要が出てきます...
記事を読む -
Kubernetes ネイティブなワークフローエンジン Argo Workflows
Argo Workflows は Kubernetes で動作するワークフローエンジンです。コンテナイメージを利用してジョブを記述でき、Kubernetes 上でそのまま実行できます...
記事を読む -
Ingress - NGINX Ingress Controller
KubernetesのIngressリソースを導入しましょう。 Ingressとは、クラス環境内にデプロイされたアプリ(Pod)に対して、ロードバランシングを行うKubernetesの機能です(こちら参照)。 環境構築編では、動作確認用にServiceリソースをLoadBalancerとして定義することでL4ロードバランサーを作成(実態はELB)しました...
記事を読む -
クラスタ環境構築 - AWS EKS (Terraform)
前回に引き続き、AWSのKubernetesフルマネージドサービスのEKS(Elastic Kubernetes Service)でクラスタ環境を構築してみましょう。 前回はeksctlを利用してクラスタ環境を構築しましたが、今回はIaCツールとして高い人気を誇るTerraformを使います...
記事を読む -
クラスタ環境構築 - AWS EKS (eksctl)
AWSのKubernetesフルマネージドサービスのEKS(Elastic Kubernetes Service)でクラスタ環境を構築してみましょう。 今回クラスタの構築にはAWS公式のCLIツールのeksctlを利用します。 eksctlはWeaveworks社で開発されたEKSクラスタの構築・運用を容易にしてくれるCLIツールです...
記事を読む