コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

通信経路におけるポリシング(Policing)とシェーピング(Shaping)についてざっくりまとめる

トークバケットを整理するときに、前提として気になった部分だったので切り出してまとめる。なおシェービング(shaving)ではない。

それぞれの言葉の意味

いずれも通信における帯域制御に使われることばで、帯域などを占有しないように制限値を設ける場合にその制限値を超えるトラフィックが発生したときの考え方の分類。

ポリシング(Policing)

ポリシングは制限値を超えるトラフィックがある場合に超えた部分を切り捨てる考え方。制限量を超えたタイミングだと相手まで到達しないものが出てくる。

シェーピング(Shaping)

シェーピングは制限値を超えるトラフィックが来た場合に、蓄積を行い順次処理をしていくようなやり方。制限量を超えるトラフィックを超える場合は遅延して処理していくことにはなる。

イメージ比較

制限値を超えたときの処理イメージを比較すると以下のようになる。

ポリシングとシェービングのイメージ図

手法 超過したトラフィックの処理方法 長所 短所
ポリシング 破棄する 超過分を破棄するの変化がない 破棄されてしまうので情報が損失してしまう可能性がある
シェーピング 遅延させる 損失がすくない 遅延をするのでリアルタイム性が失われる

関連リンク

リモートコミュニケーションを見直すときに読みたい記事『チームで仕事をするなら、リアクションし続けよ』

適宜振り返りたい記事なのでメモとして。

対象記事

チームで仕事をするなら、リアクションし続けよ|森 一貴(Mori Kazuki)

みどころ

リアクションが重要なことを説いているのだが、なかでも一番下のフレーズが印象深く残るポイント

議論において黙って静かにしていることは、実は透明になることではない。それは黙っていようがなんだろうが、「そのアイデアに賛同しません」という意味である、「そのアイデアはそこまでおもしろくないですね」と発言しているのと全く同じ意味である。だから、黙って静かにしていることは、それそのものが、議論を後ろに引っ張ることなのだ。

リモートミーティングの場合は、ビデオOFFや音声がうまく乗らないなどで、リアル対面よりはリアクションが薄れる。そのため、肯定なのか否定なのか思考中なのかが判断つきづらいのだが、何も反応がないことはマイナスに働くことは自分自身の無意識化にある体験を言語化されたようで非常によかった。

関連リンク

脆弱性周りの略語をざっくり整理する

自身の理解のためによく聞くものだけでも、の整理

CVE(Common Vulnerabilities and Exposures)

CVEは脆弱性を識別するための共通脆弱性識別子。要するに個々の脆弱性に関してわかりやすく管理するために振られるユニークなID。

管理しているのはアメリカ政府の支援を受けている非営利団体のMITRE社。またこのCVEを採番する権利がある機関のことをCNA(CVE Numbering Authorities)と呼ぶ。

https://www.cve.org/

JVN(Japan Vulnerability Notes)

日本国内で報告された脆弱性を共有するためのポータルサイト。国内で提供されているソフトウェアの脆弱性情報の流通を目的にしている。

前述のCVEの運用とともパートナーシップを結んでおり、JVN内で報告された脆弱性とCVEで互換性のあるものはわかるように扱わている。

https://jvn.jp/

NVD(National Vulnerability Database)

アメリカ国立標準技術研究所(NIST)が管理している脆弱性管理のデータベース。CVEや後述のCVSSなどが記載されるデータベースだが、2024年時点では運用が停滞している。

KEV(Known Exploited Vulnerabilities catalog)

実際に悪用が確認された脆弱性の一覧。CVEと連動して実際に悪用が発生したものを取り扱っている。

CVSS(Common Vulnerability Scoring System)

CVSSは脆弱性の深刻度に関しての指標を出すための手法。算出すされた指標の値はCVSSスコアと呼ばれる。

このCVSSスコア自体はバージョンによって異なり、現在最新のバージョンはv3となっている。

SSVC(Stakeholder-Specific Vulnerability Categorization)

CVSS同様に脆弱性を図る指標としてカーネギーメロン大学ソフトウェア工学研究所で考えられた指標。CVSSが脆弱性自体を数値化するのに対し、対応すべき方針が提示されるのが特徴

参考リンク

2024年末時点での世の中の横長広告のサイズを調べる

横長のバナーの推奨サイズは各社どうなっているのか雑に調べる。

参照元

今回は日本国内で多く使われるであろう、Google、LINEヤフー、Instagram(Meta)の情報をもとに整理する。

参考にしたものはは以下

Web広告のサイズの多くは1.91:1の1200x628がベース

昔は特定のサイズで名前があったが現在ではアスペクト比と推奨サイズで規定を表現することが多い様子。参照元で登場するサイズで多く登場するのは以下の2パターン

比率名称 推奨サイズ 補足
1:1 1,200 x 1,200 完全な正四角形、スクエアなどと呼称される
1.91: 1 1,200 x 628 横長の四角形、横長のものに使われる

縦長の画像をサポートしているものに関しては各社まばら。

参考サイト

システム開発におけるインピーダンスミスマッチという言葉の意味をざっくり整理する

なぜ急に電気記号の話が?と思ったことがあるのでざっくりまとめる

よく使われる場面

インピーダンスに関しては身近な話では音響機器の話で出てくる。出力のインピーダンスが高いもの(ハイインピーダンス)に対して、受けてである入力のインピーダンスが低いもの(ローインピーダンス)をセットするとロスが多いなどの話で表現される。ここに関しては前提知識がないとイメージがつきづらいので、以下サイトの絵を参照すると理解しやすい。

インピーダンスとインピーダンス・マッチング | アンブレラカンパニー | BUZZ

本来はインピーダンスが同等な者同士で接続すればロスは限りなくゼロだが、現実的にはそうはいかないので、ローインピーダンスからハイインピーダンスのものにつなげることが良いとされている。

転じて、ソフトウェアにおけるインピーダンスミスマッチとは

ソフトウェアにおけるインピーダンスミスマッチは O/R(Obeject/Relation)インピーダンスミスマッチ として表現され、いわゆるオブジェクト指向での Object とリレーショナルデータベースがもつ Relational なデータ間でミスマッチが発生してロスが起きることを指している。

具体的な事象としてはRDBに定義したテーブル定義から、アプリケーション上で取り扱うオブジェクトを起こす特に変換ロスが発生するようなことを指している。そのためRailsActiveRecordなどはRDBのテーブルとアプリケーション上のModelをほぼ同一に取り扱っているので、インピーダンスミスマッチは発生しない設計となっている。

関連リンク

『CQRS+ESカンファレンス』に行ってきたよメモ

CQRS+ESカンファレンス - connpass』に参加してきたのでそのメモです、

各発表の感想

※資料スライドは見つけたら貼ります。


ドメインイベントで描く未来: CQRS/ESが変えるシステムとDXの可能性

スライドは公開予定ではないということなのでブログを…

CQRS+ESカンファレンス(2024)を開催しました - ytake blog](https://blog.ytake.jp.net/entry/2024/12/24/090000)

感想

  • CQRS/ESをなぜ採用すべきか、というところと基本的な考え方を駆け抜けてサマリで説明
  • イベントを記録すれば後に違う角度で見たくなったときにも見えるという話や、機能的結合や時間的結合の話など改めて重要フレーズピックアップしたいような話でした。
  • 「データはイベントの蓄積である」という考え方をどれだけ持てるかが重要という話は頭に入れながら色々作るときに考えるとよいのかなと思いました。

関連リンク


2年間の実運用を経て振り返るイベントソーシングの実際

感想

  • 中小規模システムのためのCQRS+ESのフレームワークであるSekibanの紹介
  • 大きなものでないと恩恵を受けられないのではないか?というところへの1つの解になりそうな話でした。
  • 作ってみると遭遇しそうな疑問に関してのQ&Aはかなり後続で続く人たちのためにもなる情報に思えました。

関連リンク


いろんな機能をCQRS+ESで作ってみたので皆で所感を見てみよう

感想

  • AxonIQを使ったEventSourcingを用いた実システム作り方
  • 題材としてはAPIサーバを取り扱い、イベントがどのように保存しされ、Queryに使われるテーブルはどのような形になるのかという話をコードを追いながら解説されていました。
  • AxonIQがカバーしている部分もあるので、細かいところが気になったが全体感の理解としては進んだ
  • 最後に紹介のあったイベントストーミングをした図からChatGPTでAxonIQのコードがある程度起こせるデモがあり、雛形作成でここまでいけるのかーという驚きがあった。

関連リンク


イベントの使い方を一度身につけてしまったら、もうそれなしでは生きられなくなるだろう

スライドリンクは公開されたら貼ります

感想

  • 既存システムでのつらみ経験から導入していく家庭のお話
  • 「イベントがほしい」というところからCQRSへだんだん行く過程のお話だったので途中で時間切れになってしまい残念
  • イベントが始点で話をすると結果としてCQRS側へ帰結するんだろうなぁと思いました。

関連リンク


アクターシステムに頼らずEvent Sourcingする方法について

感想

  • ESはアクターモデルがないとできないのではないか?というところに対してのアプローチの話
  • AWSが提唱しているモデルのよくないところを交えつつ、実績のあるKJ法(KatoJun)も紹介されていて、実装したいときの参考になりそうな内容だった
  • 練度が低くてまだうわべだけしか見えていない感じがしたので、もう少し実践的な知識をえたら見直したい

関連リンク


パネルディスカッション

ディスカッション内容

Q. 外部インターフェイスとしては何を採用しているか(REST、gRPC、など)

tomohisaさんはsekibanを使っているためRESTスタイル、鈴木さんはgRPCを利用しているという話をされていた。かとじゅんさんはCommand側はRPCスタイル、ReadモデルはRESTスタイルと使い分けの話をされており、RESTはCommandとの相性問題があるのでその形式が多いと話されていました。成瀬さんはAxonを利用しているためそのあたりはフレームワークが勝手にやってくれているので意識していない旨のお話をされていました。

Q. Protocol Buffersのプロトコルはどうやって共有しているか

かとじゅんさんは他のシステムと連携するかどうかの観点で話をされており、クライアントとサーバーどっちで主管をするか決めて、運用する旨の話をしていました。鈴木さんは単一のアプリケーションに閉じているので、専用のディレクトリを用意して運用している旨の話をされていました。

Q.複雑なシステムじゃなければCQRS+ESは不要かと思うんですが、いるいらないの基準があるか

この話においては、パネルディスカッションのメンバー全員がCQRS+ESの実践者なのでどの方も大小かかわらず使いたいという意見でした。その中で出た意見で印象的だったのが以下の話です。

  • 採用しないとCRUDな作りになるので、データベースの考慮を入れると純粋なドメインモデルとのひずみが出る。そのときに手をいれる必要があるので、それであれば最初からやっておいたほうがよい。
  • そうではないものから書き換えてみたが、書く事自体が大変ではなく、新しい概念や知識を取り込むコストが高い。
  • EUのDDD関連のカンファレンスではCQRS+ESの話が多くなるので今後はメインストリームになるのではないかと考えている。

Q. CDC(Change Data Capture)対応のデータベースじゃないと実践できないですか?

イベントの取り扱いに関して言及があり、イベントをRDBに格納すること自体は問題ないがそのイベントをどうやって取り出すかが問題になる。その際にCDCが存在しないものを使うとポーリングするなどデータベースの負荷がかかるやり方になってしまうのでそのあたりが難しい、とのことでした。また、普通のRDBにしてしまうとスケールアウトの難しさが出るなどの問題があるので、ドキュメント指向のものを使うと良いという話もありました。

感想

  • いろいろな角度でなるほどなぁと思わされれる話が多かった。
  • RESTとイベント記録に関しては確かに噛み合わせが悪い、というよりかはCreate専門になってしまうよなという気持ちに
  • ドキュメント指向のデータベースを使う利点に関してもいままであまりユースケースがわかってなかったのですがこの話を聞いて合点が行きました。

関連リンク


CQRS+ES の力を使って効果を感じる

感想

  • AWSでCQRS+ESにチャレンジしてみる話
  • 前段でかとじゅんさんが指摘していたAWSの例を使っていた話だったので見直しの話が入ったのがタイムリーな感じでした

関連リンク


イベントソーシングとドメインモデリング

感想

  • イベントを中心としたモデリングに関してのLT
  • イベントソーシングはやらずとも、イベントを記録することは念頭に置いて実装することをするのがよいんだろうな、という学びになりました。

関連リンク


使いたいから使うんじゃなく「必然として」使うCQRS+ES

感想

  • 古くからあるシステムにCQRS+ESをあてていく話。
  • 個人的にはCQRS+ESの話というよりも、組織を上げてモダナイズすることの難しさを感じた話
    • マイクロサービス化がモダナイズ化です!という話にしないと前進しなかったんだろうな…という苦労がにじみ出ていた

関連リンク


ドメインイベント増えすぎ問題

感想

  • イベントの種類がたくさん増えてしまって困った話
  • すごく実践に即した話という感じがしており、これからやる人向けへの転ばぬ先の杖的なLTでした。
  • 実際問題このあたりは勘所がないと変な方向にやりそうだな…という感じも強く受けました。

関連リンク


Debeziumを活用したRDBMSイベントソーシングの仕組み

感想

  • Debeziumを利用したCQRSパターンの作成の話。
  • 先ほどのパネルディスカッションにあったCDCがないDBへのアプローチの一例として良さそうでした。
  • ただKafkaも必要になるので考えることは増えそう…

関連リンク


全体を通しての感想

  • まったく普段遣いしない知識の話が満載でしたが、なんとなくの理解でもついていけるように配慮されていてよかったです。
    • ただもう少しアクターモデルやベースの理解があったほうが楽しめた感は否めなかったです。
  • 自分自身がRailsメインが続いていたのでCQRS+ESの考え方自体はぼんやり理解しているレベルでしたが、この機会にもうちょっと足を突っ込むといいのかなと思っています。
  • 普段の実装でもイベントを意識する事自体はマイナスに働くことがないので活かしていきたいと思います。

関連リンク

集合知と合議に関して考えるときに見返したいスライド『合議で決めたいわけではないけれど、 集合知で助けてほしい。』

資料スライド

みどころ

人に意見を求めると、どうしても合議のようになってしまいがちな議論に関してを集合知で助けてほしいときにはどういうことを気をつけるべきか、どのようなことを考えるべきかということのヒントがあるスライド。関連リンクの内容含めて動かし方の参考になる部分が多い。

関連リンク