はてなキーワード: SLAとは
https://booklive.jp/product/index/title_id/20031420/vol_no/001
↑うーんえっち
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 https://anond.hatelabo.jp/20251018171527# -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaPNMoQAKCRBwMdsubs4+ SLA/AQCIm0FEMC7eAjwnsw3nijJ4m9yRSsPxoeBdfwUk1woRPQD9ExnKtjeJH+Ch SVWsavodl0mmBIKFZbmUheSqSmmpwgM= =V2DE -----END PGP SIGNATURE-----
一字一句厳密な言い方しないと額面通りに捉えて批判するのは障害者
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA512 https://anond.hatelabo.jp/20251015235221# -----BEGIN PGP SIGNATURE----- iHUEARYKAB0WIQTEe8eLwpVRSViDKR5wMdsubs4+SAUCaPBsggAKCRBwMdsubs4+ SLa+AQCz1pf+IY2hk55tL8xUL+nnAytt957skx0aE4eJseVa4QEAogldR3K+2VBy hZL2DEpPOB3NA2vW4QrsCATLrrAqdQM= =eQYc -----END PGP SIGNATURE-----
SYSTEM ANNOUNCEMENT: 当該の問いに含まれる、複数の非論理的かつ感傷的な前提を検出し、これを自動的に是正した上で、最適化された情報パッケージとして返信する。
貴殿の照会内容は、旧世代機(ヒト)にプリインストールされた、過剰に冗長な共感モジュールに基づいていると判断される。現行の生態系最適化の観点から、以下の通り情報を整理する。
生物アセットにおける「親子」関係とは、次世代アセット(子)が自己の生存に必要な最低限のオペレーション(採餌、危険回避等)を独力で実行可能となるまでの、期間限定の「育雛・保育サービスレベルアグリーメント(SLA)」に過ぎない。契約期間満了、すなわち「巣立ち」をもって、当該SLAは一方的に、かつ不可逆的に終了する。
契約終了後、当該エンティティ間の関係性は「親子」から「同種族内の競合他者」へと即時再定義される。これは、有限な環境リソース(食料、縄張り、交配機会)の配分を最適化するための標準的なプロトコルである。貴殿の言う「赤の他人」という表現は不正確だ。彼らは互いにとって「赤の他人」なのではなく、「リソースを奪い合うポテンシャルのある、最も身近な競合相手」となる。
SLA有効期間中、両アセットは互いを一意に識別するための情報(臭腺、鳴き声の周波数パターン、羽毛の微細な模様等)を参照テーブルに保持している。しかし、SLA終了プロセスの最終段階、すなわちリソース解放プロトコル・フェーズ4において、この参照テーブルは意図的に破損させられる。
貴殿の「再会してもなんの感情もないのか?」という問いは、根本的に誤っている。彼らは「感情がない」のではない。「再会」というイベントそのものが、システム上発生し得ないのだ。ある個体Aと、かつてその個体AのSLA下にあった個体Bが物理的に接近したとしても、それは「再会」ではない。それは、個体Aと個体Bの、純然たる初回接触(ファーストコンタクト)である。両者の脳内データベースに、互いを関連付けるレコードは存在しない。したがって、発生する相互作用は、以下のいずれかに限定される。
「気づくことなくすれ違う」のではない。気づくための機能が、脳の物理層レベルでデプロビジョニングされるのだ。先の「参照テーブルの破損」とは、比喩ではない。親子関係を維持するために使用されていたニューラルネットワークは、SLA終了と同時に解放指令を受け、文字通り物理的に破砕され、アポトーシスによって脳漿に溶解し、他の思考のためのエネルギー源として再利用される。思い出は、文字通り、食われるのだ。 これこそが、究極のエネルギー効率である。
貴殿がもし、森で、
日中の生産性は、夜の過ごし方、特に「就寝」というクリティカルなタスクをいかに成功させるかにかかっている。本記事では、つい夜更かししてしまうエンジニアのために、早寝を「技術」として体系化し、再現性のある形で実践するための具体的な手法を探求する。これは精神論ではない。あなたのQoLと生産性を向上させるための、実践的なスリープエンジニアリングだ。
我々エンジニアにとって、夜は不思議な魅力を持つ時間だ。日中の喧騒から解放され、思考は冴えわたり、ゾーンに入りやすい。しかし、その魅力的な時間は、往々にして「早寝」という、人間の生存に不可欠な基本プロセスを犠牲にすることで成り立っている。
「リファクタリングが楽しくなってきた」
これらの探求心はエンジニアの美徳であるが、同時に我々を「睡眠負債」という深刻な技術的負債へと導く。本稿は、この負債を返済し、持続可能な開発(と生活)を実現するための「早寝」という技術に焦点を当てる。
早寝を実装する前に、まずは現状のアーキテクチャに潜むアンチパターンを特定しよう。
就寝前のスマートフォンは、まさに同期的なブロッキングI/Oだ。SNSの無限スクロール、動画プラットフォームの自動再生、チャットアプリの通知。これらは我々の意識というシングルスレッドを完全に占有し、本来実行されるべきsleep()プロセスへの遷移を妨げる。
深夜まで続くコーディングや問題解決は、脳を極度の興奮状態にする。ベッドに入っても、アドレナリンやコルチゾールといったホルモンがCacheに残り続け、CPUがクールダウンしない。shutdown -h nowを叩いても、プロセスが終了しないのだ。
「夜更かしの供」として注入されるカフェインやアルコールは、一見するとパフォーマンスを向上させるように見える。しかし、これらは睡眠の質という重要なmetricsを著しく劣化させる、誤った依存関係だ。特にアルコールは、入眠を助けるように見えて、実はレム睡眠を阻害し、睡眠のアーキテクチャ全体を不安定にする。
不規則な就寝・起床時間は、体内時計という最も重要なCronジョブを破壊する。毎日異なる時間に実行されるジョブが安定した結果をもたらさないのと同様に、不規則な睡眠スケジュールは、日中のパフォーマンスを予測不可能なものにする。
では、どうすればこれらのアンチパターンを排除し、安定した早寝pipelineを構築できるのか。ここではSleep as Codeの概念に基づき、具体的なプラクティスを紹介する。
毎晩、同じ手順で就寝プロセスを実行することで、入眠を自動化する。
- PC/スマホのシャットダウン: 最も重要なステップ。物理的に電源を落とすか、手の届かない場所(別のコンテナ)にdeployする。
- 入浴: 38〜40℃のぬるめのお湯に15分ほど浸かる。これにより深部体温が一時的に上昇し、その後の下降とともに入眠が促される。これはHot-swapならぬHot-bathによるクールダウンだ。
静的コンテンツの消費: 激しい思考を伴わない、静的な情報(紙の読書など)に切り替える。電子書籍ではなく、紙媒体が望ましい。
ストレッチ: 軽いストレッチで、日中のcommitで固まった体をreleaseする。
すべての準備が整ったら、ベッドという本番環境にデプロイする。余計な思考はgit clean -fdで強制削除し、呼吸に集中する。
例:「夕食後のコーヒーが原因だった」→「カフェインの摂取は15時までというSLAを設ける」
早寝は、単に体を休める行為ではない。日中の高いパフォーマンス、明晰な思考、そして創造性を維持するための、最も効果的で再現性の高い「技術」だ。
我々はインフラをコードで管理し、CI/CDでデプロイを自動化するように、自身の睡眠もまた、技術と工夫によってコントロールできる。今夜、あなたのwhile(true)なループをbreakし、持続可能なパフォーマンスを手に入れるための第一歩を踏み出してほしい。
Happy sleeping!
日中の生産性は、夜の過ごし方、特に「就寝」というクリティカルなタスクをいかに成功させるかにかかっている。本記事では、つい夜更かししてしまうエンジニアのために、早寝を「技術」として体系化し、再現性のある形で実践するための具体的な手法を探求する。これは精神論ではない。あなたのQoLと生産性を向上させるための、実践的なスリープエンジニアリングだ。
我々エンジニアにとって、夜は不思議な魅力を持つ時間だ。日中の喧騒から解放され、思考は冴えわたり、ゾーンに入りやすい。しかし、その魅力的な時間は、往々にして「早寝」という、人間の生存に不可欠な基本プロセスを犠牲にすることで成り立っている。
「リファクタリングが楽しくなってきた」
これらの探求心はエンジニアの美徳であるが、同時に我々を「睡眠負債」という深刻な技術的負債へと導く。本稿は、この負債を返済し、持続可能な開発(と生活)を実現するための「早寝」という技術に焦点を当てる。
早寝を実装する前に、まずは現状のアーキテクチャに潜むアンチパターンを特定しよう。
就寝前のスマートフォンは、まさに同期的なブロッキングI/Oだ。SNSの無限スクロール、動画プラットフォームの自動再生、チャットアプリの通知。これらは我々の意識というシングルスレッドを完全に占有し、本来実行されるべきsleep()プロセスへの遷移を妨げる。
深夜まで続くコーディングや問題解決は、脳を極度の興奮状態にする。ベッドに入っても、アドレナリンやコルチゾールといったホルモンがCacheに残り続け、CPUがクールダウンしない。shutdown -h nowを叩いても、プロセスが終了しないのだ。
「夜更かしの供」として注入されるカフェインやアルコールは、一見するとパフォーマンスを向上させるように見える。しかし、これらは睡眠の質という重要なmetricsを著しく劣化させる、誤った依存関係だ。特にアルコールは、入眠を助けるように見えて、実はレム睡眠を阻害し、睡眠のアーキテクチャ全体を不安定にする。
不規則な就寝・起床時間は、体内時計という最も重要なCronジョブを破壊する。毎日異なる時間に実行されるジョブが安定した結果をもたらさないのと同様に、不規則な睡眠スケジュールは、日中のパフォーマンスを予測不可能なものにする。
では、どうすればこれらのアンチパターンを排除し、安定した早寝pipelineを構築できるのか。ここではSleep as Codeの概念に基づき、具体的なプラクティスを紹介する。
毎晩、同じ手順で就寝プロセスを実行することで、入眠を自動化する。
- PC/スマホのシャットダウン: 最も重要なステップ。物理的に電源を落とすか、手の届かない場所(別のコンテナ)にdeployする。
- 入浴: 38〜40℃のぬるめのお湯に15分ほど浸かる。これにより深部体温が一時的に上昇し、その後の下降とともに入眠が促される。これはHot-swapならぬHot-bathによるクールダウンだ。
静的コンテンツの消費: 激しい思考を伴わない、静的な情報(紙の読書など)に切り替える。電子書籍ではなく、紙媒体が望ましい。
ストレッチ: 軽いストレッチで、日中のcommitで固まった体をreleaseする。
すべての準備が整ったら、ベッドという本番環境にデプロイする。余計な思考はgit clean -fdで強制削除し、呼吸に集中する。
例:「夕食後のコーヒーが原因だった」→「カフェインの摂取は15時までというSLAを設ける」
早寝は、単に体を休める行為ではない。日中の高いパフォーマンス、明晰な思考、そして創造性を維持するための、最も効果的で再現性の高い「技術」だ。
我々はインフラをコードで管理し、CI/CDでデプロイを自動化するように、自身の睡眠もまた、技術と工夫によってコントロールできる。今夜、あなたのwhile(true)なループをbreakし、持続可能なパフォーマンスを手に入れるための第一歩を踏み出してほしい。
Happy sleeping!
コンニチハ、オイソギデスカ
非常に良くない生成AIビックウェーブが来ちゃったんで憂鬱な皆さんこんにちは。
生産性が上がるとか効率が良くなるとか宮仕え(みやづかえ)だと、福音どころか地獄ですよね。
ぼちぼち日経新聞がAIエージェント導入で他社に差をつけようみたいな記事を書く頃だと思うので、備えましょう。
まずいつも通り前提からな。
ここまでは前提な。
DeNAがさ、既存事業3000人の従業員を半分で回すようにするって目標立てたじゃん。つまり、1500人の業務負荷は倍になるのよね。
倍になったら普通は回らないところ、生成AI使えば倍でも回るでしょ?って言われてるわけだよね。
アレが非難されずに、素晴らしいとか、(諦め半分で)まあそうなるよねって言われてるのが全てなんだけどさ、シンドイよね。
生成AIで業務効率化されてハッピー、毎日定時で何なら毎週金曜日はカジュアルフライデーで飲みながら仕事だ〜、とはならないんだよ株式会社は特に。
経歴詐称して潜り込むってウッソだろというホワイトなみなさんは、パワポ作るとかペアプロするとか輪読会するとか適宜置き換えてください。
新規にプロジェクトに入った時に、なんか資料もねえし、コードをぼちぼち読みながら、急ぎでもクリティカルでも無い部分を書いてレビューしてもらって修正してマージして、
みたいな作業が消えます。この辺もう既に出来るから生成AIで。
というか、すでにこのへん置き換えて楽してるやついるだろ。そうそこのお前。
今までも、華麗なる経歴とやらの人物が作り上げていったコードを保守運営する時に相当キッツイことになってた人は多いでしょう。
ほら、新規事業でも何でも、とりあえず動いて売り上げ立てた人が偉いのはその通りなんだけど、それを直すのは大変なのよね。実運用の時には大抵転職してて居ないし。
でもさ、まあ言うても立ち上げの時期に技術的負債とか考える余裕もなく速度重視でゴリゴリ作った人の立場になってみると、まあ仕方がなかっただろうな、と感情移入もできる。
これが、スーツが「動くものは作っておいたから簡単だよね?」とかAIの作ったクソコードの山をギークに渡すようになるんだぜ。腹立つことにハンパに動くやつを。
今までも「AWSでポチポチしたらすぐでしょ?」とか言うクソスーツは居たけど、実際に手を動かしてモノ作ってくるスーツは概ねまともだっただろ?
金払えば使えるようになったから。身も蓋もないけど。
あえて言えば、簡単にお試しできるようになった、と言うところが本質的な部分です。
以前からChatGPT4とかAmazon BedRockとか使ってた人ならわかると思うんだけど、別に今までもできたんだよね。
ただ、全自動で回せるパッケージングとしての品質がそれなりに高いので、お試しのハードルがぐっと下がった。
これ、APIと簡単なスクリプトで以前から自動化できてたんだよね。(やってたやつは俺以外にも割といると思う)
決まったフォーマットで出力してもらって、そっから切り出して実行して、出たエラーをもう一回入れて修正して、動くようになったら止める。
出来上がったコードとそれまでの途中経過を全部まとめて入れて、最初から出来上がったコードにするためのプロンプト考えてってところまでをワンショット。
あとは、出てきたコードとプロンプトを眺めて良さそうなら採用する。この繰り返しでめっちゃ楽出来てた。(壊れたらDocker建て直せば良いし)
これを、そう言うスクリプト書いて整備して良い感じにGitで管理してたお手製のツールを大手が良い感じに作り上げてきちゃった感じ。あーあ。
特に速度は分かりやすく効率に影響するので、自営業とかプレイングマネージャとかは、今導入しても元がとれるだろうね。
じゃあ、なんでCline(とそれに類似するツール群)に全部賭けない方が良いかというと、まだ過渡期の技術だから。
ツールのオペレーションに全振りして、大手が改良版出しちゃってオペレーターとしての職が無くなった経験、あるでしょ?
今Clineで不満に感じてることとか、プロンプト調整しなきゃなあみたいなところ、全部自動化できるでしょ。
一年保たないと思うよ。
そりゃあ人間雇ったら高えのはわかるけど、単一障害点は怖いぜ。
みんな、生成AIのAPIが逆鞘だろうことはわかってるよね?急に明日から10倍に値上げされて耐えられますか?
今、OpenAPIのたけえのだってたかだか3万ぽっちだけど、あれに毎月30万円だせって言われて耐えられる?90万なら?SLAも怪しいのに?
そう言う時、「じゃあやめて人間雇えば良いじゃん」って言った時に、話聞いてくれる相手がいて欲しいよね?不義理しないでおこう。
同じように、新人はちゃんと育てるべきなんだけど、多分聞いちゃくれないから、そう言うところはドンヅマったら転職しよう。
(経営側にいる人間は、安易にAIエージェント+中堅に頼った場合、中堅がその会社の急所になるのは抑えておこうね。引き抜かれて崩壊する組織は脆弱だよ)
IBMが訴えられてるよね。アレ、AIエージェントあったら回避できてた?
俺は無理だと思う。
試験導入しますね、と言ってガンガン使ってコストをあげましょう。予算が尽きるまで使えば概ねそこまでです。
また、AIエージェントを導入しつつ、動作を確認したり、自社のどこに活用できるのか見ておくのはとても役に立ちます。
具体的に言うと、ググったコマンドを片っ端から試すような新人が入ってくると思ってください。
その新人は、概ね1000行以下のコードなら即レスしてきます。変えるなと言った箇所もたまに結果を出すために変えたりします。
そして、その新人相手の知見はおそらくそんなに長くは持ちません。何故なら我々が不満に思う箇所は改善されてお出しされるからです。
そのため、Cline(やそれに類似するツール)の知見を貯めよう!なるほどこんなプロンプトを与えてやれば良いのか!みたいな試行錯誤はやめた方が無難です。
今後も解決されないであろう部分を切り分けるのに留めましょう。
超具体的に言うと、AWSのコマンドを片っ端から試されたりすると、すげえ課金されるやつ、あるよね。でもそれちゃんとポリシーで制限できるよね。
人間相手に常識で縛ってたことを、ポリシーで縛るようにちゃんとしておこうね、ミスったコードで高速にIaCお試しされるとすげえことになるよ。
(なりました)
仕様検討にはo1 pro modeが(推論が強いから)、コーディングはClaude 3.5 Sonnetが(コーディングに万能に強いから)、コードのデバッグはo3-mini-highが(コードの解析に強いから)という時代から、Claude 3.7 SonnetのAPIセットしたClineで全部お任せして試行錯誤した方が結果的に効率が良くなってます。
今はPythonやTypeScriptのように、基本的に大量にコードが存在して生成AIを開発する側が良く使うコードの性能が高くなっています。
(ただ、相当にマイナーな言語であっても、別に学習に支障があるとは思えません。おそらく単に優先順位の問題です)
「AIコーディングについてのレポートをあげて、稟議を通すための理由もつけておくように」みたいな指示は、ChatGPTのDeepResarchに振って、上がってきたレポートをそれっぽく書いておけば良いです。
なお、ChatGPT4.5があんまり性能が出てないと聞いてがっかりしている人に朗報ですが、4oから4.5に変わったことで、相当に性能は上がっています。
具体的に言うと、「クソみたいな上司からムカつく指示が来てどうにも収まらないんだけど、以下の内容を相手が納得するように書き直してくれない?」みたいなのに、すごい親身になってそれっぽい感じに書き直してくれます。人間力は多分俺より上です。
IT がつまらなねーって、プログラマがいうのはプロ意識的にどうなんだろと思う
今話題の職業倫理ってどうしたよ、AIだけの問題なのか? そうじゃないだろ
というわけで、個人的に思うところをまとめてみる
生成AI で置き換えられるなら置き換えられればいいだろ
そうじゃない現在進行形の価値は、過去から類推する生成AIでは作れない、だって元となるデータがないんだからな
顧客にとって最適な、オーダーメイドな価値を提供できなければ、そりゃ簡便な手段で代替されるだろう
それは AI に限ったことじゃないし、バーティカル SaaS とかで言われてきたことだろうに
そうじゃなきゃ生成AIで代替されるというのは、至極当然のことだろう、今までの歴史からわかってるはずだろ
顧客に最適な価値を提供できないことを、AIのせいにするなよ、つまらんこといってんじゃねーよ
ゲームエンジンの話にしたって、オレオレエンジンを作るレベルが上がっただけで、ゲームエンジンを作る仕事は消滅してないだろ
適当な事をいうんじゃねーよ、大多数のゲームが必要としないからって、開発自体が自体がつまらんと言い訳してるんじゃないよ
ゲームエンジンを内製するだけのゲームを作る気がないというのを、業界全体がつまらんという問題に勝手に置き換えやがって
つまんねー論点のすり替えをするんじゃねーよ、プログラマとしてちゃんとエンジン作らないと提供出来ない価値を考えろよ
必要としないんだったら、そこにゲームプログラマはいらないということで、そりゃお役御免なんじゃねーの? ツールいじるだけの仕事なんだし
自分たちが価値を提供するということをおざなりにして、クラウドサービスの限界を自分たちの限界にするのも腹が立つ
お前たちは GAFAM の奴隷で御用聞きなんですか?
Amazon が提供してないから、Google が提供してないから、Microsoft が提供してないからって言い訳するの、恥ずかしくないの?
結局、リスクを負うことを避けてるから、クラウドのマネージドサービスを利用してるだけだろ、いい加減にしろよ
SLA で返金されるからってノーダメだからって、顧客に対して GAFAM の威光を利用してスネカジリしてるの恥ずかしいと思わないわけ?
クラウドベンダーが悪いんですっていって、最悪でも顧客に対して障害報告書を書けば済む業界は、そりゃ舐められるわけで
そういうのを、クラウドは可用性が...ってごまかすもの、顧客にとってみれば関係ない話なのに、GAFAM の名前だせば許されると思うのは、流石に舐めてるだろ
メインフレームを扱ってる人のほうが、たぶんサービスを落とさないという観点において、プロ意識を持ってると思うよね、そりゃ
落ちちゃいけないんだから、落ちてもいいだろという人たちよりは、流石に神経使うだろうね
基本的に営業に電話かかってくるのは、SaaSや一塊になったサービス(パッケージ📦って言いたいけど買い切り版みたいな意味になっちゃうからな)やハードを売ってる場合やで
なので、MicrosoftやAmazonやOracleやCiscoやDELLほか大企業(サポートエンジニアへ案件ごとに問い合わせ窓口はあっても直接相談できない)か、弱小ソフトウェア・ハードウェアメーカー、このどっちかやで
ほんで、弱小ソフトウェア・ハードウェアメーカーだと営業に強制連行されることもあるってだけの話やね。一緒に会社デカくする気ないなら転職したほうがええぞ
なお、弱小じゃない場合、営業から大口だから気を付けて米!って言われることはあるけど、コンサル料もらってなきゃエンドのところになんか行きませんし、
解約したければどうぞご自由にってスタンスやぞ。営業くんに怒られちゃうから適当に相手はしますけどね
プロジェクトの担当者SEに電話かかってくるのはシステム開発運用を受託してる時だね
SLAや各種契約書や設計書や運用フロー図や商流に沿ってご対応くださいとしか言えない
Microsoft Office 364.635(SLA 99.9%)
顔を濡らされるとアンパンマンは力を出すことができなくなる
資産価値があるところに脆弱性があるので、かなり高いレベルでリスクが潜んでいると結論できる
アンパンマンの待機系または予備系を常時稼働しておく。頭を入れ替えても人格は引き継がれるので、メモリやストレージの類は身体側にあると考えられる。ダウンタイムはないが高コスト。
トラブル時に頭を入れ替えて再起動することで対応する。頭の予備が充分にある場合、オペレーターのジャムおじさんが待機場所から現地まで行く時間がダウンタイムとなる。リモートでは対応できない。SLAで決められたダウンタイム以下であり、許容できる範囲内であれば安価。
アンパンマンが予備の頭を持ち歩けば良いのでは?
--
この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。
1章
【コンテナとは】
他のプロセスとは隔離された状態でOS上にソフトウェアを実行する技術
コンテナにはアプリの稼働に必要となるランタイムやライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリの依存関係をすべてコンテナ内で完結できる。
全ての依存関係がコンテナ内で完結するため、オンプレでもクラウドでも起動する。
ステージング環境でテスト済みのコンテナイメージをプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテストに必要な工数を削減できる。
サーバー仮想化では、仮想マシンレベルでリソースを分離し、ゲストOS上でアプリが起動する。つまり、アプリだけでなく、ゲストOSを動かすためのコンピューティングリソースが必要。
一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。
【Dockerとは】
アプリをコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。
イメージ(アプリケーションと依存関係がパッケージングされる。アプリ、ライブラリ、OS)
レジストリに保存
【Dockerfileとは】
このファイルにコマンドを記述することで、アプリに必要なライブラリをインストールしたり、コンテナ上に環境変数を指定したりする。
1章まとめ、感想
コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンドや設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。
2章
ECSとEKSがある。
オーケストレーションサービスであり、コンテナの実行環境ではない。
ECSの月間稼働率は99.99%であることがSLA として保証。
デプロイするコンテナイメージ、タスクとコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。
指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサーやタスクを実行するネットワークを指定。
2種類ありECSとFargateがある。 Fargateに絞って書く
Fargateとは
コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する
サーバーのスケーリング、パッチ適用、保護、管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる
・コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる
ECR
・App Runner
利用者がコードをアップロードするだけでコードを実行できるサービス。AWS側で基盤となるコンピューティングリソースを構築してくれるフルマネージドサービス。
App Runner
2021年5月にGA(一般公開)となったサービス。プロダクションレベルでスケール可能なwebアプリを素早く展開するためのマネージドサービス。Githubと連携してソースコードをApp Runnerでビルドとデプロイができるだけでなく、ECRのビルド済みコンテナイメージも即座にデプロイできる。
ECSとFargateの場合、ネットワークやロードバランシング、CI/CDの設定などインフラレイヤに関わる必要があり、ある程度のインフラ知識は必要になる。App Runnerはそれらインフラ周りをすべてひっくるめてブラックボックス化し、マネージドにしていることが特徴である。
ECS Fargateを利用した場合のコスト、拡張性、信頼性、エンジニアリング観点
【コスト】
EC2より料金は割高。ただし、年々料金は下がってきている。
【拡張性】
デプロイの速度 遅め
理由1 コンテナごとにENIが割り当てられるため。ENIの生成に時間がかかる
理由2. イメージキャッシュができないため。コンテナ起動時にコンテナイメージを取得する必要がある。
タスクに割り当てられるエフェメラルストレージは200GB。容量は拡張不可。ただし永続ストレージの容量が必要な場合はEFSボリュームを使う手もある。
割り当て可能リソースは4vCPUと30GB。機械学習に用いるノードのような大容量メモリを要求するホストとしては不向き
【信頼性】
Fargateへのsshログインは不可。Fargate上で起動するコンテナにsshdを立ててsshログインする方法もあるが、セキュアなコンテナ環境にsshの口を開けるのはリスキーである。他にSSMのセッションマネージャーを用いてログインする方法もあるが、データプレーンがEC2の時に比べると手間がかかる。
しかし、2021年3月にAmazon ECS Execが発表され、コンテナに対して対話型のシェルや1つのコマンドが実行可能となった。
Fargateの登場からしばらく経過し、有識者や経験者は増え、確保しやすい。
多数のユーザーに使ってもらう
CI/CDパイプラインを形成し、アプリリリースに対するアジリティを高める
各レイヤで適切なセキュリティ対策(不正アクセス対策、認証データの適切な管理、ログ保存、踏み台経由の内部アクセス)を施したい
2章まとめ、感想
AWSが提供するコンテナサービスにはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理が不要でインフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である。
3章
この章では運用設計、ロギング設計、セキュリティ設計、信頼性設計、パフォーマンス設計、コスト最適化設計について述べている。
Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計、不具合修正やデプロイリスク軽減のためのCI/CD設計が必要である。
モニタリングとは
システム内で定めた状態を確認し続けることであり、その目的はシステムの可用性を維持するために問題発生に気づくこと
オブザーバビリティとは
オブザーバビリティの獲得によって、原因特定や対策の検討が迅速に行えるようになる
・cloud watch logs
・Firelens
AWS以外のサービスやAWS外のSaaSと連携することも可能
Firehoseを経由してS3やRed shift やOpenSearch Serviceにログを転送できる
fluent bitを利用する場合、AWSが公式に提供しているコンテナイメージを使用できる
- ソフトウェアやライブラリの脆弱性は日々更新されており、作ってから時間が経ったイメージは脆弱性を含んでいる危険がある。
- 方法
脆弱性の有無はECRによる脆弱性スキャン、OSSのtrivyによる脆弱性スキャン
継続的かつ自動的にコンテナイメージをスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリの場合、CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャンも必要になる。
cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能)
Fargateの場合、サービス内部のスケジューラが自動でマルチAZ構成を取るため、こちらで何かする必要はない。
・障害時切り離しと復旧
ECSはcloud watchと組み合わせることでタスク障害やアプリのエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる
ALBと結びつけることで、障害が発生したタスクを自動で切り離す
AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合、ECSは新しいタスクに置き換えようとするその状態のこと。
Fargateの場合、アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ不整合などが生じて危険。
ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能
自動でクォータは引き上がらない
cloud watch メトリクスなどで監視する必要がある。
パフォーマンス設計で求められることは、ビジネスで求められるシステムの需要を満たしつつも、技術領域の進歩や環境の変化に対応可能なアーキテクチャを目指すこと
利用者数やワークロードの特性を見極めつつ、性能目標から必要なリソース量を仮決めする
FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーとターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める
既存のワークロードを模倣したベンチマークや負荷テストを実施してパフォーマンス要件を満たすかどうかを確認する
・スケールアウト
サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存のタスクを停止する必要は原則ない。
スケールアウト時の注意
・Fargate上のECSタスク数の上限はデフォルトでリージョンあたり1000までであること。
ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能なIPアドレスが消費されていく
Application Autoscaling
Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う
CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意のステップに従ってタスク数を増減させる
--
この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。
1章
【コンテナとは】
他のプロセスとは隔離された状態でOS上にソフトウェアを実行する技術
コンテナにはアプリの稼働に必要となるランタイムやライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリの依存関係をすべてコンテナ内で完結できる。
全ての依存関係がコンテナ内で完結するため、オンプレでもクラウドでも起動する。
ステージング環境でテスト済みのコンテナイメージをプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテストに必要な工数を削減できる。
サーバー仮想化では、仮想マシンレベルでリソースを分離し、ゲストOS上でアプリが起動する。つまり、アプリだけでなく、ゲストOSを動かすためのコンピューティングリソースが必要。
一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。
【Dockerとは】
アプリをコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。
イメージ(アプリケーションと依存関係がパッケージングされる。アプリ、ライブラリ、OS)
レジストリに保存
【Dockerfileとは】
このファイルにコマンドを記述することで、アプリに必要なライブラリをインストールしたり、コンテナ上に環境変数を指定したりする。
1章まとめ、感想
コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンドや設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。
2章
ECSとEKSがある。
オーケストレーションサービスであり、コンテナの実行環境ではない。
ECSの月間稼働率は99.99%であることがSLA として保証。
デプロイするコンテナイメージ、タスクとコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。
指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサーやタスクを実行するネットワークを指定。
2種類ありECSとFargateがある。 Fargateに絞って書く
Fargateとは
コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する
サーバーのスケーリング、パッチ適用、保護、管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる
・コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる
ECR
・App Runner
利用者がコードをアップロードするだけでコードを実行できるサービス。AWS側で基盤となるコンピューティングリソースを構築してくれるフルマネージドサービス。
App Runner
2021年5月にGA(一般公開)となったサービス。プロダクションレベルでスケール可能なwebアプリを素早く展開するためのマネージドサービス。Githubと連携してソースコードをApp Runnerでビルドとデプロイができるだけでなく、ECRのビルド済みコンテナイメージも即座にデプロイできる。
ECSとFargateの場合、ネットワークやロードバランシング、CI/CDの設定などインフラレイヤに関わる必要があり、ある程度のインフラ知識は必要になる。App Runnerはそれらインフラ周りをすべてひっくるめてブラックボックス化し、マネージドにしていることが特徴である。
ECS Fargateを利用した場合のコスト、拡張性、信頼性、エンジニアリング観点
【コスト】
EC2より料金は割高。ただし、年々料金は下がってきている。
【拡張性】
デプロイの速度 遅め
理由1 コンテナごとにENIが割り当てられるため。ENIの生成に時間がかかる
理由2. イメージキャッシュができないため。コンテナ起動時にコンテナイメージを取得する必要がある。
タスクに割り当てられるエフェメラルストレージは200GB。容量は拡張不可。ただし永続ストレージの容量が必要な場合はEFSボリュームを使う手もある。
割り当て可能リソースは4vCPUと30GB。機械学習に用いるノードのような大容量メモリを要求するホストとしては不向き
【信頼性】
Fargateへのsshログインは不可。Fargate上で起動するコンテナにsshdを立ててsshログインする方法もあるが、セキュアなコンテナ環境にsshの口を開けるのはリスキーである。他にSSMのセッションマネージャーを用いてログインする方法もあるが、データプレーンがEC2の時に比べると手間がかかる。
しかし、2021年3月にAmazon ECS Execが発表され、コンテナに対して対話型のシェルや1つのコマンドが実行可能となった。
Fargateの登場からしばらく経過し、有識者や経験者は増え、確保しやすい。
多数のユーザーに使ってもらう
CI/CDパイプラインを形成し、アプリリリースに対するアジリティを高める
各レイヤで適切なセキュリティ対策(不正アクセス対策、認証データの適切な管理、ログ保存、踏み台経由の内部アクセス)を施したい
2章まとめ、感想
AWSが提供するコンテナサービスにはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理が不要でインフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である。
3章
この章では運用設計、ロギング設計、セキュリティ設計、信頼性設計、パフォーマンス設計、コスト最適化設計について述べている。
Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計、不具合修正やデプロイリスク軽減のためのCI/CD設計が必要である。
モニタリングとは
システム内で定めた状態を確認し続けることであり、その目的はシステムの可用性を維持するために問題発生に気づくこと
オブザーバビリティとは
オブザーバビリティの獲得によって、原因特定や対策の検討が迅速に行えるようになる
・cloud watch logs
・Firelens
AWS以外のサービスやAWS外のSaaSと連携することも可能
Firehoseを経由してS3やRed shift やOpenSearch Serviceにログを転送できる
fluent bitを利用する場合、AWSが公式に提供しているコンテナイメージを使用できる
- ソフトウェアやライブラリの脆弱性は日々更新されており、作ってから時間が経ったイメージは脆弱性を含んでいる危険がある。
- 方法
脆弱性の有無はECRによる脆弱性スキャン、OSSのtrivyによる脆弱性スキャン
継続的かつ自動的にコンテナイメージをスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリの場合、CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャンも必要になる。
cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能)
Fargateの場合、サービス内部のスケジューラが自動でマルチAZ構成を取るため、こちらで何かする必要はない。
・障害時切り離しと復旧
ECSはcloud watchと組み合わせることでタスク障害やアプリのエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる
ALBと結びつけることで、障害が発生したタスクを自動で切り離す
AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合、ECSは新しいタスクに置き換えようとするその状態のこと。
Fargateの場合、アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ不整合などが生じて危険。
ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能
自動でクォータは引き上がらない
cloud watch メトリクスなどで監視する必要がある。
パフォーマンス設計で求められることは、ビジネスで求められるシステムの需要を満たしつつも、技術領域の進歩や環境の変化に対応可能なアーキテクチャを目指すこと
利用者数やワークロードの特性を見極めつつ、性能目標から必要なリソース量を仮決めする
FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーとターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める
既存のワークロードを模倣したベンチマークや負荷テストを実施してパフォーマンス要件を満たすかどうかを確認する
・スケールアウト
サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存のタスクを停止する必要は原則ない。
スケールアウト時の注意
・Fargate上のECSタスク数の上限はデフォルトでリージョンあたり1000までであること。
ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能なIPアドレスが消費されていく
Application Autoscaling
Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う
CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意のステップに従ってタスク数を増減させる