今さら聞けないマネージドサービスとは

# はじめに
クラウド開発が普及してきた現在、「**マネージドサービス**」という単語を聞いたことがある人、実際にどんな意味か調べたことがある人は多いと思います。

今回はマネージドサービスの特徴と代表的なサービス、みなさんが気になるであろう責任分界点についてわかりやすく説明したいと思います。

# マネージドサービスとは
マネージドサービスは、**クラウド・サービス・プロバイダー**（**AWS**や**Azure**、**GCP**）がインフラやソフトウェアの管理と運用を代行してくれるサービスです。
今までのアプリケーション開発では物理サーバーを準備し、ネットワークの設定やセキュリティ対策、監視といったインフラ作業が必要でした。それらのインフラ作業は複雑で、知識と時間とコストがかかるものでした。

ソフトウェアエンジニアでインフラ作業をしたことがある人はその苦労がわかると思います。
まったく同じ設定にしていても（同じ設定だと思っていても）、環境差異でシステムが動かなくなるなど日常茶飯事で、慣れない人にとってインフラ作業は本当に大変でした・・・。

マネージドサービスを利用することで、利用者はアプリケーションの開発のみに集中することができます。

下記の図の青い部分が利用者が管理するレイヤーです。
マネージドサービスを利用することで利用者はサービスの利用のみを意識すれば良いことがわかります。

![マネージドサービス.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1203022/e8d3ee01-a94b-ad73-1c0b-bf61ccee983e.png)

:::note info
**この章のまとめ**
マネージドサービスは煩わしいインフラ設定やソフトウェアの管理と運用をクラウド・サービス・プロバイダーが代わりにやってくれる。
利用者はアプリケーションの開発のみに集中できる。
:::

# マネージドサービスの特徴
マネージドサービスの特徴、主にメリットを紹介します。

## 作業の簡素化
先程も少し説明した通り、クラウド・サービス・プロバイダーがインフラやソフトウェアの管理と運用を代行してくれるため、使用することでアプリケーションを作成してから公開するまでの作業が圧倒的に簡素化されます。
マネージドサービスを利用することで、利用者はアプリケーションの開発のみに集中することができます。

## ヒューマンエラーの減少
通常インフラ作業には様々な手順が存在します。
手順が多い分、ヒューマンエラー（人間が思い違いや確認不足によって起こすミスや事故）が発生する可能性が常にありました。
マネージドサービスを利用することで、そもそもインフラ作業が不要になるため、ヒューマンエラーが減少します。

## スケーラビリティ
クラウド・サービス・プロバイダーがアプリケーションやサービスのスケーリング（クラウドサーバーの台数やスペックを増減させること）を自動で行ってくれます。
これにより、アプリケーションへの急激な負荷に対応できます。
繁忙期の一過性の高アクセスに怯えることがなくなります。

## 高い可用性
マネージドサービスは、高い可用性（システムが継続して稼働できる度合いや能力）を保ちます。
冗長性のある構成、自動フェイルオーバー（問題発生時に自動的に待機システムに切り替える仕組み）、データのレプリケーション（リアルタイムにデータをコピーする技術）などにより、システムの停止やダウンタイムを最小限に抑えることができます。
クラウド・サービス・プロバイダーが24時間365日モニタリングしてくれている安心感は凄いです。

## セキュリティ
クラウド・サービス・プロバイダーは定期的なバックアップやセキュリティパッチの適用を行い、データの保護とセキュリティの向上に努めています。

AWSも以下のように「お客様のリスクを継続的に軽減します」言い切っています。
> **利点　セキュリティ**
AMS は、セキュリティモニタリングと修復により、オペレーショナルエクセレンスを向上させます。AMS は、AWS ベストプラクティスと幅広い AWS ネイティブツールを活用することで、お客様のリスクを継続的に軽減します。私たちの安全メカニズムは、予防的および検出的なコントロールを提供します。
[出典：Amazon Web Services - AWS Managed Services](https://aws.amazon.com/jp/managed-services/)

:::note info
**この章のまとめ**
インフラ作業が不要になるため、作業が簡素化されヒューマンエラーが減少する。
スケーラビリティや可用性、セキュリティをクラウド・サービス・プロバイダーが担ってくれるため、安心してアプリケーションの保守が可能。
作業が少なくなった分、利用者はアプリケーションの開発のみに集中できる。
:::

# 代表的なマネージドサービス
3大クラウド・サービス・プロバイダーの代表的なマネージドサービスを紹介します。

:::note info
**3大クラウド・サービス・プロバイダー**
Amazon Web Service（AWS）
Microsoft Azure（Azure）
Google Cloud Platform（GCP）
:::

## ストレージサービス
各社ともに高スケーラビリティ、データ可用性、セキュリティ、およびパフォーマンスを提供するオブジェクトストレージサービスを提供しています。
比較的安価にファイルを保存可能です。

| AWS | Azure | GCP |
|:--|:--|:--|
| Amazon S3  | Azure Blob Storage  | Google Cloud Storage  |

## データベースサービス
各社ともに高い可用性と耐久性を備えているマネージドサービスのデータベースを提供しています。
RDB（リレーショナルデータベース）もNoSQLも選べます。

| AWS | Azure | GCP |
|:--|:--|:--|
| Amazon RDS  | Azure SQL Database  | Cloud SQL  |
| Amazon DynamoDB  | Azure Cosmos DB  | Cloud Firestore  |

## サーバーレスコンピューティングサービス
イベント駆動型（要求が発生したとき処理を実行するようにプログラムを記述するプログラミング手法）のサーバーレスコンピューティングサービスです。
アプリケーションの機能を小さな関数単位で実行できます。

| AWS | Azure | GCP |
|:--|:--|:--|
| AWS Lambda  | Azure Functions  | Google Cloud Functions  |

# マネージドサービスの責任分界点
サービスによって責任分界点は異なりますが、マネージドサービスでは基本的にインフラストラクチャの責任をクラウド・サービス・プロバイダーが担います。

例として「**Amazon S3**」のサービスの責任分界点を紹介します。

## Amazon S3の責任分界点
Amazon S3では、利用者は以下の責任を負います。

+ オブジェクトの所有権 および暗号化 を含むデータの管理。
+ アセットの分類。
+ IAM ロール およびその他のサービス設定を使用し、適切な権限を適用したデータへのアクセスの管理 。
+ AWS CloudTrail または Amazon S3 の Amazon GuardDuty 等のディテクティブコントロールの有効化。

[Amazon Simple Storage Service (S3) ユーザーガイド > Amazon S3 のセキュリティ](https://docs.aws.amazon.com/ja_jp/AmazonS3/latest/userguide/security.html)

上記の通り、利用者はほとんどの責任を負わなくてよいことがわかります。
先程も記載しましたが、サービスやクラウド・サービス・プロバイダーによって責任分界点が異なるため、使用する前に確認が必要です。

# さいごに
インフラ作業から解放されて開発に集中できるマネージドサービスは積極的に使用していきたいサービスです。
マネージドサービスは汎用化に特化しており、カスタマイズが出来ないことも特徴なので、やりたいことと出来ることを整理して、選択していただければと思います。

:::note info
**最近よく聞くけど今さら聞けない技術用語**について、いくつか記事を書いています。
良かったらそちらもご覧ください。
:::
https://qiita.com/shinkai_/items/efe653174e8dc1bcd625

https://qiita.com/shinkai_/items/0fd5d72b6a584c16a8ec

https://qiita.com/shinkai_/items/79e539b614ac52e48ca4

https://qiita.com/shinkai_/items/13e76a5641d9ec9a41d2



# 参考
https://aws.amazon.com/jp/managed-services/

https://dev.classmethod.jp/articles/awssummit-2021-aws-08/