Virtualização
A virtualização é um recurso fortemente utilizado para uma arquitetura de software de sistemas distribuídos. Ela tem como objetivo simular a execução simultânea de programas. Em um computador monoprocessador essa ilusão de simultaneidade é criada pela rapidez em que o processador alterna entre threads e processos, pois um computador com apenas um único processador pode executar apenas uma thread ou processo por vez.
Pode ser denominada como virtualização de recursos o cenário em que uma aplicação sobrevive a mudanças em outros sistemas como por exemplo o sistema operacional e até mesmo o hardware, devido a sua complexidade e ao fato de os sistemas distribuídos se tornarem mais comuns com o passar dos anos.
A virtualização foi fundamental ao passo que o hardware se atualizava e se modernizava com considerável rapidez, e isso tornava trabalhosa e custosa a manutenção dos softwares.
Um forte motivo para a virtualização ser introduzida em grande escala nos anos 70, foi permitir que softwares projetados para hardwares específicos também pudessem rodar em Mainframes novos que tinham um alto preço de aquisição, como o IBM 370 e seus sucessores que conseguiram executar diferentes sistemas operacionais ao mesmo tempo.
A economia de recursos também se faz presente quando falamos de virtualização, pois ela permite flexibilidade e portabilidade para aplicações e serviços. Até alguns anos atrás era comum empresas, que investiam razoavelmente em T.I., terem um grande número de computadores e servidores conectados por uma rede bem estruturada, pois cada servidor executava um serviço ou uma tarefa específica. Essa estrutura requeria um rigoroso monitoramento por parte dos administradores de rede e de sistemas. Dessa maneira a estrutura dos servidores ficava muito frágil, pois a qualquer falha de um servidor poderia comprometer a disponibilidade do serviço como um todo.
A diversidade de plataformas e máquinas pôde ser reduzida com a virtualização, deixando que