【AWS】AWS12冠達成をして考える、アプリエンジニアのAWS資格優先順(案)

# はじめに
先日でAWS全１２資格を全て取得でき、１２冠達成できました。
特にSAPからProfessional資格、Speciality資格を1年以内に取りきれたので頑張ったなぁと思います。

| 合格日 | 資格名 | スコア |
|:-:|:-:|:-:|
|2019-09-14|CLF-C01_AWS Certified Cloud Practitioner|874|
|2019-10-20|SAA-C01_AWS Certified Solutions Architect - Associate|739|
|2021-02-21|DVA-C01_AWS Certified Developer - Associate|775|
|2021-03-07|SOA-C01_AWS Certified SysOps Administrator - Associate|839|
|2022-02-19|SAP-C01_AWS Certified Solutions Architect - Professional|808|
|2022-05-04|DAS-C01_AWS Certified Data Analytics - Specialty|806|
|2022-06-25|ANS-C01_AWS Certified Advanced Networking - Specialty|807|
|2022-07-18|MLS-C01_AWS Certified Machine Learning - Specialty|836|
|2022-08-11|DBS-C01_AWS Certified Database - Specialty|804|
|2022-09-04|SCS-C01_AWS Certified Security - Specialty|823|
|2022-10-10|DOP-C01_AWS Certified DevOps Engineer - Professional|877|
|2022-12-27|PAS-C01_AWS Certified: SAP on AWS - Specialty|778|

すでに１２冠された方々が難易度や受ける順番、教材についてまとめてくださっているので、ちょっと違う観点でアプリエンジニアがとるべきAWS資格を考えてみました。

https://qiita.com/handy-dd18/items/d21d914bf1c475d777f2

https://qiita.com/m-iwasaki/items/c6b961f7cab0261f2827

# 書き手超概要
- 6年目エンジニア
- アプリケーション開発メイン
- AWS使用期間は合計3年ほど
    - 直近2年でサーバレスアプリ開発メイン

# そもそもアプリエンジニアはどこまでAWSを知るべきか（個人的感想）
※ アプリエンジニアとは主にアプリ設計、実装、テスト（、リリース）を行う人を想定しています。

- アプリケーションを構築するのにも良い設計やプログラミング言語、FWごとの特徴やベストプラクティス、テストの設計や自動化などなど習得すべき内容は少なくない。それに加えてインフラであるAWSの知識を学習するなんて…
- 「全部できなきゃダメ」なんて超つよつよエンジニアの人たちはおっしゃるかもしれませんが、一般エンジニアは今の仕事で必要な範囲をしっかり知ることで十分だと思います。(時間リソースは無限ではないため)
    - システムがAWSに依存していればいるほどアプリエンジニアであってもAWSの知識があると望ましい
        - EC2上で動くPython+Django上でのアプリ実装をしている人がLambdaについて学習するより、そもそもアプリ設計の学習やDjangoの効率化、コードのリファクタリングの方がシステムへの価値提供は大きい
        - フルマネージドサービスやサーバレスアーキテクチャを指向するならAWSの学習をすることはシステム設計、実装、運用上のリスクを低減させることに直接的に寄与する
            - API GatewayやLambdaの設計についてインフラサイドが担当してくれることは少ないと思われる。また、インフラが担当してくれている場合だと変更の小回りが効きづらくなる印象。
- 上記を考慮すると、知識証明であるAWSの資格取得は全体感を養うには良いが、実際に使用するサービスの設計、実装を行うための知識には足りないという「帯に短し襷に長し」なものに思う。
    - 実際、使用するサービスの設計や実装する際には公式ドキュメントの読み込みによる仕様調査、QAやPoC、　構築,テストしながらのトライ＆エラーは避けられない
- サーバレスを指向しないシステムの場合は必要性は低そう。
    - AWSに関わる部分はアーキテクトやインフラ、DevOpsがほぼやってくれそう
- より担当範囲を広げるため、資格を取得して足掛かりにする→実際に上流やサーバレス、クラウドインフラに携わる という流れが理想に思います。

AWSの中の人がコンテナ観点での視点を話していました

https://logmi.jp/tech/articles/325994

# 優先度の考え方

- Associate > Professional, Speciality
    - もちろん、上位資格が取得できれば良いですが、まず基礎レベルの知識を身につけることが優先事項だと考えます。
- サーバレス > マネージドサービス > アンマネージドサービス
    - アプリチームとインフラチームと別れて作業をする際に明確にインフラチームに渡してしまえるものについてはアプリエンジニア側での優先度が低いと考えます。
- アプリ開発で頻出するコンポーネントを扱うか
    - アプリケーションを構築する上で一般的な機能を実装する上で必要なコンポーネントを扱うことが優先されると考えます。
        - eg. 多くのシステムで機械学習の機能よりデータベースを使用していると思われる

# アプリエンジニアのAWS資格優先順


== 必須レベル　==
1. AWS Certified Solutions Architect - Associate
2. AWS Certified Developer - Associate

== できれば取りたい　==
3. AWS Certified DevOps Engineer - Professional
4. AWS Certified SysOps Administrator - Associate
5. AWS Certified Solutions Architect - Professional
6. AWS Certified Security - Specialty
7. AWS Certified Database - Specialty

== とれたら取りたい　==
8. AWS Certified Cloud Practitioner
9. AWS Certified Machine Learning - Specialty
10. AWS Certified Data Analytics - Specialty

== 趣味レベル　==
11. AWS Certified Advanced Networking - Specialty
12. AWS Certified: SAP on AWS - Specialty

## 必須レベル
- AWS Certified Solutions Architect - Associate
    - AWSでシステム構築を行う上で必須な可用性、信頼性、セキュリティ、コスト効率を考慮した主要サービスでの設計、実装のスキルをチェックされる。
    - アプリアーキや機能設計を行う上でも必要な知識が対象になっている。
- AWS Certified Developer - Associate
    - クラウドベースのアプリケーションを開発、デプロイ、デバッグするスキルをチェックされる。
    - 試験内容が開発者向けなので、もちろん必須レベルです。

## できれば取りたい　
- AWS Certified DevOps Engineer - Professional
    - AWS プラットフォームでの分散アプリケーションシステムのプロビジョニング、運用、および管理のスキルをチェックされる。
    - Developer - Associateと同じく、AWS上のアプリケーションのアプリアーキ設計から運用までの幅広い知識が対象。
- AWS Certified SysOps Administrator - Associate
    - AWSでのワークロードのデプロイ、管理、および運用に関するスキルをチェックされる。
    - 基礎レベルの試験ですが、ネットワークやコスト最適に関する問題も一定割合出るため、他Associateレベルの資格より優先度を下げました。
- AWS Certified Solutions Architect - Professional
    - AWS Well-Architected Frameworkに基づいてAWSソリューションを設計し、最適化するためのスキルをチェックされる。
    - 複雑な組織の対応やワークロード移行などインフラが主担当となる部分もあるが、他項目はアーキ設計やCICD、モダナイズなど必要な知識部分も多い。
- AWS Certified Security - Specialty
    - AWS プラットフォームのセキュリティ保護を理解してかをチェックされる。
    - 内容としてはインフラの担当部分が多いと思われるが、アプリと密接に関係しているため、取得したい。
- AWS Certified Database - Specialty
    - データベースの設計、移行、デプロイ、アクセス、メンテナンス、オートメーション、モニタリング、セキュリティ、トラブルシューティングの知識をチェックされる。
    - 内容としてはインフラの担当部分が多いと思われるが、アプリと密接に関係しているため、取得したい。
## 取れたら取りたい
- AWS Certified Cloud Practitioner
    - AWSの総合的な基礎知識をチェックされる。
    - もちろん知識としては必要だが、取得したからと言ってAWSのアプリ開発に直接役立つレベルではないと考える。
- AWS Certified Machine Learning - Specialty
- AWS Certified Data Analytics - Specialty
    - MLS, DASはいづれも試験で扱われているサービスを使用するシステムを構築するのであれば有用だと思われる。
## 趣味レベル
- AWS Certified Advanced Networking - Specialty
    - ネットワーク部分についてアプリエンジニアが担当することは少ないと思われるため。
- AWS Certified: SAP on AWS - Specialty
    - SAP特有の知識かつインフラ部分を中心に問われるため、一般的なアプリエンジニアが関わることは少ないと思われるため。


# あとがき
１２冠取得直後で思ったことをまとめてみました。（つらつらと読みづらくなってしまいました。。。）
記事中、思うところがある人もいるとは思うので、その場合はマサカリ投げていただければと思います。

(この記事、URL等込み込みで4000文字オーバーぽいですが、昨年もこの時期4000文字近くのほぼコラム書いてましたね。。。)