COLUMN誰でもわかる!お役立ちコラム

AWS活用支援コラム

AWS CI/CDその他ツール紹介 AWS CodeArtifactとAmazon CodeGuru

AWS CodeArtifactとは?

AWS CodeArtifactは、ソフトウェアパッケージを安全に管理・配布できるAWSのサービスです。システム開発では、複数のプログラム部品(パッケージ)を組み合わせてアプリケーションを作成します。このパッケージを管理するためには専用の「リポジトリ」が必要で、CodeArtifactはその役割を担います。例えば、企業がソフトウェアを作成する際、外部から提供されるオープンソースのライブラリや社内で開発した共通モジュールを利用します。これらのパッケージがバラバラだと、どのバージョンを使っているのか、最新のものを適切に管理できているのかが分かりにくくなります。CodeArtifactは、そうしたパッケージを一括管理し、開発チームが簡単にアクセスできるようにします。

CI/CDにおけるArtifactとは?

CI/CD(継続的インテグレーション/継続的デプロイ)は、ソフトウェアを頻繁に更新するための手法・仕組みです。その中でArtifact(アーティファクト:人工物の意味)は、ビルド(コンパイル)したソフトウェアや関連するファイルを指します。CodeArtifactを使うことで、開発者が作成したこれらのArtifactを一元的に管理し、必要なときにすぐ取り出せるようになります。

AWS CodeArtifactの仕組みと特徴

AWS CodeArtifactの仕組みは、簡単に言うと「パッケージリポジトリのクラウド版」です。ユーザーはCodeArtifactに対して「リポジトリ」を作成し、そこに必要なパッケージをアップロードします。リポジトリ内のパッケージはバージョンごとに整理され、適切な権限設定を行うことで、社内の開発者やチームがアクセスできるようになります。

CodeArtifactの特徴としては、オープンソースのパッケージ管理ツールであるnpmMavenPyPIなどと互換性があり、普段使用しているツールのままリポジトリの管理が可能です。例えば、npmであれば、パッケージの取得コマンド一つでCodeArtifact内のパッケージをインストールできます。通常これらの環境を用意しようとすると、専用のサーバーを構築する必要がありますが、AWS CodeArtifactはフルマネージド型のサービスであるため、それらの必要がありません。数クリックで環境を用意することが可能です。

AWS CodeArtifact使用するメリット

AWS CodeArtifactを使用するメリットは、大きく分けて以下の三点です。

  • 一元管理で効率向上
    CodeArtifactを使うことで、社内のパッケージを一元管理できます。これにより、各チームが個別にパッケージを管理する必要がなくなり、バージョンの整合性が取りやすくなることで、パッケージのデグレーションやバージョン違いによるミスを減らすことができます。
  • 自動化されたリリースプロセス
    CodeBuildやCodepipelineといったAWSの他のサービスと連携することで、CI/CDパイプラインを自動化できます。これにより、手作業によるミスが減り、迅速なソフトウェアのリリースを可能とする仕組みを整えることができます。
  • セキュリティと可用性
    アプリケーション開発は多様な関係者が含まれることが多い一方でセキュリティにも気を使う必要がありますが、IAMを利用してアクセス権限を細かく設定できるため、部署や開発体制に応じたきめ細やかなセキュリティの設定ができます。また、AWS Key Management Service(KMS)と統合し、データを暗号化した状態で保存することができます。可用性という面でも、AWSのインフラ上にホストされているため、常に高い可用性が維持され、パッケージへの安定したアクセスが確保されます。

AWS CODEシリーズを活用して柔軟な開発環境を実現するスタイルズのDevOps(CI/CD)導入支援サービスはこちら

Amazon CodeGuruとは?

Amazon CodeGuruは、コードレビューやアプリケーションのパフォーマンスを改善するためのAWSのサービスです。システム開発では、コードの品質やパフォーマンスが非常に重要ですが、経験豊富なエンジニアがいなかったり、限られた時間内でレビューを行わなければならないことがあります。そこでCodeGuruを利用すると、AIを活用して自動的にコードを解析し、潜在的な問題点や改善すべきポイントを指摘してくれます。

このサービスは、大きく分けて「CodeGuru Security(以前はCodeGuru Reviewer)」と「CodeGuru Profiler」の2つの機能を提供します。CodeGuru Securityはコードの品質向上やセキュリティに焦点を当て、CodeGuru Profilerはアプリケーションのパフォーマンスやコスト削減のための分析を行います。これにより、システムの安全性や効率性を高めることができます。

Amazon CodeGuruの仕組みと特徴

Amazon CodeGuruは、IDE(統合開発環境;コーディングなどを行う環境)やリポジトリと連携して、AIモデルを用いてコードの問題を検出します。

対応している外部IDEやリポジトリ

主に下記のサービスと連携が可能となっています。

  • IDE…Amazon SageMaker Studio、JupyterLabVisual Studio Code with AWS ToolkitIntelliJ IDEA with AWS Toolkit
  • リポジトリなど…GitHub、GitLab、Bitbucket、AWS CLI、AWS CodePipeline

したがって、Github ActionsCodeGuruを統合し、Github ActionsのワークフローにCodeGuruによるコードレビューを組み込むことも可能です。

仕組みと特徴は?

CodeGuru Securityはリポジトリに保存されたソースコードを自動的にチェックし、バグの原因となる可能性がある箇所やベストプラクティスに沿わない部分を見つけ出します。例えば、セキュリティに関する脆弱性や、リソースの無駄遣いに繋がるコードの問題を検出し、開発者に具体的な改善提案を示します。

一方のCodeGuru Profilerは、アプリケーションの実行中のパフォーマンスをモニタリングし、どの部分がボトルネックとなっているのかを分析します。これにより、アプリケーションが稼働するサーバーなどのリソース最適化やコストの削減が可能となります。Profilerのレポートを参考にすることで、アプリケーションがどのように動作しているかを視覚的に把握し、効率的な調整や機能改善が行えるため、ユーザービリティの向上にもつながります。

AWS CODEシリーズを活用して柔軟な開発環境を実現するスタイルズのDevOps(CI/CD)導入支援サービスはこちら

まとめ

AWS CodeArtifactとAmazon CodeGuruは、企業のシステム開発や運用において非常に有用なツールです。CodeArtifactは、パッケージの一元管理を可能にし、CI/CDの効率化を支援します。一方、CodeGuruはコードの品質とパフォーマンス向上を自動的にサポートします。IAMCodepipelineといったサービスを併用することによって、企業内でのアプリケーション開発をよりセキュアに、より高速に行える仕組みを整備することができます。導入に向けてはほかのAWSサービスとの関係性も考慮する必要があるため、専業のベンダーに相談してみましょう。