部署内クラウドはじめました
OpenStackをベースにした部署内クラウドを、当社の実績をもとにご紹介します。
テクノロジーコラム
- 2017年04月06日公開
部署内クラウドとは
OpenStack開発のプロであるNTTテクノクロスは、NTTグループのOpenStackビジネスを支えています。
グループを支えるばかりで紺屋の白袴にならぬよう、NTTテクノクロス内でOpenStackの新機能検証、運用改善、開発ノウハウの更なる向上を目指すべく、OpenStackベースの部署内クラウドを立ち上げました。
部署内クラウドはOpenStackだけではなく開発や運用に必要な周辺技術や、CI/CD DevOpsに必要なフレームワークを備えており、
基幹システム等の従来型情報システム(System of Record :SoR)の開発・試験効率を上げることはもちろんのこと、
進化や変化のスピードが速いSoE分野(System of Engagement )の開発にも適応可能なフレキシブルなインフラ基盤を提供しています。
また、開発や技術支援などで蓄積した成果を部署内クラウドに集約することで、ビジネスを強力に支援するリポジトリへブラッシュアップしていきます。
はじまり
事の発端は、とある製品開発チームからの要望でした。
「試験工程でバグが見つかって、リグレッション試験がほぼ頭からやり直しで辛い」
「CI/CDが出来るとリグレッション試験楽になったのかな」
「DevOpsやCI/CDを試してみたいんだけど、気軽に出来る環境って用意できませんか。
できればツールも一式揃えてくれると助かる。
そういえばOpenStackチームってCI/CD得意だったよね。」
「パートナー会社の拠点からも使えると嬉しいな。」
「社員全員がアクセスできるように設計してね。もちろん在宅勤務でも出張先でも使えるように。」
「今パブリッククラウド使ってるけど高くて...。もっと安くならない?」
「こんなツールあるんだけど、試しに動かすからみんなに使ってもらってフィードバックを貰いたい」
Oh.....。
という無茶な要望から部署内クラウドの開発はスタートしました。
今回はそんな部署内クラウドの利用者は普段どのように使い、
ユースケース
最新版のOpenStack検証
日々変化するOpenStackコミュニティのコードの品質を確保するために、CIの仕組みを利用して最新版のOpenStackで継続的な試験を独自でも行っています。
Master版のOpenStackの構築、Tempestによる自動試験、環境の破棄を毎日のように繰り返すことで、バグを発見しコミュニティに報告+修正パッチ作成のサイクルを社内に形成することができています。
当社製品開発
部署内クラウドにはCI/CDやDevOpsを簡単に実現できる仕組みを取り入れています。
利用者はAnsible,Serverspec,Jenkins.Gitlab,Zabbix,MattermostといったCI/CDやDevOpsを実現するためのツールを利用できます。
これらを自動構築、自動試験、自動監視等を利用することで自社製品の開発効率や試験効率をあげることができています。
また、ここで開発された製品や技術的なノウハウは部署内クラウド側にも適用されることがあり、部署内クラウド自身の成長にも繋がっています。
部署内クラウドを使って製品開発をしている例
・TrustShelter
営業ツールの一つとして
営業活動の際には、自社製品が実際に動いているシステムのデモを見せたい場合があると思います。システムというものはなかなかに説明が難しく、資料よりも実物を見たほうが製品のイメージが掴み易いことが多いです。
部署内クラウドは社内にVPN接続をすれば、社外のどこからでもアクセスできます。自社製品のデモを社外や展示会等での活用や、お客様に実際に操作を体験してもらうことで製品の知識を深めてもらうことができます。
研修環境として
社内の勉強会・研修だけでなく、社外研修でも部署内クラウドは利用されています。
最近では、当社のお客様にOpenStackのハンズオン研修で実際にOpenStackを操作してもらい、管理者はどのように日々運用するのが良いのか、障害が発生した場合にはどのように対応すればよいのかの研修を行いました。
この研修環境は、受講者それぞれ事に異なるOpenStack環境を部署内クラウド上に用意したもので、異常系の研修でも他の受講者や普段の利用者に影響することなく行うことができました。
※画像は研修イメージです。
在宅勤務の後押しに
開発環境はVPN経由でアクセス可能なため、ロケーションを選ばずにアクセス可能です。
社内にアクセス可能な端末さえあれば、自宅からでも、出張中でもアクセスできます。
出社しなくてもいつでもどこでも部署内クラウドにアクセスできるため、在宅勤務の推奨にも貢献しています。
ちょっとした実験に
当社の社員が「ちょっと新しい技術試したいんだよねー」とか「こんなの作ったから使ってみてよ」とか、そんな環境としても部署内クラウドは使われています。
議事録用にetherpadを建てたり、新しいバージョンの○○を試したり、技術研鑽の場としても使われています。
運用体制
ここからは部署内クラウドの運用面についてご紹介します。
Dev + Ops
部署内クラウドの場合はDevOpsの体制を取っていますが、開発者と運用者が一緒に開発するわけではなく、開発者がOpsのツールを用いて運用もしています。
開発者が運用もすることで、実際に運用している人が何に困っているのか、何を課題にしているのかを開発者自身が体験し、改善に繋げる。こんなフィードバックも部署内クラウド開発のミッションのひとつでした。
しかし開発者が運用も行うことには課題もあります。開発者・運用者として活動しなければならないので、今まで開発者がやらなかったところの課題が続出し、開発計画に支障が出ることもありました。
・セキュリティパッチ適用
・設備増設
・部署内クラウドのシステム障害対応
・利用者のトラブル対応
部署内クラウドではこれらの課題に対して運用自動化と、利用者へ一部運用ツールを解放することで負担を減らすことにしました。
パッチ類や設備増設に関しては後述のCI/CDの仕組みを使って仮想環境で事前検証し、同じCI/CDの仕組みで本番環境へ適用できるようにすることで、今までは人手で検証、リリースしなければいけなかったところが自動化でき、開発者の運用負担を減らすことができました。
運用対処の自動化を推奨しており、対処が必要なものはansibleとjenkinsで自動化をしています。
また、俗人的なノウハウ(構築方法・使い方・高度な復旧方法)もOSSのredmineやknowledgeに集約することで、○○さんがいないと対処できない等の運用にならないようにしています。
セルフサービスの利用方針
システム管理者にとって負担となる仮想資源の作成作業ですが、
部署内クラウドでは仮想サーバ、仮想ネットワークの作成削除等OpenStackのAPIをすべて利用者自身が行えるようにしています。
申請は最初のアカウント申請のみで、最短5分で利用可能になります。
払い出したアカウントが許す範囲内であれば、GUI,CLI,APIを活用して自分好みの活用方法ができるので、使い方に制限を持たせないことで、使用者が利用したいときに利用したい分だけすぐに使える環境のため、普段の開発効率化にも繋がっています。
従来の仮想化方式と比較して、VMが使えるようになるまでの待ち時間が無いのがうれしいようです。
問い合わせ対応
セルフサービスで何でも好きに使ってよいとしても、利用者の障害対応は避けて通れません。
問い合わせ対応によって開発者の開発時間を奪わないために、部署内クラウドにはログ解析基盤のELK stackを導入し、この機能を利用者に開放しています。
利用者自身でOpenStackのログを見ることができるので、発生したエラーが基盤側なのか、利用者のミスなのかの切り分けを利用者自身も行えるようになっています。
従来の問い合わせ方式では、
エラー発生 -> 利用者が問い合わせるための情報収集 -> 問い合わせ -> 開発者がログ解析 -> 原因判明 -> 利用者へ報告 -> 利用者が対処
というフローですが、この方式にすることによって
エラー発生 -> 利用者がログ解析 -> 原因判明 -> 対処
となり、対処までに掛かる時間と問い合わせ頻度が大幅に短縮されました。
利用者にOpenStackの専門家が多いことがなせる荒業ではありますが。
当然利用者の全員がOpenStackの専門家ではないので、全社員が利用できる社内チャット「TopicRoom」にて問い合わせ用のチャットルームを用意しています。
使い方や困りごとに対して利用者同士でも、アドバイスを行える環境があることで、開発者の負担も少し減りました。
また、利用者がどのように使おうとして、どのように困っているのを知ることもでき、開発者へのフィードバックにも繋がる良いサイクルが形成されました。
今後の展望
部署内クラウドは何かをするためのフレームワーク、インフラでしかないので、
これを活用した事例や利用者が増え、相乗効果でノウハウ・技術が蓄積されることによって、利用している方々が新しいことにチャレンジできる土壌を育めたらいいなと思ってます。
4月1日より、NTTソフトウェアはNTTテクノクロスに社名が変わりましたが、部署内クラウドを活用してよりよい製品開発に努めてまいります。
今回の記事に関してご質問のある方や、OpenStackの導入や運用にご興味のある方は、ぜひ弊社にお問い合わせください。
OpenStack®はOpenStack, LLCの登録商標又は商標です。