OSとアプリケーションソフトウェアの中間的な位置づけを持つソフトウェアの総称。 RDBMSなどはその位置づけであったが、現在ではRDBMSあるいはDBとして一つのジャンルとして確立されているため、ミドルウェアと呼ぶ事は殆どない。 いわゆるソフトウェア界の中間管理職と言える。 上からはユーザのためと無理難題を押しつけられ、下からはそんな面倒な事はそっちでやれと板挟み。
インフラストリーミングチームの近藤 (@udzura) です。今回は、ミラティブで内製しているオブジェクトストレージサーバ「b3」の紹介記事を書きたいと思います。 今回の記事は、6月にGopher Talkというイベントで発表した「Go製ミドルウェアを実践投入するにあたりやったこと」をベースに、内容を詳細にしたり直近の開発状況に合わせて更新したものです。一部内容はこの発表と重複していますがご了承ください。 オブジェクトストレージサーバを内製した背景 1. 大量オブジェクトの操作や増え続ける転送量に対応したい 2. 一定期間しかファイルの保持をしない 3. オンメモリ/SSD/HDDを組み合わせ…
Software. ソフトウェア
簡単なものですが、自作のミドルウェアを作成してみましょう。 expressjs.com Expressのガイドにも記載がありますが、 「 req , res 」のオブジェクト以外にも第三引数に「 next 」を渡すことができます。 この「 next 」が次のミドルウェアを指す関数となっています。 文字だけではわかりづらいので実際に記述してみます。(_の部分) const express = require('express'); const app = express(); const morgan = require('morgan'); app.use(morgan('tiny')); /…
ミドルウェアとは、リクエスト/レスポンスのライフサイクルの中で実行される関数のこ とを指します。 これまでは下記のものを使用してきました。 //フォームからデータを受け取れるようにする ・app.use(express.urlencoded({ extended: true })); //リクエストはpostかgetのみなのでPUT, DELETEを使えるようにオーバーライドしておく ・app.use(methodOverride('_method')) ・ミドルウェアはただの関数 ・各ミドルウェアはリクエストオブジェクトとレスポンスオブジェクトにアクセス可能 ・ミドルウェアは「res.sen…
こんにちは、リンクアンドモチベーション SREグループの久原です。今回は、SREチーム内の生産性・信頼性向上のために取り組んだミドルウェアアップデートの自動化施策について紹介いたします。 背景 自動化の成果 手順の簡略化 before after 対応時間の削減 やったこと ミドルウェアアップデートの手順 自動化の方針 ①各項目ごとに手動の部分はCodeBuildを使って自動化する before after ②項目間の移行はCodePipelineを使って一気に実施できるようにする 今後の展望 背景 なぜミドルウェアアップデートの自動化に取り組んだのか?それは現在SREチームで注力している 「…
Expressのミドルウェアの挙動、特に非同期処理をおこなうにエラーが発生した場合の挙動が気になったので試してみた。 ミドルウェアで非同期処理をするのは前処理でデータベースに登録するケース等を想定している。 挙動を確認した実装はGitHubにおいた:nodejs-module-labo/express-middleware at main · s1r-J/nodejs-module-labo 実装で気をつけるポイント 先にポイントをまとめておく。 next()は複数回呼び出しても問題ない ミドルウェアでエラーを発生されるときはnext(err);のように呼び出す 呼び出さずにthrowするだけ…
プログラミングの仕事をしていると、外来語由来のカタカナ専門用語が非常に出くわします。 ライブラリとかミドルウェアとかフレームワークといった感じですね。 今回は改めて、その意味について調べてみました。 間違ってたらコメントくださいな~。 ライブラリ API ミドルウェア wikiの記述 IBMの記述 RedHatの記述 Microsoftのdefinition 英語圏でも定義は別れていそう フレームワーク IDE SDK Platform ライブラリ 単体では動作することができず、意図的に組み込んで使うプログラムです。 簡単にいえば、import とか、include とかして呼び出すプログラム…
こんにちは。クルーズ株式会社CTOの鈴木です。 今回はこの一連のOS/ミドルウェアバージョンアップの中の残タスクとなっているWebおよびバッチ用のインスタンスの対応の話をしたいと思います。 以前の投稿「脱レガシーシステム⑥(DBインスタンスのOS/MariaDBバージョンを最新安定版にあげた話)」で記載のとおり、2020年の10月にDBまではOS/ミドルウェアバージョンアップが完了して残るはPHP7.4周りのみとなっています。
readouble.comによるとミドルウェアは アプリケーションへ送信されたHTTPリクエストをフィルタリングするものである。 このミドルウェアはapp/Http/Middlewareディレクトリに設置される。 基本的にアプリの流れは以下の通り クライアント(ブラウザ)がリクエスト ルーティングからコントローラを呼び出し ビューをレンダリングして、レスポンスとしてクライアントへ返される ここにミドルウェアが加わることにより以下のようになる クライアント(ブラウザ)がリクエスト ミドルウェアの処理(Before) ルーティングからコントローラを呼び出し、 ビューをレンダリングして、レスポンスを…
以前、 Tye が設定した環境変数の値を確認する記事を書いた。 tsubalog.hatenablog.com そのときに実装したコードが他にも使い道ありそうだったから、ミドルウェアとして NuGet パッケージにした。 www.nuget.org 使い方は README にまとめてあるが、 ASP.NET Core での利用を想定している。 パッケージをインストールする Startup.cs の Configure メソッドで app.UseEnviewer(); を実行する 実行したアプリの /enviewer にアクセスすると、下図のように構成値が列挙される とりあえず作っただけなので …
本日指数3分足 ストップ高付けた銘柄 155A 情報戦略テク 2351 ASJ 3648 AGS 3987 エコモット 4179 ジーネクスト 5026 トリプルアイ 6573 アジャイル 6574 コンヴァノ 7426 山大 ストップ安付けた銘柄 135A ヴレインS 3905 データセク 9211 エフ・コード 9268 オプティマス 年初来高値更新メモ 1328 NF金価格連動型上場投資信託 140A iF米国10年国債先物インバ 1687 WT 農産物 175A Will Smart 1788 三東工業社 1969 高砂熱学工業 2012 iS 米国債0−3ヶ月 2047 NNインドN…
Development Division/Platform Team/Sys-Infra Unit で実施した Amazon EMR 1 のバージョンアップについてどのようなことをやったのか紹介します。 Repro では Presto や Hive などのセットアップに EMR を使用しており、以下の用途で活用しています。 プッシュ通知の配信対象を抽出する 管理画面で参照するデータを抽出する S3 などに貯まっているイベントデータを集計する EMR のアプリケーションとしては以下を使用していました。 Presto Tez Hadoop Hive Hue 経緯 Repro では多くのミドルウェア…
素晴らしきDjango Djangoは、データベースを用いたアプリケーションを作るのに非常に効果的なツールです。Webサイトでつくれないものはないほど。Djangoの備えている機能について解説します! モデル層 Django は、Web アプリケーションのデータ構造を定義し、操作するための抽象レイヤ「モデル (models)」を提供しています。モデルを使うことで、データベース操作のための複雑な SQL 文を書く必要がなくなります。 モデルの基本 モデルインスタンスの操作 マイグレーションとデータベース その他の高度な機能 ビューの基本 ファイルアップロード クラスベースビュー 高度なビューの実…
uWSGIがファイルやパイプにログを書くときは、各ワーカープロセスが直接ファイルやパイプに書く場合と、一旦masterプロセスにログを送ってmasterプロセスからログを書く場合があります。 masterプロセスにログを送る設定は --log-master ですが、このオプションを暗黙的に有効にするオプションがあります。 UWSGI_OPT_LOG_MASTER か UWSGI_OPT_REQ_LOG_MASTER というフラグが指定された場合に log_master が設定されるようになっていて、uwsgi-2.0ブランチではこれらのオプション(エイリアスを含む)にそのフラグが指定されていま…
はじめに 今回はGoogle Cloud Functions(.NET) + Cloud Scheduler + Cloud Pub/Subを用いて定期的にSlackにメッセージを投稿するシステムを作ってみようと思います。 実際に動作させている様子 はじめに 概要 Slackでの操作 Slackアプリを作成する GCPでの操作 Cloud Pub/Subの設定 Cloud Functionsの設定 Cloud Schedulerの設定 動作確認 概要 以下のような構成図で実装します。 構成図 Cloud Scheduler : フルマネージド cron ジョブ スケジューラ。 Cloud Pu…
書籍「ALL for SaaS SaaS立ち上げのすべて」を読んだので内容をまとめる。 以下の内容は、ほとんどClaude3 Opusを使用して作成している。 Part 1 SaaSを取り巻く環境 Chapter 1 SaaSの概要 要約 SaaSは「Software as a Service」の略で、ソフトウェアをクラウドを通してサービスとして提供することを指す。世界のクラウドサービス市場は急成長しており、2022年までに1436億ドルに達すると予想されている。国内でもクラウドサービスの需要は着実に伸び続けている。SaaSはIaaS、PaaSと並ぶクラウドコンピューティングサービスの一種であ…
はじめに こんにちは、Reproで新規事業の開発を行っているエンジニアの兼信です。 今回は @hono/zod-openapi を採用して型安全なAPI開発を行なっている事例をご紹介します。 導入の経緯 私たちが提供する「Repro」は、デジタル領域のマーケターに対し、エンドユーザーとの付加価値の高いコミュニケーション手段を提供するためのSaaSプロダクトです。一方でそのコミュニケーションを次のステージに導くための新規事業も準備しており、そのために新しいプロダクトの開発も行っています。 すでにRepro という規模が大きくなっているプロダクト・ソリューションをもっているため、最初から一定の規模…
G-gen の杉村です。当記事では、Google Cloud Next '24 in Las Vegas のキーノート(2日目)に関する速報レポートをお届けします。セッションレポートなど、Google Cloud Next '24 の関連記事は Google Cloud Next '24 カテゴリの記事一覧からご覧いただけます。 Google Cloud Next '24 in Las Vegas 概要 Build Gemini Code Assist App Hub BigQuery continuous queries Natural language support in AlloyDB…
みなさまご機嫌よう、OLTA株式会社でフロントエンドエンジニアをしている林です。 OLTAは請求書や見積書などの帳票を簡単に作成・管理できるINVOYというサービスを提供しています。INVOYのフロントエンドにはNuxt2が使われていましたがEOLに伴いNuxt3に移行したので、移行においてうまくいったことや苦労したことなどについて共有します。 移行方針 Next.jsには移行しない Nuxt2からNuxt3へ一気に移行 ライブラリは積極的にリプレース 可能な範囲でComposition API化 移行規模 移行前後の環境の違い 技術的に嬉しいこと Composition APIによる関心の分…
お久しぶりです。以前こちらの記事を書かせていただきました、Cメディア開発グループの伊藤です。 今回は、「不動産情報サイト アットホーム」のリリース運用について紹介できればと思います。 新しいプロジェクトの開発において、リリース作業は必要不可欠ですよね? 多くのユーザーが快適に不動産情報サイト アットホームを利用できるように、常に最新の情報や使いやすい機能を提供することが求められます。 そのためには定期的なバージョン更新が必要です。 また、本番環境のリリースが行われれば、それに合わせて複数ある検証環境も随時更新していかないと環境自体がどんどん古くなってしまいます。 基盤チームで環境を管理している…
こんにちは、虎の穴ラボの浜田です。 先日の社内LT会でRubyのアップデートのお話をさせていただきました。 ミドルウェアのアップデートは定期的に行う作業ですのでスライド資料の補足も含めて、ブログにも作業内容を残しておこうと思います。 登壇した勉強会の詳細は以下になりますので、配信を見てみたいという方はぜひ確認してみてください。 yumenosora.connpass.com 1.アップデートの目的 今回のアップデートの目的は「利用バージョンのサポート終了」です。 Ruby2.7を利用したシステムが社内で稼働しており、サポート終了までの期間が短いため、早急にバージョンを上げる必要がありました。 …
カプコン ドラゴンズドグマ2 ストリートファイター6 https://www.youtube.com/@CAPCOM_RandD/videos https://www.docswell.com/user/CAPCOM_RandD RE Engine。国内最高峰。自社エンジンが魅力。 バンダイナムコゲームス 鉄拳8 Unreal Engine 5 BLUE PROTOCOL Unreal Engine 4? 2022年ごろから、自社エンジンの人材募集を行っている。 https://automaton-media.com/articles/hiring/20220203-190654/ https…
3月よりカスタマーサクセス部に異動しました山﨑です。 弊社内ではSlackがメインのコミュニケーションツールであるため、メールを頻繁に利用することはありません。 ただ、私たちが普段なにげなく利用しているメールの仕組みが気になったので少し調べて検証してみました。 メール配送の仕組み 検証の概要 構成 メール配送の仕組み(検証用) AWS環境 検証内容 環境 事前準備 sendor-smtp(サーバーA) postfix /etc/postfix/main.conf /etc/hosts dovecot /etc/dovecot/dovecot.conf /etc/dovecot/conf.d/1…
ROUTE06 でソフトウェアエンジニアをしている @MH4GF です。私が関わるプロダクトでは認証や認可に Amazon Cognito を使っており、 React で実装したフロントエンドアプリケーションから Amazon Cognito との接続には AWS Amplify が提供している Auth ライブラリを利用しています。 AWS Amplify は 2023 年 11 月に v6 のメジャーバージョンがリリースされたのですが、Auth ライブラリにはいくつかの破壊的変更が含まれていたので、このブログで移行方法の一例を紹介します。 AWS Amplify JavaScript v6…
はじめに こんにちは。 株式会社iimonでバックエンドエンジニアをしている木暮です。 自身のキャリアを振り返るとコードを書くことは長年やってきたのですがインフラ周りやミドルウェア関連の知識がまだまだだなと感じていました。 CTOにオススメいただいたDNSについて勉強をしています。 今回の記事はドメイン名についてまとめました。 DNSとは 今回の趣旨から外れていますがそもそもDNSってなんですか?という人向けに簡単に説明させていただきます。 Domain Name Systemのことを指しています。 主にドメイン名に紐づくIPアドレスを取得する仕組みになります。 例えばiimon.co.jpの…