DEVELOPER’s BLOG
技術ブログ
AWSを利用した弊社の開発環境
目次
- AUCの使用ツール
- GitHub、CircleCI使用までの流れ
- AWSの構成図
- まとめ
AUCの使用ツール
弊社ではGitHubとCircleCIの2つのツールを利用し、DevOpsの概念を実現しております。
DevOpsとは、開発者(Development)と運用者(Operations)が強調することで、ユーザーにとってより価値の高いシステムを提供する、という概念です。
開発者は、「システムへ新しい機能を追加したい」
運用者は、「システムを安定して稼働させたい」
この2つの思いが対立することは多く、ユーザーにとって最善の価値提供を妨げる原因となります。システムにとって開発を続けることも、安定して稼働させることも重要です。
そのため、開発手法やツールを選定し、開発者と運用者が連携して、運用のしやすい開発を行うことが必要となります。
弊社では、GitHubとCircleCIの連携によりDevOpsの概念を実現し、システムによってユーザーのビジネスの価値を高め、その価値を迅速にエンドユーザーに届けております。
GitHub、CircleCIまでの流れ
弊社では、2014年からソースコードをGitHubで管理しております。ソースコードは大切な資産であるため、弊社のグローバルIPアドレス以外からのアクセスは完全に遮断したいと導入当初考えておりました。そのため、導入当初はGitHub社からライセンスを購入し、弊社で構築したAWS環境にインストールして利用しておりました。(セルフホストのGitHub)
しかし、クラウドホストのGitHubを利用されているお客様が増加したことで、弊社もクラウドホストのGitHubを利用する機会が増加しました。
一方で、IPアドレス制限を行い、セキュリティを担保する方針を変更し、全てのソースコード管理をクラウドホストのGitHubへ移行することは考えておりませんでした。
そんな中、GitHub社より、セルフホストとクラウドホストの両方を使えるプランを提案していただきました。プラン変更による追加費用が少額であったこともあり、セルフホストのみのプランから、セルフホストとクラウドホストの両方を利用できるプランに変更し、現在も利用しております。
2018年にリリースされたGitHub Enterprise 2.15で導入されたGitHub Connectは、セルフホストとクラウドホストを相互接続するツールで、セルフホストとクラウドホストの両方で必要なコンテンツの効率的な検索を可能にしました。また、GitHub Connectにより、セルフホストで運用する際の柔軟な管理機能とともに、クラウドサービスでの拡張性の両方の利点を活用できます。
そして、弊社では、CI/CDをさらに効率的に進めていくため、2018年からCircleCIを利用しております。
GitHubと同様、弊社のグローバルIPアドレス以外からのアクセスを遮断するため、CircleCIでもセルフホストを利用しています。CircleCIのセルフホストでは、自社独自のCI/CDのニーズに合わせてコンピュートオプションを拡張できます。また、システム管理者によるフルコントロール、フルカスタマイズが可能なため、セキュリティのフルコントロールや、自社のメンテナンススケジュールに合わせた更新間隔にすることが可能です。
AWSの構成図
GitHubとCircleCIの連携により、テストの自動化が可能になります。コードをコミットするたびに、CircleCIによって自動的にビルドとテストのプロセスが実行され、そのビルドのステータスがGitHubのブランチに表示されます。テスト工数の削減により、システムへの機能追加のハードルが下がります。
弊社が利用しているGitHubとCircleCIは、ともに弊社にて構築したAWS上にて動いており、お互いを連携しています。
AWS上の構成図は以下の通りです。
このように、弊社はGitHubとCircleCIを活用し、迅速な開発サイクルを安全に行っております。
まとめ
セルフホストは、クラウドホストに比べて利用価格が高額ですが、大切な資産であるソースコードを外部から守るという目的においては、必要不可欠なものとなります。GitHubの利用におけるホストプラン変更の例において、クラウドホストを一切利用せずにずっとセルフホストだけを利用するという選択をすることもできました。何かを変化させることは、コストも手間もかかります。しかし、弊社では、常に変化し続け、最適なものを模索していくことが重要であると考えております。変化無しには常に最適なものを模索していくことはできません。
また、弊社では、お客様の要望に対して、100%その通りに応じるのではなく、様々な影響や、本当に必要な要件は何かを考え、最善策を見つけ出すことが重要であると考えております。弊社ではこれを「お客様絶対主義」ではない、「お客様中心主義」としています。
これらの「常に変化を求める」姿勢と、「お客様中心主義」は弊社の理念の一つです。
システムを開発する上で効率化につながるツールは今後も積極的に採用していきたいと考えております。
参考文献
GitHub - GitHub Enterpriseとは
GitHub Enterprise 2.15をリリース
CircleCI セルフホストランナー
GitHubとの継続的インテグレーション