<< Chapter < Page Chapter >> Page >
  • comportamento no tempo ou desempenho , ou a capacidade do sistemade alcançar a resposta dentro do período de tempo especificado.Aqui, referimo-nos a tempos de resposta, latência, tempode processamento, vazão ( throughput ), etc. Vale observar que, aomedir essa característica, devemos também entender ascondições em que o sistema está operando. Afinal, no [link] , mesmo que o HSearch tenha umtempo de resposta menor que o Google Web Search, o primeiroé capaz de servir a apenas um milésimo da quantidade deusuários servida pelo segundo.
  • uso de recursos , que é a capacidade de o softwareexigir mais ou menos recursos de acordo com suas condiçõesde uso. Normalmente, essa característica também é chamada de escalabilidade e pode também ser vista de outra maneira: como a adiçãoou remoção de recursos no sistema vai melhorar ou piorar as condiçõesde uso. Existem dois tipos mais comuns de escalabilidade,que também servem para facilitar o entendimento dessa característica: escalabilidade vertical e escalabilidade horizontal . Eles podem ser melhor explicadospor meio de um exemplo:

    Vamos considerar um sistema servidor de arquivos. Esseservidor de arquivos usa apenas um disco rígidoe é capaz de servir a cinco usuários simultâneos, cadaum usando 10 MB/seg de banda passante (fazendo upload ou download ). Vamos desconsiderar osefeitos da rede que liga os clientes ao servidorou qualquer outro gargalo. Podemos dizer que as condiçõesde uso do software são: 5 usuários simultâneosa 10 MB/seg cada.

    No [link] , uma forma de melhorar as condiçõesde uso, ou mais especificamente, aumentar a quantidade de usuáriossimultâneos, seria seria substituir um dos recursosdo sistema por outro com maior capacidade . Ou seja, escalar verticalmente.

    (continuação do exemplo anterior)

    Vamos substituir o disco rígidodo servidor por um que seja capaz de transferirarquivos no dobro da velocidade do anterior. Desta maneira,se o disco rígido fosse o único fator limitante,conseguiríamos não mais servir 5 usuários a 10MB/seg, mas sim 10 usuários simultâneos a 10 MB/seg,como ilustrado na [link] . Além disso, poderíamosseguir melhorando verticalmente o sistema até encontrarmosum limite, que pode ser tanto o limite na velocidadepossível para um disco rígido quanto o limitefinanceiro de comprarmos um disco mais rápido.

    Escalando verticalmente um sistema.
    Outra forma de escalar o sistema seria horizontalmente.Desta maneira, não substituímos um recurso por um melhor, mas adicionamosum novo recurso ao sistema de modo que ele faça usotanto do recurso velho quanto do novo .

    (continuação do exemplo anterior)

    Ao invés de necessariamente comprar um disco rígidomais rápido, compramos um novo disco (que podeaté ser igual ao anterior) e fazemos com que o softwaredivida a carga de escrita e leitura entre os doisdiscos rígidos. Esta abordagem está ilustrada na [link] .

    Escalando horizontalmente um sistema.
    Note que a solução do [link] não vem de graça: além da camada de software ficar mais complicada,há o impacto na eficiência – possivelmente, o tempo deresposta será afetado, uma vez que uma operação do usuárioterá que agora decidir qual disco rígido usar. No entanto,a vantagem desta solução reside no fato de que o teto de desempenhocom a adição de novos discos será mais alto que o teto alcançávelcom discos mais rápidos. Além disso, há um limite de discosrígidos que podem ser utilizados por um mesmo sistema operacional.Para expandir ainda mais o limite de discos rigídos sendousados simultaneamente, o próximo passo seria adicionar maisuma máquina servidora, o que deixaria o software ainda maiscomplexo, pois este agora teria que decidir entre discos presentesem máquinas diferentes e assim por diante. Esse é apenas umexemplo de técnica de se alcançar escalabilidade horizontal.No próximo capítulo, quando falarmos de técnicas de design,apresentaremos outras abordagens e padrões de design para aescalabilidade.

Get Jobilize Job Search Mobile App in your pocket Now!

Get it on Google Play Download on the App Store Now




Source:  OpenStax, Arquitetura de software. OpenStax CNX. Jan 05, 2010 Download for free at http://cnx.org/content/col10722/1.9
Google Play and the Google Play logo are trademarks of Google Inc.

Notification Switch

Would you like to follow the 'Arquitetura de software' conversation and receive update notifications?

Ask