[2023年3月号] Software Design(技術評論社) サマリー+個人メモ

[2023年3月号] Software Design(技術評論社) サマリー+個人メモ
みるみ

Software Design の2023年3月号について、

  • ざっくり内容紹介
  • 個人的に気になった記事やポイント

をまとめている記事です。

サマリー記事の一覧はこちら

特集①:なぜ、Kubernetesを使うのか?

  • コンテナが抱える課題とは?
    • コンテナの話
    • Dockerの話
    • これらが解決してきたもの
      • 環境維持の問題
      • 環境依存の問題
      • セキュリティの維持
      • リソース(仮想マシンより軽いという意味で)
    • でもこれらだけだとこういう課題がある:
      • デプロイ
        • 複数インスタンスにまたがるサービスではどうする?
        • 機能の一部リリースはどうする?
        • ダウンタイムが発生しないデプロイをするには?
      • 高可用性は?
      • コンテナイメージの扱い、リビルドの時間
      • 障害発生時の対応
      • コンテナ間連携、外部との通信
  • Kubernetesは何を解決するのか?
    • 主要コンポーネント
      • etcd
        • データストア
      • kube-api-server
      • kube-scheduler
      • cloud-controller-manager
        • クラスタを実行する環境と連携するための5種類のコントローラーの実行管理
      • kubelet
      • kube-proxy
    • 主要機能
      • サービスディスカバリとロードバランシング
        • 「Service」にリクエストを流入させるだけで、ラベルで分類したPod群内で負荷分散される
      • ストレージ・オーケストレーション
        • 同一Pod内のコンテナ間でデータ共有
        • 秘密情報や設定情報をボリュームとしてマウント
        • NFSやクラウドストレージとの連携
      • 自動化されたロールアウトとロールバック
        • 宣言的API
      • 自己回復
        • Podの再起動(Pod数の維持)
        • Kubernetesの連携先の外部ロードバランサーの再作成など
      • 自動ビンパッキング
        • Kubernetesは現在の総合的な状況を鑑みて「どのノードで次のPodを動かすか」を自動で決める(スケジューリング機能)
        • ビンパッキング問題は、おそらくナップサック問題みたいなやつのことで、なんか名前をなぞらえているということのよう
      • 秘密情報と設定の管理
        • 「Secret」と「ConfigMap」
        • 使い方は主に3種類:
          • ボリュームマウント
          • 環境変数
          • マニフェスト上で展開される変数
    • Kubernetesのバージョンアップについて
      • マイナーバージョンは4ヶ月に1度あがるので、バージョンアップも4ヶ月に1回やるといいというのがよく言われるらしい
      • 一気に二つ飛ばさず、ひとつずつ上げる
      • 主な課題:
        • アップグレード中の無停止
          • 「PodDisruptionBudget」という機能があって、最近はちゃんと準備すればほぼ無停止でいけるとのこと
        • 永続ストレージを使っている場合はアプリケーションがどうなるか
  • Kubernetesでコンテナをデプロイするには?
    • 考慮すべきこと
      • アプリケーションはステートレスにする
        • 普通のことなので特に気にしなくていい
      • シャットダウンが優雅(グレイスフル)にできないといけない、コンテナ内のプロセスが終了のシグナルを受け取るときに事前フックみたいなことができる
        • HTTP GETリクエスト
        • 任意のコマンド実行
      • ログは標準出力・標準エラーに出す
        • パブリッククラウドを使うならもちろんその作法にのっとる
    • 実際につくってみる
      • kindとkubectlでやってみる説明
  • Kubernetesでコンテナ間を連携する方法としくみ
    • ServiceとClusterIP
    • Serviceの作成による内部DNS生成
    • Serviceと1対1のEndpoint

特集②:ITエンジニアスキルアッププログラム

  • 読みはしたが特に記録しておきたいことはなかった
    • 内容に直接関係ないが、「筆者の経験上、ネット上の書評記事は素っ気ないデザインの、いかにも『技術者が個人で書いています』というようなブログ記事のほうが有益であることが多いです。」という記述があったことをここに残しておく
    • 記事はよかったです

Extra Feature

  • 先取り!C++23
    • これは、、、読まない、、、
  • Denoで始めるサーバサイドTypeScript開発
    • やろうやろうと思って結局Denoは一回も触れていなかったので概要は嬉しい
    • JS/TS/WebAssemblyのランタイム
    • Rust製
    • エンジンはV8
    • Web APIがいくつかあり、fetchやlocalStorageがあるらしい。へえ!
    • 「Node.jsに関する10の反省点」はかなり記憶に残っていた
    • コンパイラを内包してはいるものの、tsファイルを直接実行できるのは次世代感ある
      • TSCとSWCという2つがあるらしい、それぞれ型チェック、コンパイルという分業(後者はRust製)
    • うわ、インポート文のモジュール部分初めて見たけどこれ嫌いなタイプ、、、
      • Goもこれが…
      • これだけオンリーではない模様
    • でもLSO、フォーマッタ、リンター、テストツールが全部同じツール内で整備されているのは素晴らしい、ほんとJS界隈は早くこうなってほしい
      • これが最大の支持ポイントになってどんどん流行るのかも、とかなり思った
      • でもぶっちゃけCLI側で統合されていることよりVS Codeの拡張がわかりやすく統合されることのほうが世間的には重要度が高いのかも(自分もそう)
    • だいたいnpm互換(モジュールが)

Column

  • エンジニアのためのやる気UPエクササイズ
    • 別にメモる必要があるものは何もないのだが、技術情報誌に「プロテインの飲み方」が書いてあるのがとても興味深く、なんか書きたくなった
    • 書いてある内容については「ダイエットに効果的な」という文脈であるため、筋肥大のトレーニングを目的としている自分のスタイルからするとあまりピンとこなかった

    そのほか

    • ITエンジニア必須の最新用語解説「Turbopack」
      • たまに知ってるものが登場する回は嬉しい
      • Webpackより700倍高速
      • Viteより10倍高速
      • インクリメンタル計算(Rust製)
      • js, ts, jsx, cssなど
      • 高速化の理由
        • 関数レベルの処理キャッシュ
        • 要求された部分だけをコンパイルして使用する(Viteでもこれはやってるらしい)
      • Next.js向けに強くなっていくらしい、Next.js 13では既に標準のバンドラーになっているんだって、いいな。

    Software Design 2023年3月号

    この号の分のみ単品で読みたい方は、普通にAmazonで買うのがおすすめ。
    紙 or 電子書籍で選べます。

     

    みるみ
    みるみ

    ブロガー、ソフトウェアエンジニア。

    この「みるめも」というブログの筆者です。

    この記事へのコメント
    コメントはまだひとつもありません :)

    新しいコメントを書く

    • 必須項目はコメント本文のみですが、お名前はぜひご記入いただけると嬉しいです。
      ※メールアドレスを書いた場合も公開されることはないのでご安心ください。
    • 特定のコメントに返信したい場合は各コメントにある「返信する」ボタンからどうぞ。
    • コメントはこちらで承認の作業を行うまでは表示されません。ご了承ください。
      ※ここ数年スパムが激化しており、誤って削除されてしまうケースが増えてきました。スパムボックスも毎日自分の目で確認するようにはしているのですが、どうしても限界があります。確実に僕に連絡を取りたい方は メールTwitter からお願いします。