Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

システム開発における基盤環境のCI/CDについて#2

75 views

Published on

システム開発で用いる開発用環境や試験用環境は数があるほど、開発者にとって利用しやすいかもしれませんが、メンテ作業やコストがかかる事になります。
自社内でもこのような問題については課題であります。
これまでの自社内の実績や、現在検討している内容を踏まえて、今回基盤目線でどういった構成で作っていくのが良いかを述べていきたいと思います。
その第2回です。開発環境について考えていきたいと思います。

Published in: Engineering
  • Be the first to comment

  • Be the first to like this

システム開発における基盤環境のCI/CDについて#2

  1. 1. システム開発における基盤環境の 継続的インテグレーション/継続的デリバリー(CI/CD) - 第2回 - 株式会社シイエヌエス 基盤システム事業部 COPYRIGHT (C)CNS Co., Ltd. All rights reserved.
  2. 2. はじめに • 今回からは、アプリ開発側の工程ごとに必要となる環境について、 基盤として必要な環境について考えていく。 • 今回は、以下の図の破線で囲った工程について記す。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 2 基本 設計 要件定義 詳細 設計 アプリ開発 コーディング /ビルド 単体 試験 結合 試験 システム 試験 維持 サービス イン 基本 設計 要件定義 詳細 設計 コーディング /ビルド 単体 試験 結合 試験 システム 試験 維持 サービス イン 追加アプリ 開発
  3. 3. 開発工程で必要となる環境 開発工程(コーディング~単体試験)にて必要となる環境について、 以下に記す。 ① コーディング環境 ② ビルド環境 ③ 単体試験環境 ④ ソースコード/ライブラリ管理環境 ⑤ 結合試験 ※次回予定 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 3 コーディング ビルド 単体試験 ライブラリ登録 結合試験
  4. 4. 開発環境 • 開発工程における作業環境 • コード作成については、サービスを行う実環境でなくてもよい。 • コード作成後にビルド確認や単体試験も合わせて、実行できることが 望ましい。 • ライブラリなどは同じ資材を使用して開発できることが望ましい。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 4
  5. 5. 開発環境 • 開発作業をどういった環境で提供するのが良いか。 ① 開発者が作業用で使用している端末を使用する。 ② 開発専用の共通環境を構築し、開発者に共同利用して貰う。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 5
  6. 6. 開発者作業端末を利用した開発環境 • 開発者が作業用で使用している端末を使用する場合。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 6 説明 メリット • 開発者が通常使用している端末を中心に開発環境を構成するため、 構築が必要となるサーバは少なく済む。 デメリット • 開発者の端末に開発用ツールを導入してもらうことになるため、人ごとに 環境差異が発生しやすい。
  7. 7. 共同利用環境を利用した開発環境 • 開発専用環境を構築し、開発者が共同利用することで統一された ライブラリやツールの条件下で開発を行うことができる。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 7 説明 メリット • 同一環境で開発することになるため、開発者による開発環境の差異は なくなる。 デメリット • 基盤として共通環境の構築が必要となる。 • 開発専用環境にアクセス可能な場所にいなければいけない。 オフショアなどの環境からは利用できない可能性がある。
  8. 8. 共同利用開発環境構成イメージ COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 8 開発用サーバ リモート アクセス eclipse git ライブラリ管理サーバ セントラル リポジトリ コントロールサーバ maven ソースコード リポジトリ jenkins maven git JUnit 自身がコーディングした ソースを確認するために 必要なものを導入する。 ... git SonaType Nexus
  9. 9. 開発用サーバの役割 • 開発用サーバを利用する開発者に対して同様の開発ツールを 提供する。 ⇒環境差異によるビルドエラーや単体試験誤りを防ぐ。 • コーディングから単体試験、試験が完了したソースコードの ライブラリ登録までをサポートする。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 9
  10. 10. 開発用サーバでの提供ツール ① Eclipse ⇒後発の統合開発ツールは出てきているが、開発者の多くが既存知識で利 用可能なツールであること考えるとEclipseが優位。 ② Apache Maven ⇒コンセプトを受け継いでいるGradleがあるが、開発者の既存知識を 考えるとMavenが安定して利用できる。 ③ JUnit ⇒テスティングフレームワークとしては、開発者に対して最有力で、 安定して利用できる。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 10
  11. 11. 開発用サーバでの提供ツール ④ Git ⇒バージョン管理ツールはGit以降の後発ツールもでているが、jenkinsなどの ツールにおいてデフォルトでサポートされており、相性が良い。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 11
  12. 12. 開発用サーバに求める性能 No. 要素 説明 1 台数 利用する開発者数および、開発者が実行するツールが使用するリソースを 元に算出する。 2 CPU 同時利用者数と実行ツールの使用量を考慮して算出する。 3 メモリ 同時利用者数と実行ツールの使用量を考慮して算出する。 4 ディスク 利用開発者数と、開発時の使用量から算出する。 開発中はファイルコピーを行いがちで、ビルドに必要となるライブラリを保 持する為容量はそれなりに必要である。 開発中のソースコードは、開発用サーバにのみ存在する事になるため、 ディスクはRAID5以上の信頼性で守っておく方が良い。 開発者は誤ってファイルを削除してしまうこともあり得るため、バックアップ を定期的に取得できるようにしておく。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 12
  13. 13. ライブラリ管理サーバの役割 • 単体試験が完了したソースコードをバージョン管理する。 • ビルド時に必要となるjavaライブラリの管理を行う。 • ソースコードは資産となるため、開発用サーバとは別のサーバにて 管理を行う。 • ライブラリ管理機能自体は、案件に関わらず利用できるもので ある。 • ディスクストレージやメモリのリソースに余裕を持たせて共通サーバ として稼働させることで、価値を高めることができる。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 13
  14. 14. ライブラリ管理サーバでの提供ツール • Git ⇒開発用サーバでの理由と同様。 • Sonatype Nexus ⇒Mavenがビルド時に依存ライブラリを取得するため、リポジトリサーバの が必要。Apache HTTP Serverといったウェブサーバだけでリポジトリサーバを 提供する場合、ライブラリ配置時にマニフェストを作成したりと手間がかかる。 Nexusでjavaパッケージのリポジトリ管理を行わせるのが容易。 ⇒ローカル環境でリポジトリ管理を行わせるのであれば、OSS版でも十分に 活用可能である。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 14
  15. 15. ライブラリサーバに求める性能 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 15 No. 要素 説明 1 台数 1台が稼働していればよい。 ただし、サーバが停止すると、ビルドやライブラリ管理ができなくなるため、 予備機を用意しておく必要はある。 2 CPU ライブラリ管理と、パッケージリポジトリ管理であればCPUリソースを潤沢に 用意するには及ばない。 3 メモリ ライブラリ管理と、パッケージリポジトリ管理であればCPUリソースを潤沢に 用意するには及ばない。 4 ディスク 利用案件での開発規模に応じて算出する。 ストレージはディスク故障を考慮して、バックアップを定期的に取得できるよ うにしておく。
  16. 16. コントロールサーバの役割 • java単体のビルドではなく、javaモジュールまで作成する。 できあがったモジュールを結合試験以降の試験に利用する。 • ソースコードはライブラリ管理に登録されたものを利用する。 • 継続的インテグレーションを行うためjenkinsを用いる COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 16 結合試験以降の工程で利用する ことを目的とするため次回で説明
  17. 17. 次回 • 第3回は、結合試験、システム試験について取り扱う。 COPYRIGHT (C)CNS Co., Ltd. All rights reserved. 17

×