レバテック開発部のフィード
https://zenn.dev/p/levtech
レバテック開発部の公式テックブログです!
フィード

ドキュメント検索MCPサーバを作ってみた【MCP+OpenSearch+AWS】
レバテック開発部のフィード
はじめにこんにちは、SREチームの鈴木です。SREチームでは、開発リソースの20%を目安にメインプロジェクト以外の「自チームの運用課題の解消」に取り組むことができます。現在、AWS・New Relic・TiDB など開発部で利用する複数のSaaSを管理しており、問い合わせ対応にかかる工数が課題になっています。これを解決するため、各サービスの公式ドキュメントを参照して正確な回答を返す MCP サーバーを作って、実験的に導入してみました!今後は費用対効果を計測しつつ、効果が見込める場合には改善点を洗い出してブラッシュアップしていきたいと思います。本記事では、OpenSearch...
17日前

ユニットテストがしやすいコード構成について過去を振り返って考えてみた
レバテック開発部のフィード
はじめにインテグレーションテスト主体でテストを書いていく場合、テスト実行時間が長い問題が出てきた。(インスタンスをたくさん並べてパラレル実行にするとかやりようはあると思う)解決するためには出来る限りユニットテストに寄せた方が良いが、どういったコード構成ならユニットテストに寄せやすいのか?考えた。 今あるアーキテクチャから選べばいいじゃんという話もあるが。。。既存アーキテクチャだとなんかしっくりこないのでしっくりくるのを考えてみた。全部に当てはまる正解はないので、自分の関わってきたシステムを振り返り、それらを踏まえて考えてみる。実際に本番稼働していたシステムを元に考える...
1ヶ月前

[Laravel] 他システムとのデッドロック発生時の対応メモ
レバテック開発部のフィード
自システムvs他システムのデッドロック対応メモ 概要他システム→自システムへの更新で、特定テーブルのデッドロックが発生しました。突然発生し始めたように見えて、発生直後は焦りました。 直接原因自システムでモデルが作成されたのち、以下の状態になったためデッドロックが起きてしまいました。TRX1:モデルA作成 → モデルイベントでモデルB作成 → モデルイベントでモデルAを更新TRX2:モデルAを他システムへ連携 → 他システムで一意なIDを発行 → モデルAを更新同期処理と非同期処理が被ってしまったパターンです。 復旧作業 データリペア自システムと他システ...
1ヶ月前

見積もり3200%超過プロジェクトから学ぶ、スケジュール遅延要因3選
レバテック開発部のフィード
0. これはなにこんにちは。レバテック開発部のもりたです。じつはこの一年ほど、あるプロジェクトの開発側リーダーをしていたんですが、スケジュールを大きく遅延させてしまいました(2週間で終わる予定が1年を超えた)。スケジュール遅延、嫌ですよねえ...。その嫌な気持ちをいったん傍に置いて、遅延が起きる要因を分解してみると、遅延要因は「もともと必要な工期を過小に見積もった」ことと「失敗で不必要に工期をかけてしまった」ことのふたつに分けられると思います。特に前者の過小見積もりは場合によってはとんでもなく見当違いな見積もりを出してしまいがちです。今回はもりたの実体験をもとに、工期を過小...
1ヶ月前

Laravelのマイグレーション機能をちゃんと知る
レバテック開発部のフィード
これはなにこんにちは、レバテック開発部のもりたです。今回はLaravelのマイグレーション機能についてまとめます。これはアプリケーションコード上でデータベースのテーブル修正やカラム修正を管理する機能です。もりたは仕事上でもLaravelを使うんですが、マイグレーションについてちゃんと理解してなかったため、今回まとめてみました。構成 構成今回の構成は以下の通りです。概要マイグレーションの流れEloquentとマイグレーションの関係マイグレーションファイルの作成方法マイグレーションファイルの書き方マイグレーションの実行それでは参りましょう。 マ...
1ヶ月前

「マネージャーってなにしてるかわからない問題」への対処法
レバテック開発部のフィード
マネージャーっていつもなにをしているのでしょうか。managementには、「管理」だけでなく「なんとかする」という意味も含まれます。文字通りなんとかしようと色々やっていると、なにをしている人なのかよくわからなくなり「マネージャーってなにしてるの?」と思われがちです。そういった状態が続くと、メンバーを不安にさせ、信頼を失うリスクがあります。そんな状態への対処法としておすすめなのが 「毎週レポートを書いて発信する」 です。単純ですが、良い効果があります。!この記事は以下のような人におすすめ「〇〇さんっていつも何してるんですか?」と聞かれたことがある人自分の意見を主張する...
1ヶ月前

ステータスを巻き戻す機能に気をつけろ!
レバテック開発部のフィード
これはなにこんにちは、レバテック開発部のもりたです。今回はもりたのやらかしたイマイチな機能開発について説明しようと思います。わりとやっちゃいそうで普遍的な要素を含む失敗だったので、ぜひみなさんが実際に触っているシステムと比較しながら読んでいただけると幸いです。今回の構成 構成こんな構成でいきます。シンプルにね〜。 ステータスを巻き戻す機能には気をつけろ! どんな機能追加をしたか?はじめに、問題となった機能開発がどのようなものだったのかについて説明しようと思います。本機能開発は、既存機能に対する機能修正でした。 既存機能 - LINE公式アカウントの登...
2ヶ月前

障害対応のリーダーをやる時に気をつけていること
レバテック開発部のフィード
これはなにこんにちは、障害対応が大好きなもりたです(自己紹介)[1]。今回は障害対応をするのが大好きなわたし[2]が、障害対応のリーダー(インシデントコマンダー。以降IC)をやる上で気をつけている点を整理します。障害対応の進め方ってなんか直感みたいになりがちな上、予期して起こせないので学ぶのも難しいですよね。そこで、こうやったらいい感じですよというのをまとめてみました。構成 構成構成は以下です。概論基礎コミュニケーション対外的なもの対応チーム内でのもの調査の進め方はじめに障害対応における論点を整理し、その後基礎的な大切な点、特に大切な2点を紹介す...
2ヶ月前

Windowsユーザーの自分がMacを使いやすくするためにやったこと
レバテック開発部のフィード
概要MacをWindowsに近い操作感へ寄せるための設定とツールを紹介します。ほかの記事と一部重複するところもあると思いますがご了承ください。 背景レバテック開発部に転職し、開発PCとしてMacを標準利用することになりました。私は前職・私用ともに長年Windowsを利用していたため、操作の違いに戸惑いました。ここではWindowsライクな操作感に近づけるために行った最小限のセットアップをまとめます。 対象読者MacをWindowsに近い操作感で使いたい人 筆者の環境PCMacBook Pro(macOS Sequoia 15.5)※2025年9月時点...
2ヶ月前

【失敗談】KMSキーで「最小権限」に絞ろうと試みるも無惨に諦めた話
レバテック開発部のフィード
レバテック開発部の松浪です。先日、EBSボリュームに使用する暗号化キーについて、AWSマネージドキーからカスタマーマネージドキー(KMSキー)への移行を試みました。目的は権限を絞るためです。AWSマネージドキーは "Principal": {"AWS": "*"} という汎用性が高い反面、AWSアカウント内の誰からでも利用可能な広い権限設定になっています。KMSキーへ移行する過程で色々なエラーに遭遇しました。そして、移行を断念しました。 終 ...で、終わったらブログにならないので、この記事では私が遭遇した3つのエラーと移行を断念した理由を解説します。 はじめ...
2ヶ月前

ECS×FireLens(Fluent Bit v1.8.3)でSIGSEGV──回避のためのpreflightログ戦略
レバテック開発部のフィード
TL;DRDatadogとlog-router(FireLens/FluentBit)でログ送信するバックエンドサービスのデプロイ時、初回のログ送信でlog-routerが稀にクラッシュする事象があったデプロイ時のコンテナ起動を工夫し、preflightでログ送信が安全にできるかを確認し、そのSUCCESSを待ってからバックエンドサービスを起動する運用にした環境:ECSFargate、DatadogAgent7.31.0、aws-for-fluent-bit2.19.0(FluentBitv1.8系)備考:“preflight”はCORS文脈で利用される言葉だが、ここで...
2ヶ月前

macOS向けにCouchDBの初期設定手順を説明するよ
レバテック開発部のフィード
これはなにこんにちは、レバテック開発部のもりたです。今回はMacOS向けにHomebrewを使ったCouchDBのインストール/初期設定手順について簡単にまとめます。簡単なんですけど、公式ドキュメントだと分かりにくい箇所があったり、インターネットに日本語記事がないのでね、まとめますね。構成と前提 構成CouchDBとはインストール手順 前提macOS Version: Sequoia 15.xでテスト済みHomebrewがインストール済み管理者権限でのコマンド実行が可能 CouchDBとは基本的な特徴IDのみ持っておりスキーマレス。好きな...
3ヶ月前

WEBサーバの一部として Mountpoint for Amazon S3 を使えないか検討したが、Amazon EFS に落ち着いた。
レバテック開発部のフィード
導入「クラウド上のファイルを複数サーバーから扱いたい」という要件は頻繁に発生します。AWSでは長年Amazon EFSがその筆頭でしたが、fstabによる自動マウントのサポートを開始した「Mountpoint for Amazon S3」という選択肢も登場しました。この記事では、NewRelic移行時が発端となったステートフル問題の解消と共に「Mountpoint for Amazon S3」と「Amazon EFS」の違いを明らかにし、パフォーマンス、ユースケース、コストの観点から比較します。この記事を読んでいただいた方々のストレージ戦略のお助けになれれば幸いです。https...
3ヶ月前

本当は怖くない?CVSSスコアに惑わされない脆弱性との付き合い方
レバテック開発部のフィード
レバテック開発部の松浪です。先日、 multipart/form-data形式のHTTPリクエストを生成できるnpmパッケージ form-data にCVSSスコア9.4(Critical)の脆弱性が見つかりました。CVE-2025-7783CVSSスコア9.4(Critical)とあれば、非常に危険!即時対応!と考える方もいるかもしれません。本当にそうでしょうか?脆弱性対応において重要なのは、スコアの高さだけでなく、その脆弱性が、自分たちのプロダクトで実際に悪用される可能性があるのか? 、悪用された場合にどのような影響があるのか? を判断することです。たとえスコアが高くても、...
3ヶ月前

EventBridge と API Destination で実現する ECS タスク失敗イベントの New Relic 連携
レバテック開発部のフィード
はじめにコンテナ化されたアプリケーションを Amazon Elastic Container Service (Amazon ECS) にて運用する際、ECS タスクの異常終了を迅速に検知することは安定運用の鍵となります。本記事では、Amazon EventBridge と API Destination を活用して ECS タスクの失敗イベントを New Relic に送信する Terraform モジュールを紹介します。このモジュールの最大の特徴は、AWS Lambda を使用せずに実装している点です。 これにより、ランタイムの更新やコード保守といった運用負荷を最小限に抑える...
4ヶ月前

PHPで関数型プログラミング!Result型を使ってクリーンで予測可能なコードへ
レバテック開発部のフィード
こんにちは🐈!みなさん、いろんなところで「関数型はいいぞ」「関数型にせねば」という声をよく耳にしませんか?今回は関数型プログラミングの簡単な解説と、PHPにおける関数型プログラミングへのアプローチについて書いてみました。参考にさせていただいたのは、「なっとく!関数型プログラミング」という書籍です。 関数型プログラミングと純粋関数まずは関数型プログラミングとはなんぞや、について解説します。書籍によると、関数型プログラミングは以下を満たす関数を使ったプログラミングのことです。シグネチャ(関数名、引数の型や数、戻り値の型)が嘘をつかない本体が極力宣言的であるシグネチ...
4ヶ月前

Hono でリモート MCP サーバーを構築して Mastra エージェントから呼び出す on Docker
レバテック開発部のフィード
レバテック開発部の瀬尾です✌Zenn にダークモードが来て喜んでいます。今回は掲題のものを実装してみたら結構簡単だったので、その備忘録を残します。 やったことDB にあるデータを取得して返す MCP サーバーを実装するその MCP サーバーを Hono を使って Streamable HTTP Transport で利用可能にするMastra で作ったエージェントで、その リモート MCP サーバーを使ってデータ取得する 技術スタックMCP ServerBun, TypeScriptHono v4.8AgentBun, TypeScript...
4ヶ月前

DB Tech Showcase 2025(1日目)に参加してきたよ
レバテック開発部のフィード
これはなにこんにちは、レバテック開発部のもりたです。今日は7/10, 11に開催のDB Tech Showcaseに参加してきたので、その参加レポートです。https://www.db-tech-showcase.com/2025/?utm_campaign=db tech showcase&utm_source=note&utm_medium=note DB Tech Showcaseとは?DBTechShowcaseとは、インサイトテクノロジー社が主催する国内最大級のデータ技術系カンファレンスです。毎年夏場に開催されており、今回は7/10(木), 7/...
4ヶ月前

Terraformのmoduleを使ってソースコードの重複をなくすぞ〜
レバテック開発部のフィード
おつかれさまです。水谷です。最近Terraformのソースコードを触る機会が増えて、moduleを覚えたのでその備忘録です。 TL;DR以前はこんな感じで内容がほとんど同じtfファイルを環境ごとに用意していたが、module化することで同一ソースコードを参照できるようになった!moved を使って管理するリソースを引き継ぐことでterraform差分を作らずに移行できた!before(repository root)└── src ├── dev │ ├── ecs.tf │ ├── main.tf │ └── sqs....
5ヶ月前

レイヤードアーキテクチャでは入力検証をどのレイヤーで行うべきか考えてみた
レバテック開発部のフィード
はじめに昨今はクリーンアーキテクチャやオニオンアーキテクチャといった、レイヤードアーキテクチャを採用するプロジェクトが増えています。その中で、「ユーザーからの入力に対する検証をどのレイヤーで行うべきか?」という議論は、設計方針を左右する問題です。今回はこの問題について考えてみました。 この記事の要約「ドメイン層」に入力検証を実装するのは避けた方がいい。「コントローラ層」または「ユースケース層」に実装するのがいい。どちらを選ぶかは、拡張性と開発効率のトレードオフである。 入力検証とは?システムにおける「検証」には、主に以下の三種類があります:入力検証(Inp...
5ヶ月前