1. HOME
  2. ブログ
  3. エンジニアになろう!
  4. AWS で CI/CD が出来る!CodeXXX ってどんなサービス?
AWS で CI/CD が出来る!CodeXXX ってどんなサービス?

AWS で CI/CD が出来る!CodeXXX ってどんなサービス?

CI/CD って知ってる? AWS でも使えます!

にゃんこ師匠にゃんこ師匠
いきなりにゃんこ師匠クイズーー♪
CI/CD」とはにゃ~んだ?
ほい、回答者ミツオカ!
ミツオカミツオカ
えー…。
めんどくさいノリやめてもらってもいいですか?
ええと、「Continuous Integration/Continuous Delivery」のことです。
にゃんこ師匠にゃんこ師匠
正解じゃ!
「CI」は、ソフトウェア開発時のビルドやテストを、継続的に自動化することじゃの。
では、「CD」はどうじゃ?
ミツオカミツオカ
CI でビルドした資産をデプロイできる状態にして、サーバにデプロイするまでの流れ…ですよね?
にゃんこ師匠にゃんこ師匠
(ボケるかと思ったのに…)
う、うむ、その通りじゃ! では、AWS で CD/CI を行う方法を伝授してやるぞい!

AWS で使える「CodeXXX」サービスとは?

CI/CD を実現する方法は様々ですが、AWS(Amazon Web Services)でも簡単に実装できます。

それが、AWS の提供している「CodeXXX シリーズ」です。

本記事では、AWS で CI/CD を構築する方法を説明します。

CI/CD のメリットと実装方法

実際のシステム開発では、以下の流れをとることが多いと思います。

  1. 実装したソースのコミット(CI)
  2. コミットしたソースの静的解析及びビルド(CI)
  3. ビルドした資産のデプロイ(CD)
  4. デプロイした資産のテスト(CD)

一昔前は、これらの工程を1ステップずつ、手動で実施することもありました。

しかし、近年はシステムが大規模となり、複雑化していることも多いため、自動化を検討するケースがほとんどです。

この「コミット~デプロイ」までを自動化するのに役立つのが、CI/CD です。

CI/CD のメリット

大規模開発はアジャイル型が向いている

エンジニアの方は、ウォーターフォール型で開発を行った経験も多いでしょう。

ウォーターフォール型は基礎的な開発手法ですし、何より全体の計画が立てやすいです。

しかし、大規模で複雑なシステムの場合は、わずかな仕様変更が甚大な影響を及ぼしたり、各フェーズからなかなか先に進まず、開発スピードが遅れるという欠点もあります。

このような問題を解決するのが、「アジャイル型」での開発です。

アジャイル型なら、開発スピードも速く、仕様変更時の影響も最小限に抑えられます。

CI/CD はアジャイル型の欠点を克服する

アジャイル型での開発では、開発する機能を一定の規模でまとめ、継続的に「開発、テスト、リリース」のサイクルを回します。

ウォーターフォール型の場合、テストフェーズまで進んだ後、仕様変更が必要になると、大きな手戻りが発生する恐れがあります。

しかし、アジャイル型なら、一度に開発する規模が小さいため、たとえ問題が発生しても手戻りは比較的抑えることができるのです。

ただ、そんなアジャイル型の開発手法にも「工数の増加」という問題があります。

小分けの機能ごとに、「開発、テスト、リリース」のサイクルを何度も繰り返さなければならないからです。

しかし、CI/CD を使うことで、この手間が改善されるのです。

オンプレミスでの CI/CD の実現方法

CI/CD をオンプレミスで実現する場合は、Jenkins や SVN、そして Git が役立ちます。

「Jenkins」は、オープンソースの CI/CD 構築支援ツールです。

【Jenkins】
https://www.jenkins.io/

ただし、Jenkins だけで簡単に CI/CD を実現できるわけではありません。

ソースコードやドキュメントなどの管理が別途必要なので、プロジェクトの特性に合わせて、SVN や Git を併用して構築するのが一般的です。

にゃんこ師匠にゃんこ師匠
CI/CD はそう一筋縄ではいかんのじゃ!
ミツオカミツオカ
Code XXX サービスは、どこまでハードルを下げてくれるのか、見ものですね

「CodeXXX」は4つの機能がある

クラウドサービスの AWS では、自社提供のマネージドサービスを利用した CI/CD の実現が可能です。

AWS で CI/CD を実現したい場合は、主に以下の4つの機能を利用します。

  1. AWS CodeCommit
  2. AWS CodeBuild
  3. AWS CodeDeploy
  4. AWS CodePipeLine

それでは、順番に各機能を見ていきましょう!

①AWS CodeCommit

「AWS CodeCommit」は、作成したソースをコミットする仕組みです。

Git ベースなので、経験者であれば簡単に実装できると思います。

ただし、Git とは大きく違うのが「完全マネージド型」であることです。

つまり、ソース管理サーバの管理が、飛躍的に簡単になるのです。

例えば、オンプレミスのサーバに Git を導入した場合、「ソース管理サーバのスペック不足」や「サーバ維持が大変」なのが悩みどころですよね。

しかし、「AWS CodeCommit」なら、スペック不足でもスケーリングが簡単にできます。

AWS のマネージドサービスとして動作するため、サーバ維持の手間からも解放されますよ。

②AWS CodeBuild

「AWS CodeBuild」は、コミットされたソースをビルドする仕組みで、先述の Jenkins に近いサービスです。

「AWS CodeBuild」では、以下のようなことが可能です。

  1. ソースコードのコンパイル
  2. ソースコードのテスト
  3. デプロイ可能なパッケージ化の作成

メリット:完全マネージド型

Jenkins との決定的な違いは、やはり「完全マネージド型」であることです。

例えば、オンプレミスでビルドを行う場合を考えてみましょう。

ビルド作業はサーバーのリソースを消費することが多いため、ビルドしている時間帯は、そのサーバが重たくなります。

また、開発が佳境に入り、頻繁にビルドが必要になってくると、ビルド待ちが発生することもあります。

しかし、「AWS CodeBuild」では、こんな心配は一切無用

「AWS CodeBuild」自体がクラウドサービス上の個々の機能として動くからです。

サーバーが重たくなることも、ビルド待ちが発生することもありません。

デメリット:金銭面の負担が増える

デメリットは、AWS は従量課金制のため、ビルドの分だけお金がかかるということです。

オンプレミスのサーバでビルドするなら、消費するのはマシンのリソースだけなので、他にお金がかかるということはまずありません。

システムの開発規模にも拠りますが、「AWS CodeBuild」の利用料だけで、月1万を超えることも結構あります。

どうしても余計な費用を払いたくないのなら、AWS 上のサーバである EC2インスタンスに Jenkins を導入するという手もあります。

こうすれば、オンプレミスとほぼ同様の構築ができる上、お金もかかりません。

ただ、筆者としては料金を払うだけのメリットがあると思うので、可能であれば「AWS CodeBuild」を採用する方をおすすめします!

③AWS CodeDeploy

「AWS CodeDeploy」は、サーバにビルド資産を自動でデプロイできます。

デプロイを手動で行う場合、デプロイ先を管理するのは非常に大変です。

例えば、以下のようなケースが考えられます。

  1. A ビルドを行って作成した「AAAA.war」は、A サーバと B サーバにデプロイする
  2. B ビルドを行って作成した「BBBB.war」は、A サーバと C サーバにデプロイする
  3. C ビルドを行って作成した「CCCC.war」は、D サーバと E サーバにデプロイする

※以下、ビルドの数だけデプロイ作業を繰り返す

完全に手動で行う場合、エクセルなどで上記の情報を管理し、エクセルを睨みつつデプロイ作業をする…ということがわりとあります。

手動でのデプロイはミスの元であるため、真っ先に自動化が検討されるべき作業です。

ちなみに、デプロイ先のサーバは自由に決められます。

④AWS CodePipeLine

「AWS CodePipeLine」は、ユーザー側で自由にパイプラインが構築できる機能です。

上記3つの CodeXXX シリーズを連動させて実行したり、オプションとして必要な機能を追加することもできます。

CodeXXX シリーズを使うならマストな機能

CodeXXX シリーズは、単体でも利用可能ですが、この「AWS CodePipeLine」を使ってこそ真価を発揮します。

小規模な開発であれば、CI/CD を組むよりは、CI 部分だけを利用した方が効率的な場合もあるでしょう!

しかし、大規模で複雑なシステムの場合は、ぜひ「AWS CodePipeLine」を使って CI/CD を構築するのがおすすめです。

その方が、全体的にかかる時間が削減され、システムの品質も上がることが期待できます。

最初は学習が面倒に感じるかもしれませんが、CI/CD での自動化の効力は大きいですよ。

にゃんこ師匠にゃんこ師匠
どうじゃ?
これで CI/CD 実現がだいぶ簡単になったじゃろ?
ミツオカミツオカ
はい、AWS 様々ですね~!

さいごに

以上、AWS での CI/CD の実現方法とそのメリットを説明しました。

クラウドブームの昨今、クラウドサービスを利用した開発の需要は年々高まっています。

それだけでなく、IT 技術の発達と変化の激しい現在、システム開発も大規模かつ複雑になる傾向があります。

  1. AWS を利用する
  2. 大規模かつ複雑なシステム開発である

上記のような条件を満たす場合は、ぜひ「AWS Code XXX シリーズ」の利用を検討してはいかがでしょうか?

こちらの記事もオススメ!

さいごの一言

にゃんこ師匠にゃんこ師匠
せっかく AWS を利用するなら、こうした便利な機能も覚えておきたいものじゃな!
ミツオカミツオカ
はい!
使える機能は何でも使った方がお得ですもんね!
せっかくお金払ってるんですから!
にゃんこ師匠にゃんこ師匠
お、おう…
(ミツオカはケチじゃもんな…)
ミツオカミツオカ
おい…
また、「ケチだな」とか思ったんじゃないのか?猫ジジイッ…!
にゃんこ師匠にゃんこ師匠
え、え…
心の中読めちゃうスタンド持ってる系の人ー?

書いた人はこんな人

ライトコード社員ブログ
ライトコード社員ブログ
「好きなことを仕事にするエンジニア集団」の(株)ライトコードです!
ライトコードは、福岡本社、東京オフィスの2拠点で事業展開するIT企業です。
現在は、国内を代表する大手IT企業を取引先にもち、ITシステムの受託事業が中心。
いずれも直取引で、月間PV数1億を超えるWebサービスのシステム開発・運営、インフラの構築・運用に携わっています。

システム開発依頼・お見積もりは大歓迎!
また、WEBエンジニアとモバイルエンジニアも積極採用中です!

ご応募をお待ちしております!

関連記事

採用情報

\ あの有名サービスに参画!? /

バックエンドエンジニア

\ クリエイティブの最前線 /

フロントエンドエンジニア

\ 世界を変える…! /

Androidエンジニア

\ みんなが使うアプリを創る /

iOSエンジニア