AWSで2022に打破されたアンチパターン

## TLDR
AWSで2022年の1月から9月までのアップデートが多数ありました。私（と、何人かのサポーター）が考えた、この期間内の打破されたアンチパターンを紹介します。32項目ありました！

## アンチパターンって何よ？

「AWSでこうしたい」という思いからAWSを使っていく方は多いはずです。
そのなかで、数多くのAWS使いこなしの工夫が生まれ、成功例が生まれていきました。AWSのサービスとして提供されていないことを工夫でなんとかした、そんな成功例たち。それが「秘伝のタレ」となり、「さわってはいけないもの」、あるいは「ロストテクノロジー」として、封をしたパターンとなっていないでしょうか？

動作やプロセス、構造について、当初は妥当であったのに、最終的に悪い結果が繰り返されるパターンであり、リファクタリングするための方法が存在するパターンこそがアンチパターンです。サービスアップデートされれば、いままでは妥当であったものが、アンチパターンとなります。

そんなわけで、2022年の1月から9月までのAWSアップデートが打破したアンチパターン一覧です。

## AWSで2022に打破されたアンチパターン(2022.09末まで)

全部で32項目あります。

|大分類	|打ち破ったサービス	|コスト抑制に有効か？	|いつごろか？	|概要	|その他メモとか参考とか	|
|---	  |---	          |---	             |---	       |---	|---                 |
|Analytics	|Redshift Spectrum	|	|2022-01	|Redshift Spectrumカスタムデータ検証により、事前のデータ中の予期せぬ値を除くクリーン化作業が不要に	|[Amazon Redshift Spectrum がカスタムデータ検証ルールを提供](https://aws.amazon.com/jp/about-aws/whats-new/2022/01/amazon-redshift-spectrum-offers-custom-data-validation-rules/)		|
|Analytics	|SQL Explorer in EMR studio	|	|2022-01	|Presto をインストールした EC2 クラスター上の Amazon EMR に接続し、データカタログを表示および閲覧することが可能となった	|[SQL Explorer in EMR Studio の紹介 (amazon.com)](https://aws.amazon.com/jp/about-aws/whats-new/2022/01/introducing-sql-explorer-in-emr-studio/)		|
|Analytics	|Amazon Redshift	|y	|2022-09	|Redshiftシステムログの耐久性が強化され、最大7日間のシステムログデータにアクセス可能になり、クラスタを一時停止してもシステムログが保持されるようになり、障害追跡のためのクラスタ動作不要に。	|https://aws.amazon.com/jp/about-aws/whats-new/2022/09/amazon-redshift-announces-enhanced-system-logs-consistent-durability/		|
|Analytics	|EMR Serverless	|y	|2022-06	| EMR on EC2でのクラスタ起動に8分前後かかってたため、常時動作を選択している場合は、EMR Serverlessによりオンデマンド利用可能に。	|[Amazon EMR Serverless が一般公開されました](https://aws.amazon.com/jp/about-aws/whats-new/2022/06/amazon-emr-serverless-generally-available/)		|
|Analytics	|Redshift serverless	|y	|2022-07	|Redshift serverlessにより、需要を予測したクラスタサイズ変更などの管理が不要に	|[Amazon Redshift Serverless の一般提供を開始](https://aws.amazon.com/jp/about-aws/whats-new/2022/07/amazon-redshift-serverless-generally-available/)		|
|Analytics	|Glue Flex	|y	|2022-08	|Glue Sparkジョブに新しいクラス “Flex” が登場。主に開発中など、レイテンシー要件の緩いワークロード向けに34%のコスト削減に使える。	|https://aws.amazon.com/about-aws/whats-new/2022/08/aws-glue-supports-flex-execution-option/		|
|Analytics	|Athena	|	|2022-07	|Athenaのマネジメントコンソールで実行プランを見れるように。2021-04には手動でEXPLAIN可能になったのに続く改善	|https://aws.amazon.com/jp/about-aws/whats-new/2022/07/amazon-athena-visual-query-analysis-tuning-tools/		|
|Analytics	|Glue	|	y|2022-04	|GlueでAuto Scalingが使えるようになった。ワークロードにあわせて自前でクラスタのサイズを調整する必要があった	|https://aws.amazon.com/about-aws/whats-new/2022/04/autoscaling-aws-glue-now-generally-available/		|
|Analytics	|Glue	|	|2022-04	|Glueで対話的な開発のためにInteractive Sessions (とそれに基づいたGlue Studio Notebook)が使えるようになった。旧来の開発エンドポイントを使う必要があったが、セットアップの手間やコスト面で課題があった	|https://aws.amazon.com/about-aws/whats-new/2022/04/aws-glue-interactive-sessions/		|
|Analytics	|Glue crawler	|y	|2022-08	|クローラーの実行履歴(DPU Hour等含む)を画面上で確認できるようになった。これまでは履歴やDPU Hour(課金につながる)を見る手段がなかった	|https://aws.amazon.com/about-aws/whats-new/2022/08/announcing-crawler-history-aws-glue/		|
|Analytics	|Glue, Athena, Redshift	|	|2022-02	|Delta Lakeのテーブルが更新されるたびに、SparkからDelta Lakeのライブラリを使ってManifestファイルを生成する必要があった	|https://aws.amazon.com/blogs/big-data/crawl-delta-lake-tables-using-aws-glue-crawlers/		|
|BEX	|CodeGuru Reviewer	|y	|2022-05	|CodeGuru Reviewerが新たに、ファイルやフォルダ単位の指摘抑制が可能になりました。従来はリポジトリ内の全てのファイルやフォルダをスキャンしていましたが、スキャン対象外とする（指摘を抑制する）ものを指定できるようになりました。リポジトリ全体のスキャンを避けるにはわざわざコピーをしていた	|[AWS CodeGuru Reviewer がコードレビュー時にファイル・フォルダ単位の抑制に対応](https://aws.amazon.com/jp/about-aws/whats-new/2022/05/amazon-codeguru-reviewer-supports-suppression-files-folders-code-reviews/)		|
|CloudFront	|ATPがCFに対応	|	|2022-08	|アカウント乗っ取り防止がCFで有効になった。これまでは一部リージョンのWAFのみ対応だった。	|[AWS WAF Fraud Control – Account takeover prevention for Amazon CloudFront](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/aws-waf-fraud-control-account-takeover-prevention-cloudfront/)		|
|CloudFront	|CloudFrontのOrigin Access Control	|	|2022-08	|Amazon S3へのアクセスを特定のCloudFrontディストリビューションからに限定。OAI(非推奨になった)よりセキュリティも強固に	|[Amazon CloudFront でオリジンアクセスコントロール (OAC) をリリース](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/amazon-cloudfront-origin-access-control/)		|
|Compute	|[AWS Health Dashboard](https://aws.amazon.com/jp/about-aws/whats-new/2022/09/aws-health-dashboard-displays-localized-dates-times-service-health-events/)	|	|2022-09	|AWS Health Dashboard でイベントの時刻をUTCや現地時間に設定可能に。これまではPDTで表示されていた。	|[AWS Health Dashboard でイベントの時刻を現地時間に設定可能に](https://aws.amazon.com/jp/about-aws/whats-new/2022/09/aws-health-dashboard-displays-localized-dates-times-service-health-events/)		|
|Compute	|Fargateが4倍に	|	|2022-09	|AWS Fargate の改善でEC2を選ばざるを得なかったような大きいvCPU/メモリが選択可能になりました。最大で16vCPU、120GBメモリとなり、これまでの4倍です。	|[AWS Fargate でコンピューティングとメモリのリソース構成が 4 倍に増加 (amazon.com)](https://aws.amazon.com/jp/about-aws/whats-new/2022/09/aws-fargate-increases-compute-memory-resource-configurations-4x//)		|
|Database	|[Amazon DynamoDB](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/amazon-dynamodb-supports-bulk-imports-amazon-s3-new-dynamodb-tables/)	|y	|2022-08	|DynamoDBがS3からのバルクインサートを実現。ETLツールとかつかってWCU消費しながら書き込んでたものが不要に。	|[Amazon DynamoDB が Amazon S3 からのバルクインポートに対応](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/amazon-dynamodb-supports-bulk-imports-amazon-s3-new-dynamodb-tables/)		|
|Database	|RDS Performance Insight	|	|2022-07	|Amazon RDS Peformance Insights でメトリクス保存期間内の任意の範囲を指定して、データベースのパフォーマンスメトリクスを確認できるようになりました。従来は「過去1時間」「過去24時間」といった相対的な範囲指定のみが可能でしたが、今回のアップデートにより分析したい期間を容易に指定・分析可能になりました。	|[Amazon RDS Performance Insights がパフォーマンス履歴の保持期間にさらなる選択肢を提供](https://aws.amazon.com/jp/about-aws/whats-new/2022/07/amazon-rds-performance-insights-additional-performance-history-retention-periods/)		|
|Database	|Aurora Serverless v2のGA	|y	|2022-04	|Aurora Serverless v2のリリース。Auroraの持つ Multi-AZ や Global Database、リードレプリカといった機能がほしくてServerlessをえらべなかったことがあったのが解消	|[Amazon Aurora Serverless v2 の一般提供を開始](https://aws.amazon.com/jp/about-aws/whats-new/2022/04/amazon-aurora-serverless-v2/)		|
|Database	|Amazon Aurora MySQL	|	|2022-09	|5.7 → 8.0 Inplace Upgradeが可能に。バックアップからの復元が不要に。	|https://aws.amazon.com/jp/about-aws/whats-new/2022/09/amazon-aurora-supports-in-place-upgrades-mysql-5-7-8-0/		|
|Network	|Site-to-Site VPN	|	|2022-08	|Amazon CloudWatch で AWS Site-to-Site VPN コネクションのログ収集が可能になり、サポートに依頼する必要がなくなった。	|[Amazon CloudWatch で AWS Site-to-Site VPN コネクションのログ収集が可能に](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/aws-site-vpn-connection-logs-amazon-cloudwatch/)		|
|Network	|DirectConnect	|	|2022-08	|[AWS Direct Connect において従来より低帯域幅での AWS Transit Gateway 接続が利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/aws-direct-connect-expands-transit-gateway-support-connection-speeds/)なり、パートナー提供のDX回線でのTGW提供がひろがった。	|[AWS Direct Connect において従来より低帯域幅での AWS Transit Gateway 接続が利用可能に](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/aws-direct-connect-expands-transit-gateway-support-connection-speeds/)		|
|Network	|Site-to-Site VPN	|	|2022-06	|AWS Site-to-Site VPN プライベートIP VPN ができるようになり、IPアドレス重複などで破綻してたサブネットとVPCをトンネルできる	|[AWS Site-to-Site VPN プライベートIP VPN のご紹介](https://aws.amazon.com/jp/blogs/news/introducing-aws-site-to-site-vpn-private-ip-vpns/)		|
|Observability	|AWS Distro for OpenTelemetry	|	|2022-02	|EKS FargateでのCloudWatch Container Insightsの利用が可能に。Container InsightsをCWAgentで取るにはDaemonsetが必要で、FargateではContainer Insights種毒出来なかった	|https://aws.amazon.com/jp/about-aws/whats-new/2022/02/amazon-cloudwatch-eks-fargate-distro-opentelemetry/		|
|Observability	|Amazon Managed Service for Prometheus	|	|2022-09	|Amazon Managed Service for Prometheusのメトリクス保持期間150日が緩和可能に。別途保存が不要に。	|https://docs.aws.amazon.com/prometheus/latest/userguide/AMP_quotas.html		|
|Observability	|CloudWatch	|	|2022-08	|CloudWatch Custom MetricsのIngestion　スループットが150倍になった。上限緩和したり、時間的に分散してのAPI実行不要に。	|https://aws.amazon.com/about-aws/whats-new/2022/08/amazon-cloudwatch-metrics-increases-throughput/		|
|Security	|[Amazon GuardDuty](https://aws.amazon.com/jp/about-aws/whats-new/2022/07/malware-protection-feature-amazon-guardduty/)	|	|2022-07	|セキュリティエージェントを使用する代わりに、GuardDuty Malware Protection は、アカウント内の感染の可能性がある EC2 インスタンスまたはコンテナのワークロードにアタッチされている EBS ボリュームのスナップショットを基にレプリカを作成し、スキャンを行います。	|[Amazon GuardDuty にマルウェア保護の機能を追加](https://aws.amazon.com/jp/about-aws/whats-new/2022/07/malware-protection-feature-amazon-guardduty/)		|
|Security	|IAM Roles Anywhere	|	|2022-07	|AWS 外部のワークロードではアクセスキー・シークレットキーを埋め込んでた	|https://aws.amazon.com/jp/blogs/news/extend-aws-iam-roles-to-workloads-outside-of-aws-with-iam-roles-anywhere/		|
|Serverless	|Lambdaが10GBのエフェメラルストレージサポート	|y	|2022-03	|Lambdaが10GBのエフェメラルストレージサポート。これまでコンテナやEC2を使って多くのデータの一時的なキャッシュをしていた場合に有用。機械学習の推論やメディア処理などデータ集約型アプリケーションで特に便利。	|[AWS Lambda で最大 10 GB のエフェメラルストレージをサポート可能に](https://aws.amazon.com/jp/blogs/news/aws-lambda-now-supports-up-to-10-gb-ephemeral-storage/)		|
|Serverless	|Amazon SNS	|	|2022-09	|Amazon SNSでセンシティブな情報がサブスクライバーに流れるのを防ぐビルトインの仕組みがプレビューとなりました、これにより Lambda Subscriber側やsender側での保護以外にもビルドインの仕組みが加わりました。	|https://aws.amazon.com/jp/about-aws/whats-new/2022/09/amazon-sns-preview-message-data-protection-sensitive-data-in-motion/		|
|Storage	|EBS	|y	|2022-08	|2019 年から、ひとつの EC2 インスタンスにアタッチされた「全ての」EBS ボリュームについて整合性のあるスナップショットを取得することはできた。これを「任意の組み合わせ」で可能に。	|[任意に選択した複数の EBS ボリュームについて整合性のあるスナップショットを取得可能に](https://aws.amazon.com/jp/about-aws/whats-new/2022/08/amazon-ebs-crash-consistent-snapshots-subset-ebs-volumes-attached-amazon-ec2-instance/)		|
|Storage	|AWS Backup for Amazon S3	|	|2022-02	|AWS Backup はAWS上の各種サービスのバックアップ＆リストアを一括管理するサービスであり、EBSボリュームや、Amazon RDS、Amazon EFS 等をサポートしていますが、これに今回 Amaozn S3 のバックアップが加わりました。	|[AWS Backup for Amazon S3 の一般提供を発表](https://aws.amazon.com/jp/about-aws/whats-new/2022/02/general-availability-aws-backup-amazon-s3/)		|

## おわりに

いかがでしたでしょうか。2012年に初のAWSアンチパターンのプレゼンがあってからはや10年。これまでいろんな場所で話をしてきました。

* [2018年5月から、2021年末までのサービスアップデートによりアンチパターンとなったパターン](https://www.youtube.com/watch?v=S6GE0u4rbwE) は Youtubeでご覧いただけます。

https://www.youtube.com/watch?v=S6GE0u4rbwE

...が、すべてのサービスを紹介しきれてはいません！そしてアップデートも続くでしょうし、なにより、新しいクラウドの使い方はまだまだ増えていくと思うとワクワクしますね。

最後に、このプレゼンも共有しておきます。

https://speakerdeck.com/armaniacs/awsde2022nida-po-saretaantipatan-2022-dot-09made