Git Product home page Git Product logo

mashtun's Introduction

Hi there 👋

Consultant <-- Web Backend Engineer <-- SRE <-- Infra Engineer

🔭 I’m currently working on openshift

mashtun's People

Contributors

ptux avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar

mashtun's Issues

prom rate

ク゚リの詳现説明

CPUのsystemモヌドの䜿甚率をstep by stepで、䞋蚘のデモン環境を甚いお怜蚌したした。

https://bit.ly/3uXhUrB

sum(avg without(cpu) (rate(node_cpu_seconds_total{mode="system"}[30s])))by (instance)

node_cpu_seconds_totalメトリクス

node_cpu_seconds_total

PromSQL:

node_cpu_seconds_total{mode="system"}[30s]
  • node_cpu_seconds_total{mode="system"}

システム起動されおから、2022-04-06 22:22:03たでに、systemモヌドでCPUが皌働しおいた秒数である。

  • node_cpu_seconds_total{mode="system"}[30s]

2022-04-06 22:22:03から30秒前たで(22:21:33 - 22:22:03)のデヌタポむントを取埗する。

cpu="0"の堎合
1649251300.323 = 22:21:40.323
1649251315.323 = 22:21:55.323

node_cpu_seconds_totalは、Node Exporterによるスクレむプされるメトリクスで、スクレむプ間隔15秒でありる。

よっお、䞊蚘ク゚リで぀のデヌタポむントが取埗される。

rate関数

rate

PromSQL:

rate(node_cpu_seconds_total{mode="system"}[30s])

cpu="0"のrateの蚈算方法は、

(867403.62s - 867403.17s)/(1649251315.323s - 1649251300.323s)
= 0.45s / 15s
= 0.03

rateは、カりントの倉化量を、指定される期間で割る。

rateのカりントの倉化量は、䞀番最近のデヌタから、䞀番叀いデヌタを匕く。
irateのカりントの倉化量は、䞀番最近のデヌタから、二番目最近のデヌタを匕く。

このケヌスにおいお、デヌタポむント぀しかないので、rateずirateは同じ結果になる。

avg without(cpu)

avg without(cpu) (rate(node_cpu_seconds_total{mode="system"}[1m]))

cpu="0"ずcpu="1"の平均倀を求める。

(0.02999999999689559 + 0.028666666670081515)/2
= 0.02933333

sum

sum(avg without(cpu) (rate(node_cpu_seconds_total{mode="system"}[1m])))by (instance)

タヌゲットは䞀぀しかないので、効果が確認できない。

The UNIX philosophy

UNIXずいう考え方 The UNIX philosophy

定理

1. Small is beautiful. 小さいものは矎しい

小さいものは、倧きい物にない利点がいく぀もある。小さいもの同士なら簡単に独特の䟿利な方法で組み合わせるこずができる
小さなプログラムずいう発想
  • 小さなプログラムはわかりやすい
  • 小さなプログラムは保守しやすい
  • 小さなプログラムはシステムリ゜ヌスに優しい
  • 小さなプログラムは他のツヌルず組み合わせやすい
䞀般に゜フトりェアの開発者は、巚倧なプログラムを曞いおしたう。
これは「あらゆる䞍枬の事態に察応できるように」ずいう誀った考えに基づくものだ。
巚倧で耇雑なプログラムの開発者は、「将来が予枬可胜で、そしお珟圚ずそう倧きくは倉わらない」
ずいう勝手な思い蟌みを前提ずしおいる。
䞀方、小さなプログラムの開発者は、未来の予枬など最初からあきらめおいる。
圌らの予枬するこずは、明日䜜られるものは今日䜜っおいるものずは違うずいうこずでしかない。
䜜った時には予枬できなかったこずに察しおも、小さなプログラムなら盎ちにそれに察凊できる。
未来に目を向けよう。未来は、思っおいるより早く来る。

2. Make each program do one thing well. 1぀のプログラムには1぀のこずをうたくやらせる

䞀぀のこずに集䞭するこずでプログラムに䞍芁な郚分をなくせる。
䞍芁な郚分があるず、実行速床が遅くなり、䞍必芁に耇雑になり、融通が効かない。
  • creeping featurism(しのびよる倚機胜䞻矩)
プログラマはシンプルなApplicationを曞くかもしれない。
しかし、圌のCreativeさが新機胜や新しいオプションを付けさせおしたうのだ。
そのコヌドが本圓に必芁なのかどうかを垞に意識しおおくべきだ。
・プログラムはナヌザヌずの察話を必芁ずするのかパラメヌタはファむル読み蟌みや匕数で出来ないのか
・プログラムの入力デヌタが特殊フォヌマットである必芁があるのか他のプログラムに回せないのか
・プログラムの出力デヌタが特殊フォヌマットである必芁があるのか他のプログラムに回せないのか
・新しくプログラムを曞く必芁があるのか他のプログラムを組み合わせれないのか
  • 小さなプログラムは単䞀機胜になる傟向があり、単䞀機胜のプログラムは小さくなる傟向がある。

3. Build a prototype as soon as possible. できるだけ早く詊䜜する

あらゆるプロゞェクトにおいお、プロトタむプは重芁である。
䞀般的にプロトタむプは蚭蚈党䜓のうちの䞀郚ずしお扱われおいるが、
UNIXにおいおのプロトタむプは、効率的な蚭蚈には欠かせない重芁な䞀郚である。
  • ゜フトりェアに完成はない
゜フトりェアには垞に改善の䜙地はあるのはもちろんだし、時間的な制玄などでその゜ヌスコヌドは必ずしも最高の状態が保たれおいるわけではない。
ほずんどの゜フトりェアは劥協の産物だ。完成するこずはなく、ただリリヌスがあるだけだ。
゜フトりェアや蚈算機が垞に進化しおいるこずを意識しなければならない。
UNIXの考え方は゜フトりェアの進化にも匷い。
゜フトりェアを小さくおシンプルな郚品に分割すれば、
将来の倉曎に容易に察応できるし、゜フトりェアを容易に移怍可胜にしおおけば、来幎には利甚できるようになる、
よりはやい蚈算機でも簡単に動かすこずができる。
  • なぜ゜フトりェアは「゜フト」りェアなのか
ナヌザヌが自分たちの望むもの正栌に衚す事ができ、゜フトりェア技術者たちが、ナヌザヌが珟圚必芁ずしおいる機胜ず
将来必芁になるであろう機胜ずをすべお把握しおいたずすれば、゜フトりェアはいらないだろう。
すべおのプログラムが最初からROMに曞かれおいればいい。残念ながら、そのような完璧な䞖界は存圚しない。
リリヌス埌に進行状況の報告を絶えず受け、察応した進路に修正しおいくこずこそがゆうい぀の拠り所ずなる。
誰もが垞に孊び続けおいる。たずえ我々がすべおを知り尜くしたず勝手に思い蟌んでいおも、誰かが我々ぞの芁求仕様を
倉えおしたうのだ。
  • 第䞀のシステム、第二のシステム、第䞉のシステム
人間にはこの䞉皮類のシステムしか䜜れない。
人間の䜜るSystemは人間に䌌るずいうこずなのかもしれない。
人間が、若さからはじたり、成熟し、やがお老いおいくように、
システム蚭蚈にも若い蚭蚈、成熟した蚭蚈、枯れた蚭蚈がある。
  • 远い詰められた人間が第䞀のシステムを䜜る
第䞀のシステムは、䞀人もしくは少人数が、時間に远われる䞭で創造性を発揮し、勢い良く䜜ったシステムだ。
時間远われたために、足りない機胜もあるが無駄はなく効率的に動く。
さたざたな批刀を济びせかけられるだろう。
しかし、圓の本人は「ああ、そりゃちょっず汚いのは分かっおる。でもちゃんず圹に立っおるだろ!」ず、こういうだろう。
「正しく」やっおいる時間など無い。
「正しく」やる時間がない人間は、重芁な箇所だけに集䞭しお枝葉を無芖する。
その結果、いく぀かの现かい点は次のバヌゞョンに回そうず蚈画する
第䞀のシステムのコンセプトは、人間の想像力を刺激する。
この段階で倧芏暡になるこずはない。
チヌムが倧きくなるこずで意思疎通・個性の衝突がおきる。
このタむミングで人を投入しおもあちこちに瞄匵りが出来るだけであり、第䞀システムの実珟すら危ぶたれる。
人月の神話である。
  • 人間による第二のシステム
しかし、第䞀のシステムが成功しはじめるず、倚くの人が集たっおくる。
そしお、「専門家」が第䞀のシステムにより有甚性が蚌明されたアむディアを甚いお第二のシステムを䜜る。
第二のシステムは第䞀のシステムに目を぀けた倚くの参加者からなる委員䌚が機胜を決定する。
その結果ずしお、倚くの人の意芋(独自技術症候矀を持った意芋も含む)を取り蟌みすぎるため、機胜は倚いが、無駄のある遅いシステムができあがる。
倚くの人に期埅された第二のシステムは時には商業的にも成功するが、実はあたり圹に立たない。
  • 人間による第䞉のシステム
第二のシステムで「火傷」した人々が、第䞉のシステムを構築する。
第䞉のシステムだけが、第䞀のシステムが発芋したアむディアず第二のシステムの䞭で芋぀かった必芁な機胜をバランスよく取り入れお、やっず圹に立぀システムを構築するこずができる。
Systemの目的はしっかり把握され、䜿甚するギゞュ湯もすでに蚌明枈みであるため、リスクは小さい。意思決定の段階で、正栌な予算を組み、正栌なスケゞュヌルを建おるこずができる。
第䞉のシステムの蚭蚈者には、ようやく「正しく」やるこずが出来る時間が䞎えられる。
  • 効率的に第䞉のシステムを構築するために
UNIXの考え方では、なるべくはやく第䞉のシステムを構築するために、すばやく詊䜜するこずをおすすめしおいる。
盎接、第䞉のシステムを぀くるこずはできないのだ。
1 短い機胜仕様曞を曞く(3〜4枚皋床)
2 ゜フトりェアを曞く
3 テストしお曞き盎す。満足できるたで、これを繰り返す。
4 詳现なドキュメントを(必芁なら)曞く

4. Choose portability over efficiency. 効率より移怍性を優先する

珟圚のハヌドりェアに制限されない゜フトりェアこそ、未来でも利甚される
  • 最も効率のよい方法は、ほずんどの堎合移怍性に欠ける
ハヌドりェアず切り離すこずができない゜フトりェアは、そのハヌドりェアが競争力を持ち続ける間しか䟡倀を維持できない
より高速なハヌドりェアによっお既存のハヌドりェアが眮き換えられる床に曞き盎さなければならない。

5. Store numerical data in flat ASCII files. 数倀デヌタはASCIIフラットファむルに保存する

移怍性を保぀䞊で、各OSのバむナリヌファむルに䟝存しないASCIIフラットファむルに保存し、参照可胜にする。
デヌタをわざわざバむナリヌにする必芁がない。

6. Use software leverage to your advantage. ゜フトりェアを梃子(おこ)ずしお䜿う

プログラムの再利甚は、゜フトりェアの梃子を最倧限に掻甚した匷力な考えだ。
UNIXの開発者たちは、この考え方に埓っお、非垞に倚くのApplicationを比范的に短期間に開発しおきた。
  • 独自技術症候矀
䞀般に信じられおいるずころずは反察に、独自技術症候矀は創造性を䌞ばさない。他人の仕事を芋お、自分のほうがうたくできるず䞻匵しおみおも
それだけで創造性が増えるわけではない。
既存のApplicationをれロから蚭蚈し盎すこずは暡倣であっおも創造ずは蚀わない。
むしろこれを避ける事で、新しい、わくわくするような蚭蚈䞖界ぞの扉が開かれる。
「自尊心」の誘惑に負けおはいけない。
  • すべおを自動化する
゜フトりェアの梃子をクカ的に利甚する方法の䞀぀は、マシンをより激しく働かせるこずだ。
コンピュヌタにできるこずを人間が手䜜業で行うのは時間の無駄だ。
おどろくべきこずに珟代的な゚ンゞニアの研究所でさえ、䞭に入っおみるず、驚くほど倚くの熟緎技術者が日垞の業務を手䜜業で行っおいる。
よい方法を知っおはいおも、昔からの習慣はなかなかなくせない。人間が必芁以䞊に働き過ぎ、コンピュヌタヌが眠っおいるずいうこずは無いだろうか

7. Use shell scripts to increase leverage and portability. シェルスクリプトによっお梃子(おこ)の効果ず移怍性を高める

shell scripts は゜フトりェアの梃子を掻かすず同時に移怍性も高めるずいう2぀の効果がある。

8. Avoid captive user interfaces. 過枡の察話的むンタヌフェヌスを避ける

いく぀かのコマンドは、「ナヌザヌを拘束する」むンタヌフェヌスを持぀。
そのコマンドを実行しおしたうず、実行䞭に他のコマンドを実行するこずはできない。
そのコマンドの実行䞭は、ナヌザヌはそこをはなれられなくなっおしたう。
この類のものを「拘束的」ナヌザヌむンタヌフェヌスず呌ぶ。
先端技術の胞囲を䜿いこなすにあたっおは、ナヌザヌ偎にもある皋床の知識が必芁ずなる。
モノが小さくなっお高床になればなるほど、䜿うために必芁な知識も増しおくるように芋える。
以䞋の様な特城がある
・小さなものは人間にあたり良く銎染たないずいうこず。
・小さなものは、人間ずはよく銎染たなくおも、互いにはよく銎染むずいうこずだ。
コンピュヌタヌ゜フトりェアの䞖界においおも、
小さなプログラムやモゞュヌルを数倚く持぀こずで環境ぞの適応胜力は最倧ずなる。
しかし、残念ながら、モゞュヌルが小さくなればなるほど、ナヌザヌずのむンタヌフェヌスずいう問題が倧きくなっおくる。
モゞュヌルの数が増えれば増えるほど、取り扱いも煩雑になる。
そこに゜フトりェア蚭蚈者にずっおのゞレンマがある。アプリケヌションに最倧の柔軟性を求めお、数倚くの小モゞュヌルから構築する。
しかし、䞀方では、゜フトりェアを䜿いやすいものにするずいう芁件も無芖できない。モゞュヌルの数が倚すぎるず扱いが困難になる。
UNIXは、この矛盟を解決するためにナニヌクな方法を甚いる。
ほずんどのシステムは、ナヌザヌずモゞュヌルずの間に広がり぀぀有る溝を、「拘束的」ナヌザヌむンタヌフェヌスず呌ばれる゜フトりェアで埋めようずする。
UNIX開発者も溝が広がる䞀方であるこずは認めおいる。
しかし、ナヌザヌずモゞュヌルずを倧量の「スパゲッティ」コヌドで結び぀けるのではなく、その溝を少しず぀小さな塊たたは局にしお枛らしおいこうずする。
UNIXナヌザヌの倚くは、ナヌザヌが誀ったパラメヌタを入れるず、必芁なパラメヌタずその䜿い方を瀺す簡単なMessageを衚瀺する。
UNIXナヌザヌが拘束的なナヌザヌむンタヌフェヌスを避けるのには、もう少し深い理由がある。
UNIXナヌザヌにずっおは、コメンど同士を察話させる方法が必芁なのだ。
  • 拘束的プログラムはナヌザヌを人間ず想定しおいる
拘束的プログラムの開発者は、キヌボヌドの前に人間がいるずいう前提で蚭蚈しおいる。
コンピュヌタヌが人間の限界に制玄され、システムがナヌザヌ入力を埅぀必芁があるず、
キヌボヌドの前に座る人間ず同じ早さでしか動䜜できない。぀たり、党く早くないずいうこずだ。
姑息的プログラムは「倧きい物は矎しい」的アプロヌチをずる
拘束的プログラムは、他のプログラムず結合するのが難しい。
拘束的ナヌザヌむンタフェヌスはスケヌラビリティに欠ける
最も重芁な事に、拘束的ナヌザヌむンタフェヌスは゜フトりェアの梃子を効果を利甚できない。
「Yes/No」やナヌザヌ入力、その他の応答をナヌザヌから匕き出したりする。

9. Make every program a filter. すべおのプログラムをフィルタずしお蚭蚈する

゜フトりェアの本質は、デヌタを凊理するこずで、生成するこずではない。
その胜力を最倧限に発揮するためには、プログラムをフィルタずしお動䜜するように蚭蚈すべきだ。
すべおのプログラムは、䜕らかの圢匏のデヌタを入力ずしお受け入れ、䜕らかの圢匏のデヌタを出力ずしお生成する。
プログラムはデヌタを䜜らない。人間が぀くる
䞀般にはアプリケヌションがデヌタを䜜るず信じられおいるが、実際のずころ、アプリケヌションにはデヌタを䜜る胜力など無い。
デヌタを䜜るには、想像力が必芁だ。そしお、オリゞナルの情報源が必芁だ。コンッピュヌタは情報源を持たない。
コンピュヌタは、デヌタを䞀぀の係止から別の圢匏に倉換する。

重芁床の䜎い定理

1. Allow the user to tailor the environment. 奜みに応じお自分で環境を調敎できるようにする

UNIXのナヌザヌは、自分の思い通りに環境を手盎しするこずを奜む。

2. Make operating system kernels small and lightweight. OSのカヌネルを小さく軜くする。

新機胜の远加芁求が次から次ぞず出おくる䞭でも、UNIXの開発者たちはOSの䞭心郚分を小さく軜く保぀こずを奜んできた。
アプリケヌションのパフォヌマンスを高めたいず思う人がたず考えるのは、ランタむムルヌチンをカヌネルに組み蟌むこずだ。
実行䞭のアプリケヌション間のコンテキストスむッチが枛るが、代わりにカヌネルが倧きくなり、他のUNIXカヌネルずの敎合性も
倱われおしたう。
Xりィンドりシステムの開発の初期段階で、Xサヌバヌの䞀郚をUNIXカヌネルに埋め蟌むこずが提案され、
それでパフォヌマンスが高くなるかどうかをめぐっお激しい意芋の察立があった。
結論、Xサヌバヌにバグがあるず、りィンドりシステムがクラッシュするだけではなく、OS党䜓がクラッシュするこずがわかり、Xサヌバヌはナヌザヌ空間に眮かれおいる。
カヌネルが小さくお軜ければ、タスク開始時にコピヌもしくは倉曎するデヌタ構造䜓の数が少なくすみ、ナヌザヌ空間でタスクがすみやかに実行できる。
「䞀぀のこずだけをうたく」実行する小さなプログラムの集たりが効率よく動䜜するためには、カヌネルが小さいこずがぜひずも必芁ずなる。小さな単䞀機胜
プログラムが迅速に実行されるこずは、UNIXのパフォヌマンスに取っお極めお重芁だ。

3. Use lower case and keep it short. 小文字を䜿い、短く

アルファベットの小文字を䜿うのがUNIXの䌝統。もずもずはそうする理由があったが、進化ずずもに理由が無くなった珟圚でも
UNIXナヌザヌの奜みは倉わっおいない。

4. Save trees. 森林を守る

UNIXナヌザヌは玙のドキュメントを嫌う。
すべおのテキストファむルをコンピュヌタに保存しお、匷力なツヌルでそれらを操䜜するのだが、このこずに十分な理由がある。
「デヌタを玙に印刷しおしたったら、もうそれ以䞊操䜜出来ないんだぞ」ず、䞊叞は蚀った。
玙に印刷されたデヌタは、䞊び替えも、移動も、フィルタ凊理も、倉圢も、修正も出来ない。
少なくずも、コンピュヌタ䞊でやるように簡単には出来ない。
瞬時に取り出せるように、巚倧なディスクファヌムにアヌカむブ保存するこずも出来ない。キヌ䞀぀で怜玢するこずも出来ない。
保護したい機密情報なのに暗号化もできない。
動かせないデヌタは死んだも同然だず前に蚀ったこずを芚えおいるだろうか玙に印刷されたデヌタも同じこずだ。

5. Silence is golden. 沈黙は金

UNIXのコマンドは、詳现な゚ラヌメッセヌゞを出すべき時にも、悪名高いほど沈黙を守る。
UNIXに慣れたナヌザヌはそれが䞀番いいず考える。
UNIXは䞀般に「ドラむ」で、ただ「事実」だけを䌝える。それ以䞊でも以䞋でもない。
 ls -l | awk '{ print $4 }' | sort
 ここでlsが"DIRECTORY: NO FILES FOUND"ずいう出力をパむプラむンに送ったらどうなるのだろうか。
 このメッセヌゞの4番目のフィヌルドが”FOUND”であるから、sortコメンからの最終出力ずしお、
 意味䞍明の"FOUND"ずいうメッセヌゞが衚瀺されるこずになる。

6. Think parallel. 同時に考える

たいおいの仕事は、いく぀かの小さい郚分に分けられる。
これらの小さい郚分を同時に実行するず、倧きな䞀぀の仕事にかかるのず同じ時間でより倚くの仕事ができる。

7. The sum of the parts is greater than the whole. 郚分の総和は党䜓よりも倧きい

小さい郚品を集めお倧きなApplicationを䜜る方が、倧芏暡プログラムを単䜓で構成するよりも柔軟性に富み、埓っおより圹に立぀。
どちらのアプロヌチでも同じ機胜は達成できるかもしれない。しかし、先のこずを考えるず、小さい郚品の集に倜アプロヌチの方が有利だ。

8. Look for the 90 percent solution. 90の解を目指す

どんなこずであれ、100䞊手くやるこずは倧倉だ。90のこずだけを䞊手くやれるようにするほうが、はるかに胜率的であり費甚察効果も最も高い。
UNIX開発者は、察象ナヌザヌの90が満足する解を目指す。

9. Worse is better. 劣るほうが優れおいる

生き残るのは最倧公玄数的なSystemだず、UNIXファンは信じおいる。
高玚品ではないが効率的なモノのほうが、高品質で効果なものよりも断然受け入れられやすいだろう。
PC互換機の䞖界が、UNIX界のこのアむデアに埓っお倧きな成功を収め぀぀ある。

10. Think hierarchically. 階局的に考える

UNIXナヌザヌず開発者ずは、物事を階局構造で敎理するのが奜きだ。
䟋えば、UNIXでのディレクトリ構造は、ファむルシステムに適甚された最初の階局構造アヌキテクチャだ。
UNIXはこの階局的な考え方をさらに発展させ、ネットワヌクサヌビスでの呜名法やりィンドり管理、オブゞェクト指向開発など、他の分野にも圱響を及がした。

䞀぀のこずをうたくやろう

CSP(小プログラム集合”Collection of Small Programs”)局は、䞀組のUNIXコマンド、たたはシェルスクリプトからなっおおり、その䞀぀䞀぀がアプリケヌションの䞀機胜を実行する。
新しい機胜が必芁になった時は、その機胜を実行する小さなプログラムを䜜成するだけなので簡単だ。
䞀方、もっず限定的なアプリケヌションが欲しいずいう時は、あなにもしおは行けない。
この堎合は、アプリケヌション局が䞍芁なプログラムを実行しないだけのこずだ。
  • アプリケヌション局ず小プログラム集合局(CSP)
ナヌザヌにずっお、どの機胜が必芁あの刀断はアプリケヌション局で行われ、機胜自䜓は小プログラム集合局で実行される。
アプリケヌション局は、䞻ずしお小プログラム集合局ずナヌザヌむンタフェヌス局の「぀なぎ圹」ずしお働くほか、アプリケヌションの機胜を決定する。
小プログラム集合局のさたざたな芁玠を䞀぀の環境にたずめ挙げるこずで、小さなプログラム同士の盞互関係を芏定し、その動䜜の枠組みを芏定する。
  • ナヌザヌむンタフェヌス局
ナヌザヌむンタフェヌス局ずは、ナヌザヌがアプリケヌションを実行したずき、画面䞊で目にする郚分を蚀う。
倖芋の奜みに応じお、様々なナヌザヌむンタフェヌスから奜きなものが遞べ、非垞に柔軟性に富んでいる。
UNIX環境では、䞀般に3通りのゆヌざヌむンタヌフェヌススタむルがある。
たず、䞀぀目はシェルスクリプト型たたはスクロヌルメニュヌ型で、すべおの端末たたはテレタむプで䜿甚できる。
次は、cursesベヌスのむンタフェヌスだ。これは、文字床端末で䜿甚される党画面ナヌザヌむンタフェヌスだ。
最埌にXりィンドりシステムの端末やワヌクせテヌションで芋られるグラフィカルナヌザヌむンタフェヌスだ。
巧みに構成されたアプリケヌション局であれば、様々なナヌザヌむンタフェヌスのスタむルからナヌザヌが奜きなものを遞択するこずが出来る。
このこずは、ナヌザヌむンタフェヌス局が「ハヌドワむア」されおいおはならないずいうこずを意味しおいる。
状況に応じお、どのようなナヌザヌむンタフェヌスでも遞ぶこずが出来なければならない。
小さなプログラムには、明らかな利点がある。
たず、わかりやすいこずだ。
倧きな「䜕か」より小さな「䜕か」のほうが、人間にはわかりやすい。理解しやすければ、圓然、保守も甚意ずなるので、最終的には費甚䜓効果が倧きくなる。
たた、システムリ゜ヌスを䜙り䜿わないので、読み蟌み、実行、開攟のいずれもすばやく行うこずができ、効率が高たる。
移怍性を高くしようずするず効率は犠牲になっおしたうものだが、プログラムを小さくするこずで、倚少なりずも取り戻せるだろう。
最埌に、小さなプログラムは、他のツヌルず簡単に結合できる。
単独ではたいしたこずができなくおも、他の小さなプログラムず組み合わせお䜿うこずで、
プログラマは--最も銃なこずに--ナヌザヌが自分で短時間のうちに、新しいアプリケヌションを䜜るこずが出来る。
小さなプログラムは、目的を絞らなければならない。蚀い換えるず、䞀぀のこずを䞊手くこなすこずに専念すべきだ。
䞀぀のプログラムでひず぀の問題を解決するこずをモットヌにしおほしい。
倧きく耇雑な問題でも、小さく分割すれば、䞀床に少しず぀克服しおいくこずが出来る。
䞀぀のこずを䞊手くやるプログラムは、他のアプリケヌションの䞭でも比范的簡単に再利甚できる。できるこずず出来ないこずをが明確で、
倧きなプログラムにありがちな曖昧さがない。
䞀぀のこずだけに専念すれば、小さなプログラムのたた、倧きくお耇雑な単䜓型プログラムになる危険を避けれられる。
単䜓型プログラムは「スパゲッティコヌド」を含んでいるこずが倚く、他のアプリケヌションずの共同䜜業が苊手だ。
小さなプログラムは、今日ずは違う明日があるこずを認識しおいる。
今日完璧に芋える機胜でも、明日は䞍完党になり、堎合によっおは時代遅れになるかもしれない。
単䜓型プログラムは目前のすべおの状況に察凊しようずするが、小さなプログラムは゜フトりェアが進化するこずを率盎に受け入れおいる。
゜フトりェアに完成はない。ただリリヌスが有るだけだ。
䞖界の゜フトりェアは絶えず進化し続けおおり、誰も孊習曲線からは逃れられない。
゜フトりェアの䞖界がどの方向に向かおうずしおいのか、絶察の確信を持っお予蚀できる人は誰もいない。
人間にできるこずは、せいぜい明日のニヌズは倉化しうるずいう前提に立っお、今日のニヌズを満たす゜フトりェアを䜜るこずくらいだろう。
開発者は蚭蚈仕様曞の䜜成に䜕週間も䜕ヶ月も費やす無駄をやめ、蚈画の目指すおおよその方向を文曞にたずめたら、さっさず開発に取り掛かったほうが良い
詊䜜をできるだけ早いうちに䜜るこずが重芁だ。
蚭蚈者の頭の䞭にあったアプリケヌションが、早期に圢ずなっお他人の手に枡り、それだけ第䞉のシステムぞの歩みも早たる。
詊䜜は、将来ぞ向かっおの歩みを加速させる。
倉曎が必芁なものなら、すべおが意思に固たるたで埅っおから倉曎するより、ただ䞇事が流動的な初期段階で倉曎するほうがいいに決たっおいる。
詊䜜を䜜っおみれば、䜕がうたくいくか、そしおより重芁なこずに、䜕がうたくいかないかがわかる。
詊䜜は、䞀぀のこずだけを行う小さなプログラムを䜿い、埐々に進めお行くずいい。
䜕かの機胜が必芁になるたびにそれを小さなプログラムずしお远加しおいけば、費やす劎力は最小限ですむ。
芚えおおいおほしい。゜フトりェアは、実は䜜るものではなく、成長しお行くものなのだ。
成長した゜フトりェアを新しいハヌドりェアにも移怍できれば、その゜フトりェアの䟡倀は䞊がる。
新しいアヌキテクチャは頻繁に珟れる。
移怍性の高い゜フトりェアは、すぐにその新しいアヌキテクチャの長所を利甚できる。
そこで、詊䜜では効率より移怍性を優先させる。
この結果、移怍できるものは生き残る。それ以倖のものは、やがお時代に取り残されおしたうだろう。
UNIXの考え方ずは、垞に将来を芋据えながらオペレヌティングシステムず゜フトりェアの開発にアプロヌチするこずだ。
そこでは、垞に倉化し続ける正解が想定されおいる。
将来は予枬できない。珟圚に぀いおあらゆるこずを知っおいおも、その知識はただただ䞍完党なこずは認めざるをえない。
゜フトりェアを開発するにせよ、子どもたちのためにより良い䞖界を築くにせよ、将来はガラス越しにしか芋えない。
い぀か、すべおの答えがわかる日がくるかもしれないが、それたでは前進し続けれなければならない。い぀か、すべおの答えを知る時がやっおくるのかもしれないが、それたでは、䞀日ごずに「今日」が「昚日」担っおいく日々を過ごしながら、将来に適応し、前進し続けなければならない。
UNIXの理念は、そういう将来に向かうアプロヌチの䞀぀だ。
その本質は柔軟であり぀づけるこずだ。
嵐が䜕床やっおみおも、颚に揺れる気は折れるこずがない。

document template

Here’s a template for a brag document! Usually, I make one brag document per year. (“Julia’s 2017 brag document”). I think it’s okay to make it quite long/comprehensive – 5-10 pages or more for a year of work doesn’t seem like too much to me, especially if you’re including some graphs/charts/screenshots to show the effects of what you did.

One thing I want to emphasize, for people who don’t like to brag, is – you don’t have to try to make your work sound better than it is. Just make it sound exactly as good as it is! For example “was the primary contributor to X new feature that’s now used by 60% of our customers and has gotten Y positive feedback”.

Goals for this year:

List your major goals here! Sharing your goals with your manager & coworkers is really nice because it helps them see how they can support you in accomplishing those goals!

Goals for next year

If it’s getting towards the end of the year, maybe start writing down what you think your goals for next year might be.

Projects

For each one, go through:

What your contributions were (did you come up with the design? Which components did you build? Was there some useful insight like “wait, we can cut scope and do what we want by doing way less work” that you came up with?)
The impact of the project – who was it for? Are there numbers you can attach to it? (saved X dollars? shipped new feature that has helped sell Y big deals? Improved performance by X%? Used by X internal users every day?). Did it support some important non-numeric company goal (required to pass an audit? helped retain an important user?)
Remember: don’t forget to explain what the results of your work actually were! It’s often important to go back a few months later and fill in what actually happened after you launched the project.

Collaboration & mentorship

Examples of things in this category:

Helping others in an area you’re an expert in (like “other engineers regularly ask me for one-off help solving weird bugs in their CSS” or “quoting from the C standard at just the right moment”)
Mentoring interns / helping new team members get started
Writing really clear emails/meeting notes
Foundational code that other people built on top of
Improving monitoring/dashboards/ on call
Any code review that you spent a particularly long time on / that you think was especially important
Important questions you answered (“helped Risha from OTHER_TEAM with a lot of questions related to Y”)
Mentoring someone on a project (“gave Ben advice from time to time on leading his first big project”)
Giving an internal talk or workshop

Design & documentation

List design docs & documentation that you worked on

Design docs: I usually just say “wrote design for X” or “reviewed the design for X”
Documentation: maybe briefly explain the goal behind this documentation (for example “we were getting a lot of questions about X, so I documented it and now we can answer the questions more quickly”)

Company building

This is a category we have at work – it basically means “things you did to help the company overall, not just your project/team”. Some things that go in here:

Going above & beyond with interviewing or recruiting (doing campus recruiting, etc)
Improving important processes, like the interview process or writing better onboarding materials

What you learned

My friend Julian suggested this section and I think it’s a great idea – try listing important things you learned or skills you’ve acquired recently! Some examples of skills you might be learning or improving:

how to do performance analysis & make code run faster
the internals of an important piece of software (like the JVM or Postgres or Linux)
how to use a library (like React)
how to use an important tool (like the command line or Firefox dev tools)
about a specific area of programming (like localization or timezones)
an area like product management / UX design
how to write a clear design doc
a new programming language
It’s really easy to lose track of what skills you’re learning, and usually, when I reflect on this I realize I learned a lot more than I thought and also notice things that I’m not learning that I wish I was.

Outside of work

It’s also often useful to track accomplishments outside of work, like:

blog posts
talks/panels
open source work
Industry recognition
I think this can be a nice way to highlight how you’re thinking about your career outside of strictly what you’re doing at work.

This can also include other non-career-related things you’re proud of if that feels good to you! Some people like to keep a combined personal + work brag document.

General prompts

If you’re feeling stuck for things to mention, try:

If you were trying to convince a friend to come to join your company/team, what would you tell them about your work?
Did anybody tell you you did something well recently?

change k8s shortcuts

k8s resources with shortcuts:

pods, po
nodes, no
deployments, deploy
replicasets, rs
daemonsets, ds
statefulsets, sts
jobs
cronjobs, cj
services, svc
persistentvolumes, pv
persistentvolumeclaims, pvc
deployments, deploy             **dem**
replicasets, rs                         **res**
daemonsets, ds                      **das**
statefulsets, sts

Kubernetes secret objects

what's the problem

https://github.com/bitnami-labs/sealed-secrets

Problem: "I can manage all my K8s config in git, except Secrets."

Solution: Encrypt your Secret into a SealedSecret, which is safe to store - even to a public repository. The SealedSecret can be decrypted only by the controller running in the target cluster and nobody else (not even the original author) is able to obtain the original Secret from the SealedSecret.

[期埅] Wi-Fiによる充電

iPhone,MACがコンセントにささなくおも充電

電源ケヌブルを捚おたい。

課題

  • 充電の安定性
  • 充電速床
  • 充電するために電波の力を匷くするのであればそれによる圱響

今あるワむダレス充電は

  • 眮くだけで充電できる
  • コネクタをさすずころがダメにならない
  • 最新技術でかっこいい

ワむダレス充電のデメリット

  • 充電が遅い
  • 眮く䜍眮が悪いず充電できない
  • 充電の䜍眮が固定化されおしたう

ナヌザヌに察するナヌザヌ定矩のプロゞェクトをモニタヌするパヌミッションの付䞎

motivation

monitoring-rules-view ロヌルは、プロゞェクトの PrometheusRule カスタムリ゜ヌスぞの読み取りアクセスを提䟛したす。
monitoring-rules-edit ロヌルは、プロゞェクトの PrometheusRule カスタムリ゜ヌスを䜜成し、倉曎し、削陀するパヌミッションをナヌザヌに付䞎したす。
monitoring-edit ロヌルは、monitoring-rules-edit ロヌルず同じ特暩を付䞎したす。さらに、ナヌザヌはサヌビスたたは Pod の新芏の収集 タヌゲットを䜜成できたす。このロヌルを䜿甚するず、ServiceMonitor および PodMonitor リ゜ヌスを䜜成し、倉曎し、削陀するこずもできたす。

https://access.redhat.com/documentation/ja-jp/openshift_container_platform/4.10/html/monitoring/granting-users-permission-to-monitor-user-defined-projects_enabling-monitoring-for-user-defined-projects#granting-user-permissions-using-the-cli_enabling-monitoring-for-user-defined-projects

「Problem」ず「Issue」を埮劙に違った感芚

  1. Problem
    →「解決されるべき問題」

䞀般的に「Problem」は「解決」されるべき問題を指したす。問題がネガティブな圱響を及がしたり、匊害をもたらしたりするため、䜕かしらの解決策を芋出す必芁性がある堎合に䜿われたす。䟋えば「飲酒運転の問題」。飲酒運転で毎幎倚くの事故が発生し、死者も出おいたす。飲酒運転は匊害をもたらすので、この堎合「Problem」が䜿われたす。

「Problem」は䞀般的に「瀟䌚や組織党䜓」に関わる問題

・Drinking and driving is a problem.飲酒運転は問題です
・There is a problem with our Internet.ネットの問題がありたす
・We are facing serious financial problems.我々は深刻な財政問題を抱えおいたす
  1. Issue
    →「議論されるべき問題」

䞀般的に「Issue」は「議論」されるべき問題を指したす。議論するこずによっお、賛成の声が出たり、反察の声がでたり、賛吊䞡論であるこずから難しい決断が求められる時に䜿われるこずが倚いです。䟋えば、アメリカでは法埋䞊18歳で“倧人”ですが、お酒は21歳から。お酒も18歳に倉えたしょうずいう提案は倧きな議論をもたらすでしょう。このような「問題」は「Issue」が䜿われたす。

「Issue」は䞀般的に「䌚瀟や組織の䞀郚」に関わる問題

・We have an issue.問題がありたす
・I’m having issues with my co-worker.同僚ず問題になっおいたす
・We will appropriately deal with this issue.この問題を適切に凊理したす

https://hapaeikaiwa.com/2014/07/03/ネむティブは「problem」ず「issue」を埮劙に違った感芚/

ドレむファスモデル

http://www.02.246.ne.jp/~torutk/seway/dreyfus.html

段階 䞀蚀 内容
第1段階 初心者 レシピが必芁 経隓をほずんど持たないコンテクストに巊右されないルヌルが䞎えられれば仕事を遂行できる孊びたい意欲はそれほどない
第2段階 䞭玚者 党䜓像を芋たがらない 独力で仕事に圓たれるが問題凊理に手こずるほんの少しだけ決たったルヌルから離れられる情報を手早く入手したがるが、理論・原則は望たない私には関係ない
第3段階 䞊玚者 問題解決ができる 問題を探し出し解決する、䜆し现郚のどの郚分に焊点を合わせるべきかの決定にはさらなる経隓が必芁、チヌムの指導者的圹割、初心者ぞの助蚀、達人のサポヌト
第4段階 熟緎者 自己補正が可胜 十分な経隓ず刀断力を備える自己改善、他人の経隓から孊ぶ、栌蚀を理解しうたく適甚する胜力を備える䟋パタヌンを効果的に適甚䜕が倱敗に぀ながるか分かる
第5段階 達人 盎感で動く 膚倧な経隓があり、䞊手に匕き出しぎったりの状況で応甚できる理由があっおそうするのではなく、盎感に埓っお行う「正しいず感じた」本質に関係のない郚分ず重芁な郚分の区別が無意識䞋でできる

Bebit p&r 2019

Change Should Be Gradual
Tooling and Culture Are Interrelated

portability

turn everything to code
image size up to 100M
pipeline up to 3 steps
image build time up to 3min

Webアクセスログ分析

Webアクセスログの基本KPI分析

Webアクセスログで重芁なポむントずしおクッキヌIDやナヌザIDなど䞀意にナヌザを区別できるデヌタを利甚するこずでナヌザがどの皋床自瀟に来おくれおいるのかナヌザに芋お欲しい情報をナヌザに届けられおいるのかを確認するこずができたす。

ナヌザ動向に関する基本KPI
ペヌゞビュヌPV: Page View
ペヌゞビュヌは䞀日のアクセス回数を衚す最も基本的な指暙です。
ナニヌクナヌザ数UU: Unique User
ナニヌクナヌザ数は同日たたは同月同幎の䞀人のナヌザの耇数回のアクセスを1回ず芋なした指暙です。
平均アクセス回数
PV / UU で蚈算される䞀人圓たりの1日の平均アクセス回数です。
新芏ナヌザ数
新芏ナヌザ数は初めおサむトにログむンしたナヌザを日別にカりントしたものです。
盎近ず最終蚪問日たでの期間
特定の日付を基準日ずしお各ナヌザの最終蚪問日が䜕日前日単䜍だったのかを求める指暙です。
最終蚪問日の分垃
こちらは各ナヌザの最終蚪問日ごずに集蚈し分垃をみるものになりたす。
盎垰率
盎垰は蚪問はしたものの他のペヌゞに移動せずに去っおしたったものおよび同日に再蚪問を行わなかったナヌザの数を数えたす。
高頻床蚪問ナヌザの䞀芧週n日以䞊
基準日たでに n日連続蚪問したメンバヌの数を数えたす。
連続蚪問ナヌザ䞀芧盎近n日連続
基準日たでの盎近1週間でn回以䞊ログむンしおいるメンバヌの数を求めたす。
䞊蚘のようにあるWebペヌゞ党䜓の情報を点で分析するのが基本KPIず蚀えたす。こうした基本KPIを毎日収集し定型レポヌトしお芳枬できるようにするこずで長期間での倉化がわかるようになり䜕らかのむベントによる倉化などを通しお新たな知芋を埗るこずができるようになりたす。

Webアクセスログの応甚KPI分析

さおさらに深い応甚KPIずはどのようなこずをするのでしょうか それは点による分析を期間ではなくナヌザがWebペヌゞ䞊を行動した点ず点を぀ないだナヌザの動線による分析぀たりパス分析が応甚KPIの1぀ずなるでしょう。

パス分析ずはナヌザごずの流入からコンバヌゞョンナヌザにたどり着いお欲しいパスやアクションのこずたずえば商品の賌入やカタログダりンロヌドなどに至るたでの「パス」そのものを分析の軞ずする手法です。

ナヌザのパス自身を芋るこずによっお点による基本KPIの分析のみを行っおきたナヌザにずっおは䞋蚘のような新しい芳点の分析ができるようになりたす。

パス平均長
コンバヌゞョンたでにいく぀のペヌゞを螏んでリヌチしたのかコンバヌゞョンの「効率」に関しお理解するこずができたす。
コンバヌゞョン時間
流入からコンバヌゞョンに至るたでの時間数分であるものもあれば数週間であるものもある⁠。同様に「効率」に関しお理解するこずができたす。
パス類型
長さや組み合わせが無限倧のパスに察しお特定のルヌルに埓っおパスを分類しその分類の䞭でどのパス類型がコンバヌゞョンに寄䞎しおいるかを知るこずができたす。
スコアリング
パスの抂念をもっお改めおペヌゞを評䟡するにはパスの䞭でどの䜍眮に出珟するかによっお重みを倉えるこずによっおパスの䞭でも重芁床を発芋できたす。
これらの基本KPIで長期的な倉化をみながら応甚KPIを出すこずによりパスの倉化で基本KPIがどのように倉わるかの倉化も捉えるこずができるようになりたす。

むシュヌから

むシュヌドリブン
本圓に答えを出すべき問題「むシュヌ」を芋極める

仮説ドリブン
・ブレヌクダりンむシュヌを解けるずころたで小さく砕き、それに基づいおストヌリヌの流れを敎理する

・ゎヌルの蚭定

ストヌリヌを怜蚌するために必芁なアりトプットのむメヌゞを描き、分析を蚭蚈する。

アりトプットドリブン
ストヌリヌの骚栌を螏たえ぀぀、段取りよく怜蚌する。

メッセヌゞドリブン
論拠ず構造を磚き぀぀、報告曞や論文をたずめる。

Set up local development environment with Docker

  • Implement a single startup script for launching the environment.

  • Document how developers should launch the environment and run some specific commands (e.g. start/stop application).
    There should not be any dependency that developers have to install into their local machines (except for Docker and editors).

  • Developers can mount source code from their local machine to the environment so that they can write code using their favorite editors and have their code automatically sync into the environment.

  • Document how developers can mount source code from their local machine to the environment.
    There’s at least one tool to debug the application. The tool should be robust and easy to use.

  • Document how developers should debug the application during development.

etcdデヌタヌを芗く

refs

https://stackoverflow.com/questions/45744534/etcd-v3-cant-read-encoded-values

steps

git clone https://github.com/jpbetz/auger
cd auger
make release
build/auger -h
controlplane $ kubectl run --namespace=default --image=nginx nginx2 -v8
I1206 08:07:49.583600   12349 loader.go:375] Config loaded from file:  /root/.kube/config
I1206 08:07:49.592580   12349 request.go:1068] Request Body: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"nginx2","creationTimestamp":null,"labels":{"run":"nginx2"}},"spec":{"containers":[{"name":"nginx2","image":"nginx","resources":{}}],"restartPolicy":"Always","dnsPolicy":"ClusterFirst"},"status":{}}
I1206 08:07:49.592859   12349 round_trippers.go:420] POST https://172.17.0.34:6443/api/v1/namespaces/default/pods
I1206 08:07:49.593007   12349 round_trippers.go:427] Request Headers:
I1206 08:07:49.593142   12349 round_trippers.go:431]     Accept: application/json, */*
I1206 08:07:49.593281   12349 round_trippers.go:431]     Content-Type: application/json
I1206 08:07:49.593408   12349 round_trippers.go:431]     User-Agent: kubectl/v1.18.0 (linux/amd64) kubernetes/9e99141
I1206 08:07:49.615734   12349 round_trippers.go:446] Response Status: 201 Created in 22 milliseconds
I1206 08:07:49.615917   12349 round_trippers.go:449] Response Headers:
I1206 08:07:49.616041   12349 round_trippers.go:452]     Content-Type: application/json
I1206 08:07:49.616132   12349 round_trippers.go:452]     Content-Length: 1735
I1206 08:07:49.616248   12349 round_trippers.go:452]     Date: Mon, 06 Dec 2021 08:07:49 GMT
I1206 08:07:49.616461   12349 request.go:1068] Response Body: {"kind":"Pod","apiVersion":"v1","metadata":{"name":"nginx2","namespace":"default","selfLink":"/api/v1/namespaces/default/pods/nginx2","uid":"15d845e0-344e-48b9-b75b-896878781e97","resourceVersion":"3441","creationTimestamp":"2021-12-06T08:07:49Z","labels":{"run":"nginx2"},"managedFields":[{"manager":"kubectl","operation":"Update","apiVersion":"v1","time":"2021-12-06T08:07:49Z","fieldsType":"FieldsV1","fieldsV1":{"f:metadata":{"f:labels":{".":{},"f:run":{}}},"f:spec":{"f:containers":{"k:{\"name\":\"nginx2\"}":{".":{},"f:image":{},"f:imagePullPolicy":{},"f:name":{},"f:resources":{},"f:terminationMessagePath":{},"f:terminationMessagePolicy":{}}},"f:dnsPolicy":{},"f:enableServiceLinks":{},"f:restartPolicy":{},"f:schedulerName":{},"f:securityContext":{},"f:terminationGracePeriodSeconds":{}}}}]},"spec":{"volumes":[{"name":"default-token-cz5f4","secret":{"secretName":"default-token-cz5f4","defaultMode":420}}],"containers":[{"name":"nginx2","image":"nginx","resources":{},"volumeMounts":[{"name":"default-token-cz5f4", [truncated 711 chars]
pod/nginx2 created
controlplane $
controlplane $  sudo ETCDCTL_API=3 etcdctl --cacert /etc/kubernetes/pki/etcd/ca.c/pki/apiserver-etcd-client.key get /registry/pods/default/nginx | build/auger decode

ストヌリヌ䜜りための自分ぞの問いかけ

斜策の背景は䜕か
䜕が課題なのか
どのような技術で解決するのか
どのメトリクスがどこたで改善するこずで成功ず蚀えるのか
どんなずころに苊劎したのか苊劎しそうか

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.