【技術解説】AWSでビルド・デプロイできるCircleCIとは?|CI/CDサービスの概要から実装方法を解説
みなさんこんにちは。Wakka Inc.日本拠点のインフラエンジニアの金です。
アジャイル開発の浸透やテストの自動化の需要が高まる昨今のアプリケーション開発において、開発工数の一部をツールに任せる動きが主流となっています。特にテストやビルド、デプロイはプロジェクトが大きくなると作業負担が大きいため、それを解決するためのCI/CDサービスが注目されています。
AWS上で動くWebアプリケーションにおいてもCI/CDサービスを利用して自動ビルド・デプロイが可能です。特にCI/CDサービスの中で人気があるのがCircleCIになります。今回はCI/CDサービスの基本概要やCircleCIのメリット、AWSに実装する方法を解説しますので興味のある方はぜひ参考にしてください。
●開発リソースの不足にお悩みなら●
>>>Wakka.Inc独自の海外子会社設立サービスがおすすめ!
無料でサービス資料をダウンロードできますのでぜひご覧ください。
CI/CDサービスとは?
『CI/CD』とは、継続的インテグレーションと継続的デリバリーを意味し、開発工数に自動化を取り入れて開発効率を高める手法のひとつです。一般的にはCI/CDサービスを実現するためにツールを用います。ツールが自動化する部分は下記の通りです。
- テスト
- ビルド
- デプロイ
エンジニアの方であればテストやビルド、デプロイに多くの時間を要した経験がある方も少なくないでしょう。もっともわかりやすいビルドで説明すれば、プロジェクトが小規模であれば、短い時間でビルドを終了させることができます。しかし、プロジェクトが大規模になってくるとパッケージングする工数が多くなるので、負担が増大するのがわかるでしょう。
また、デプロイにおいても本番環境で動くようにするためには、パッケージを整える必要があり、多くの時間を要します。CI/CDサービスを利用すれば、これらの作業をコンピューターが自動で行ってくれるため、工数の大幅削減が見込めるというわけです。
ちなみに、有名なCI/CDツールとして下記のようなものを挙げることができます。
- Jenkins
- Travis CI
- AWS CodeBuild
- CircleCI
この中でも歴史が長いのがJenkinsです。JenkinsはJava上で動作し、LinuxやWindowsでも使用することができるため、比較的に人気のツールでした。しかし、プロダクトが大きくなってくると特定のエンジニアしか保守管理できなくなるという懸念材料が登場したのです。業務の属人化によってエンジニアに作業を引き継げない、辞めてしまったら保守できなくなるというリスクがあり敬遠する動きもあったのです。
しかし、CircleCIの登場により多くの企業がCI/CDを利用しやすくなりました。次は具体的にCircleCIの概要についてチェックしていきましょう。
CircleCIとは?
『CircleCI』とはテクノロジーを主導している組織が成果を得られるように、テスト・デプロイの自動化を実現するCI/CDサービスです。柔軟性が高く、スタートアップ時にも対応しやすくなっています。また、LinuxやMacOSなどの主要OSだけでなく、SaaSやファイアウォールの内側でも動作するという点が特徴です。CircleCIはクラウドCI/CDサービスとしてもっとも成功を収めたツールになります。
さらに、CircleCIは属人化を防ぐことができるCI/CDサービスとして注目を集めています。CircleCIにはCircleCI Orbというビルドコマンド及びパイプラインを使用することが可能です。これによりAWSなどあらゆるサービスと連携することができ、従来のものに比べてより多くの人が利用しやすいようになっています。
CircleCIを導入する4つのメリット
CircleCIを導入するメリットは、下記の4つです。
サーバー管理をする必要がない
1つ目のメリットは、クラウドサービスであるという点です。
Jenkinsはオンプレミス型に分類されます。そのため、サーバー管理を自分で行う必要があるのです。
一方、CircleCIは完全に管理を任せることができます。しかし、デプロイまで許可するときは自社のシステムネットワークに侵入するアクセス権を付与しなければなりません。そのため、セキュリティが気になる人は有料のEnterprise版を使用するといいです。
無料で利用できる
2つ目のメリットは、無料ではじめることができるという点です。
Freeプランは無料クレジットが1週間で2,500、並列処理可能なジョブ数は1など、少ない制限があります。しかし、プロジェクトが初期の段階では十分に使用すること可能です。また、後に上位プランに拡張することもできるため、規模が大きくなってきたらプランを変更することもできます。
情報が豊富
3つ目は、情報が比較的豊富なことです。
CircleCIはツールの中でも有名でクラウドサービスとして成功しています。また、無料で利用することができるため、インターネット上に多くの情報が公開されているのです。これにより、調べながらAWSに導入することができるので、CircleCIの利用経験が浅いエンジニアでも実装できる可能性があります。
SSHを利用できる
4つ目は、SSHを利用できることです。
SSH接続を利用して特定のジョブにビルドの問題をデバッグすることができます。問題が発生したときにSSHで原因を探ることができるので非常に便利です。
【おすすめ資料】海外開発拠点の設立を検討されていますか?
【保存版】成長企業が導入するWakkaのラボ型開発
>ラボ型開発を進めるポイントとWakka inc.の『独自の海外子会社設立サービス』を紹介した資料です。ぜひあわせてご覧ください。
AWSでビルド・デプロイできるCircleCIの導入方法
AWSと連携を図るためには、CircleCI Orbsを使用します。実際にCircleCI Orbs使った導入手順を解説していきます。
1.まずIAMユーザーを作成し、そのユーザーに読み取り権限を与えます。
$aws iam create-user \
--user-name cdci-user
$ aws iam attach-user-policy \
--user-name cdci-user \
--policy-arn arn:aws:iam::aws:policy/AmazonS3ReadOnlyAccess
2.アクセスーを取得します。
aws iam create-access-key \
--user-name cdci-user
3.次に、CircleCIのワークフローを作成してください。今回は隠しファイルcircleciの中にconfig.ymlを作成しました。
$mkdir .circleci
$cd .circleci
$touch config.yml
4.config.ymlを編集し下記のコードを追加します。使用言語などはご自身の環境に合わせてください。
version: 2.1
# このプロジェクトで実行するジョブの定義
jobs:
build:
docker:
- image: circleci/: #ご自身の使用言語とバージョンに合わせてください。
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # DockerHubのパスワードを入力
steps:
- checkout
- run: echo "this is the build job"
test:
docker:
- image: circleci/: #ご自身の使用言語に合わせてください。
auth:
username: mydockerhub-user
password: $DOCKERHUB_PASSWORD # DockerHubのパスワードを入力 steps:
- checkout
- run: echo "this is the test job"
# ジョブの実行順の指定workflows:
build_and_test:
jobs:
- build
- test
4.完了したらリポジトリをプッシュします。
5.CircleCIからプロジェクトをセットアップしてください。
6.AWS_ACCESS_KEY_ID、AWS_SECRET_KEY_ID、AWS_DEFAULT_REGIONを設定し、リターンをクリックするとS3バケットの一覧を取得することができます。
CircleCIをAWSで使用する際の2つの注意点
CircleCI OrbはAWSとの連携を容易にしますが、注意点が2つあります。注意点を知ることで思わぬトラブルを回避できますのでぜひ参考にしてください。
非対応バージョンを使用しない
CircleCI Orbを利用するためには、CircleCIのバージョンは2.1以上である必要があります。バージョンが低い場合、対応していないためAWSで連携することはできません。バージョンアップをするなどの対策を行ってください。
IPアドレスが毎回変わる
CircleCIはクラウドサービスです。そのため、ビルドする度に毎回IPアドレスが変動します。IPが変動することを覚えておくと思い通りに行かなくなったときの手がかりになる可能性があるでしょう。
CircleCIをAWSに導入して開発工数を削減しよう
今回はCI/CD サービスの概要やCircleCIのメリット、AWSに導入する手順を解説しました。テスト・デバッグ・デプロイの自動化は、開発効率に大きな影響を与えます。そのため、AWSでも可能な限り導入するのがおすすめです。
本ブログでは、Webアプリ開発を進めるCTOやVPoEのようなエンジニアの方にも役立つ情報を心がけて紹介しています。またブログを運営しているWakka Inc.ではITコンサルティングに加えて、オフショアラボ型開発や海外子会社設立サービスなど成長期でリソース不足に悩む企業におすすめのサービスも提供しています。
特に自社サービスなどでWebアプリケーション開発を進めていくには多くのリソースを要しますが、国内企業に委託するとかなり多くの費用が必要になりますが、Wakka Inc.のサービスを活用することでコストパフォーマンス良く柔軟な開発リソースを確保することができます。気になる方に向けて弊社役員が主催する個別セミナーなども開催していますので、まずはお気軽にお問い合わせください。
【おすすめ資料】海外開発拠点の設立を検討されていますか?
【保存版】成長企業が導入するWakkaのラボ型開発
>ラボ型開発を進めるポイントとWakka inc.の『独自の海外子会社設立サービス』を紹介した資料です。ぜひあわせてご覧ください。
前世は社内ネットワーク部門でインフラ担当していました。当時4Uサーバーの重さに限界を感じ、クラウド推進派に。Wakka Inc.の日本拠点にインフラエンジニアとして参画し、サーバー・ネットワーク全般を担当。最近はDocker・CI/CDなどに取り組んでいます。