MNTSQ Techブログ

https://tech.mntsq.co.jp/

「MNTSQ(モンテスキュー)」のTechブログです。

フィード

記事のアイキャッチ画像
ECS Exec のセッションログを専用 S3 バケットへ分離する
はてなブックマークアイコン 21
MNTSQ Techブログ
はじめに 既存構成 課題感 設計 CloudWatch Logs ではなく S3 に倒す クラスタ単位で S3 prefix を切る 実装 ECS タスクロールに付与する IAM ポリシー ECS クラスタの executeCommandConfiguration おわりに はじめに Amazon Linux 2 (以下 AL2) の EOL (2026 年 6 月 30 日) が近付いてくる昨今、皆様いかがお過ごしでしょうか。 弊社では SSH 踏み台として使う EC2 インスタンスを AL2 ベースで用意し、運用作業の起点として長年取り扱ってきました。運用者はここを経由して ECS タスク…
3日前
記事のアイキャッチ画像
NAT Gatewayの通信内容の分析・通信経路の最適化をしてデータ処理料金を約70%削減した話
はてなブックマークアイコン 59
MNTSQ Techブログ
はじめに SREの寺島です。 MNTSQでは継続的なコスト最適化を進めており、SREチームでもこれまでいくつかの削減施策を実施してきました。本記事では、その中からNAT Gatewayのデータ処理料金の削減に向けた取り組みを紹介します。 結果として、NAT Gatewayのデータ処理料金を約70%削減することに成功しました。今回は、コスト増の原因特定から、具体的な対応、そして効果測定にいたるまでの一連の流れをお届けします。 はじめに まずは Cost Explorer でコストの把握をする NAT Gateway の通信内容を調査する VPC Flow Logs テーブル定義 集計クエリ Ro…
6日前
記事のアイキャッチ画像
見たいものは全て見よ!ーAIエージェントで変わった監視モニタリングIaC ー
MNTSQ Techブログ
はじめに 「監視モニタリングのIaCとか机上の空論だろ。労力とリターンが見合わんわ」 …と思っていた時期が私にもありました(慣用句) 前回の記事でも少し触れましたが、AIエージェントの登場によってDatadog × Terraformのような監視モニタリングのIaCの実践が劇的に楽になり、気づけば手動でポチポチとモニタリングの設定をする運用の方が限りなく非効率になってしまいました。 AIエージェントをどう利用するかという部分は、まだまだ過渡期であり皆さま試行錯誤中ではあると思いますが、弊社SREチームではAIエージェントを活用し、モニタリング対象の飛躍的な拡充、モニタリングコード品質の大幅な改…
13日前
記事のアイキャッチ画像
棚卸しから始めるメールセキュリティの見直し:組織を横断したDMARCポリシーの厳格化
MNTSQ Techブログ
はじめに セキュリティ推進室の山田です。 MNTSQはエンタープライズ企業を主な顧客としています。 契約という、顧客企業の事業戦略に直結するような情報を取り扱う性質上、さまざまな観点からセキュリティをしっかりと担保する必要があり、DMARCへの対応もそうした取り組みのひとつです。 DMARCはなりすましメール対策の仕組みであり、実質的な効果を持たせるにはポリシーをp=quarantineまたはp=rejectに設定する必要があります。 しかしMNTSQでは、DMARCレコード自体は存在していたものの、ポリシーはp=noneの状態が続いていました。本記事ではDMARCポリシーをp=rejectま…
18日前
記事のアイキャッチ画像
Playwrightにfault injectionを仕込んでCritical API を自動抽出する
MNTSQ Techブログ
3行で要約すると CUJ(Critical User Journey)ベースのダッシュボードを作る前提として、各 CUJ に紐づく Critical API を客観的に特定する必要がありました Playwright の route API による fault injection を使い、E2E テストから Critical API を自動抽出する仕組みを作りました ある程度汎用的に使えそうなので npm にも置いています:critical-api-finder はじめに SREの寺島です。 特定の API のエラーやレイテンシーの悪化が、どのユーザ体験に影響しているのか、容易に判断できるように…
19日前
記事のアイキャッチ画像
2千万件のログ分析から始めるRedis -> SQS移行とオートスケール
MNTSQ Techブログ
はじめに システムが成長し、扱うデータ量やトラフィックが増大してくると、非同期処理の安定性とスケーラビリティがサービス全体の課題となります。 弊社のサービスの根幹部分はRuby on Railsを採用しているため、長らく標準の非同期処理のキューとしてResque (Redis) を使用していました。しかし、サービス規模の拡大に伴い、Redisベースの運用では「ワーカーのオートスケール最適化」が困難であるという課題が浮き彫りになってきました。 本記事では、この非同期処理のバックエンドを Amazon SQS に移行した背景と、移行に伴って行ったキュー設計・オートスケール最適化の取り組みについて紹…
21日前
記事のアイキャッチ画像
Claude Code に AWS コストを PR 上で試算させる
MNTSQ Techブログ
はじめに モチベーション 実装 インフラリポジトリ(Terraform 変更) アプリケーションリポジトリ(ECS タスク定義変更) 横展開:Reusable / Caller 構成への移行 運用風景 コスト影響がない変更の場合 コスト影響がある変更の場合 おわりに はじめに 弊社では AWS 上にマルチテナント構成のインフラを複数の環境にわたって運用しており、その構成管理を Terraform でおこなっています。インフラ側のリソース構成はもちろんのこと、アプリケーション側で管理されている ECS タスク定義の CPU / メモリ割り当てに対しても、折に触れて変更が入ります。 こうしたリソー…
1ヶ月前
記事のアイキャッチ画像
VPC 内 OpenSearch の FGAC 設定を Terraform + CodeBuild で構成管理する
MNTSQ Techブログ
はじめに 弊社では複数の Amazon OpenSearch Service ドメインを運用しています。これらのドメインはいずれも VPC 内に閉じた構成をとっており、セキュリティ強化を目的にきめ細やかなアクセス制御(Fine-grained Access Control; FGAC)を有効にしています。 FGAC は「誰が OpenSearch 上でどの操作を許可されるか」をロール単位で制御する仕組みです。設定には OpenSearch の Security API を VPC 内から呼び出す必要があります。以前は手順書にもとづいて手作業で設定していましたが、OpenSearch を利用する…
2ヶ月前
記事のアイキャッチ画像
変更管理と最新版管理を楽にする:セキュリティホワイトペーパーをGitHub管理に移行した話 ~マークダウン分割×GitHub Actionsで、文書管理をエンジニアリングする~
MNTSQ Techブログ
SREの藤原です。 MNTSQではセールス、コンサルティング、テクニカルサポートのメンバーなどが顧客からの問い合わせに回答する際に参照するセキュリティホワイトペーパーが存在しています。 このセキュリティホワイトペーパーを、これまではGoogle Docsにて管理していました。 これをマークダウン + GitHubリポジトリでの管理に移行したので、その事例エントリです。 Google Docsで管理する際に発生していた問題 Google Docs自体は共同編集ツールとしては非常に優れています。 一方で、社内で公式に参照する文書という観点では課題を抱えていました。 主な課題としては以下の2点です。…
2ヶ月前
記事のアイキャッチ画像
セキュリティ監査の運用をSlack Botで自動化した話
MNTSQ Techブログ
はじめに SREの寺島です。 MNTSQでは、本番環境でのAWSの手動操作や顧客情報データへのアクセス等をCloudTrailログから検知し、操作者に目的や理由を確認するセキュリティ監査を運用しています(詳細はこちらの記事を参照)。 これまではログからの異常検知は自動化されていたものの、その後の操作内容の確認や目的や理由を確認する運用が人力で行われており、運用上のToilとなっていました。 この課題を解決するため、今回、セキュリティ監査運用を自動化するSlack Botを開発しました。本記事では、そのアーキテクチャから実装の詳細までを紹介します。 はじめに 背景 監査の仕組み 課題 どのような…
2ヶ月前
記事のアイキャッチ画像
Python(unoserver, UnoClient)とLibreofficeを使ったファイルのpdf変換
MNTSQ Techブログ
MNTSQ プラットフォーム部の藤原です。 本記事では、PythonとLibreOfficeを組み合わせたオフィスファイルのpdf変換について解説します。 LibreOfficeはオープンソースのオフィススイートです。 Microsoft Officeで作成した各種ファイル(docxや、xslx、pptx)を読み込み、編集できます。 LibreOfficeにはこれらファイルをpdfでエクスポートする機能も存在しています。 GUIからの実行はもちろんCLIでも実行可能です。 soffice --headless --convert-to pdf ファイル名.docx LibreOfficeを導入…
3ヶ月前
記事のアイキャッチ画像
IAM Identity Center を IdP としてセルフホスト Langfuse に SSO ログインできるようにする
MNTSQ Techブログ
はじめに 弊社では LLM を活用した機能開発の観測基盤として Langfuse をセルフホストで運用しています。Langfuse は LLM アプリケーションのトレーシングやプロンプト管理等に活用できるオープンソースの LLM エンジニアリングプラットフォームです。 さてこの種のサービスには認証の課題がつきまといます。Langfuse は標準でメールアドレス / パスワードによるログインが可能ですが、弊社の方針として開発組織内で利用、管理しているアプリケーションやサービス群には IAM Identity Center を IdP とする SSO を採用しています。Redash や SendG…
3ヶ月前
記事のアイキャッチ画像
Datadog Notebook の活用:メトリックとメモの素早い情報共有とネクストアクションの提案
MNTSQ Techブログ
はじめに Datadog には Notebook というものがあります。以前から存在する機能であり、目新しいものではありません。 詳細は公式のドキュメントが詳しいのですが、Datadog で取り扱えるログやメトリックなどを埋め込めるドキュメンテーションツールという捉え方で然程ズレは無いはずです。単にログやメトリックを追うという意味ではダッシュボード*1 も使え、継続的な観測をする場合は ダッシュボードのほうが断然よいです。 いっぽうでこういった課題感もあると思います。すくなくとも私は常々あります。 あのメトリックとこのメトリックとは何らか関連性のある動きをするはずなんだが、パッと追いづらいぞ …
4ヶ月前
記事のアイキャッチ画像
AuroraMySQL 負荷試験報告 その2〜「なんとなくの試験」を卒業するための実践ログ〜
MNTSQ Techブログ
前回のあらすじ スキーマ分離設計のDB(テナント毎に独立したスキーマを持つDB)でサービス規模が拡大すると、スキーマ数の増加に由来するオーバーヘッドが無視できないものになる 次はパラメータチューニングなどで何とか延命できないか試してみたい tech.mntsq.co.jp はじめに 前回の負荷試験によって、弊社サービスは600テナントを超えたあたりから、データベースの急激な性能劣化を起こすリスクが高いことが判明しました。長期的には根本的な構成の見直しを行うとして、パラメータチューニングなどでデッドラインを後ろにずらせるのであれば、それはそれでありがたいです。 よって、今回の負荷試験の目的は、チ…
4ヶ月前
記事のアイキャッチ画像
スプリットビュー DNS 実践: VPC 内で動く OpenSearch ドメインのカスタムエンドポイント用 SSL 証明書を ACM で管理する
MNTSQ Techブログ
はじめに 課題感 スプリットビュー DNS サンプルコード おわりに 参考 はじめに 小ネタです。記事タイトルが長いのですが、これは本稿の内容を1行で説明したものになります。 そして OpenSearch に限らない一般的な話題としては repost.aws という優れた情報が既にあります。本稿では Terraform コードの例示や背景についての解説を与えることで、付加価値を与えんとするものになります。 課題感 OpenSearch を AWS 上のマネージドサービスとして扱う場合、OpenSearch ドメインを外部からのアクセスが可能なものとして構築するか、VPC 内に閉じたものとして構…
5ヶ月前
記事のアイキャッチ画像
AWS / Azure / Google Cloud 各コストを Datadog に集約して確認する
MNTSQ Techブログ
はじめに 弊社では AWS を主軸としたインフラ構成をもってプロダクトを展開していますが、一部では AWS 以外にも Azure および Google Cloud も活用しています。それぞれの棲み分けは以下のようなものになります。 AWS:ほとんど全て コンピュート / ネットワーク / ストレージ / DB / セキュリティ etc. Azure:OCR 関連 Google Cloud:LLM を使う処理および OCR 関連 利用規模としては AWS >> Google Cloud > Azure といったものになり、結果としてこれらクラウドベンダーの利用にかかるコスト(利用料金の意。以下本…
6ヶ月前
記事のアイキャッチ画像
CloudFront: マルチオリジン構成でSPAをホスティング
MNTSQ Techブログ
はじめに ソフトウェアエンジニアの森山です。 CloudFront で API と静的ファイルを別オリジンで扱い Single Page Application(以下 SPA)をホスティングする構成について解説します。 プライベート API を遮断する設定を追加する際に CloudFront のカスタムエラーレスポンスで躓きました。しかし CloudFront Functions を活用することで上手く切り抜けることができました。 構成 リクエストのパスを元にCloudFrontでオリジンへのアクセスを振り分けています。 S3でSPAのアセットをホスティングし、ALB経由でECSでバックエンド…
6ヶ月前
記事のアイキャッチ画像
MCP Python SDKのClientSessionGroupで複数のMCPサーバーと接続する
MNTSQ Techブログ
こんにちは、MNTSQ(モンテスキュー)でアルゴリズムエンジニア(AIエンジニア)をしている清水です。 MNTSQのプロダクトをLLMネイティブなプロダクトに進化させるべく、LLMOpsに関する実装が増えてきた今日この頃です。 これらの実装の過程で、複数のMCPサーバーに接続してセッションを管理するにはどのような実装がベストか?という問題にぶつかりました。 自前でラッパークラスを実装するしか方法はないのか、と思っていたのですが、MCP Python SDKにClientSessionGroupというクラスがあることを発見したので、これを使うと良さそうだという結論になりました。 私が調べた限りで…
7ヶ月前
記事のアイキャッチ画像
ここ半年間で実施してきた AWS セキュリティ改善施策をまとめる
MNTSQ Techブログ
はじめに 構成 ログ送出 ログ保管 GuardDuty 関係 分析 結果確認 実際の運用 分析系 行動系 おわりに はじめに MNTSQ はそのサービスの性質(「契約」の集約、一元管理、活用)上、セキュリティの維持と向上が至上命題です。よってセキュリティ改善において強いモチベーションが存在します。 今回の取り組み以前にも AWS ベストプラクティスに沿った AWS アカウントの管理や各種ログの収集は行われていましたが、収集済みログの活用やセキュリティ系の AWS 各サービス運用には改善の余地が多々ありました。今回ここにテコ入れし、現状に寄り添った運用ができるように改善することを目論みました。 …
7ヶ月前
記事のアイキャッチ画像
AuroraMySQL 負荷試験報告 その1 〜結局のところスキーマ分離のDB設計ってどうなの?〜
MNTSQ Techブログ
はじめに スキーマ分離と行分離 目的と結論 目的 結論のサマリ 試験内容 試験環境とツール 負荷の設計 本番環境でのクエリ傾向の分析 QPSの測定 進め方 試験結果 スキーマ分離のボトルネック スキーマ数を固定して負荷をあげてみる 結果まとめ なんとか延命したい はじめに 弊社が採用しているDB設計は、テナントごとに独立したスキーマを持つ「スキーマ分離」 のデータ構造に基づいています。このアーキテクチャは、高いデータ分離性とセキュリティを確保できる一方で、「スキーマ数の増加に伴ってパフォーマンスが劣化する」という性質が指摘されます。 サービスのスケールにおいてこの「性能劣化」が、いつ、どのよう…
7ヶ月前
記事のアイキャッチ画像
デリバリーを担保するリードエンジニア
MNTSQ Techブログ
こんにちは。 「すべての合意をフェアにする」MNTSQの森山です。 この度、MNTSQでリードエンジニアを務めることになりました。 リードエンジニアは、チームの出力を最大化するためにあらゆる角度からデリバリーを支えます。責任を持つのは「コードの品質」だけではなく、「チームとして成果を出すこと」です。そのために必要な技術的・組織的な取り組みをリードしていきます。 エンジニアの役割は、会社やチームによって定義が少しずつ異なります。そこで今回は、MNTSQにおけるリードエンジニアとは何かを、自分自身の整理も兼ねて言語化してみました。 なぜリードエンジニアという役割が生まれたのか? これまで弊社には「…
7ヶ月前
記事のアイキャッチ画像
Kaigi on Rails 2025 参加記
MNTSQ Techブログ
バックエンドエンジニアの河久保です 2日間にわたる Kaigi on Rails 2025 お疲れ様でした 今回の会場が東京駅丸の内南口から徒歩1分で着く会場だったので、中央線(一番丸の内寄りにホームがある)ユーザーの私としてはものすごくアプローチが良くて最高でした 次回は渋谷(神泉寄り)とのことで、井の頭線使うかなぁーとか考えながら帰途に就いてました 今回の聴講スタイル 今回の Kaigi on Rails では聴講したすべてのセッションをスマートフォンで録音し、終わり次第 Notebook LM に音声データを渡すということを実践してみました 日英のセッション問わず文字起こし精度も良く、音…
8ヶ月前
記事のアイキャッチ画像
IAM Identity Center と Cognito とを組み合わせて SPA へのアクセス制御をおこなう
MNTSQ Techブログ
はじめに 弊社では Entra ID ユーザ / グループを使い AWS 利用時の認証や権限制御を IAM Identity Center を使い実現しています。Entra ID と IAM Identity Center を SCIM で連携させることで Entra ID 側の情報を用いて達成しており、このあたりは 拙稿 に詳細があります。 IAM Identity Center は自身が ID プロバイダ(以下 IdP と書きます)になることもでき、この場合 SAML / OAuth2 で外部アプリケーションとやりとりすることが可能です。このあたりも 拙稿 として存在します。 今回、社内の…
8ヶ月前
記事のアイキャッチ画像
IAM Identity Center を IdP として Redash に SSO ログインして操作ログを Athena で追う
MNTSQ Techブログ
はじめに 弊社では BI ツールとして Redash を EC2 上でセルフホストするかたちで利用しています。CS や Sales 等の部門で日々の指標を追うのに使われるだけでなく、開発や運用のためのアラーティングにも活用されています。 今回この Redash へ SSO ログインの仕組みを導入し、Redash 利用者の操作履歴を 部分的に 監査できるようにしました。SSO の IdP としては掲題通り IAM Identity Center を選定しています。これら対応について記録します。 なぜ IAM Identity Center を IdP に? 去る2025年5月下旬に以下記事を公開…
9ヶ月前
記事のアイキャッチ画像
PrivateLinkを使ってクロスアカウント & クロスVPCでセキュアなデータベースアクセスを実現する
MNTSQ Techブログ
SREチームの藤原です。 サービスを運用しているとデータ分析や他システムとのデータ連携などで、DBへの読み取り専用アクセスが必要になる場合は多々あると思います。 本エントリでは、AWS PrivateLinkを活用することで、セキュアなクロスアカウントかつ、クロスVPCなアクセスを実現できるのでその方法を解説します。 aws.amazon.com 構成のイメージ 本エントリでは、2つのアカウントの間でのクロスアカウント & クロスVPCアクセスを前提とします。 アカウントAがアクセスする側、アカウントBがアクセスされる側とします。 PrivateLink設定前のアカウントBは図1のような構成で…
9ヶ月前
記事のアイキャッチ画像
CloudFrontのVPC Originの利用と静的リソースの配信について(副題: ひょっとしたらさよならパブリックサブネット)
MNTSQ Techブログ
SREチームマネージャーの藤原です。 本エントリでは、現在構築中の新サービスにて利用する予定の CloudFrontおよびVPC Originの活用と、CloudFrontを経由した静的リソース配信について解説します。 シンプルな構成へのCloudFrontの導入 まずは非常にシンプルなアプリケーションを考えてみます(図1)。 単一のバックエンドのコンピューティングリソースに外部向けのAPIと内部向けのAPIがある場合、インターネットからアクセス可能な外部向けのロードバランサーと、内部からのみアクセス可能な内部向けのロードバランサーを分けて設定するパターンがあります。 図1. シンプルな構成の…
10ヶ月前
記事のアイキャッチ画像
あるSREの生成AI (Devin) 活用事例
MNTSQ Techブログ
はじめに こんにちは、MNTSQ株式会社でSREをやっている西室と申します。私生活ではゲーム以外でPCを使わないので、最新技術へのアンテナ感度はエンジニアとしては最低クラスです。未だにタッチタイピングができません。 さて、最近巷では「生成AIがすごい」だの「使えないと時代に取り残される」だの、何かと話題が尽きないですが、まだ業務にうまく活用できていないという方も多いのではないでしょうか? かくいう私も「なんか調べるのが億劫だな〜」と、ChatGPT以外には手を出していなかったのですが、半年ほど前に開発チームにDevinが導入されたので試しに使ってみたところ、これがなんともう世界が一変するくらい…
10ヶ月前
記事のアイキャッチ画像
Route 53 による DNS クエリログを全部 Athena で取り扱えるようにした
MNTSQ Techブログ
はじめに MNTSQ はそのサービスの性質(「契約」の集約、一元管理、活用)上、セキュリティの維持と向上が至上命題です。 セキュリティへの取り組みには幾つかのアプローチがありますが、何が不足しているのか、どういった対処が必要かという点を突き止めるには情報が必要です。これはどういったアプローチを取るにしても共通して重要な観点と思います。 本稿はこの情報の獲得のためのログ収集範囲の拡充を行った記録となります。対象は Route 53 の DNS クエリログです。 なぜ DNS クエリログを取るか DNS クエリログはその名前の通り DNS へのクエリのログです。つまり いつ 誰が 何を どこから(…
10ヶ月前
記事のアイキャッチ画像
GeminiのStructured outputでレスポンスの型を矯正するためのTips 7選
MNTSQ Techブログ
こんにちは、MNTSQ(モンテスキュー)でアルゴリズムエンジニアをしている清水です。 MNTSQは契約書を解析・管理・検索するプロダクトを提供しています。これらのプロダクトには大規模言語モデル(以下LLM)が搭載された機能が実装されています。また、LLMを活用した新プロダクトも鋭意開発中です。 LLMをアプリケーションに組み込む際の大きな課題の一つとして、「LLMの出力形式(型)を如何に矯正するか?」が挙げられます。単純なチャットアプリケーションであればそこまで問題にはなりませんが、LLMによる生成結果を後続のプログラムで処理する必要がある場合、事前に定義された型に従って出力を生成する必要があ…
1年前
記事のアイキャッチ画像
型だけでは足りなかったAPIクライアントの自動生成。
MNTSQ Techブログ
openapi-ts 導入 こんにちは、MNTSQ のソフトウェアエンジニアの森山です。今回は、REST API の OpenAPI 3.0 から API クライアントを自動生成するまでの過程を紹介します。 実はメインのプロダクトへ TypeScript を導入できたのはつい最近のことです。API クライアントを自動生成するまでの苦労や新たな発見が 1 つでも参考になれば嬉しく思います。 課題 API クライアントの自動生成に取り組む上で、現在の BE と FE には以下の課題がありました。 BE API フレームワーク移行期のため、OpenAPI 2.0 と 3.0 の 2 つの API 定…
1年前