「ソースコード」を含む日記 RSS

はてなキーワード: ソースコードとは

2022-06-07

ネットやってるとお前女だったのか〜〜!!ってことまれにあるよな

ポケモンソースコード解析したりとか、ロムデータ解析して内部に残ってるボツデータとか整理してるサイト管理人普通女性ビビっている

あいギーク趣味は(いろいろこじらせた)男がやるものだと完全に思い込んでた

なんかずっと男だと思って見ていたのにいきなり女になるものからTS体験した気分になる

悪くはない体験である

2022-06-02

.NET ネイティブ対応かぁ

https://www.publickey1.jp/blog/22/net_7.html

 

中間言語なおかげで、コメント変数名は残らないが普通に読めるレベルC#コードに戻せるのがよかったのに、ネイティブだとそういうのも難しくなりそう

そのおかげで助かったこともあったし、ソースコードが見づらくなるネイティブ化はあんまりしてほしくないなーってところ

 

以前仕事であったこ

クライアントからこのソフト連携してとexeを渡されたものの、仕様通りに動いてなくエラーログも出ない

もうサポートしてないバージョンらしく、ベンダーに聞いたりサポートしてもらうのも無理そう

C#で作られたものだったので、とりあえずソースコードを見たら原因がわかってどうにか対処できた

すべての catchログ等の出力はせずエラーを捨てるひどいものだった

2022-05-30

中国IoTの雄、シャオミのIoT機器が動かなくなった日

 小米科技シャオミ)といえば、日本ではスマートフォンメーカーイメージが強いだろう。しかし、中国ではIoT家電リーダー的な存在としても知られている。スマートウォッチスマートスピーカーロボット掃除機スマート炊飯器など、さまざまなメーカーが同社のIoT基盤に対応した製品提供している。これらの製品サーバー不具合で突然動かなくなってしまったのである

 異変4月30日早朝、中国各地でスマートホームディスプレイインターネットから遮断され、シャオミの「米家(ミージャ)」アプリからIoT機器操作できなくなった。同日午後にも同じ障害が発生したという声があった。微博ウェイボー)などのSNSでは「米家崩了(米家が壊れた)」という言葉ホットワードになった。

 中には、デバイスがつながらない様子をアップするIoT家電ヘビーユーザーや、「エアコンタイマーがつかなかった」「(IoT家電の)音声制御ができなかった」という意見もあった。また、シャオミが提供するアプリの一部も起動後に応答不能となって操作できなかった。

 こうした事象を受けて、シャオミは緊急メンテナンス実施し、サービスは数時間で復旧した。シャオミの担当者は「クラウドネットワーク障害により、米家アプリや音声制御、その他の関連サービス4月30日午前5時30分以降、異常になっていました。緊急メンテナンス後にサービスは復旧しました。デバイスオフラインなどの場合は、再設定する必要はありません。ご不便をおかけして申し訳ありません」とコメントしている。

 同社のIoT基盤には、PCスマートフォンタブレットを除き、4億3400万台のIoT機器接続されている。米家アプリの月間アクティブユーザー数は6390万人、5台以上の機器接続しているユーザー数は880万人だった。

 クラウド障害で同社サービスが突然使えなくなるのは今回が初めてではない。2019年11月にも、同社の人工知能AIアシスタント「小愛」(シャオアイ)が動作しなくなったことがある。だが、今回はIoT機器での障害である。早朝だったから影響が少なかったものの、日中であれば、調理時にスマート家電動作しない、エアコン空気清浄機が動かない、ネットワークカメラ子どもペットの様子が見られないなどといった影響が想像できる。シャオミは電気自動車EV)の開発を発表しているが、サーバーエラーなどで自動車が正常に動作しなくなる恐れもある。

 新型コロナウイルス感染症中国武漢市を中心に拡大した際はこんなこともあった。多数の人がステイホーム時間を持て余し、「愛の不時着」など当時流行動画を視聴したことからシャオミのスマートテレビセットトップボックスから動画配信サービス「iQiYi」(愛奇藝:アイチーイー)が利用できなくなった。これは、サービスへのアクセス集中が原因であり、シャオミのスマートテレビからは別の動画サービスを利用することができた。

 シャオミは、iQiYiのサーバーダウンをマーケティング活用し、「中国ナンバーワンテレビメーカー」だとアピールした。確かに中国電子商取引ECサイトオンライン予約サイトでは、サーバーダウンになることが人気サービスの裏返しとして紹介されることがある。しかサーバーダウンを自慢する風潮があるとしたらリスキーだ。

 IoT機器障害サーバーダウンだけではない。2019年湖北省IoTシステムへのハッキング事件が起きている。この時は、洗濯機ドライヤー充電スタンドなど、10万を超えるIoT機器オフライン化され、利用不能になってしまった。警察当局によると、犯人の2人は被害に遭ったIoT企業の元従業員だったという。退職時にソースコードを盗み出しておき、競合会社を立ち上げた際に悪用した。

 もちろん、IoT機器を使っていてもほとんどの場合問題ない。しかし、まれ障害不具合が発生することはある。さまざまなIoT機器が家庭や産業向けに普及していき、社会に浸透していくことだろう。

https://news.yahoo.co.jp/articles/54c8765053f09b2c7a36cc1e37f4cb65ffc17405

2022-05-12

anond:20220512162833

仕事したこといから知らないんだろうけど

業務で書いてるコードって外に出したらダメなんだよね。

それとも、ハメようとしてわざと言ってるの?

 

業務従事してる人間ソースコード晒しませんよ。

そんな馬鹿馬鹿しい煽りに乗るわけないじゃん。だからガン無視されてるんだよ。

覚えておいてね。

anond:20220512071512

ディスコンになったらお前がメンテナーになるんだよ!!

ソースコードがあるんだからがんばれ

2022-04-15

教育担当者になったプログラマー諸氏へ

なんか新人研修新人の書くソースコード読むと正気度が減ってこない?

SAN値ピンチというかそういう。

一時的狂気になって逃げだしたくなるというかなんというか。

できない子は1行も進まなくて写経口述筆記させることになるし、

普通の子カッターナイフの替え刃でジャグリングみたいなもの書いてくるし、

できる子にいたっては読んでて宇宙猫になる。

2022-03-31

https://b.hatena.ne.jp/entry/s/zenn.dev/sesere/articles/c3917db32777af

文脈がよく分からないので、他での指摘と重複していると思うが、個人的に思ったこと。

文章MECEでないので「まあそういうことね」という話は措いておいて。

a. 日本語ウェブサイト記事本数で比較することはフェアではない

新しめの技術活用している人の情報収集の順番としては、エディタライブラリの当該部分のソースコードを読む、GitHubリポジトリがあるのであれば、そこのissuesで検索をかける、Google英語エラー文言等なので必然的英語になる)で検索する、Stack Overflow質問するという感じだと思うので、Qiitaでの出現数が減ることは仕方ないと思う。

ミクロで見ると、フロントエンド系の主要な論客Qiitaから離脱していることもある。

b. SPAという概念が古い

SSGの登場によってSPAネガな部分のほとんどは潰されていると思う。

SPA的な手法を使うのであれば、SSGにしろという指摘であれば、的を射ていると思う。

他にも色々と言いたいことはあるが「SPAのことを言ったら一斉に突っ込まれた」という事象観測できないので、とりあえず以上。

2022-03-30

anond:20220330110237

トレパク糾弾著作権保護全然違うんだよ。 

 

トレパク糾弾がやってるのは「上手い気取りだけど、下手くそじゃねーか!」という話。

絵の技術を競っているところに、不正技術があるフリをするのがダメなわけ。

実際、構図とか他の作品の真似したやつでも、どう見ても技術がある作者だったら「オマージュ」で済むよ。荒木飛呂彦とか結構そういうのやってるで有名じゃんね。作品単体としてのオリジナリティはあまり関係ないってこと。

 

ゲームでも、例えばソースコードの中見てみたら完コピじゃねーか! ってなったら同じ騒ぎが起こるだろうな

でもゲーム場合は、「クソゲーじゃねーか!」が先だろう。トレース技術あるフリするの無理だし。

2022-03-28

anond:20220328111426

何年も使ってないかログインに苦労したよ

疑問は解決たからもういいんだけどね

リンク辿ってたら懐かしいの見つけた

2年くらい前にうちの会社でも話題になったけど、商用利用は難しいで止まってた気がするな

https://pkhungurn.github.io/talking-head-anime-2/full.html

↑のとこでどういう理屈で組まれたのか丁寧に説明されてるから見てみて。英語読めんかったらごめん

デモソースコードは↓

https://github.com/pkhungurn/talking-head-anime-2-demo

Pythonで書かれてるから動作環境も開発環境簡単に用意できると思う。

自分の顔で動かしたいならiPhoneないと駄目だった気がする。

自分で動かしてみたりいじってみるとさら面白いよ。

意外とコードシンプルなんだよね。

ただディープニューラルネットワーク学習モデルは公開されてないんよな。さすがに企業秘密か…。論文出すらしいし。

絵心いからそっちのほうが見たかったんだがw

まあPython環境ちょっとしたディープラーニング環境作るのにも便利だから構築しといて損はないと思う。

最近ロボット意思を持つ系のゲームならDetroit Become Humanオススメだよ

2022-03-20

FCチャレンジャー('85)の独特のカメラ酔い

あれはどういうプログラムなのかソースコードを見てみたい

後にも先にもあのゲームだけだ

アナログ再現してるとしたらすごすぎる

2022-03-11

テレワークで開発しているんだが全然仕事にならない

プログラムの開発とバグ改修をやっているのだが、営業担当からシステム仕様とか操作方法とか開発スケジュールかいろいろを問い合わせるLINEがいちいち届いてそれに逐一返事しなくちゃならなくて全然仕事が進まない。

別に今じゃなくてもいいことを、思いついたその場でいちいち連絡してくるからまらない。

ソースコード追ってる最中にこれやられると頭の中がめちゃくちゃになる。

集中できないから後でメールにしてほしいと言っても無駄

通知オフにすると電話がかかってくる。

しかメールなら3分で済む用事を30分以上かけて話す。話が回りくどすぎて本題に入らない。

自分で調べればすぐわかるようなことまで毎回きいてくる。

死にたい

追記

せっかくみんなが指摘してくれたことも、みんなの会社仕事仲間では当たり前のことでも、うちの会社じゃそれやるとみんな怒っちゃうんだよ。

難しいか電話じゃないと伝えられないとかメール書く時間がかかりすぎて仕事にならないとか。挙句の果てには仕事やる気あるのかとか、もう無理。

一応、身の周りの掃除はしっかりやっとくよ。

2022-03-05

プログラマ必要なのはググる力」"ではありません"

プログラミング必要なのはググる力だ」などとまことしやかに言われます。が、これは嘘なので、プログラミング初心者は(中級者以上も)真に受けないで下さい。そして、プログラミング教育に携わる人は、こういう有害な嘘を広めるのはやめて下さい。

なお、ここでいう「プログラマ」とはプログラミング仕事にする人、または作成したプログラムを公開する人を指しています純粋趣味プログラミングをしており、ソースコードソフトウェアも公開するつもりの無い人は、どんな方法プログラミングをしようと自由です。

プログラマ必要な力

プログラマに(プログラマに限らず)必要なのは自身の専門分野に関する基礎的かつ体系的な知識です。それらが不足していては、「ググる」ことさえままなりません。英語で喩えれば、時制や不規則動詞という概念を知らずに辞書を引いて、「I saw him yesterday. 」の「saw」をのこぎりのことだと思い込むようなものです。要するに、調べたい事項が何に関するものなのかを理解していなければ、調べようがないのです。

それでは、プログラミング初心者にとって必要な基礎知識は具体的にどのようなものでしょうか。

まず当然ですが、自分が使っているプログラミング言語フレームワーク機能は一通り知っている必要があります組み込みデータ型や制御構文はもちろん知らなければいけません。高階関数クラス、非同期処理等の発展的な機能も知る必要があります言語だけではなく、パッケージマネージャタスクランナー単体テストツール等の周辺ツール理解必要です。また、「コードコンプリート」とか「Effective ○○」のような書籍に書いてあるような設計コーディングベストプラクティスも知らなければいけません。要するに、現代プログラミングの「常識」は全て知っている必要があります

そもそも「そういう機能存在する」と認識して初めて「調べる」ことができるのです。列挙型という機能存在を知らずに「Javaで列挙型はどう書くのだろう」と調べることはできません。非同期処理の存在を知らずに、「JavaScriptで非同期処理はどう書くのだろう」と調べることはできません。

初心者は何から学ぶべきか

では、そのような一通りの知識を身に着けるためには、どのようなリソースから学ぶべきでしょうか。

結論から言えば、以下のような文献で学ぶべきでしょう。

逆に、WikipediaQiita等の個人趣味で書いた記事プログラミングスクール記事プログラミングスクール家庭教師etc主体に学ぶのはやめるべきでしょう。

もちろん、特定話題について調べる過程で、非公式情報に行き着くことはあるでしょうが、そこで使用されているライブラリ等の仕様については、必ず公式ドキュメントで裏を取るべきです。

時々、こういった正式ドキュメントを読むことが、初心者にはハードルが高いと言う人がいますしかし、冒頭で述べたようなプログラミング仕事にしようとしている人達が、こういうことができないのはおかしいです。

実際、公式ドキュメントを読むことはそれほど難しいことではありません。有名な言語ライブラリ等のドキュメントであれば、高校程度の数学英語とある程度のコンピュータ操作経験があれば、理解できるように書かれています。その程度の素養も無いのにプログラマ特に職業プログラマ)になろうとすることが、そもそもおかしいのです。運動が苦手なのにプロスポーツ選手になろうとするようなものです。

2022-02-17

プログラミング学者ときソース」が美味しそうに見えた

秘伝のソースを作ってるような気持ちソースコードを書いてた

anond:20220216102037

ケチャップに追いつく」を英語発音するときは「ケチャップケチャップ」と唱えるとよい。

使用

先輩社員「うちの会社プロダクトは日々更新されてるから常に最新のソースコードケチャップしとけよ」

後輩社員ソースケチャップかけて食べるんですか?」

2022-02-16

RPAで疲れ果てた

物流会社事務員なんだけど会社RPAツールを導入するってんで定型作業自動化しろって話しでRPAプログラミングをやらされてたんだわ。

それで色々クソな点があったのでシェアします。

1、実務の合間にやらないといけない

マネジメント問題でもあるけど、そういうことなんだよな。

現場がクソ忙しい時に悠長にデバッグとかやってられん。あとデバッグみたいな作業は見た目何もしていないように見えるからここぞとばかりに仕事振られたりする。

2、本番環境とか開発環境とかない。ぶっつけ本番で稼働→失敗→デバッグを繰り返さないといけない。

これは自動化する仕事によると思うんだけど、実際に現場で使うデータRPAプログラムに投入しないとそもそも要件がわからないことがある。データ特性というか、物流事務なんかだと8割がシステム化されているけど2割は荷主や配送先のわがままで特徴的なデータの不備があって、それに対応するのが事務屋の仕事なんだけど、そういう面倒な作業自動化しろとか言ってくる。そもそもRPAなんてシステム化スコープ外の面倒な事務を(金をかけずに)自動化することが目的から当たり前なんだが。

そうすると要件の洗い出しとかできない。ベテランオペレーターにはそういうの全部頭に入ってるからマニュアルとか作ってないことが多い。実際新人に教えるときもぶっつけでやらせてわかんなかったら聞けみたいな世界だし。

3、(2)みたいな事象があるからソースコードがぐちゃぐちゃになる。ぶっつけ本番でプレッシャーがある中実行してその場凌ぎの改修して保守性皆無

4、状態管理ができない

RPAツールってWindowsUIをいじって業務を行うプログラムを作るんだけど、結局今どの画面を開いているのかとか、どのエラーが出ているのかとかプログラム上で管理できない。既存ソフトウェアUIたまたま運良くRPAツールと相性が良ければいいけどそうじゃなければめちゃくちゃやりづらい。特にIBMのPCOMMとかはツールとの相性が悪くて地獄だった。

5、操作してるソフトウェアUIが変わったらお釈迦ポン。

書かなくてもわかると思うけど、業務操作するソフトUIが変わった瞬間にそのRPAプログラムゴミになる。

6、再現性の低いバグが出る

(4)に関係するんだけど、RPAプログラムが立ち上がった時のパソコン状態によって処理速度にムラがあるので、プログラム上このステップまで進んだらウィンドウはこの状態にあるだろうと仮定してプログラムを作ったところ、実際100回のうち99回はそうなんだけど、1回だけ処理がもたついてその状態にならなかったかバグって処理が停止する。みたいなことがある。

もちろんツールではウィンドウ操作可能になるまで待機、みたいなのはあるけど操作可能、全面にある、みたいな粗い粒度しか状態管理できない。

7、こう言うのをちょっとパソコン得意とかEXCEL VBA かけますみたいなやつにやらせることの矛盾

うまくいくわけない。(4)(6)のところでウィンドウ状態管理とそれに起因するバグについて書いたけど、こういう時RPA担当一般プログラミング言語でいうsleepで職人芸的に時間調整するんだぜ?こんなのもう(3Dリアルタイム)ロボットプログラミングでしょ。

結論を言うと2022年馬鹿みたいに複雑化した物流事務(そしてそれは主に荷主と物流会社主従関係によるわがままに起因しているのだが)をRPA化するのは無理だしもうやりたくないね

2022-02-15

macOSBSDではない話

少し前にmacOSLinuxではないとTwitter話題になりました。その際に

macOSBSD

といった内容のTweetを見かけたのですが「元になったのはBSDではなくMachなんだけどな~。昔を懐かしみつつ、調べながら何か書くか」と思いつつ、面倒になったので記憶のまま適当に書くことにしました。

Unix
ベル研究所で開発されたOS
BSD
カリフォルニア大学バークレー校Unixを改良したOS
Mach
カーネギーメロン大学で開発されたOSで、BSD互換機能の開発のためBSDソースコードを流用しています
NeXTSTEP
NeXT社によりMach独自UI実装して開発されました
macOS
NeXTSTEPをもとにUI一新しました
FreeBSD
カリフォルニア大学でのBSDの開発が終了した後、それを引き継いで開発しているOS
MachBSD

Machは当時一世を風靡していたマイクロカーネル設計採用したOSで、BSDとは全く違うOSです。

ただしBSD互換機能を利用していたユーザーは、内部に関心が無ければ

といった印象を持っていたのではないでしょうか。互換機能としては成功なのですが。

macOSMachなのか

Mach1990年代研究プロジェクトが終了しています

macOSのもとになったNeXTSTEPMachを改造して始まりましたが、現在では別物であると考えるべきです。

macOSBSD

macOSは直接にはMachから派生したもので、BSDではありません。ただし

など、BSDと誤解させる点があるのは確かです。

Linux

Linus氏が実装したOSです。

上記UnixBSDMachNeXTSTEPmacOSではソースコードを利用しながらOSを作って行ったため共通の部分がありますが、これらとは全く関係無く独立して開発されたものです。

しかし現状ではNode.jsPythonなどでプログラムを作ろうとした場合シェルで使うコマンドmacOSLinuxでは共通するものも多く

macOSUnixシェルの使い方を覚えた後にAWSVMログインするようになった

というユーザーmacOSLinuxが似ていると認識してしまうのは仕方がないところではあります

2022-02-09

anond:20220209165346

はへーすっご。

前にNTTかどっかで働いていた人に聞いたんだけど

ネットが使えないところでソース書くこともあるんでしょ?

関数とか全部覚えた状態ソースコード書くなんて、私絶対無理なんだけど・・・

2022-02-07

大企業はいつになってもDXなんて無理

DXコンサル的なことをやってるがそろそろこの業界限界

そもそも大企業上層部はDXっていうのを買ってくればDXできると思ってる。

DXっていう製品が無いというのは理解しているんだが

DXっていう研修とかDXっていうコンサルを買ってくればDXできると思ってる。

これが中小企業ぐらいだったら鶴の一声でDXできるかもしれない。

ところが大企業っていうのは意思決定者が細分化されていることが多くて

社長が「DXするぞ!」って言っても実際に社長はDXの状況を年に1回ぐらいしか確認しないし

伝言リレー下部組織に伝わるうちに

「結局はこれだけやってりゃいいんでしょ?」

っていう謎理解だけで終わってしまう。

例えば、社内の会計システムエクセルよりダメダメな終わってるような会社(某大手通会社)でも

それを変えようとすると

「これで慣れてるから変えるな」

「新しいシステムを習熟する研修はどうする」

みたいな声を「忖度」してしまう。

これ、実際にはそういうこと言う人はほとんど居ないんだが

会計システム管轄している部署が実際に使う人達部署の上位組織にあたることはほとんど無いし

下手したらコストセンターの部長営業系の部長より立場が低い場合がある。

から売り上げが下がるような可能性を忖度して新しい社内システムなんて簡単には入らないし

入れるとしても無茶苦茶時間かけて旧来のシステムとの整合性とか気にしまくってから導入する。

そうすると現場の人からすると

「前のシステムでもいいなら前のシステムでいいでしょ」

ってなってほとんど使われないのが現状。

他にも何かしらDXしようとしても結局は上司意見忖度する。

パワポ資料やめてnotionにしましょうとかソースコードSubversionやめてGitしましょうとか

そういうことを「言うことが構造的に難しい」っていうのが根本的に問題

社長部長が「そういう声を拾うぞ!」とか言ってご意見箱的なのを用意したりもするんだが

結局そこに投稿されてる提案が良いのか悪いのか判断できないか無駄

必要なのはリーダーシップというある意味独裁的なやり方であって民主主義的なことをやってたら成功しない。

なのでDXを本気でやりたかったら上層部人間イケてるベンチャーで下っ端として1ヶ月ぐらい働いたらどうですかね。

日銭を稼ぐようなベンチャーイケてるところは効率化の塊ですよ。

そこで身をもって体感してみたら良いんじゃ無いかな。まぁベンチャーにとっては良い迷惑だろうけど。

2022-02-05

anond:20220205141525

いまどきのソースコード変数名数バイト節約しても知れてるんだからローマ字とかなんなら漢字変数名つけたらどうなのか

2022-01-25

本のまとめ

--

この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。

1章

コンテナとは】

他のプロセスとは隔離された状態OS上にソフトウェアを実行する技術

コンテナ利用のメリット

環境依存から解放

コンテナにはアプリの稼働に必要となるランタイムライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリ依存関係をすべてコンテナ内で完結できる。

依存関係を含めたパッケージリリース単位となる

環境構築やテストに要する時間の削減

優れた再現性ポータビリティ

全ての依存関係コンテナ内で完結するため、オンプレでもクラウドでも起動する。

ステージング環境テスト済みのコンテナイメージプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテスト必要工数を削減できる。

リソース効率のアップ

サーバー仮想化では、仮想マシンレベルリソースを分離し、ゲストOS上でアプリが起動する。つまりアプリだけでなく、ゲストOSを動かすためのコンピューティングリソース必要

一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。

Dockerとは】

コンテナライフサイクル管理するプラットフォーム

アプリコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。

アプリソースコード + Dockerfile

↓ buildでイメージ作成

イメージ(アプリケーションと依存関係パッケージングされる。アプリライブラリOS)

shipイメージの保存

レジストリに保存

run コンテナの実行

オンプレクラウドなどで起動

Dockerfileとは】

イメージを構築するためのテキストファイル

このファイルコマンド記述することで、アプリ必要ライブラリインストールしたり、コンテナ上に環境変数を指定したりする。

1章まとめ、感想

コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンド設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。

2章

AWS提供するコンテナサービス

コントロールプレーン

コンテナ管理する機能

コントロールプレーンは2種類

ECSとEKSがある。

ECS

フルマネージドなコンテナオーケストレータ。

オーケストレーションサービスであり、コンテナの実行環境ではない。

ECSの月間稼働率99.99%であることがSLA として保証

タスク

コンテナ動作するコンポーネント

タスクは1つ以上のコンテナからなる

アプリを起動するためにはコンテナ必要

タスク定義

タスク作成するテンプレート定義JSON記述

デプロイするコンテナイメージタスクコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。

サービス

指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサータスクを実行するネットワーク指定

クラスター

サービスタスクを実行する論理グループ

データプレーン

コンテナが実際に稼働するリソース環境

2種類ありECSとFargateがある。 Fargateに絞って書く

Fargateとは

サーバーレスコンピューティングエンジン

AWSのフルマネージドなデータプレーンとして定義されている

コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する

Fargate メリット

ホスト管理不要であること

サーバーのスケーリングパッチ適用保護管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる

Fargate デメリット

価格EC2より高い。

利用者コンテナの稼働するOSには介入できない

コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる

ECR

フルマネージドなコンテナレジストリ

コンテナイメージを保存、管理できる

コンテナが利用されているサービス

Lambda

・App Runner

Lambda

 利用者コードアップロードするだけでコードを実行できるサービス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の登場からしばらく経過し、有識者経験者は増え、確保しやすい。

システム要件確認

多数のユーザーに使ってもらう

可用性を高めるためにマルチAZ構成を取る

CI/CDパイプライン形成し、アプリリリースに対するアジティを高める

レイヤで適切なセキュリティ対策不正アクセス対策認証データの適切な管理ログ保存、踏み台経由の内部アクセス)を施したい

2章まとめ、感想

AWS提供するコンテナサービスはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理不要インフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である

3章

この章では運用設計ロギング設計セキュリティ設計信頼性設計パフォーマンス設計コスト最適化設計について述べている。

運用設計

Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計不具合修正デプロイリスク軽減のためのCI/CD設計必要である

モニタリングとは

システム内で定めた状態確認し続けることであり、その目的システムの可用性を維持するために問題発生に気づくこと

オブザーバビリティとは

システム全体を俯瞰しつつ、内部状態まで深掘できる状態

オブザーバビリティの獲得によって、原因特定対策検討が迅速に行えるようになる

ロギング設計

・cloud watch logs

他のAWSサービスとの連携も容易

サブスクリプションフィルター特定文字列の抽出も容易

・Firelens

AWS以外のサービスAWS外のSaaS連携することも可能

Firehoseを経由してS3やRed shiftOpenSearch Serviceにログ転送できる

Fluentdやfluent bit選択できる

fluent bitを利用する場合AWS公式提供しているコンテナイメージ使用できる

セキュリティ設計

イメージに対するセキュリティ対策

 - ソフトウェアライブラリ脆弱性は日々更新されており、作ってから時間が経ったイメージ脆弱性を含んでいる危険がある。

 - 方法

  脆弱性の有無はECRによる脆弱性スキャンOSSのtrivyによる脆弱性スキャン

継続的かつ自動的コンテナイメージスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリ場合CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャン必要になる。

cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能

提供元が不明ベースイメージ使用は避ける

・IAMポリシーによるECRのパブリック化の禁止

 - オペレーションミスによる公開を防ぐことができる

信頼性設計

マルチAZ構成

Fargateの場合サービス内部のスケジューラが自動マルチAZ構成を取るため、こちらで何かする必要はない。

障害時切り離しと復旧

ECSはcloud watchと組み合わせることでタスク障害アプリエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる

ALBと結びつけることで、障害が発生したタスク自動で切り離す

リタイアという状態

AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合ECSは新しいタスクに置き換えようとするその状態のこと。

Fargateの場合アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ整合などが生じて危険

システムメンテナンス時におけるサービス停止

ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能

サービスクォータという制限

意図しない課金増加から保護するために設けられた制限

自動でクォータは引き上がらない

cloud watch メトリクスなどで監視する必要がある。

パフォーマンス設計

パフォーマンス設計で求められることは、ビジネスで求められるシステム需要を満たしつつも、技術領域進歩環境の変化に対応可能アーキテクチャを目指すこと

ビジネス上の性能要件を把握することが前提

利用者数やワークロードの特性を見極めつつ、性能目標から必要リソース量を仮決めする

FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める

既存のワークロードを模倣したベンチマークや負荷テスト実施してパフォーマンス要件を満たすかどうかを確認する

スケールアウト

サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存タスクを停止する必要原則ない。

スケールアウト時の注意

・Fargate上のECSタスク数の上限はデフォルトリージョンあたり1000までであること。

VPCIPアドレスの割当量に気をつける

ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能IPアドレスが消費されていく

スケールアウトによるIPアドレスの枯渇に注意

Application Autoscaling

Fargateで使用可能

Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う

ステップスケーリングポリシー

ステップを設けて制御する

CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意ステップに従ってタスク数を増減させる

ターゲット追跡スケーリングポリシーとは

指定したメトリクスのターゲット値を維持するようなにスケールアウトやスケールインを制御する方針

ターゲット追跡スケーリングPermalink | 記事への反応(0) | 21:45

本のまとめ

--

この本は5章まであるが、4章と5章はハンズオンであるため、文字としてまとめるのは1から3章に留める。

1章

コンテナとは】

他のプロセスとは隔離された状態OS上にソフトウェアを実行する技術

コンテナ利用のメリット

環境依存から解放

コンテナにはアプリの稼働に必要となるランタイムライブラリを1つのパッケージとして全て含めることができる。そうすることでアプリ依存関係をすべてコンテナ内で完結できる。

依存関係を含めたパッケージリリース単位となる

環境構築やテストに要する時間の削減

優れた再現性ポータビリティ

全ての依存関係コンテナ内で完結するため、オンプレでもクラウドでも起動する。

ステージング環境テスト済みのコンテナイメージプロダクション環境向けに再利用することで、ライブラリ差異による環境ごとのテスト必要工数を削減できる。

リソース効率のアップ

サーバー仮想化では、仮想マシンレベルリソースを分離し、ゲストOS上でアプリが起動する。つまりアプリだけでなく、ゲストOSを動かすためのコンピューティングリソース必要

一方コンテナは、プロセスレベルで分離されてアプリが稼働する。OSから見ると単に1つのプロセスが稼働している扱いになる。

Dockerとは】

コンテナライフサイクル管理するプラットフォーム

アプリコンテナイメージとしてビルドしたり、イメージの取得や保存、コンテナの起動をシンプルに行える。

アプリソースコード + Dockerfile

↓ buildでイメージ作成

イメージ(アプリケーションと依存関係パッケージングされる。アプリライブラリOS)

shipイメージの保存

レジストリに保存

run コンテナの実行

オンプレクラウドなどで起動

Dockerfileとは】

イメージを構築するためのテキストファイル

このファイルコマンド記述することで、アプリ必要ライブラリインストールしたり、コンテナ上に環境変数を指定したりする。

1章まとめ、感想

コンテナの登場により、本番・開発環境ごとに1からサーバーを立ててコマンド設定ファイルを正確に行い、環境差異によるエラーをつぶしていき...というこれまでの数々の労力を減らすことができるようになった。

2章

AWS提供するコンテナサービス

コントロールプレーン

コンテナ管理する機能

コントロールプレーンは2種類

ECSとEKSがある。

ECS

フルマネージドなコンテナオーケストレータ。

オーケストレーションサービスであり、コンテナの実行環境ではない。

ECSの月間稼働率99.99%であることがSLA として保証

タスク

コンテナ動作するコンポーネント

タスクは1つ以上のコンテナからなる

アプリを起動するためにはコンテナ必要

タスク定義

タスク作成するテンプレート定義JSON記述

デプロイするコンテナイメージタスクコンテナに割り当てるリソースやIAMロール、Cloud Watch Logsの出力先などを指定する。

サービス

指定した数だけタスクを維持するスケジューラーで、オーケストレータのコア機能にあたる要素。サービス作成時は起動するタスクの数や関連づけるロードバランサータスクを実行するネットワーク指定

クラスター

サービスタスクを実行する論理グループ

データプレーン

コンテナが実際に稼働するリソース環境

2種類ありECSとFargateがある。 Fargateに絞って書く

Fargateとは

サーバーレスコンピューティングエンジン

AWSのフルマネージドなデータプレーンとして定義されている

コンテナ向けであるためEC2のように単体では使用できず、ECSかEKSで利用する

Fargate メリット

ホスト管理不要であること

サーバーのスケーリングパッチ適用保護管理にまつわる運用上のオーバーヘッドが発生しない。これにより、アプリ開発に専念できるようになる

Fargate デメリット

価格EC2より高い。

利用者コンテナの稼働するOSには介入できない

コンテナごとにENIがアタッチされるため、コンテナごとにIPが振られるため起動に若干時間がかかる

ECR

フルマネージドなコンテナレジストリ

コンテナイメージを保存、管理できる

コンテナが利用されているサービス

Lambda

・App Runner

Lambda

 利用者コードアップロードするだけでコードを実行できるサービス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の登場からしばらく経過し、有識者経験者は増え、確保しやすい。

システム要件確認

多数のユーザーに使ってもらう

可用性を高めるためにマルチAZ構成を取る

CI/CDパイプライン形成し、アプリリリースに対するアジティを高める

レイヤで適切なセキュリティ対策不正アクセス対策認証データの適切な管理ログ保存、踏み台経由の内部アクセス)を施したい

2章まとめ、感想

AWS提供するコンテナサービスはいくつかあり、なかでもFargateというフルマネージドなデータプレーンがよく使われている。ホスト管理不要インフラ関連の工数を削減できる一方、EC2より料金が高く、起動に若干時間がかかるのが難点である

3章

この章では運用設計ロギング設計セキュリティ設計信頼性設計パフォーマンス設計コスト最適化設計について述べている。

運用設計

Fargate利用時のシステム状態を把握するためのモニタリングやオブザーバビリティに関する設計不具合修正デプロイリスク軽減のためのCI/CD設計必要である

モニタリングとは

システム内で定めた状態確認し続けることであり、その目的システムの可用性を維持するために問題発生に気づくこと

オブザーバビリティとは

システム全体を俯瞰しつつ、内部状態まで深掘できる状態

オブザーバビリティの獲得によって、原因特定対策検討が迅速に行えるようになる

ロギング設計

・cloud watch logs

他のAWSサービスとの連携も容易

サブスクリプションフィルター特定文字列の抽出も容易

・Firelens

AWS以外のサービスAWS外のSaaS連携することも可能

Firehoseを経由してS3やRed shiftOpenSearch Serviceにログ転送できる

Fluentdやfluent bit選択できる

fluent bitを利用する場合AWS公式提供しているコンテナイメージ使用できる

セキュリティ設計

イメージに対するセキュリティ対策

 - ソフトウェアライブラリ脆弱性は日々更新されており、作ってから時間が経ったイメージ脆弱性を含んでいる危険がある。

 - 方法

  脆弱性の有無はECRによる脆弱性スキャンOSSのtrivyによる脆弱性スキャン

継続的かつ自動的コンテナイメージスキャンする必要があるため、CI/CDに組み込む必要がある。しかし頻繁にリリースが行われないアプリ場合CICDパイプラインが実行されず、同時にスキャンもなされないということになるため、定期的に行うスキャン必要になる。

cloud watch Eventsから定期的にLambdaを実行してECRスキャンを行わせる(スキャン自体は1日1回のみ可能

提供元が不明ベースイメージ使用は避ける

・IAMポリシーによるECRのパブリック化の禁止

 - オペレーションミスによる公開を防ぐことができる

信頼性設計

マルチAZ構成

Fargateの場合サービス内部のスケジューラが自動マルチAZ構成を取るため、こちらで何かする必要はない。

障害時切り離しと復旧

ECSはcloud watchと組み合わせることでタスク障害アプリエラーを検知できるうえに、用意されてるメトリクスをcloud watchアラームと結びつけて通知を自動化できる

ALBと結びつけることで、障害が発生したタスク自動で切り離す

リタイアという状態

AWS内部のハードウェア障害や、セキュリティ脆弱性があるプラットフォームだと判断された場合ECSは新しいタスクに置き換えようとするその状態のこと。

Fargateの場合アプリはSIGTERM発行に対して適切に対処できる設定にしておかなくてはならない。そうしておかないとSIGKILLで強制終了されてしまう。データ整合などが生じて危険

システムメンテナンス時におけるサービス停止

ALBのリスナールールを変更し、コンテンツよりもSorryページの優先度を上げることで対処可能

サービスクォータという制限

意図しない課金増加から保護するために設けられた制限

自動でクォータは引き上がらない

cloud watch メトリクスなどで監視する必要がある。

パフォーマンス設計

パフォーマンス設計で求められることは、ビジネスで求められるシステム需要を満たしつつも、技術領域進歩環境の変化に対応可能アーキテクチャを目指すこと

ビジネス上の性能要件を把握することが前提

利用者数やワークロードの特性を見極めつつ、性能目標から必要リソース量を仮決めする

FargateはAutoscalingの利用が可能で、ステップスケーリングポリシーターゲット追跡スケーリングポリシーがある。どちらのポリシー戦略をとるかを事前に決める

既存のワークロードを模倣したベンチマークや負荷テスト実施してパフォーマンス要件を満たすかどうかを確認する

スケールアウト

サーバーの台数を増やすことでシステム全体のコンピューティングリソースを増やそうとする概念。可用性と耐障害性が上がる。既存タスクを停止する必要原則ない。

スケールアウト時の注意

・Fargate上のECSタスク数の上限はデフォルトリージョンあたり1000までであること。

VPCIPアドレスの割当量に気をつける

ECSタスクごとにENIが割り当てられ、タスク数が増えるごとにサブネット内の割当可能IPアドレスが消費されていく

スケールアウトによるIPアドレスの枯渇に注意

Application Autoscaling

Fargateで使用可能

Cloud Watchアラームで定めたメトリクスの閾値に従ってスケールアウトやスケールインを行う

ステップスケーリングポリシー

ステップを設けて制御する

CPU使用率が60~80%ならECSタスク数を10%増加し、80%以上なら30%増加する、という任意ステップに従ってタスク数を増減させる

ターゲット追跡スケーリングポリシーとは

指定したメトリクスのターゲット値を維持するようなにスケールアウトやスケールインを制御する方針

ターゲット追跡スケーリングPermalink | 記事への反応(0) | 21:45

ログイン ユーザー登録
ようこそ ゲスト さん