2024/01/29 学んだIT語彙

new IT vocabulary

Graceful Shutdown

コンピュータシステムやソフトウェアアプリケーションが正常終了するための方法。プロセスやサービスが予告なく突然終了してしまうとデータの損失や障害のリスクが発生する。Graceful shutdown(優雅な停止)を用いることで、プロセスやサービスが停止する前にデータの整理や正常な終了手順の実行を行うことができ、データの損失や障害のリスクを最小限に抑えられる。

kubernetes調べてるときに出てきたからKubernetesの専門用語と思っていたが違った。様々なアプリに使う言葉らしい。Kubernetesにおいては、podのマニフェストファイルの.spec.containers[].lifecycle.preStopに処理を書いておき、preStopの処理が終わるか.metadata.deletionGracePeriodSecondsに記述している時間が過ぎたらkubeletがDockerデーモンにコンテナの終了を依頼するみたい。つまり、安全に停止するための処理に対して待つことが出来る最大時間って感じかな?

サイト見てたらいろいろ用語出てきて完全には理解できてないなあ……

参考サイト
アルパカでもわかる安全なPodの終了
Kubernetesのグレースフルシャットダウンやるよ
Kubernetes: 詳解 Pods の終了

–pod-eviction-timeout

ワーカーノードが通信できない状態になったときに、そのノード上で実行されているポッドをどれだけ早く退去(eviction)させて、他の健全なノード上でスケジュールし直すかを決定するためのパラメータ。デフォルトでは5分に設定されている。

ちなみに、–pod-eviction-timeoutはkube-controller-managerというコンポーネントが使用するフラグなのだが、コンポーネントってなんやねん、マスターノードにするpodちゃうんかい、と思ってChatGPTに聞いてみた。すると、自己ホスティングクラスターではマスターノード上のpodとして存在するが、マネージドKubernetesサービスではコントロールプレーンはクラウドプロバイダーによって完全に管理され、ユーザーはコントロールプレーンの内部実装や、kube-controller-managerが物理サーバー上で直接実行されるか、仮想マシンまたはコンテナとして実行されるかなど、その詳細を直接制御または視認することはできないらしい。つまり、マネージドKubernetesサービスではマスターノードのpodとしてではなく、その機能(今回で言うとkube-controller-manager)だけを持ったノードが存在しうるということ。まあGPTが言うことなんで完全には信用できないが、なるほど~と思った。

参考サイト
クラスタワーカーノードの管理
【何となく理解したい】Kubernetesってなに?

cloud-init

cloud-init機能は、cloud-initに対応した弊社提供 パブリックアーカイブ (アーカイブ名の末尾に「(cloudimg)」が付くもの)をソースとして作成されたディスクを接続したサーバの初回電源投入時、指定した構成情報に従ってサーバの初期設定を行うことができる機能です。これにより、サーバ作成時のホスト名やパスワードの設定、sshの公開鍵の設置など、cloud-initがサポートする範囲で様々な設定を自動的に行うことができます。

さくらのクラウド より引用 

IaaSで使うインスタンスに対して設定するときに使うコマンド。Google CloudかAzureの資格勉強してた時にめっちゃ出てきたからそれ用のコマンドかと思ってたけど、クラウド上で立てるインスタンスに対しては広く使えるみたい。

EC2に対しても使おうと思えば使えんのかな?

あとユーティリティとコマンドって何が違うんやろって思って調べたけど厳格な定義はなさそう?
IT用語調べててイライラするやつ頂きました。

Lombok

アノテーションを付けるだけで、 getter, setter, toString, equals などの「何度も繰り返し書くコード」をコンパイル時に自動生成してくれるようになるツール。

便利そうであるが

  • Getter, Setter の自動生成は無闇にやるとオブジェクト指向を破壊する
  • 単純なgetterとロジックを含むgetterの判別が利用者側からつきにくくなる

等の理由により、そもそも単純な関数をたくさん書くことが非推奨となっているみたい。最近アプリのコード書いてないから書きてえな。

参考サイト
Lombok 使い方メモ
Javaでgetterにロジックを書くよりも独自メソッドと@Deprecatedを使った方がいい

Amazon Corretto

Amazon Corretto は、マルチプラットフォームで本番環境に対応した、無料の Open Java Development Kit (OpenJDK) ディストリビューションです。Corretto は、パフォーマンスの向上とセキュリティの修正などの長期サポートを用意しています。Amazon は、社内において何千もの本番サービスで Corretto を実行しており、Corretto は Java SE 標準と互換性があると認定されています。Corretto を使用することで、Linux、Windows、macOS などの一般的なオペレーティングシステムで Java アプリケーションを開発し、実行できます。

Amazon Corretto
本番環境に対応した 無料の OpenJDK ディストリビューション
より引用

OpenJDKがわからないのでさらに調べる。

OpenJDK(Open Java Development Kit)とは、Java言語ソフトウェア開発を行うのに必要なツールを一つにまとめたオープンソースのパッケージ。Javaの権利を所有する米オラクル(Oracle)社とJava開発者コミュニティによって開発・配布されている。

OpenJDK 【Open Java Development Kit】より引用

「(Amazon Correttoは)Amazonが作成したAWSで使用するためのパッチを含むビルドです。」
「(Microsoft Build of OpenJDKは)Microsoft社によるビルドです。」

とかっていう表現が出てくるんやけど、ビルドですってどういう意味?とりあえずJDKはビルドらしい。

JavaはOracleが商標を持っていて、OracleのJDKはOracle JDKと言う。機能はOpenJDKとほとんど同じだが、有償でOpenJDKでは利用できない機能が少しあるらしい。

参考サイト
OpenJDK と Oracle JDK
OpenJDK
JDK、Oracle JDK、OpenJDK、Java SEってなに?

タイトルとURLをコピーしました