diaryです

入門インフラリンク集を読んで、今後の方針を固めました

  • 【入門】インフラやるなら知っておきたいトピックのリンク集 でおすすめされていたリンクを一通り目を通し、疑問に思ったことや、さらに読みたいことをメモしたものになります。
  • awesome-xなどのリンク集は、雑多に集められていて読み切る時間が無理で詰んでしまいがちですが、このリンク集は初心者向けに軽いものが多く、概観を掴んだり、インフラの聞いたことあるけど…みたいなトピックを勉強する手がかりが得られたので、全体量がちょうどよいまとめだと思います。
  • それでは、各トピックについて僕の感想とかこれから勉強したいことを書きます。

# HTTP

## まとめ

  • ブラウザでURLを打ち込んでからページがレンダリングされてユーザに届くまで何が起きているか、ネットワーク視点での話
  • HTTP/2.0の最終ドラフトが2015年に承認されたの最近だなと感じた。

## これから

# REST

## まとめ

  • URLとURIの違いってなに
  • https://tools.ietf.org/html/rfc3986#section-1.1.3
  • RFC3986によると、URIはでかい概念で、URL(location)と、URN(name)を含む大きな集合。
  • また、スキームhttpはURLに含まれる(RFC1738 3.1 https://tools.ietf.org/html/rfc1738#section-3.1 )
  • urlは変更されても良くて、urnは名前なので一意で変更されないことを前提としている。
  • 個人的な感想として、時代的にはURLも変更されてほしくない感じがあるけど…

## これから

# キャッシュ/KVS

## まとめ

  • RDBに比べてシンプルで、高い性能とスケーラビリティを実現するためにKVS
  • KVS、単なるMapだと思っていたがそうでもなかった。複雑で面白い。
  • 記事ではKVSがFacebookやAmazonのもののような印象を受けたが、現在ではRedisが普通に使われている気がするので、大規模データでなくてもKVSが嬉しい理由がある気がする。

## これから

  • Redisを触ってみる
  • KVSは大量のサーバに分散させたほうが力技ができるということは、大量データがなければ嬉しさがあまりないのだろうか?つまり、小さな規模ではRDBで十分なのか?(それとも小さくてもKVSが嬉しい時があるのか)

# CDN

## まとめ

  • 規模が大きくてネットワーク周りわからないことが多かった。

## これから

# ネットワーク

## まとめ

## これから

# NAT/プロキシ

## まとめ

  • DHCPの仕組み、NATの仕組みとNATルータの実現

## これから

  • ゲートウェイという概念があまり良くわかっていない
  • iptablesを使ってNATルータがRaspberry piとかで作れるんじゃないか?調べてみる

# Firewall

## まとめ

  • ファイアウォールの方式はIP/portのパケットフィルタ方式以外にも、アプリケーションゲートウェイのように中身のデータを見るものもある。

## これから

  • GCPだとファイアウォールをリソースとして指定するけど、あれは実質iptablesなんだろうか?
  • firewalld, iptables, ufw, netfilterの関係を明確に答えられるようにしておきたい
  • アプリケーションゲートウェイは中身のデータを見るからプライバシーとか暗号化周りで問題が起きそう。どういうケースで使われるんだろう。

# Git

## まとめ

  • git show, git stash はじめて知った

## これから

# SDN

## まとめ

  • はじめて聞く概念が多くて分からなかった。XDP, eBPFは聞いたことあるくらい

## これから

# 認証・認可

## まとめ

  • 二要素認証と二段階認証の違い
  • リスクベース + 二要素がセキュアで可用性もよい
  • FIDOとWebAuthn

## これから

  • リバースブルートフォース攻撃って何がリバースなんだろう
  • FIDOはサーバに生体情報を送らないのでネットワーク上には結果のみが乗るという点で改ざんしやすそうだけど対策どうするんだろう
  • 個人的に生体認証は変えが効かないのと、生体の変形に耐えられないので、偽造リスクは許容した上でハードウェアトークンがいいかなと思う。

# OAuth/SAML/OpenID

## まとめ

  • CognitoはAWSのフェデレーションサービス

## これから

# SSO

## まとめ

  • 代理人には認可を渡す

## これから

  • サークルでウェブサービス基盤やSNSを作ってSSOできるようにしたい。

# 仮想化

## まとめ

  • 見せかけの意味でvCPU, vNICと言っている

# コンテナ

## まとめ

  • 開発サイクルの高速化によるデプロイ時間のコストからコンテナが登場したという文脈は抑えておきたい

## これから

# ロードバランサ

## まとめ

  • パーシステンスという、トランザクションが終わるまでクライアントとリアルサーバのつながりを保持するよう振り分け先を固定する機能がすごいと感じた。

## これから

  • パーシステンスどうやって実現しているんだろう
  • おうちでインターネットを作るとLBについて詳しくなれそう

# データベース

## まとめ

  • loopをなくすというコッドの思想がRDBの偉大なところ

## これから

  • 調べたり、復習しておきたい
  • 正規化
  • インデックス、EXPLAIN
  • SQL Injection, prepared statement
  • トランザクション、ACID

# DNS

## まとめ

  • リソースレコードの意味

## これから

# SSL/TLS

## まとめ

  • 国家による盗聴が背景となってHTTPSが進んだという文脈は抑えておくべきっぽい
  • 0-RTTは知らなかった

## これから

# Linux

## まとめ

  • ログの仕込み方が分かった
  • シェル芸、並列化など大規模データを扱うときのTipsを習得しておくと良さそうと思った。

## これから

# 監視

## まとめ

  • ポストモーテムの意味を知った
  • SLI/SLO
  • ログのフォーマット

## これから

  • カオスエンジニアリングはエラーインジェクションの発想から出てくるのかな?

# ログ

## まとめ

  • ログにはビジネス上のもの、UIのものも含まれる
  • slow query log知らなかった

# 高可用性

## まとめ

  • 複数台でのクラスタリングの話だったが、馴染みのない話でわかりにくかった。

# DevOps

## まとめ

  • 高速リリースと安定運用の両立
  • WIPは完了していないので顧客に提供する価値はゼロ
  • CI/CDは各環境での開発をマージするときに起こる不具合を小さな単位で解決するために行う
  • 最初からCIを入れるのがおすすめ

## これから

  • ブルーグリーンデプロイ、カナリアリリースなど復習しておかないとな
  • googleのSRE本を読まないとなあ

# アルゴリズム

## これから

  • https://github.com/TheAlgorithms/Python
  • Rustだとテストもあってわかりやすい
  • 螺旋本
  • AtCoder
  • けんちょん本
  • アルゴリズム検定本
  • 慣れてきたら Introduction to Algorithm (MIT) や みんなのデータ構造

# トランザクション

## まとめ

  • 専門用語が多く、スッと入ってこなかった

## これから

  • トランザクションの話はCPUの命令のアトミック性とかOut of Order実行の話と似ている

# バックアップ

## まとめ

  • バックアップはデータやファイルのコピーのこと

## これから

  • terraformやansible、シェルスクリプトとセットでバックアップしておきたいね

# 終わりに

  • よく知っている分野は積み本や資料が即座に思い浮かぶが、知らない分野はついていけなかったりイメージできなかったり写経になりがち。まとめを読んだときの反応で自分の理解度が把握できそう。
  • ネットワークと認証周りとWebセキュリティでやることが多いかな?特にネットワークが分からなくてついていけない話題が多かったのでこのあたり腰を据えて勉強したい。
  • 他によさげなリンク集として、SREやクラウドエンジニアが読むと良さげな本まとめ https://qiita.com/tmknom/items/67dbfcf5194aee5c6e61 があったのでこれも見ていきたい。