2023年5月17日にオンラインセミナー『AWSで実現するモダンアプリ開発。DevOpsやCI/CDを基礎から実践方法まで解説。』を開催いたしました。この記事では、当日用いた資料を公開し、そのポイントを紹介します。
目次
モダンなアプリケーション開発とAWS
モダンなアプリケーション開発とは、簡単にいうと現代のビジネスニーズに対応できるアプリケーションを開発する方法です。
現代のビジネスニーズとは、以下のようなものが挙げられます。
- 変化に対応できる柔軟性とスピード
- 安全で信頼性の高いセキュリティ
- 収益を最大化するために必要なコスト効率
従来はアプリの開発や改善には多くの時間やコストがかかるのが当たり前だったため、これらのニーズを満たすためには、新しい手法を活用して、迅速かつ効率的に開発することが必要です。
“新しい手法“として、AWSなどのクラウドサービスを活用したり、DevOpsなどの考え方を取り入れたりすることで、モダンなアプリケーション開発を実現することができます。
クラウドを活用するメリット
AWSなどのクラウドサービスの活用をモダンなアプリケーション開発を実現する条件のひとつに挙げましたが、何故かというとクラウドを活用する次のようなメリット得られるからです。
- コスト最適化:必要なリソースを必要な時間だけ従量課金で使用できるため、無駄なく利用することができます。また、物理的なサーバーの購入、設置、メンテナンスのコストを削減できます。
- スケーラビリティ:アプリケーションの需要に応じて、リソースをスケールアップまたはスケールダウンできるため、コストを最適化しながら柔軟にアプリケーションのパフォーマンスを向上させることができます。
- セキュリティ:データやアプリケーションを保護するためのセキュリティ機能が提供されているため、自分で一からセキュリティソフトを入れたり安全なネットワークの運用を考えたりしなくても、安心して利用できます。
- 信頼性:高可用性なインフラが提供されているため、システムの停止やデータの損失などのリスクを低減できます。
なぜ他のクラウドでなくAWSがよく利用されるのか?
もちろん「クラウド=AWS」ではなく複数の選択肢があり、実際にNCDCでもAzureやGCPを使っているプロジェクトはあります。しかし、採用数を比較するとAWSを利用しているプロジェクトがもっとも多いです。
AWSが選ばれる理由はさまざまあると思いますが、個人的には以下の要素が大きいのではないかと考えています。
- 情報量が多い:AWSは、他のクラウドサービスと比べて利用者や開発者が多いため、インターネット上の情報量も比較的多い傾向にあります。これにより、AWSの使い方やトラブルシューティング方法などを簡単に調べることができます。
- モダンな開発に適している:例えば、AWS Lambdaによるサーバレス開発など、モダンな開発手法に適したサービスを提供しています。他のクラウドが提供する類似サービスと比較して、AWSは使い勝手において優れていると感じています。
- スモールスタートしやすい従量課金制:他のクラウドは従量課金制といってもある程度の利用量がないと十分なセキュリティを確保できないというような問題が生じることがあります(大規模なシステムでは問題ありませんが小規模な利用で問題になる)。その点、AWSは初期費用を抑えても最低限の条件を満たすシステムを構築しやすいサービス体系で、スモールスタートするプロジェクトでも使いやすいといえます。
モダンなアプリ開発とDevOps
先述した通り、モダンなアプリ開発とDevOpsは密接に関連しています。
DevOps(デブオプス)とは、Development(開発)とOperation(運用)を連携する手法の総称で、両者が協力することで迅速かつ柔軟に変化に対応できる開発環境を整えるための考え方や仕組み指します。
DevOpsやCI/CD、またその実践のためにAWSなどのクラウドをうまく活用する方法については、同テーマで実施した過去のセミナーを紹介する記事で詳しく説明しているため、この記事では省略します。リンク先の記事も併せてご覧ください。
AWSでCI/CDを実現するためのツール
よく使われるCI/CDツールやサービスを紹介します。全てリンクを付けていますので、詳細は各サイトをご参照ください。
よく使われるCI/CDツール
まずAWSのサービスでは次の3つに代表されるAWS Codeシリーズが挙げられます。
AWS以外のツールではGitHub関連のもがよく使われます。AWS以外のクラウドも含めてさまざまな環境へのデプロイやテストが可能になるツールで、ユーザー数が多く、世に出ている知見も多いので 、おそらくAWSコードシリーズよりもよく使われています。
もちろん、AWSやGitHub以外の選択肢もあります。
- GitHub Actions:開発プラットフォームGitHubに付属するCI/CDツール
- GitLab CI/CD, GitLab Runner:オープンソースの開発プラットフォームGitLabのCI/CDツール。GitHubが使用できない場合におすすめ
- CircleCI:Circle CIが提供するCI/CDツール。複数のプラットフォームに対応
- ArgoCD:Kubernetesへのデプロイを自動化するCI/CDツール
AWSでのCI/CDを便利にするサービスやツール
AWS上で動くサービス
- AWS Amplify:ウェブアプリやモバイルアプリを簡単に構築
- AWS Lambda:インフラを管理することなくコードを実行
AWSへデプロイするためのツール
- Serverless Framework:サーバレスなアプリケーションを管理・デプロイできるツール
- AWS SAM(サーバーレスアプリケーションモデル):サーバーレスアプリケーションを簡単に構築できるオープンソースフレームワーク
- AWS CDK:一般的なプログラミング言語(PythonやJavaScript)でAWSリソースを構築
普段からこうしたツールの採用を検討している方以外は、このリストだけを見ても役に立たないかもしれませんが、今後モダンな開発手法の実現をめざす機会があれば、便利なツールの存在を知っておくことで、少しは役に立てていただけるのではないかと思います。
モダンアプリ開発は今後どう進化していくのか?
現在のモダンアプリ開発やCI/CD役立つツールについて説明してきましたが、アプリ開発用のツールはこの数年間でもどんどん進化しています。今後も進化し続けていき、これからはプログラミングの知識を必要としないノーコード化が進んで、クラウドインフラの構築などがさらに容易になっていくと予想されます。
例として、2022年の12月にAWSのカンファレンスイベント「AWS re:Invent」にて、プレビュー版が公開された2つのサービスを紹介します。
AWS Application Composer
AWS Application Composerは、AWS上のサーバレスアプリケーションをビジュアルエディタで構築できるサービスです。ドラッグ&ドロップで作業できるので操作は簡単に覚えられます。
かつては深い専門知識を持つ人でないとインフラ構築は難しい時代がありましたが、現在はAWSの使い方を学べばインフラ構築が容易にできるようになりました。さらに今後はAWSの知識もあまり必要なくなっていき、マウスでポチポチと作業するだけで誰でもインフラが作れるようになっていく可能性があります。
このAWS Application Composerも、まだ大規模な基幹システムなどに活用するのは難しいとしても、ちょっとした社内用ツールを試しに自作してみるようなレベルであれば十分活用できるのではないかと思います。
Amazon CodeCatalyst
Amazon CodeCatalystは、AWSにおけるソフトウェア構築を迅速にするための統合開発サービスで、わかりやすくいうとAWS版のGitHubのようなものです。
Amazon CodeCatalystの特徴はCI/CDをビジュアルエディタで構築できることで、操作は簡単に覚えられます。また、AWSがこれを提供することにより、ユーザーがいろいろなツールの知識を持っていなくてもAWSのサービスを組み合わせるだけで簡単にCI/CDが実現できるようになってきているのです。
AIでインフラ構築からコーディングまで
今後の進化を考えるとAIの活用も大きなテーマです。最近話題のChatGPTをはじめ、作業効率化に役立つさまざまなAIツールが開発されています。これらはシステム開発にもかなり使えるもので、たとえばGoogle Bardに「AWS SAMを使ってAWS Lambdaでアプリを動かしたいです」と伝えると、その手順を詳しく教えてくれます。
今後はインフラ構築の手順などがわからなくても、学習に時間をかけずにAIに聞けば全部教えてもらえるような時代になっていくのかもしれません。
コードを自動生成できるツールもあります。たとえばGitHub Copilotにコメントで「samでつくるLambdaのサンプル関数」と書くとサンプル関数を自動的に書いて提案してくれます。
こうしたAIによるコードの生成や、コードの最適化ができるサービスはすでに開発者の間では有名です。
AWSもAmazon CodeWhispererというAIコーディング支援サービスを提供しています。
いずれも新しく出てきた、まだ使い方が確立されていないものなので、セキュリティ上の懸念から重要なシステム開発にこれらのツールをいきなり導入するのは難しいかもしれませんが、リスクを正しく認識し、用途を限定して適切に使用すれば、業務でこれらのツールを活用できる可能性は十分にあります。
DevOpsやCI/CDのご相談はNCDCへ
NCDCは、クラウドネイティブなシステムの設計や、柔軟なシステム運用を可能にする先進的な開発手法などの知見・技術を豊富に有しており、アプリ開発からDevOps、CI/CDの導入支援まで、さまざまなサービスを提供しています。
またAWSの「内製化支援推進AWSパートナー」に参画しており、AWSのユーザー企業がモダンアプリ開発チームを社内に立ち上げる支援をしています。
DevOpsやCI/CDの必要性は感じていても導入のハードルが高いとお悩みの方は、ぜひ一度NCDCにご相談ください。
こちらも併せてご参照ください