公共領域から学ぶ　クラウド移行についてエンジニアが意識していること

# はじめに
JAWS朝回で発表させていただいた、以下スライドについてブログでも書いていきたいと思います。

https://speakerdeck.com/kawakawa2222/gong-gong-ling-yu-karaxue-hu-kurautoyi-xing-nituiteensiniakayi-shi-siteirukoto

# 説明すること
公共分野をターゲットとした数多くのクラウドマイグレーションを行うなかで、参考にしている情報や、考え方、意識すべきことをまとめます。

# クラウドに関する国の方針と目的から学ぶ
https://www.digital.go.jp/assets/contents/node/basic_page/field_ref_resources/e2a06143-ed29-4f1d-9c31-0f06fca67afc/5167e265/20230929_resources_standard_guidelines_guideline_01.pdf

>![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/d765a47c-5327-b697-dae9-42a49a2d3296.png)
政府情報システムにおけるクラウドサービスの適切な利用にかかわる基本方針（抜粋）
これまでの政府情報システムにおけるクラウドサービスの利用の多くは、オンプレミスのサーバ群を単に「雲の向こうにある仮想サーバ群」に置き換え、 迅速な整備や柔軟なリソースの増減を図るものにとどまっていた。他方で、近年においては、クラウドサービスの急速な進化・発展により、多種多様なマネージドサービスが利用可能となっており、利用システムが自らサーバを構築しなくても、マネージドサービスを利用することによって、必要とする情報システムを構築することが可能となっている。
また、環境構築の自動化や運用の自動化も大きく進展し、いわゆるインフラ作業（構築・運用・保守）の在り方も以下のように根本的に変化している。 すなわち、従来のクラウドでは、オンプレミスと同様の発想でサーバ構築を 中心としたインフラ作業を手作業で実施することが多かったが、今日のクラウドにおいては、サーバは構築せずにマネージドサービスを利用することや、インフラ環境をコードにより自動生成することが可能である。これにより、従来要していたサーバ構築に伴うコストや、手作業に係る工数を大きく削減することが可能となる。 セキュリティ対策についても、従来のクラウド利用においては、オンプレミスと同様の発想で、ネットワークを中心に自らが構築したサーバを守ることが重要なテーマであったが、今日のクラウド利用においては、マネージドサービス等の利用により、必ずしも自らサーバを構築する必要がなくなるため、データの暗号化や認証など、クラウド利用における様々な設定を適切に行うことが セキュリティ対策の中心となる。あわせて、合理的な責任分界の下、コンピュータの基本部分（サーバや OS）のセキュリティ対策を信頼性の高い CSP に委ねることで、利用者はサービス利用に集中することができ、高水準のセキュリティ対策を低コストで実現することが可能となる。本方針が旧世代のクラウド利用ではなく、今日のスマートなクラウド利用を促進する目的は、システム開発の短期間化や継続的な開発・改善の実現等の要素もあるが、主としてコスト削減とセキュリティの向上にある。オンプレミスから旧世代のクラウドへの移行では、サーバ構築に伴うコストや手作業に係るコストが大きかったが、スマートなクラウド利用ではそれらのコストは大きく削減される。

上記デジタル庁から公開されている、政府情報システムにおけるクラウドサービスの適切な利用に係る基本方針を見てましょう。
長々と書いてることをまとめると以下ポイントになります。

**クラウドの利用目的は、セキュリティの向上、コスト削減である**

スマート活用のポイントとしては以下
- 環境構築の自動化（IaCの利用）
- サーバ構築ではなく、マネージドサービスを利用する
- 運用の自動化

## 意識すべきこと
クラウド移行の際には、クラウドに移行することで、何を実現したいのかまず、目的を定義する必要があります。なんとなく、クラウド利用が流行っているからではなく、クラウドの特性を正しく理解し、その特性を最大限活用できる構成を実現できているかを確認することが重要です。

# デジタル庁さんのブログを参考にする
公共領域の提案、設計をしていると必然的に見る機会が増えるのですが、デジタル庁さんのテックブログをみると非常に参考になる情報を取得できます。

https://digital-gov.note.jp/

以下例：
クラウドサービスによるディスラプト（破壊的イノベーション）
https://digital-gov.note.jp/n/n2d478ed2cb3b#8af4c399-abaa-4d25-8dcb-7be7f5ef3e9b

ガバメントクラウドでのコスト削減の考え方
https://digital-gov.note.jp/n/n6229ca169e02?magazine_key=m90208c3610d0

ガバメントクラウドでのクラウド最適なアーキテクチャのサンプル
https://digital-gov.note.jp/n/n0cc11a8d6f15?magazine_key=m90208c3610d0

上記は一例ですが、ガバメントクラウドを例に、アーキテクチャのサンプルや、コスト削減の考え方、クラウドの特性を踏まえた考え方などがまとめられており、従来（オンプレミス）の考えとの違いを正しく把握することができます。
読み取った内容をざっくりまとめると以下になります。
- IaCやリリースパイプラインの利用によるインフラの定義と構築自動化による、コスト削減、セキュリティの向上
- サービス改善のために定量的計測を行い、常に改善を行うこと
- マネージドサービスを利用し、利用者側責任の範疇を最小限とし、容易な運用とコスト削減を実現する
- クラウド最適なアプリケーションを含めたアーキテクチャ構成を検討すること
- クラウドの特性に合わせた開発手法を策定すること

- クラウドの特性を生かした運用をすること


# クラウド移行に関するポイント
普段私がクラウド移行に関して確認しているポイントを説明していきたいと思います。
以下に示しているように、主に５つの観点でのチェックをしています。

![スクリーンショット 2024-07-27 17.03.08.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/584167/61175888-ec95-2447-fb9f-d7b7310a80f5.png)

構築を自動化する、マネージドサービスを活用した運用の自動化、クラウドの特性を生かした構成、運用により、変化に対応するアーキテクチャとすること、コスト削減を意識すること、セキュリティの向上などの要素があり、このような観点でチェックをすることにしています。

# 参考リンク

以下参考となるリンクです。

https://www.digital.go.jp/resources/

https://digital-gov.note.jp/m/m90208c3610d0

https://www.digital.go.jp/policies/local_governments#cloud-use

https://aws.amazon.com/jp/government-education/worldwide/japan/LG-Industry-Site/govcloud-lg/

https://wa.aws.amazon.com/wellarchitected/2020-07-02T19-33-23/index.ja.html

https://aws.amazon.com/jp/modern-apps/resources/?modern-apps-cards.sort-by=item.additionalFields.sortDate&modern-apps-cards.sort-order=desc&awsf.customer-segment=*all&awsf.content-type=*all&awsf.tech-category=*all

https://aws.amazon.com/jp/modern-apps/resources/?modern-apps-cards.sort-by=item.additionalFields.sortDate&modern-apps-cards.sort-order=desc&awsf.customer-segment=*all&awsf.content-type=*all&awsf.tech-category=*all

# まとめ
クラウドの移行とは、移行することが目的なのではなく、クラウドのメリットを最大限享受し、お客様のビジネスを成功させるために行うものです。クラウドサービスは、いつでも大規模なリソースを活用できますし、運用の一部をクラウドサービス側に任せることも可能です。また、サービスは日々変化していきます。当然、この特性に合わせた体制と考え方をするひつようがあるのです。
以下にまとめていますが、開発者、顧客双方が、これまでの考え方を変えていく必要があります。

**開発者側に求められること**
- 顧客の課題、クラウド利用の目的を正しく把握する
- 顧客の課題、利用目的に合わせて、最適な構成を検討
- クラウドの変化に追従する運用体制
- 積極的な実験的アプローチの導入
- サービスの稼働状況や利用状況の可視化
- 継続的な学習

**顧客側に求めること**
- 既存の要件の見直し
- 業務の見直し
- ビジネス上の数値目標の策定
- クラウドの特性の理解
- 継続的な改善ループの導入
- ビジネス上の変化に追従する開発体制の確保

このような意識をもつこと、これまでの考え方を変えることによりはじめてクラウドを最大限活用することができます。クラウドに移行する目的はなにか、その目的に沿った構成や体制、運用を正しくリードしていくことが我々には求められているのだとおもいます。