Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

100日後にエンジニアになるキミ - 94日目 - 開発環境 - 仮想化について

昨日までのはこちら

100日後にエンジニアになるキミ - 91日目 - 運用 - 監視について

100日後にエンジニアになるキミ - 90日目 - 開発 - CIについて

100日後にエンジニアになるキミ - 88日目 - データ - データ転送について

100日後にエンジニアになるキミ - 86日目 - データベース - Hadoopについて

100日後にエンジニアになるキミ - 76日目 - プログラミング - 機械学習について

100日後にエンジニアになるキミ - 70日目 - プログラミング - スクレイピングについて

100日後にエンジニアになるキミ - 66日目 - プログラミング - 自然言語処理について

100日後にエンジニアになるキミ - 63日目 - プログラミング - 確率について1

100日後にエンジニアになるキミ - 59日目 - プログラミング - アルゴリズムについて

100日後にエンジニアになるキミ - 53日目 - Git - Gitについて

100日後にエンジニアになるキミ - 42日目 - クラウド - クラウドサービスについて

100日後にエンジニアになるキミ - 36日目 - データベース - データベースについて

100日後にエンジニアになるキミ - 24日目 - Python - Python言語の基礎1

100日後にエンジニアになるキミ - 18日目 - Javascript - JavaScriptの基礎1

100日後にエンジニアになるキミ - 14日目 - CSS - CSSの基礎1

100日後にエンジニアになるキミ - 6日目 - HTML - HTMLの基礎1

本日はに開発における仮想化についてです。

仮想化について

一般的にIT業界で仮想化というとサーバーの仮想化のことを指すと思いますが
デスクトップ仮想化などもあります。

サーバーの仮想化は1台のサーバー上で複数の仮想サーバーを運用することを言い
デスクトップ仮想化はサーバー上でPCのデスクトップ環境を再現する事を言います。

サーバー仮想化の手法

サーバーは物理的には1台です。仮想化はソフトウェアによって
ハードウェアとしての物理的なリソース(CPU,メモリ,HDD,ネットワーク)などは共有し
その上に物理的な台数以上のサーバーが稼働しているように見せかける事になります。

image.png

参考:https://www.kagoya.jp/howto/rentalserver/virtualization/

サーバー上に複数のOSを載せることになるため、用語の区別として
サーバー自体のOSの事をホストOSホストOSの上で稼働するOSの事を
ゲストOSと言っています。

仮想化のソフトウェアとしてはVMware,Hyper-V,Xenなどがあります。

また、最近のクラウドサービスの仕組みもこの仮想化の技術によって支えられており
AWS EC2などではOSやCPU、メモリを選択してゲストOSを作成します。

ゲストOSはバックアップを取ることができるため、万が一壊れてしまっても
すぐに復旧させることができるのが仮想化のメリットでもあります。

ゲストOSについては仮想マシン(VM)とも呼んだりすることがあります。

デスクトップ仮想化

デスクトップ仮想化はサーバ上においたPC環境のデスクトップ画面を
遠隔地でも接続可能にし、セキュアな環境で利用する技術です。

端末側にデータやアプリケーションを置かずに
サーバ側にアクセスして処理する仕組みのため
ネットワーク環境さえあれば、場所や端末を問わず
安全にPC環境を利用することができます。

image.png

参考:https://jpn.nec.com/solution/dtvsol/about/index.html

最近ではリモート業務も進んできているため
こう言ったデスクトップ仮想化を活用する事で
セキュリティーレベルをあげ
情報漏洩などを防ぐことが出来るようになります。

こちらもVMwareなどで実現することができます。

仮想化のメリット

コスト削減

サーバーはフル稼働していなければ、リソースが余ることになります。
複数台のサーバーでリソースが余っている状態は
無駄なコストが発生していることになります。

サーバーのリソースをフル活用するために
仮想化を利用して台数を減らすことで
コスト削減を図ることができます。

電気代やサーバーの管理費、リプレース時のコストも下がる形になります。

拡張性

クラウドでの話になりますが、拡張性が高いというのが挙げられます。
ハードウェアを買い増すには増設計画を立てて稟議を通し
手続きなど手順を踏んだ上でようやく増設になります。

それでは急激なトラフィックの上昇に間に合わないので
こう言った手続きの手間暇を軽減させ
柔軟にサーバーの台数を変更できるのが
クラウドで仮想サーバーを使うメリットです。

繁忙期には増やし、閑散期には減らすと言ったことも容易であるので
運用コストも下がります。

耐障害性

物理的なサーバーのハードウェアに障害が発生した場合でも
仮想化したOSであれば他のサーバーに移行して利用することができます。

このような耐障害性に優れている点も仮想化の大きなメリットです。

仮想化のデメリット

処理能力

仮想化はサーバー上のソフトウェアで行うものであるため
パフォーマンスは物理的なサーバーの性能に依存します。

そもそもそこまでスペックの良くない機種での運用の場合
仮想化することで逆に処理能力が低下してしまうことも考えられるため
導入前に十分な性能が出せるのかを検証しておく必要があります。

運用体制

仮想化するにはどこで何のOSが動いて何を行なっているのか
整理をしておかなければなりません。
仮想化の技術に関する知識も必要であるため
運用面では学習コストなども考慮しなければなりません。

またバックアップや起動停止などの手順も複雑になるため
専門の知識は必要になってきます。

セキュリティー面

仮想化を行うことで、1つの物理サーバーに多数の機能が集約される
形になるためより一層セキュリティーを強化する必要があります。

仮想化の新潮流「コンテナ」

仮想化と言えば一昔前はゲストOSを用いた仮想化がほとんどでした。

最近ではコンテナと呼ばれる技術が出てきています。

image.png

参考:https://pfs.nifcloud.com/navi/tech/container_virtualization.htm

従来の仮想化では1台の物理マシン上にはホストOSが起動し
そのOS上で複数のゲストOSが稼働していました。

しかし仮想化ソフトを使用した仮想化環境にもデメリットがあります。
複数OSを利用することによる性能劣化や
仮想化ソフトウェアの介在による複雑化などがあります。

そこで注目されているのがコンテナです。

コンテナホストOS上にアプリケーションの起動に必要な
アプリケーション・ライブラリ・設定ファイルなどをひとまとめにした
コンテナを作成しコンテナエンジン上で動作させる技術のことです。

通常の仮想化と似ている点もありますが、大きく異なる点として
ゲストOSを用いないということです。

コンテナではゲストOSを起動することなく
アプリケーションの実行環境を構築することが可能になるため
仮想マシンに比べて少ないリソースで済むのが特徴です。

このようなコンテナ技術を牽引するソフトウェアとしては
dockerと言うものがあります。

image.png

コンテナのメリット

まずは開発環境の作成が容易になるというのが大きなメリットです。
開発環境を1から作成するにはかなりの時間を要することがあります。

コンテナ環境ではあらかじめ作成したコンテナを配布することで
比較的容易に開発環境の構築ができます。

加えて仮想化に比べてリソースの消費量が少ないので
負荷が小さくて済むのも大きなメリットです。

これにより、開発・更新のペースが早い現場では
かなりの工数削減が期待できます。

コンテナのデメリット

まずは比較的新しい技術であるため
学習コストがそれなりにかかるという事です。

複数のコンテナを運用する際の管理も
複雑になり大変だということもあります。

また開発の頻度が少なくリソースも少ない現場では
導入のメリットが少ないです。

まとめ

仮想化の技術はインフラエンジニアにとっては欠かすことのできないものです。
当然、ソフトウェアの開発エンジニアにとっても開発環境の整備は重要なので
押さえておく必要があります。

最近ではOSの仮想化に変わる、コンテナ技術が出て来て
モダンな開発現場ではほぼほぼ100%に近い割合で浸透して来ています。

これからエンジニアとして働きたい人にとっては
こう言った技術体系を抑えておく必要もあります。

君がエンジニアになるまであと06日

作者の情報

乙pyのHP:
http://www.otupy.net/

Youtube:
https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter:
https://twitter.com/otupython

otupy
乙pyと申します 主にデータを取り扱う仕事をしてたりします。 使用言語 Python , Javascript , SQL Youtubeチャンネル 乙py https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw/featured
http://www.otupy.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away