本当にただのメモ

なるべく Qiita に投稿しよう

WebSocket と SSE

WebSocket と SSE による HTTP サーバー Push

この 2 つは競合するテクノロジーというわけではない ことに注意

  • WebSocket
    • クライアントとサーバーとの間でソケットを開き、全二重 (双方向) 通信を可能にする
  • SSE

    • HTML5 の拡張機能として開発された、HTTP サーバー Push 方式を単純化した標準
    • サーバーからクライアントに非同期メッセージを送信することはできるが、クライアントがサーバーにメッセージを送信することはできない
  • SSE が WebSocket に勝る点

    • SSE を HTTP で動作させるために追加のコンポーネントが不要
    • SSE を実装する際の開発の労力は、WebSocket に比べるとわずか

(読んだ) 2018年なぜ私達はコンテナ/Dockerを使うのか

https://cloudpack.media/41647

コンテナ(Docker)のメリット

  • ローカル開発環境の統一
  • 本番環境 CI/CDでも 使える
  • なぜVagrantではだめなのか
    • VagrantにくらべてDockerはツールの使い方を覚えなくても、そのOSSのReadme.mdに書いている Dockerコマンドを一発叩けばいとも簡単に構築完了
    • Vagrantは少なくともrubyの知識などが少しは無いとこんなにすんなり動かせない
    • OSイメージが大きい

コンテナで何が変わるか

  • オーケストレーションの利用が前提になるが、多台数マシンへのアプリケーションのデプロイは圧倒的に早くて確実

オーケストレーション

コンテナオーケストレーションツールの“事実上の標準”という座をつかんだ「Kubernetes」。その重要性とは? | 新野淳一コラム | 東京エレクトロンデバイス株式会社

オーケストレーションとは

  • 多数のコンテナに対する運用管理作業
    • コンテナ化したアプリケーションを何台ものサーバーへ展開
    • 複数のサーバーへ展開したコンテナがちゃんと稼働しているかどうかを監視
    • いずれかのコンテナが落ちたときに別のコンテナを起動するクラスター管理
    • アプリケーションへの負荷が高まったらサーバーを増やし、負荷が減ればサーバーを減らすスケーラブルな運用対応や、複数コンテナへのアクセスの分配

オーケストレーションツール

  • Kubernetes がデファクトになりつつある
  • Kubernetesをはじめとするコンテナオーケストレーションツールは、こうした作業を自動化する
    • コンテナを本番環境で運用管理し、分散アプリケーションとして稼働させる

SHOW PROFILE

再現性のあるスロークエリーには「SHOW PROFILE」を試してみよう | Think IT(シンクイット)

使い所

  • EXPLAIN 上問題なさそうに見えるけど遅いクエリのプロファイリング
  • 普通のクエリチューニングなら EXPLAIN の結果を見ていく方が断然効率が良い

ただし

JOIN ON ... table AND ... で絞り込み条件を入れる

SELECT *
FROM a
JOIN b
  ON a.id = b.id
  AND b.foo = 'bar'

こんな感じ。

INNER JOINでは、得られる結果に違いはないが、OUTER JOINでは結果が変わってしまう!

JOIN ONで絞り込み条件を書くと、「 結果を絞るのではなく、結合前のテーブルのレコードを絞る 」らしい。

JOIN ON で絞り込み条件を入れるのと、JOIN ONの後WHERE句で絞り込み条件を入れるのとでは、結果が違う件 - なからなLife