別の Go チュートリアルを使用する理由
AWS は最近、いくつかのサービスとランタイムを非推奨にしています。私たちが愛する CodeCommit やその他の重要なサービスの廃止で見られたように、Go1.x は AWS Lambda 関数でサポートされなくなりました。
古いチュートリアルのほとんどをデプロイしようとすると、次のようなエラーが発生する可能性があります:
リーリー
重要な点は、ソフトウェアにおいて唯一変わらないのは変化であるということです。ただし、常に心に留めておくべき時代を超越した原則がいくつかあります:
この問題に対処するために、Go アプリケーションのデプロイに必要なすべてのインフラストラクチャを備えた最新のリポジトリを作成することにしました。利用可能なオプションは 2 つあります:
Docker コンテナを使用した Fargate でのデプロイ
AWS で SAM フレームワークを使用してデプロイします。
ここで GitHub のリポジトリを見つけることができます。
ソフトウェア開発における時代を超えた原則
コードとしてのインフラストラクチャは不可欠です。
ソフトウェアでは適切な命名規則が重要です。
常にロジックをテストしてください。
可用性と拡張性
ソフトウェア配信プロセスを自動化するメカニズムとしてのデプロイメント パイプライン。
可観測性は必須です。
セキュリティはクラウドネイティブ アプリケーションの第一級市民です。
Go は API を構築するための優れたオプションです。
コードとしてのインフラストラクチャは不可欠です
不変のインフラストラクチャにより、より高いレベルで必要なものを宣言できるようになり、開発環境と運用環境が可能な限り近くに保たれることが保証されます。例:
リーリー
ソフトウェアにおける適切な命名規則が鍵となる
適切なテストスイートがある場合は、リファクタリングを恐れないでください。リファクタリングはソフトウェア開発において不可欠な作業です。名前は、モジュール、関数、パッケージ、変数などのあらゆる場所に現れるため、重要です
リーリー
常にロジックをテストする
サーバーレス アプリケーションでは単体テストが重要ですが、これらのアプリケーションのほとんどはビジネス上の問題を解決するために統合とポリシーに依存しているため、統合テストも含めることを忘れないでください。
リーリー
可用性と拡張性
サーバーレス アーキテクチャはデフォルトで可用性が高く、イベント駆動型であるため、ほとんどの運用タスクが不要になります。ただし、ECS とコンテナーに依存することを選択した場合は、サーバー間でトラフィックを分散し、可用性とスケーラビリティの両方を確保するロード バランサーを組み込むことが重要です。
リーリー
導入パイプライン
展開パイプラインはソフトウェア配信プロセスを自動化します。このプロセスを簡素化するために Makefile を作成し、反復的なタスクを 1 つのコマンドで簡単にデプロイおよび実行できるようにしました。このアプローチにより、導入ワークフローの効率と一貫性が向上します。
可観測性は必須です
トレース、ロギング、メトリクスが適切に配置されていることを確認します。サーバーレス アプリケーションでは、Tracing: Active を追加するだけでこれらの機能を有効にすることができます。 CloudWatch のような中央の場所ですべてのログを確認し、サービスのやり取りを監視できる機能は非常に貴重です。
クラウドネイティブ アプリケーションではセキュリティが第一級の要素です
セキュリティはすべてのアプリケーションにおいて最も重要です。 Amazon Cognito を使用すると、堅牢なユーザー認証が提供され、API キーにより制御と認可の追加レイヤーが追加され、認可されたクライアントのみが API にアクセスできるようになります。
リーリー
攻撃対象領域を減らし、不正アクセスを防ぐために、各サービス、ユーザー、コンポーネントに必要最小限の権限を割り当てます。
最小特権の原則:
リーリー
参考文献
Terraform の実際 - インフラストラクチャを構築、変更、管理するためのツールである Terraform を実装するための実践的な使用法と戦略。
継続的デリバリーパイプライン
結論
ソフトウェアは常に進化しており、一部のツールや手法は変更されますが、基本的な原則は変わりません。不変のインフラストラクチャ、CI/CD、適切な命名規則、堅牢なテスト戦略、API のセキュリティ、アプリケーションの効率が必要です。そのため、このプロジェクトをサーバーレスな方法で再作成することにしました。
エンジニアになってソフトウェアを通じて社会に価値を生み出すのに、今ほど良い時期はありません。
記事を気に入っていただけましたら、私のブログ jorgetovar.dev をご覧ください
以上がGo サーバーレス REST API を構築し、SAM フレームワーク (Amazon Linux untime) を使用して AWS にデプロイするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。