Skip to content

Commit 163f1cf

Browse files
authored
Merge pull request #2969 from cncf/dev-ja
[ja] Merge dev-ja into main (for the third Japanese localization live version)
2 parents 7b86e87 + 04080cc commit 163f1cf

15 files changed

+272
-4
lines changed

content/ja/abstraction.md

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: 抽象化
3+
status: Completed
4+
category: プロパティ
5+
tags: ["基礎", "", ""]
6+
---
7+
8+
コンピューティングのコンテキストでは、抽象化とは[サービス](/ja/service/)の消費者(消費者はコンピュータープログラムまたは人間)から詳細を隠す表現であり、システムをより一般的にして理解しやすくします。
9+
良い例は、ラップトップのオペレーティングシステム(OS)です。
10+
コンピューターがどのように動作するかの詳細を、すべて抽象化します。
11+
CPUやメモリ、プログラムの扱い方について何も知る必要はなく、OSを操作するだけで細かい部分はOSが処理してくれます。
12+
これらすべての詳細は、OSの「カーテン」または抽象化の背後に隠されています。
13+
14+
通常、システムには複数の抽象化レイヤーがあります。
15+
これにより、開発が大幅に簡素化されます。
16+
プログラミングの際、開発者は特定の抽象化レイヤーと互換性のあるコンポーネントを構築するため、非常に異質な可能性があるすべての下層レイヤーの詳細について心配する必要はありません。
17+
抽象化レイヤーで動作する場合は、内部に何があるかに関係なく、システムでも動作します。

content/ja/blue-green-deployment.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: ブルーグリーンデプロイメント
3+
status: Completed
4+
category: コンセプト
5+
tags: ["方法論", "アプリケーション", ""]
6+
---
7+
8+
ブルーグリーンデプロイメントは、最小限のダウンタイムで稼働中のコンピュータシステムを更新する戦略です。
9+
オペレーターは、"ブルー"と"グリーン"と呼ばれる2つの環境を維持します。
10+
一方は本番トラフィックを処理し(現在すべてのユーザーが使用しているバージョン)、もう一方が更新されます。
11+
アクティブではない(グリーン)環境のテストが終了すると、本番トラフィックは(しばしばロードバランサーを使用して)切り替えられます。
12+
ブルーグリーンデプロイメントは通常、多くのサービスを含む全環境を一度に切り替えることを意味します。
13+
紛らわしいことに、時々この用語はシステム内の個々の[サービス](/ja/service/)に関して使用されます。
14+
このあいまいさを避けるため、個々のコンポーネントを指す場合には"ゼロダウンタイムデプロイメント"という用語が好まれます。
15+
16+
## 解決すべき問題はなんですか
17+
18+
ブルーグリーンデプロイメントは、後方互換性がないために"ロックステップ"で変更する必要があるソフトウェアを更新する際に最小限のダウンタイムを可能にします。
19+
例えば、ウェブサイトとデータベースから成るオンラインストアの更新を考えます。
20+
新しいバージョンのデータベースが古いバージョンのウェブサイトと互換性がなく、その逆も同様である場合、ブルーグリーンデプロイメントが適しています。
21+
このインスタンスでは、両方を同時に変更する必要があります。
22+
これが本番システムで行われた場合、顧客はダウンタイムに気付くでしょう。
23+
24+
## どのように役に立つのでしょうか
25+
26+
ブルーグリーンデプロイメントは、最小限のダウンタイムで更新する必要がある、クラウドネイティブではないソフトウェアに適した戦略です。
27+
しかし、その使用は通常レガシーソフトウェアが再設計され、コンポーネントを個別に更新できるようにする必要があるという"臭い"を放ちます。

content/ja/canary-deployment.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
---
2+
title: カナリアデプロイメント
3+
status: Completed
4+
category: コンセプト
5+
tags: ["方法論", "アプリケーション", ""]
6+
---
7+
8+
カナリアデプロイメントは、2つの環境から始まるデプロイメント戦略です。
9+
一つはライブトラフィックがある環境で、もう一つは更新されたコードを含む、ライブトラフィックがない環境です。
10+
トラフィックは徐々にアプリケーションの元のバージョンから更新されたバージョンへ移行します。
11+
最初にライブトラフィックの1%を移行し、次に10%、25%と続け、すべてのトラフィックが更新されたバージョンを流れるまで続けます。
12+
組織は本番環境で新しいバージョンのソフトウェアをテストし、フィードバックを得て、エラーを診断し、必要に応じて安定したバージョンに迅速にロールバックすることができます。
13+
14+
「カナリア」という用語は、「炭鉱のカナリア」という慣習に由来します。
15+
この慣習では、カナリア鳥を炭鉱に連れて行き、鉱夫の安全を確保していました。
16+
無臭の有害ガスが存在すると、鳥は死んでしまい鉱夫は迅速に避難する必要があることを知りました。
17+
同様に、更新されたコードに何か問題が発生した場合、ライブトラフィックは元のバージョンに「避難」されます。
18+
19+
## 解決すべき問題はなんですか
20+
21+
テスト戦略をいかに徹底していても、本番環境では常にいくつかのバグが発見されます。
22+
アプリの100%のトラフィックをあるバージョンから別のバージョンに移行することは、より影響力のある障害につながる可能性があります。
23+
24+
## どのように役に立つのでしょうか
25+
26+
カナリアデプロイメントにより、組織は新しいソフトウェアが実際のシナリオでどのように振る舞うかを、新しいバージョンに大量のトラフィックを移行する前に確認することができます。
27+
この戦略により、組織はダウンタイムを最小限に抑え、新しいデプロイメントに問題がある場合に迅速にロールバックすることができます。
28+
また、全体的なユーザーエクスペリエンスに大きな影響を与えることなく、徹底的な本番アプリケーションのテストを可能にします。

content/ja/chaos-engineering.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
---
2+
title: カオスエンジニアリング
3+
status: Completed
4+
category: コンセプト
5+
tags: ["方法論", "", ""]
6+
---
7+
8+
カオスエンジニアリング(CE)とは、本番環境の[分散システム](/ja/distributed-systems/)に実験する学問分野です。
9+
分散システムが乱雑で予期せぬ状況に耐えるシステムの能力に対する信頼を築くことを目指します。
10+
11+
## 解決すべき問題はなんですか
12+
13+
[SRE](/ja/site-reliability-engineering/)[DevOps](/ja/devops/)の実践は、プロダクトの回復力と[信頼性](/ja/reliability/)を高める技術に焦点を当てています。
14+
システムが障害を許容しつつ適切なサービス品質を保証する能力は、通常のソフトウェア開発の要件です。
15+
インフラストラクチャー、プラットフォーム、あるいは([マイクロサービス](/ja/microservices-architecture)ベースの)アプリケーションの他の動作部分のように、アプリケーションの停止につながる可能性のある複数の側面が関与しています。
16+
本番環境に新機能を高頻度でデプロイすることは、高い確率でダウンタイムと重大なインシデントをもたらし、ビジネスに重大な影響を及ぼす可能性があります。
17+
18+
## どのように役に立つのでしょうか
19+
20+
カオスエンジニアリングは、回復力の要件を満たすための技術です。
21+
インフラストラクチャー、プラットフォーム、そしてアプリケーションの障害に対する回復力を達成するために使用されます。
22+
カオスエンジニアは、アプリケーション、インフラストラクチャー、あるいはプラットフォームが自己修復でき障害が顧客に目立った影響を与えないことを検証するために、プロアクティブにランダムな障害を注入するカオス実験を行います。
23+
カオス実験の目的は、盲点(例えば、モニタリングや自動スケーリング技術)を発見し、重大なインシデントの最中にチーム間のコミュニケーションを改善することです。
24+
このアプローチは、特に本番環境において、複雑なシステムにおける回復力とチームの自信を高めるのに役立ちます。

content/ja/container-orchestration.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ status: Completed
44
category: コンセプト
55
---
66

7-
[コンテナ](/ja/container/)オーケストレーションとは、流動的な環境において、コンテナ化されたアプリケーションのライフサイクルを管理し自動化することを指します
7+
[コンテナ](/ja/container/)オーケストレーションとは、流動的な環境において、[コンテナ化](/ja/containerization)されたアプリケーションのライフサイクルを管理し自動化することを指します
88
これはコンテナオーケストレータ(ほとんどの場合は[Kubernetes](/ja/kubernetes))を通じて実行され、デプロイメント、(自動)スケーリング、自動ヒーリング、モニタリングが可能になります。
99
オーケストレーションという言葉は比喩です。
1010
オーケストレーションツールは、音楽指揮者のようにコンテナを指揮し、すべてのコンテナ(または音楽家)が適切に機能するようにします。

content/ja/containerization.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ tags: ["アプリケーション", "", ""]
1111

1212
## 解決すべき問題は何ですか
1313

14-
コンテナが普及する前は、組織は仮想マシン(VM)に依存して、
14+
[コンテナ](/ja/container)が普及する前は、組織は仮想マシン(VM)に依存して、
1515
単一の[ベアメタルマシン](/ja/bare-metal-machine/)上で複数のアプリケーションをオーケストレーションしていました。
1616
VMはコンテナよりも非常に大きく、実行にはハイパーバイザーが必要です。
1717
これらの大きなVMテンプレートのストレージ、バックアップ、転送により、VMテンプレートの作成もより遅くなります。

content/ja/continuous-delivery.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ tags: ["方法論", "アプリケーション", ""]
1010
(または継続的デプロイメントの場合、本番環境にデプロイされる)一連の実践を指します。
1111
CDは、ソフトウェアがデプロイメント前に適切にテストされていることを保証する手順を重要視し、
1212
必要と判断された場合に変更をロールバックする方法を提供します。
13-
継続的インテグレーション(CI)は継続的デリバリーに向けた最初のステップです
13+
[継続的インテグレーション(CI)](/ja/continuous-integration/)は継続的デリバリーに向けた最初のステップです
1414
(つまり、テストやデプロイがされる前に、変更がうまく統合されなければなりません。)
1515

1616
## 解決すべき問題は何ですか

content/ja/distributed-apps.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: 分散アプリケーション
3+
status: Completed
4+
category: コンセプト
5+
tags: ["アーキテクチャ", "", ""]
6+
---
7+
8+
分散アプリケーションは、機能が複数の独立したより小さな要素に分割されたアプリケーションです。
9+
分散アプリケーションは通常、広範なアプリケーション内で異なる機能を担う個々の[マイクロサービス](/ja/microservices-architecture/)から構成されます。
10+
クラウドネイティブ環境において、個々のコンポーネントは[クラスター](/ja/cluster/)内の[コンテナ](/ja/container/)として実行されます。
11+
12+
## 解決すべき問題はなんですか
13+
14+
単一のコンピュータ上で動作している単一のアプリケーションは単一障害点となります。
15+
もしそのコンピュータが故障した場合、そのアプリケーションは利用できなくなります。
16+
分散アプリケーションは、しばしば[モノリシックアプリケーション](/ja/monolithic-apps/)と比較されます。
17+
モノリシックアプリケーションは、様々なコンポーネントが独立してスケールできないために、スケールが難しい場合があります。
18+
さらに、それらは成長するにつれて開発者の速度の妨げになることもあります。
19+
なぜなら、より多くの開発者が明確に定義された境界を持つとはかぎらない共有のコードベースで作業する必要があるからです。
20+
21+
## どのように役に立つのでしょうか
22+
23+
単一のアプリケーションを異なる部分に分割し、それらを多くの場所で実行すると、システム全体としてはより障害を許容できるようになります。
24+
また、単一のアプリケーションでは利用できなかったスケーリング機能を活用できるようになります。
25+
つまり、[水平スケーリング](/ja/horizontal-scaling/)ができるようになります。
26+
しかしながら、これには複雑さの増加と運用のオーバーヘッドによるコストがかかります。
27+
こうして、単一のアプリケーションではなく多くのアプリケーションのコンポーネントを実行することになります。

content/ja/ebpf.md

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
---
2+
title: eBPF
3+
status: Completed
4+
category: テクノロジー
5+
tags: ["アーキテクチャ", "ネットワーキング", "セキュリティ"]
6+
---
7+
8+
eBPF (extended Berkeley Packet Filter)は、Linuxカーネルのソースコードを修正したりカーネルモジュールを導入したりすることなく、サンドボックス化された小さなプログラムやスクリプトをLinuxシステムのカーネル空間で実行できる技術です。
9+
10+
Linuxシステムには2種類の空間があります。カーネル空間とユーザー空間です。
11+
カーネルはOSのコアにあたり、ハードウェアに無制限でアクセスできる唯一の部分です。
12+
13+
アプリケーションはユーザー空間で動作し、高位の権限が必要な場合にカーネルへ要求を送ります。
14+
ハードウェアへの直接アクセスなど、より柔軟性を必要とするアプリケーションについては、「Linuxカーネルモジュール」として知られるアプローチでカーネルを拡張することができます。
15+
このアプローチによりカーネルの標準機能は拡張され、アプリケーションは基礎となる要素へより深くアクセスできるようになります。
16+
しかしこのアプローチはセキュリティリスクももたらすため、eBPFが魅力的な代替となります。
17+
18+
## 解決すべき問題はなんですか
19+
一般的に、アプリケーションはユーザー空間で動作し、アプリケーションがカーネルから(例えばハードウェアへのアクセスなどの)権限を要求するときは、いわゆる「システムコール」を介して要求します。
20+
多くの場合、このアプローチはうまく働きますが、低水準なシステムに対するより柔軟なアクセスを開発者が必要とする場合があります。
21+
可観測性、セキュリティやネットワーク機能はこういった場合の良い例です。
22+
この実現のため、Linuxカーネルモジュールを使ってカーネルのソースコードを修正することなくカーネルの基礎を拡張することができます。
23+
Linuxカーネルモジュールの使用には利点もありますが、セキュリティリスクももたらします。
24+
Linuxカーネルモジュールはカーネル空間の内部で動作するため、カーネルをクラッシュさせる可能性があり、カーネルがクラッシュするということは機器全体もクラッシュすることになります。
25+
加えて、カーネルモジュールは特権を持ち、システムリソースに直接アクセスします。
26+
もし適切に保護されていない場合、攻撃者は攻撃のためカーネルモジュールを悪用できてしまいます。
27+
28+
## どのように役に立つのでしょうか
29+
eBPFはユーザー定義プログラムの実行環境として、Linuxカーネルモジュールよりも制御、制限された環境を提供します。
30+
eBPFプログラムはカーネル内のサンドボックス化された環境で動作することで、隔離を提供しリスクを低減します。
31+
もしeBPFプログラム中の脆弱性や欠陥が悪用されたとしても、一般的にその影響はサンドボックス化された環境に抑えられます。
32+
さらに、eBPFプログラムがカーネル内で動作を開始する前に、プログラムはいくつかの検証を通る必要があります。
33+
検証器は、範囲外メモリーアクセス、無限ループや承認されていないカーネル関数の使用といった潜在的な安全違反がないかeBPFプログラムを確認します。
34+
このようにして、プログラムが無限ループに入り、カーネルをクラッシュさせないことを確かにします。
35+
これらの安全制御によって、Linuxカーネル内でアプリケーションを動かすための選択肢としてeBPFはLinuxカーネルモジュールよりも安全なものになっています。

0 commit comments

Comments
 (0)