AWSと比較したOCIの特徴

#はじめに
OCI（Oracle Cloud Infrastructure）の機能、サービスをAWSと比較しながら整理したいと思います。AWSが一番機能も豊富でシェアも高いので、AWSをベースに比較していくとわかりやすいかなと思って作っています。
AWS SAAの範囲で「AWSの○○はOCIだとXX」みたいに比較していきます。

項目ごとに別ページにしようかと思ったのですが、このページに少しずつ追記していきたいと思います。

:::note warn
以降の記載は私の理解をまとめたものです。誤っていることがあったらごめんなさい。
:::

##参考資料
[AWS認定資格試験テキスト AWS認定ソリューションアーキテクト - アソシエイト](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88-%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-%E6%94%B9%E8%A8%82%E7%AC%AC2%E7%89%88-NRI%E3%83%8D%E3%83%83%E3%83%88%E3%82%B3%E3%83%A0%E6%A0%AA%E5%BC%8F%E4%BC%9A%E7%A4%BE/dp/4815607389)
[Oracle Cloud Infrastructure徹底入門 Oracle Cloudの基本からインフラ設計・構築まで](https://www.amazon.co.jp/Oracle-Cloud-Infrastructure%E5%BE%B9%E5%BA%95%E5%85%A5%E9%96%80-Cloud%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%8B%E3%82%89%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9%E8%A8%AD%E8%A8%88%E3%83%BB%E6%A7%8B%E7%AF%89%E3%81%BE%E3%81%A7/dp/479816903X/ref=sr_1_1?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=3T3XA1ZSC6DOF&dchild=1&keywords=oracle+cloud+infrastructure&qid=1629856838&s=books&sprefix=Ora%2Cstripbooks%2C294&sr=1-1)

##サービス名称について
AWSはAWS固有の名称を付けるサービスが多い。対してOCIは一般名称をそのままサービス名にしているものが多い。
例えば、**S3**だけでは初見の人はオブジェクトストレージとわからないが、OCIのオブジェクトストレージのサービス名は**オブジェクト・ストレージ**。（間に「・」を入れることで、サービス名としている？）
ただ、OCIの場合は、オブジェクトストレージと言うと、OCIのサービス名を指すのか、一般名称としてのオブジェクトストレージを指すのかがわかりにくい。

#目次
1. [グローバルインフラ構成](#1-グローバルインフラ構成)
1. [VPC/VCN](#2-vpcvcn)
1. [コンピューティング（2021/9/2更新）](#3-コンピューティング)
1. [ストレージ（2021/9/4更新）](#4-ストレージ)
1. [ネットワークとコンテンツ配信（2021/9/7更新）](#5-ネットワークとコンテンツ配信)
1. [運用支援サービス（2021/9/27更新）](#6-運用支援サービス)
1. [データベース（2021/10/4更新）](#7-データベース)
1. [セキュリティとアイデンティティ（2021/10/12更新）](#8-セキュリティとアイデンティティ)
1. [アプリケーションサービス（2021/10/14更新）](#9-アプリケーションサービス)
1. [開発者ツール（2021/10/31更新）](#10-開発者ツール)
1. プロビジョニングサービス（TBD）
1. 分析サービス（TBD）

---

#1. グローバルインフラ構成

|| AWS | OCI |
|:-|:-|:-|
|1|リージョン|リージョン|
|2|アベイラビリティゾーン（AZ）   |可用性ドメイン（AD）   |
|3|-   |フォルト・ドメイン   |

##1-1. リージョン
- AWS/OCIがサービスを提供している拠点（国/地域）のこと。
- AWSは25、OCIは商用とGovernment合わせて30あるようです。（2021年8月25日現在）
    - [AWS：グローバルインフラストラクチャ](https://aws.amazon.com/jp/about-aws/global-infrastructure/)
    - [OCI：リージョンおよび可用性ドメイン](https://docs.oracle.com/ja-jp/iaas/Content/General/Concepts/regions.htm)

##1-2. アベイラビリティゾーン（AZ）/可用性ドメイン（AD）
- リージョン内にあるデータセンターのこと。一つのリージョンには複数の独立したAZ/ADがある。
- ただし、OCIはまだシングルADのリージョンが多い。東京、大阪リージョンはシングルAD
- AWSはほとんど（全て？）のリージョンがマルチAZ

個人的にはADと言うと「Active Directory」を思い浮かべるので、ややこしく感じる。

##1-3. フォルト・ドメイン 
- フォルト・ドメインは、AD内のハードウェアのセットのこと。各可用性ドメインには３つのフォルト・ドメインがある。
- サーバなどのハードウェア障害やメンテナンスは他のフォルト・ドメインには影響を与えないが、データセンター全体の障害は救えない。
- AWSにはない概念？

#2. VPC/VCN
AWS/OCIのリソースを作っていく際に、まず初めに作るであろうVPC/VCN周りを比較します。

|| AWS | OCI |
|:-:|:-|:-|
|1|VPC（Virtual Private Cloud）|VCN（Virtual Cloud Network）|
|2|ルートテーブル |ルート表|
|3|セキュリティグループ|ネットワーク・セキュリティ・グループ|
|4|ネットワークACL|セキュリティ・リスト|
|5|インターネットゲートウェイ|インターネット・ゲートウェイ|
|6|仮想プライベートゲートウェイ|動的ルーティング・ゲートウェイ|
|7|NATゲートウェイ|NATゲートウェイ|
|8|VPCエンドポイント|サービス・ゲートウェイ|
|9|VPCピアリング|ピアリング|
|10|Direct Connect|FastConnect|
|11|Transit Gateway|動的ルーティング・ゲートウェイ|

##2-1. VPC/VCN
- 各利用者専用のプライベートなネットワーク空間をAWS/OCI内に作成するサービス。
- リージョン内の複数AZ/ADにまたがって作成することで、可用性を担保できる。
- リージョンをまたがってVPC/VCNを作成することはできない。
- VPC/VCN設定時にCIDRブロックを設定し、その範囲内でサブネットを切って使用する。なお、AWSはAZに閉じてサブネットを設定する必要があるが、OCIはADにまたがった「リージョナルサブネット」を設定することができる。

###パブリックサブネット
- インターネットに直接接続できるサブネット。インターネットゲートウェイやNATゲートウェイを設定することができる。

###プライベートサブネット
- インターネットに直接接続できないサブネット。インターネットへの接続が必要な場合には、NATゲートウェイを使用したり、パブリックサブネット上の踏み台サーバを経由したりする。
- AWSは明示的に「パブリックサブネット」「プライベートサブネット」を設定するのではなく、サブネット設定時にインターネットに接続できる設定（インターネットゲートウェイを設定するなど）をしたサブネットを「パブリックサブネット」としている。
- OCIはサブネットの設定時に明示的に「パブリックサブネット」「プライベートサブネット」を設定する。

##2-2. ルートテーブル/ルート表
- サブネットごとのルーティングテーブル。

##2-3. セキュリティグループ/ネットワーク・セキュリティ・グループ

###セキュリティ・グループ（AWS）
- EC2やELBなどのインスタンス単位で通信を制御
- デフォルトではすべての通信を拒否
- ステートフル
    - インバウンド（外部からVPC内への通信）のみ設定すれば、その設定はアウトバウンド（VPCから外部への通信）にも適用される。

###ネットワーク・セキュリティ・グループ（OCI）
- インスタンスに割り当てるVNIC単位で通信を制御
- デフォルトではすべての通信を拒否
- ステートレス/ステートフルどちらで設定するかを選択できる。

##2-4. ネットワークACL/セキュリティ・リスト

###ネットワークACL（AWS）
- サブネットごとの通信を制御
- デフォルトではすべての通信を許可
- ステートレス
    - インバウンド/アウトバウンドそれぞれ設定する。

###セキュリティ・リスト（OCI）
- サブネットごとの通信を制御
- デフォルトではすべてのアウトバウンド通信を許可
    - インバウンドはSSH、ICMPのみ許可
- ステートレス/ステートフルどちらで設定するかを選択できる。

##2-5. インターネットゲートウェイ
- VPC/VCNとインターネットとを接続するためのゲートウェイ
- 各VPC/VCNに1つだけアタッチする。
- パブリックサブネットのデフォルトゲートウェイ（0.0.0.0/0）はインターネットゲートウェイに設定する

##2-6. 仮想プライベートゲートウェイ/動的ルーティング・ゲートウェイ
- VPC/VCNがVPNやDirect Connect/FastConnect（専用線）と接続するためのゲートウェイ
- 各VPCに1つだけアタッチできる

##2-7. NATゲートウェイ
- プライベートサブネット上のインスタンスがインターネット接続する際に利用するゲートウェイ
- アウトバウンド通信のみ可能
- AWSはサブネットにデプロイするリソース。有償
- OCIはVCNにデプロイするリソース。無償

##2-8. VPCエンドポイント/サービス・ゲートウェイ
- S3やDynamoDB（AWS）/オブジェクトストレージやAutonomousDB（OCI）などのVPC/VCNに属さないサービスにプライベート接続するためのゲートウェイ。
- VPCエンドポイント/サービスゲートウェイを使用しない場合、VPC/VCN内のリソースがS3/オブジェクトストレージなどに接続するときには、インターネットを経由することになりセキュリティ的によろしくない。

##2-9. VPCピアリング/ピアリング
- 異なるVPC/VCN同士を接続すること（VPCとVCNが接続できるということではない。VPC同士、VCN同士の接続）
- 異なるリージョン間のVPC/VCNも接続可能

##2-10. Direct Connect/FastConnect
- 専用線接続
- オンプレのデータセンターとAWS/OCIを専用線で接続することで、閉域網を構成できる。

##2-11. Transit Gateway/動的ルーティング・ゲートウェイ
- これらを利用することで、複数のVPC/VCNやオンプレミス環境をハブ・アンド・スポーク構成で接続できる。

#3. コンピューティング

|| AWS | OCI |
|:-|:-|:-|
|1|EC2（Elastic Compute Cloud）|コンピュート|
|2|ECS（Elastic Container Service）|-|
|3|EKS（Elastic Kubernetes Service）|OKE（Oracle Container Engine for Kubernetes）|
|4|Lambda|ファンクション|

※「コンピュート」「ファンクション」はサービス名がこれでよいかはっきりしないです。できるだけOCIのコンソールの記載に合わせています。

##3-1. EC2（Elastic Compute Cloud）/コンピュート
- 従量課金で利用可能な仮想マシン
- インスタンスの種類や用語が色々あるので、以下で整理していきます。

|AWS| OCI |概要 |
|:-|:-|:-|
|インスタンスタイプ|シェイプタイプ/インスタンスタイプ|インスタンスの種類/スペックを表す用語。またはインスタンスそのもの。|
|オンデマンドインスタンス|オンデマンド容量|通常料金のインスタンス|
|リザーブドインスタンス|-|長期利用を約束することで割り引きされたインスタンス
|スポットインスタンス|プリエンプティブル・インスタンス|余らせているリソースを安く利用できるインスタンス|
|AMI（Amazon Machine Image）|プラットフォームイメージ|Bootディスクの元となるイメージ|

###インスタンスタイプ/シェイプタイプ
####AWS
[Amazon EC2 インスタンスタイプ](https://aws.amazon.com/jp/ec2/instance-types/)
例）**t2.micro**

- t：インスタンスファミリー。「汎用」「コンピューティング最適化」など
- 2：世代
- micro：インスタンスサイズ（vCPU数、メモリ容量）

####OCI
[コンピュート・シェイプ](https://docs.oracle.com/ja-jp/iaas/Content/Compute/References/computeshapes.htm)
例）**VM.Standard2.1**

- VM：インスタンスタイプ。「BM：ベアメタル」「VM：仮想マシン」
- Standard：シェイプタイプ。「標準」「HPC」など。EC2のインスタンスファミリーに相当
- 2：ハードウェア世代、プロセッサの種類
- 1：サイズ（OCPU数＝コア数）

OCIにはCPUとメモリをそれぞれ選択できる**「フレキシブル・シェイプ」**がある。

###オンデマンドインスタンス/オンデマンド容量
- 通常料金のインスタンス。従量課金で起動している時間に応じて課金される。

###リザーブドインスタンス（AWS）
- 1年、もしくは3年の長期利用を約束することで割り引きされるインスタンス。
- もし、途中で利用しなくなったらマーケットプレイスで売ることができる。

###スポットインスタンス/プリエンプティブル・インスタンス
####AWS
- AWSが余らせているリソースを入札形式で購入し、利用する。
- もし、そのリソースをAWS側が利用することになったら、予告なしにインスタンスは停止される。
- その分安い。

####OCI
- 通常のインスタンスの50％オフで利用できる。
- その代わり、そのインスタンスのリソースが必要になったら、OCIがインスタンスを停止させる。
- 利用できるシェイプは限られている。


<!--
:::note info
OCIにはリザーブドインスタンスやスポットインスタンスに相当するものはなく、オンデマンドインスタンス相当のみ。じゃあ、OCIはAWSよりも高いのね。ってことではなく、元々の価格設定を安くしていたり「Monthly Flex」というプリペイド式の支払い方法によって安くすることができる。
https://www.oracle.com/jp/cloud/oci-vs-aws/
:::
-->

###AMI(Amazon Machine Image)/プラットフォームイメージ
- インスタンスのBootディスクイメージ
- AWS/Oracleが用意するイメージの他に、サードパーティ製のイメージ、ユーザ独自のカスタムイメージがある。

##3-2. ECS（Elastic Container Service）（AWS）
- Dockerコンテナ環境を提供するサービス
- コンテナが起動するEC2インスタンスのことをCluster、コンテナはTaskと呼ぶ。
- Cluster用のEC2インスタンスの管理は利用者が意識しなければいけないが、ECS作成時に「Fargate」を選択すると、Clusterの管理の必要がなくなる。

##3-3. EKS（Elastic Kubernetes Service）/OKE（Oracle Container Engine for Kubernetes）
- マネージドなKubernetesサービス
- KubernetesクラスタのマスターサーバはAWS/OCI側が管理してくれる
- EKSのほかに、AWSにはRed HatのOpenShiftのマネージドサービス「ROSA（Red Hat OpenShift Service on AWS）」がある。

##3-4. Lambda/ファンクション
- サーバーレスアーキテクチャ
- イベントドリブン（画像がアップロードされたら、APIが呼び出されたら など）でソースコードを実行する
- OCIのファンクションは、オープンソースの「Fnプロジェクト」ベース

#4. ストレージ
|| AWS | OCI |
|:-:|:-|:-|
|1|EBS（Elastic Block Store）|ブロック・ボリューム|
|2|EFS（Elastic File System） |ファイル・ストレージ・サービス|
|3|S3（Simple Storage Service）|オブジェクト・ストレージ|
|4|S3 Glacier|アーカイブ|
|5|Storage Gateway|ストレージ・ゲートウェイ|
|6|FSx|-|
|7|インスタンスストア|ローカルNVMeデバイス|

##4-1. EBS（Elastic Block Store）/ブロック・ボリューム
- EC2/コンピュートにネットワーク経由でアタッチするブロックストレージ
- EC2/コンピュートのBootボリュームだったり、追加のディスクで利用する
- スナップショットを取得し、別リージョンや別AZ/ADにクローンを作ることができる
- 基本的にはEBS/ブロックボリュームとインスタンスとは1対1でアタッチするが、1つのEBS/ブロックボリュームを複数のインスタンスにアタッチすることもできる
    - ただ、色々と制約があるのであまり使わない。
- 容量拡張はできるが、縮小はできない
- 性能に応じた複数のボリュームタイプがある。ボリュームタイプの変更も可能

##4-2. EFS（Elastic File System）/ファイル・ストレージ・サービス
- インスタンスからNFSマウントして使う共有ファイルシステム
- 上限
    - EFS(AWS)：無制限
    - ファイルストレージサービス（OCI）：8EB

##4-3. S3（Simple Storage Service）/オブジェクト・ストレージ
- 低価格で信頼性が高いオブジェクトストレージ
- 非構造化データの格納に適している
- 静的Webコンテンツのホスティング機能、バージョニング、ライフサイクル機能などがある
- ライフサイクル機能によって、指定した期間に応じて異なるストレージクラスへオブジェクトを移動できる
- ストレージクラス（OCIだとストレージ層）
    - 可用性やアクセス速度、価格が異なるS3/オブジェクトストレージのランク
        - AWSは6クラス（S3標準、S3標準－低頻度アクセス　など）
        - OCIは3層（標準、頻度の低いアクセス、アーカイブ）
- バケットの命名規則
    - AWS：グローバルで一意である必要がある
    - OCI：同一テナンシー（アカウント）、同一リージョン内で一意である必要がある
        - 同一テナンシーでもリージョンが異なれば、同じバケット名を付けられる。
            - URLにテナンシー、リージョンが入ってる。

##4-4. S3 Glacier/アーカイブ
- ほとんどアクセスしないが、長期間保存する必要があるデータの保存に利用する
    - データを取り出すのに数時間から数十時間かかるが、安価に保存できる
- Glacierは元々はS3とは別サービスだったが、S3のストレージクラスの一つとなった。
    - S3にはGlacierよりもデータ取り出しに時間がかかるが、さらに安価な「Glacier Deep Archive」がストレージクラスの一つとしてある
- Glacierに直接データを保存するには、AWS CLI/API/Amazon SDKを使用する。管理コンソールからは保存できない。 
- アーカイブ（OCI）は、管理コンソールからも保存できる。

##4-5. Storage Gateway/ストレージ・ゲートウェイ
- オンプレミスのデータをクラウドへ連携するための受け口を提供するサービス。以下の3タイプがある
- ファイルゲートウェイ（AWS/OCI）
    - オンプレミスからS3/オブジェクトストレージをNFSマウントして、あたかもファイルシステムのように扱うことができる
- ボリュームゲートウェイ**（AWSのみ）**
    - オンプレミスからS3バケットをボリュームとしてiSCSI接続する
    - オンプレミス側のディスクをキャッシュとして利用し、全てのデータをS3に保存する**「キャッシュ型ボリューム」**と、全てのデータをオンプレミス側に保存時、定期的にS3にスナップショットを転送する**「保管型ボリューム」**がある。
- テープゲートウェイ**（AWSのみ）**
    - テープ媒体の代わりにS3を利用する
    - サードパーティのバックアップソリューションと組み合わせて利用できる

##4-6. FSx（AWSのみ）
- FSx for Windowsファイルサーバ
    - SMBプロトコルでアクセス可能なWindows用のファイルサーバ
- FSx for Lustre
    - Linux用のフルマネージドな分散ファイルシステム
    - ファイルシステム作成時にS3バケットと関連付けをし、S3上のファイルをインデックスしてあたかも自前のファイルのように見せる
    - 高速なデータアクセスが必要なHPCで利用される

##4-7. インスタンスストア/ローカルNVMeデバイス
- EC2/コンピュートインスタンスのローカルディスク
- ローカルディスクなので、EBS/ブロックボリュームよりもIO性能が高い
- EBS/ブロックボリュームとは違い、暗号化や冗長化はユーザ側で実装しないといけない
- ストレージサービスとしては無料。EC2/コンピュートのインスタンスタイプ/シェイプによって、容量/本数は決まる。

#5. ネットワークとコンテンツ配信
|| AWS | OCI |
|:-:|:-|:-|
|1|CloudFront|-|
|2|Route 53|DNSサービス|
|3|ELB（Elastic Load Balancing）|FLB(フレキシブルロードバランサ),NLB（ネットワークロードバランサ）|
|4|Auto Scaling|自動スケーリング|

##5-1. CloudFront（AWSのみ）
- CDN(Contents Delivery Network)サービス
- オリジンサーバーのコンテンツをエッジロケーションでキャッシュし、サーバの負荷低減とコンテンツを高速に配信する

##5-2. Route 53/DNSサービス
- それぞれのDNSサービスの機能を以下の表で比較します。

|項目|Route 53（AWS） | DNSサービス（OCI） |備考/補足
|:-|:-|:-|:-
|ドメイン管理|新規ドメインの取得、更新|-|OCIはドメインの取得、更新はできない（らしい）
|種別|権威DNS|権威DNS|OCIはプライマリ/セカンダリ両方のDNSサービスに対応
|DNSレコード|[サポートされる DNS レコードタイプ](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/ResourceRecordTypes.html)|[DNSのリソース・レコード・タイプ](https://docs.oracle.com/ja-jp/iaas/Content/DNS/Reference/supporteddnsresource.htm#types)|どちらも独自拡張した**Aliasレコード**がある
|トラフィックルーティング|[7つのルーティングポリシー](https://docs.aws.amazon.com/ja_jp/Route53/latest/DeveloperGuide/routing-policy.html)|ジオロケーション、フェイルオーバーなど5つのルーティングポリシー|OCIはコンソールの設定画面で項目を確認
|DNSフェイルオーバー|ヘルスチェックにより異常を検知し、フェイルオーバーさせる|ヘルスチェックにより異常を検知し、フェイルオーバーさせる|

##5-3. ELB（Elastic Load Balancing）/FLB(フレキシブルロードバランサ),NLB（ネットワークロードバランサ）
- マネージドなロードバランササービス
- ELBもALB（Application LB）、NLB（Network LB）、CLB（Classic LB）がある。
- 以下簡単な機能比較

|項目|ALB |NLB|CLB|FLB|NLB
|:-|:-|:-|:-|:-|:-
|ベンダー|AWS|←|←|OCI|←|
|対応プロトコル|HTTP/HTTPS/gRPC|TCP/UDP/TLS|TCP/SSL/TLS<br>HTTP/HTTPS|HTTP/HTTPS/TCP|TCP/UDP/ICMP
|対応レイヤー|L7|L4|L4/L7|L4/L7|L4
|SSLターミネーション（オフロード）|✓|✓|✓|✓|
|SSLパススルー|✓|✓|✓|✓|✓

- AWSのCLB相当がOCIのFLB、NLB相当がNLB
- CLB/FLBは古いアーキテクチャ

##5-4. Auto Scaling/自動スケーリング
- 負荷やスケジュールに応じてEC2/コンピュートインスタンスを増減させる
    - ネットワークの機能とはちょっと違うけど、ロードバランサが必要なのでここに記載
- スケーリングポリシー
    - AWS
        - メトリックベース
        - スケジュールベース
        - 予測ベース：過去データに基づいた予測
        - インスタンス数の維持：障害などでインスタンスが落ちたときに自動で回復
    - OCI
        - メトリックベース
        - スケジュールベース
- スケーリング方式
    - AWSにはスケーリングする際の方式として、以下の3つがある。OCIは簡易スケーリング相当のみ？
        - 簡易スケーリング
        - ステップスケーリング
        - ターゲット追跡スケーリング

#6. 運用支援サービス
|| AWS | OCI |
|:-:|:-|:-|
|1|CloudWatch|モニタリング、ロギング、イベント|
|2|CloudTrail |ロギング（監査ログ）|

##6-1. CloudWatch/モニタリング、ロギング、イベント
マネージドな運用監視サービス
[CloudWatchにはいくつか機能がある](https://aws.amazon.com/jp/cloudwatch/features/)が、以下の3つをAWSとOCIで比較する。

- CloudWatch
- CloudWatch Logs
- CloudWatch Events

###CloudWatch/モニタリング
- メトリクス監視。
- AWS/OCIがあらかじめ定義している**標準メトリクス**と、利用者が定義できる**カスタムメトリクス**がある。
- あらかじめ設定した条件を満たしたときにSNS（Simple Notification Service）/アラームに通知するようにできる。

###CloudWatch Logs/ロギング
- EC2/コンピュートインスタンスなどのログを収集する。
- API経由で収集するか、エージェントのインストールが必要

###CloudWatch Events/イベント
- 何らかのイベント（インスタンスが停止したら、オブジェクトストレージにファイルがアップロードされたら、など）をトリガーとして、何らかのアクション（Lambda/ファンクションをキックする など）を実行する。

##6-2. CloudTrail /ロギング（監査ログ）
- インスタンスやオブジェクトストレージなど、各リソースの作成や削除、変更など、「誰が」「いつ」「何を操作したのか」をロギングする。

# 7. データベース
ここでは、AWSの主な4つのDBサービスを比較。OCIは良くも悪くもOracle製品（Oracle DB、MySQL）に特化している。

|| AWS | OCI |
|:-:|:-|:-|
|1|RDS|Oracle Database Cloud Service|
|2|RedShift|Oracle Autonomous Data Warehouse|
|3|DynamoDB|Oracle NoSQL Cloud Service|
|4|ElastiCache|-|

## 7.1 RDS/Oracle Database Cloud Service
Relational DBのマネージドサービス

|| AWS | OCI |
|:-:|:-|:-|
|対応SW|MySQL、MariaDB、PostgreSQL、Oracle DB、SQL Server|Oracle DB、MySQL|
|可用性構成|同期レプリケーション|同期/非同期レプリケーション、Oracle RAC|
|性能向上|リードレプリカによる参照系の分散|リードレプリカによる参照系の分散、DB専用マシン（Exadata）の利用
|拡張性（CPU/メモリ）|インスタンスの変更によりCPU/メモリの拡張/縮小可能|シェイプの変更によりCPU/メモリの拡張/縮小可能
|拡張性（ストレージ）|拡張可能|拡張可能（AutonomousDBの場合は、ストレージの拡張/縮小が可能）
|その他の特徴|Aurora|Exadata、AutonomousDB

### 対応SW
- AWSは幅広い対応
- OCIはOracle製品のみ対応

### 可用性構成
- 同一AZ/AD、別AZ/AD、別リージョンにレプリケーションを作成可能
- OCIは同一AD内に2ノードRACを構成可能（VMインスタンスのみ）

### 性能向上
- リードレプリカを作成し、参照系の分散が可能
- OCIはコンピュートとして、VM、ベアメタルの他にExadataを利用可能

### 拡張性
- CPU/メモリはインスタンス/シェイプを変更することで、拡張/縮小が可能
    - AutonomouseDBは、CPUのみ指定可能。メモリはCPU数に応じて自動で決まる。
- ストレージは拡張が可能。
    - OCIのAutonomousDBの場合は、縮小も可能


### その他特徴
- Aurora(AWS)
    - クラウドの特長を活かしたアーキテクチャのDB
    - 複数のAZのDBインスタンスをクラスタとして、DBを構成する
    - MySQL、PostgreSQLと互換性がある
   
- Exadata(OCI)
    - データベースマネージドサービスのプラットフォームとしてExadataを選択できる
    - 共有型と専有型がある（共有型はAutonomousDBのみ）

- Autonomous DB
    - Oracle DBを簡単に利用できるフルマネージドサービス
    - 「自己管理」「自己保護」「自己修復」を特徴とした自律型DB
        - 性能チューニングやパッチ適用もやってくれる
    - Exadata上で稼働

## 7.2 RedShift/Oracle Autonomous Data Warehouse
カラム（列）指向のデータウェアハウス

## 7.3 DynamoDB/Oracle NoSQL Cloud Service
- DynamoDB(AWS)
    - 拡張性に優れたKey-Value型のデータベース
    - 読み取り、書き込みスループットを指定でき、自動スケーリングも可能

- Oracle NoSQL Cloud Service(OCI)
    - ドキュメント型、カラム型、Key-Value型などのデータモデルをサポートしているデータベース
    - 自動スケーリング可能

## 7.4 ElastiCache(AWS)
- KVS(Key-Value Store)型のインメモリデータベース
- データ処理パフォーマンス向上に特化したキャッシュシステム
- Memcached版とRedis版がある

# 8. セキュリティとアイデンティティ
|| AWS | OCI |
|:-:|:-|:-|
|1|AWSアカウント|テナンシー|
|2|-|コンパートメント
|3|IAM|IAM
|4|-|IDCS
|5|KMS|ボールト|
|6|CloudHSM|ボールト
|7|ACM|-

## 8.1 AWSアカウント/テナンシー
- AWSアカウント
    - AWSへサインアップするときに作成されるアカウント
    - ルートユーザとも呼ばれ、AWSの全サービスに対して操作できる権限を持っている
- テナンシー
    - OCIにサインアップすると作成される
    - ルート・コンパートメントとも呼ばれる
    - ユーザではないので、AWSアカウントとは意味が異なる

## 8.2 コンパートメント（OCI）
- テナンシーを区切る論理的な区画
- テナンシーをルート・コンパートメントとして、最大で6階層までネストできる
- すべてのOCIリソースはいずれかのコンパートメントに属する
- 部門ごとにコンパートメントを分けるなどすることで、1つの契約（テナンシー）でコスト管理などがしやすくなる。

## 8.3 IAM（AWS/OCI）
IAM（Identity and Access Management）の主なコンポーネント

|AWS| OCI | 概要 |
|:-|:-|:-|
|- |プリンシパル|OCIで行動を起こす主体を意味する
|IAMポリシー|IAMポリシー|何に対してどのような操作を許可するのか
|IAMユーザ|IAMユーザ|AWS/OCIを操作するユーザ
|IAMグループ|IAMグループ|IAMユーザの集まり
|IAMロール|・インスタンス・プリンシパル<br>・動的グループ|AWS/OCIリソースからリソースへの権限設定

### プリンシパル（OCI）
- IAMユーザとインスタンス・プリンシパルを合わせた総称

### IAMポリシー
- 何に対して、どのような操作を許可/拒否するかの設定
- AWS
    - 「許可/拒否」を設定
    - IAMユーザ、IAMグループ、IAMロールに設定する
- OCI
    - デフォルトが拒否で「許可」のみ設定
    - IAMグループ、動的グループに設定する

### IAMユーザ
- AWS/OCIを操作するユーザ
- AWSのIAMユーザはIAMグループに所属しなくてもよいが、OCIのIAMユーザはグループに所属しないといけない
    - OCIはIAMグループにIAMポリシーを割り当てるから

### IAMグループ
- IAMユーザの集まり

### IAMロール（AWS）/インスタンス・プリンシパル、動的グループ（OCI）
- AWS
    - リソースからリソースへのアクセス権限の付与（EC2からS3へのアクセスとか）
- OCI
    - IAMユーザとグループのような関係。
        - 何らかのOCIサービスで作成したインスタンスが「インスタンス・プリンシパル」
        - インスタンス・プリンシパルの集まりが「動的グループ」
    - IAMユーザ/グループのように、IAMポリシーは動的グループに設定する。インスタンス・プリンシパルに直接IAMポリシーを設定できない

## 8.4 IDCS（Oracle IDentity Cloud Service）
- もともとはOCIとは別にOracleが提供していたID管理サービス
- IDCSにユーザを登録すれば、そのユーザはSSOでOCIコンソールにログインできる
- IDCSユーザがOCI上の権限を得るためには、IAMグループとIDCSのグループをマッピングし、そのグループに対してIDCSユーザを所属させる必要がある
    - 一度登録すればIDCSだけで運用できるが、登録するためにはIAMの設定が必要になる

## 8.5 KMS（AWS Key Management Service）/ボールト
- 暗号化鍵を管理するサービス
- それぞれ2階層で管理する
    - データの暗号化
        - AWS：CDK（Customer Data Key）
        - OCI：データ暗号鍵
    - CDK/データ暗号鍵の暗号化
        - AWS：CMK（Customer Master Key）
        - OCI：マスター暗号鍵

## 8.6 CloudHSM/ボールト
- 専用のHWを利用して鍵を管理するサービス
- OCIはボールト作成時に「仮想プライベート・ボールト」に設定することで、HSMを利用できる

## 8.7 ACM（AWS Certificate Manager）
- AWSが認証局となってSSL証明書を発行するサービス
- OCIには同様のサービスがないので、SSLを利用する際は外部の証明書発行サービスを利用するか、自己署名証明書をインポートする


# 9. アプリケーションサービス
|| AWS | OCI |
|:-:|:-|:-|
|1|SQS|ストリーミング・サービス|
|2|SNS|通知サービス
|3|SES|電子メール配信

## 9.1 SQS（Simple Queue Service）/ストリーミング・サービス
- マネージドなメッセージキューイングサービス
- 各システムやリソース間のデータのやり取りをキューイングすることで、システム/リソース間を疎結合にする
- OCIのストリーミング・サービスは、Apache Kafka互換のメッセージングサービス
    - SQSとは微妙に異なるが、データをキューイングしてシステム間の連携ができる

## 9.2 SNS（Simple Notification Service）/通知サービス
- Publisher（通知する人）/Subscriber（通知される人）モデルのPush型の通知サービス
- トピックと言う単位で情報を管理し、メールやSlack、httpなどと連携して通知する。

## 9.3 SES（Simple Email Service）/電子メール配信
- SMTPプロトコルなどを使用したメール配信サービス

# 10. 開発者ツール
|| AWS | OCI |
|:-:|:-|:-|
|1|CodeCommit|DevOps（コード・リポジトリ）
|2|CodeBuild|DevOps（ビルド・パイプライン）
|3|CodeDeploy|DevOps（デプロイメント・パイプライン）
|4|CodePipeline|DevOps

- CI/CDのサービス。
- AWSは各機能が別々のサービスとなっているが、OCIはDevOpsとして一つのサービスになっている。
    - OCIは「プロジェクト」を作成し、そのプロジェクトにリポジトリやパイプラインなどを作成していく。
    - AWSは各サービスをCodePipelineで束ねて開発プロセスを自動化する

## 10.1 CodeCommit/DevOps（コード・リポジトリ）
- Gitリポジトリサービス

## 10.2 CodeBuild/DevOps（ビルド・パイプライン）
- ソースコードのビルド、コンパイルサービス

## 10.3 CodeDeploy/DevOps（デプロイメント・パイプライン）
- ビルド済みモジュールのデプロイサービス
- インスタンス（OCIはインスタンスグループ）、Lamda/ファンクション、OKEなどの各サービスにデプロイ可能
    - AWSはオンプレにもデプロイ可能。OCIはできない
    - 一度にデプロイする数や割合を設定可能

## 10.4 CodePipeline/DevOps
- 開発プロセスの自動化サービス
- 承認プロセスを設定することが可能