アプリケーション開発において、コンテナ技術の重要性が高まっているようです。金融IT分野のアプリケーション開発を生業としているサイオスグループの株式会社キーポート・ソリューションズ(以降:弊社)では今回、流行りに乗り遅れまいとレッドハット社が提供するコンテナベースのアプリケーションプラットフォーム「OpenShift」を触ってみることにしました。
実際、触るのは「これから」なのですが、今後数回にわたり以下のような観点で「OpenShift」を触ってみて、開発者視点でのメリットやデメリット、疑問点とその解決策、良い使い方がないか、などを探ってみたいと思います。
まずは、第1回目となる本記事では、「OpenShift」を触ってみることになった背景、目的、今回やってみたい内容などをご紹介したいと思います。
背景
以前、ポケモンGoが話題になったときにサーバ側処理が気になって調べたことがあります。Googleクラウド、Googleコンテナエンジン、Kubernetes、Dockerといったあまり馴染みのなかったワードが・・・。それまで、コンテナに対して、“便利なことができるんだろうなぁ“程度に思っていた私にとって、コンテナの有効性を初めて身近に感じた一件となりました。
さて、現在のIT業界において、コンテナの存在は急激に注目され始めています。そんな中、「OpenShift」はDocker、Kubernetesの機能に加えて、DevOpsに便利な機能を有すると謳われています。
OpenShiftによって、現課題は解消できる?開発の生産性は上がるの?運用は容易になるの?といった素朴な疑問を解消するためにもまずは触ってみよう!ということになりました。
- アプリケーションを開発するにあたって現在の課題 (同じような課題をお持ちのベンダーさんは多いはず・・・)
- 保守、開発しているシステムが多数あるが、システムごとに開発環境を用意しており、OS、M/W、フレームワーク、開発言語などさまざまで、環境が乱立している。
- システムごとに環境や手順や異なるため、ナレッジを共有できず属人化している。(サーバ環境だけでなく、ローカル端末の開発環境も様々で、自分のPCは色んなツールがいっぱいで動きが重い。)
- 素朴な疑問
- 乱立している開発環境や手順など、本当に効率化できる?
- 開発における生産性、スピードは本当に上がる?
- DevOpsっていうけど、運用側のメリットって一体何?
- コンテナによる環境の標準化の方法って?
- また、標準化するために必要な下準備の内容とは?
などなど・・・。
そして、ひょっとするとこんな夢も叶えられるのでは?と次第に思うように・・。
- このような課題や疑問を解決することは開発効率を上げることだけではなく、疲弊しがちな開発者のストレスも軽減し、ワークライフバランスまで改善したりするのかも・・・
- 流行りのコンテナ技術を活用することによってDevOpsを実現するソリューションを提供することができるようになり、本分野における先駆けのSIerになれるかも・・・
- そして、技術者個人としてもスキルアップできるかも・・・
目的
「OpenShift」を導入したとしても、使いこなせなければ効果は出ないはず。
というわけで、下記のような目的で「OpenShift」を触ってみることにします。
- 目的
- メリット、デメリットを明確にする。
- 弊社のような開発ベンダーが利用するための情報を整理する。
- お客様環境に適用するための情報を整理する。
確認する内容
今後「OpenShift」を使って何をするか、を考えてみました。
基本的には、開発者視点で触ってみたいので、下記3点を試していきたいと思います。
① 環境を作る。
② OpenShiftをアプリケーション開発で利用する。
③ OpenShiftをアプリケーション運用で利用する。
■確認する内容
⇒「① 環境を作る」
- 大変な部分はどこ?・・・みんなが詰まる部分を洗い出したい。
- 必要な作業項目は?・・・今後、他の人が構築し易いようにTODOリストを作りたい。
- 注意点すべき点はどこ?・・・パフォーマンス、リソース、設定などサイジングを考える上での元ネタを集める。
⇒「② OpenShiftをアプリケーション開発で利用する。」
「OpenShift」を触ってみる過程において、一番やってみたいことが盛りだくさんなのは、やはりアプリケーション開発です。
今回は弊社で持っている既存システムを試験的に移行し、軽微なPG改修を実施してみながら、以下の観点で確認したいと思います。
- ビルド、デプロイの作業負荷は軽減できる?
- システムの移行はスムーズにできる?
- 複数システムの開発は容易にできるか?
- 複数の開発メンバーによるビルド、デプロイ時の制御はできるか?
- オーケストレーション機能ってどんなもの?
- gitやJenkinsとの連携がスムーズにできるか?
- ローカル端末の開発環境構築時の作業負荷は軽減できるか?
⇒「③ OpenShiftをアプリケーション運用で利用する。」
開発ベンダーとして「OpenShift」を利用する場合、その運用面においても気になる点がいくつもあります。
運用面においても前述の「②アプリケーションを開発する」にて移行、改修したシステムを用いて、以下の観点で確認したいと思います。
- 開発環境用のコンテナを、そのまま本番環境にデプロイできるか?
- パラメータを利用して簡単にコンテナ環境を構築することができるか?
- 複数の開発メンバーによるビルド、デプロイ時の効率的なコンテナ管理方法は?
- OS、M/W等のアップデートを自動化できるか?(もし試せれば。。)