ブックマーク / zenn.dev/shiguredo (8)

  • ミドルウェアとウェブフック

    長くパッケージソフトウェアとしてのミドルウェアを開発してきて、ミドルウェアとウェブフックの組み合わせがとても良いと感じているので、雑にまとめていこうと思います。 まとめ ミドルウェアとウェブフックの組み合わせはお勧め。 戦略 ミドルウェアに永続化情報を持たせない ミドルウェアから直接データベースを引く仕組みを持たせない ミドルウェアにプラグインの仕組みを持たせない データベースを直接引く仕組みを持たせない 自分がミドルウェアを開発したときは、ミドルウェアがデータベースを引く仕組みを持っているというのが一般的でした。 ただこれ、どのデータベースに対応するのかという問題がでてきます。 PostgreSQLMySQLOracleSQL Server などなど、対応するデータベースが多いと、ミドルウェアの開発者は大変です。 RDB だけでなく LDAP や Redis といったデ

    ミドルウェアとウェブフック
    toshikish
    toshikish 2024/01/08
  • sqlc を TypeScript で利用する

    まとめ sqlc-gen-typescript かなり良い 自分が TypeScript でウェブアプリを利用するなら間違いなく sqlc を選択する SQL は共通言語という点で当に偉大 sqlc とは sqlc とは Go で書かれた SQL を元にコードを生成するツール。 なぜ sqlc ? 結局、それぞれの ORM 固有の技術を覚えるくらいなら SQL を覚えた方が早い 拡張に ORM が対応していようがいまいが関係ない SQL パーサーが pg_query_go を利用しているので信頼できる sqlc は PostgreSQL だけなの? sqlc は MySQLSQLite にも対応している。 sqlc は Go だけなの? sqlc は Wasm でプラグインが書けるようになってきており、つい最近 TypeScript 版がリリースされた。 現時点では、 Postgr

    sqlc を TypeScript で利用する
    toshikish
    toshikish 2023/12/26
  • DataPacket 雑感

    10Gbps Unmetered Dedicated Servers | DataPacket.com を自社サービスに採用して 1 年以上過ぎたので振り返ってみます。 追記: 2024-08-23 DataPacket から Akamai Connected Cloud へ切り替えました 自社製品が Raft ベースの分散システムになり、軽量なサーバーを大量に上げる事でスケールアウトが可能になっためです DataPacket 自体は利用中に障害は一切なく、サポート対応も素晴らしかったです 前提 著者は選定と調達を担当しています 著者は運用や構築に関して素人であり、実際の運用や構築は行っていません オープンになっていない価格については一切書きません 自社製品は Raft ベースのクラスター機能を持っています まとめ (2024-03-03 版) DataPacket の利用で不満は今のとこ

    DataPacket 雑感
    toshikish
    toshikish 2023/04/04
  • OnlineOrNot のススメ

    利用しているサービスに何か障害が起きたとき真っ先に見に行くのがステータスページですが、ステータスページ作るのはめんどくさいです。 そこで自社で利用しているステータスページサービスを簡単に紹介したいと思います。 OnlineOrNot - Free Status Pages and Uptime Monitoring - OnlineOrNot 仕組みとしては定期的に指定された URL をチェックしにいくというシンプルなものです。 ちなみに、時雨堂のサービスのステータスページは以下になります。 どんな感じかのイメージをつかんでもらえるといいかなと。 Shiguredo Inc. Status プラン 5 URL までは無料で使えます。カスタムドメインや URL を増やしたい場合は有料です。 さらにこれ Team プランだとプライベートステータスページも提供してくれるようです。 Plans &

    OnlineOrNot のススメ
    toshikish
    toshikish 2023/01/17
  • サーバー間通信の暗号化を Tailscale に丸投げする

    まとめ Erlang/OTP の分散機能利用時のサーバー間通信はデフォルトでは暗号化されていない Erlang/OTP が提供する分散機能の暗号化は TLS を利用する Tailscale で P2P VPN をサーバー間で張って Erlang/OTP の分散機能オススメ Erlang 分散機能 時雨堂で開発しているミドルウェアソフトウェアは Erlang/OTP (以下 Erlang) を利用しています。 Erlang は分散機能が入っています。分散機能を簡単に説明すると、他のサーバーにある Erlang とやりとりができる仕組みです。 このときにサーバ間を利用する際に、暗号化が必要になりますが、Erlang が標準で提供為てる機能はサーバー間通信を TLS にする方法がありますが、Erlang に TLS 処理させるのは CPUべるしお勧めはできません。 Erlang -- Us

    サーバー間通信の暗号化を Tailscale に丸投げする
    toshikish
    toshikish 2023/01/11
  • TimescaleDB 雑感

    TimescaleDB を自社サービスに採用して 1 年以上過ぎたので振り返ってみます。 前提 著者は SQL に関して TimescaleDB を採用を決めたタイミングから勉強した初心者です Managed Service for TimescaleDB を採用しています まとめ TimescaleDB の利用で不満は今のところない sqlc との組み合わせは最高 開発会社が提供するマネージドサービスは最高 なぜ TimescaleDB を採用したのか 統計情報のため込みと集計 自社製品であるミドルウェアパッケージソフトウェアのクラウド版を提供するにあたり、何よりも重視したのは統計情報の提供です。それもサーバーの統計情報ではなく接続単位での接続情報を顧客に提供することです。 自社製品はリアルタイムに音声や映像を配信する製品ということもあり、一定間隔での統計情報の収集が重要になります。ネッ

    TimescaleDB 雑感
    toshikish
    toshikish 2023/01/07
  • dockertest のススメ

    追記: 2024-07-20 Testcontainers を使いましょう。 概要 dockertest は go でテストを書く際に docker 経由で指定したコンテナを起動してくれてテストが終わったらコンテナを削除してくれる便利ライブラリです。 モチベーション 時雨堂では TimescaleDB という PostgreSQL に TSDB 拡張を追加した少し変わった RDBMS を利用しています。 TimescaleDB 専用の関数があったりするため、モックなどを使わずにテストを書くのが現実的です。 dockertest ory/dockertest: Write better integration tests! Dockertest helps you boot up ephermal docker images for your Go tests with minimal wo

    dockertest のススメ
    toshikish
    toshikish 2022/10/06
  • Cloudflare で mTLS を利用する

    Cloudflare で mTLS を利用するのがあまりにも簡単だったので書いておきます。 mTLS について 一般的に TLS を利用する場合は「クライアントがサーバーから送られてきた証明書を検証する」という仕組みを利用し、 信頼できる機関が発行した証明書を利用しているかどうかや証明書のドメインが一致しているかどうかなどを確認します。 mTLS (mutual TLS) というのは TLS 利用時に「クライアントから送られた証明書をサーバが検証する」という仕組みです。 つまりサーバーがクライアントがわから送られてくる証明書を確認するというフェーズが挟み込まれます。 この証明書自体は何を使ってもよく、オレオレ証明書でもかまいません。 クライアント側に証明書を設定するという仕組みです。VPN とかを利用したりする方は経験があるかもしれません。 mTLS はめんどくさい クライアント側に証明書

    Cloudflare で mTLS を利用する
    toshikish
    toshikish 2022/09/24
  • 1