Niiko thought at that time

"Niiko はその時思った..."

Go のバイナリには静的ファイルは含まれないことを知った41歳の夏

Go の文法をなんとなく理解して、API サーバを開発したときの話で、ワシャワシャとコードを書いて、さぁサーバにデプロイだぜってときに Go の素人が陥った罠というか、無知ゆえのドハマリの記録です。 あと41歳ではないです。 で、本題なんですが、超シンプルにこんなディレクトリ構成で開発してたとします。 . ├── Makefile ├── README.md ├── etc │   └── conf.yaml ├── go.mod ├── go.sum └── main.go 基本的には main.go…

Continue Reading →

REST 制約の Statelessness

Hypertext Transfer Protocol はステートレス・プロトコルの代名詞みたいな物と思ってるんですが、REST ももちろんステートレス・プロトコルを利用しています。が、今回のテーマはプロトコルの話ではないのです。 Fielding の論文でステートレスなアーキテクチャスタイルとは The client-stateless-server style derives from client-server with the additional constraint that no sess…

Continue Reading →

REST 制約の Cacheability

キャッシュはクライアントとサーバの通信回数の削減や通信量の節約のために使用する。 例えば今見ているこのページをリロードしたときのステータスを開発ツールで確認してもらうと 304 Not Modified が表示されると思うので見てもらいたい。 これは表示に使われたデータがリロード時に取得されたものではなく、ウェブブウラウザに保存されたキャッシュデータが再利用されたことを表していて、通信量の節約が行われていることが確認できる。 まずは、サーバからクライアントにリソースをキャッシュさせる方法と、キャッシュさせ…

Continue Reading →

REST を理解しようとしている

Roy Fielding の REST (REpresentational State Transfer) を理解しようとしている。全然わからない。 経緯としては、こういうことのよう。 アプリケーションサーバが HTTP のセマンティクスを使用しないアーキテクチャを採用していた。 アプリケーションサーバは一枚岩でスケールしない。 REST はそのやり方を止めた。 REST を使うことにより、容易にサーバを追加できるのでスケールしやすくなった。 つまり REST は HTTP をちゃんと使うためのアーキ…

Continue Reading →

HTTP の歴史を 10 分で振り返る

このエントリはネットワークを効率的に利用する Web アプリケーションを開発するための前提知識をまとめようという試みです。 ネットワークの視点から HTTP の歴史をバージョン順に見ていくと、通信回数とデータ量を減らすことと、通信の稼働率を上げることに力が注がれてきたことがわかります。なので TCP コネクションに絞って約 10 分でわかった気になれるようにします。 バージョンごとの TCP コネクション HTTP はトランスポートプロトコルとして TCP を使っています。TCP は HTTP メッセージ…

Continue Reading →