Como conceber aplicações para computação em nuvem, onde várias nuvens podem estar envolvidos

StackOverflow https://stackoverflow.com/questions/1619650

  •  06-07-2019
  •  | 
  •  

Pergunta

Acabei de olhar para esta questão: https://stackoverflow.com / perguntas / 753122 / que-cloud computing-platform-deve-i-escolha

Mas, eu não estou certo o que devo fazer na concepção de um pedido de engenheiros de segurança, de modo que um alto tempo de atividade é importante.

Então, se meu aplicativo é escrito em ASP.NET, utilizando SQL Server, parece que a minha melhor aposta é a de projetar para Azure, mas que a solução da Amazon ser uma boa escolha? Como eu iria decidir se eu deveria apenas ter tudo no mesmo sistema ou ter os dados em nuvem da Amazon e do ASP.NET em Azure?

Eu tenho um outro aplicativo que eu estou trabalhando em que lida com informações de utilidade, de água e electricidade, para que haja uso e faturamento info, e estava escrito em PHP usando SQL Server. Será que isso é um possivelmente boa aplicação para computação em nuvem? Parece que a solução da Amazon seria a melhor solução para PHP, então minha única opção, mas, como você decide quais partes de suas ofertas para uso?

Basicamente a minha pergunta é sobre a arquitetura do aplicativo. Projetando para hospedagem é fácil, mas a computação em nuvem acrescenta novos desafios.

A minha principal preocupação é puramente no projeto da minha candidatura.

Se eu decidir sobre a linguagem, faz que me trancar em uma solução de nuvem?

Quando eu iria querer o banco de dados estar em uma nuvem diferente da aplicação?

Se eu quiser usar a estrutura LIFT (escrito em Scala) que algum deles me permita instalar o que eu preciso?

Foi útil?

Solução

Nós corremos um bastante grande SaaS de serviços financeiros na Amazon AWS.

Há duas questões gerais em jogo aqui:. Aplicação Arquitetura e Cloud Platform Serviços

Eu descobri que a nossa arquitetura de aplicação é essencialmente o mesmo que seria se estávamos implantando em casa máquinas virtuais ou hardware real. Nós criamos um aplicativo de n-Tier bastante normal utilizando ferramentas de código em sua maioria abertos (Java, Spring, Hibernate, MySQL, terracota, ...). Há algumas considerações quando se trata de um banco de dados tolerantes / erro de alta disponível (desde opções baseadas em hardware não estão disponíveis), mas outras que nós realmente não "alvo" uma implementação de nuvem particular.

A Plataforma de Serviços de Nuvem é outra questão inteiramente. Por isso, quero significar coisas como:

  • Iniciar / Parar / Monitoramento / Gerenciamento / Escala casos
  • disponibilidade / redundância (por exemplo, a Amazon tem Zonas de disponibilidade)
  • Implantação / Inicializar / Configurando instâncias
  • Backup File / recuperação
  • Segurança (por exemplo firewall controle)

Há pouca ou nenhuma padronização nessa área, no entanto, que é uma área de interesse ativo.

Em termos gerais, você provavelmente vai querer arquitecto sua aplicação de uma forma de nuvem neutro, mas irá criar procedimentos operacionais que são muito específicas.

Com relação à divisão da apresentação e DB entre os diferentes prestadores, eu não sugerem que porque:

  • Se qualquer provedor vai para baixo, você está para baixo
  • A transferência de dados através da Internet é mais lento, mais caro, e menos segura do que a transferência de dados dentro de um provedor de nuvem.

Uma melhor utilização dos vários provedores de nuvem seria implantar cópias inteiras de seu aplicativo para dois ou mais, balanceamento de carga em toda a dois ou, eventualmente, ter um em hot standby em caso foi a principal para baixo. Se você capturar dados transacionais, porém, você precisa de uma estratégia para conciliar dados capturados no ambiente de espera. Isso pode ou não ser viável, dependendo da natureza da sua aplicação.

Geralmente você pode instalar qualquer software que você gosta em seus servidores virtuais, embora eu não tenho experiência específica com Azure. Se você usar o AWS ou serviços semelhantes, a instalação de elevador não será um problema.

Outras dicas

Decidir sobre um idioma não trancá-lo em um provedor; No entanto, projetar para rodar em Windows faz. Virtualização do Windows é um mercado mais restrito muito de virtualização Linux; Xen, o Linode tecnologia, Slicehost, e assim por diante usar, não vai virtualizar o Windows mais de uma vez.

Com os aplicativos direcionados para Windows, suas escolhas são decididamente mais fino. Na minha mercado, eu sei que atende Amazon para Windows (como faz Azure, obviamente). No entanto, mais soluções de baixo custo como a nossa e Slicehost de não -. Windows irá custar-lhe um prémio

Como para segregação nuvem: a principal razão para segmentar a sua aplicação em vários "nuvens" é fornecer confiabilidade do aplicativo. Nuvens que ir para baixo - na verdade, raramente - e ter todos os seus ovos em uma cesta vai custar-lhe para uma aplicação que requer alta disponibilidade. Com seu banco de dados em uma nuvem separada da sua aplicação, no entanto, você vai sofrer latência para fazer SQL através da Internet (além de exigir alguma arquitetura para proteger o tráfego, como um túnel SSH, ou criptografia em nível de protocolo que oferta pode SQL Server [realmente não sei, eu sou um cara PostgreSQL]).

Não caia na armadilha de pensar que a nuvem de hospedagem é tão diferente de hospedagem. Na verdade, eles são quase os mesmos. Na minha empresa, temos a opinião de que a nuvem de hospedagem é apenas uma nova forma de pensar sobre o mesmo 'hosting ole. Não é nada mágico.

Para projetar para nuvem de hospedagem, a sua aplicação só precisa de ter capacidades de fragmentação e estar ciente de que nós podem ser adicionados ou removidos a qualquer momento. Isso não é terrivelmente difícil de conta para dependendo de como você arquiteto-lo; Normalmente, apenas uma aplicação de balanceamento de carga é mesmo ciente da semântica específicos de nuvem.

É o alvorecer de "Cloud Computing" e como com qualquer tais decorrentes, os competidores estão colocando seus "ratoeiras" esperando para pegar o maior número possível. Vai levar algum tempo antes que os jogadores vêm para a definição de uma base comum (normas ou seja, de alguma forma ou de outra) e, até então, suas armas de "diferenciação" nos forçará a escolher um dos lados.

Eu acho que isso é muito "orientada para negócios" e ele vai ficar rejeitada .. mas hey, eu penso sobre os aspectos do negócio antes a tecnologia / linguagem. No final do dia, tudo se resume a fazer o dinheiro.

Se alguém pensa sobre não está sendo bloqueado para um fornecedor de Cloud Computing (SaaS / PaaS tipos enquanto que o tipo fornecedores de IaaS são mais adiante), este no início do jogo, bem, você está em algum grandes surpresas. Fogo de distância!

IMPORTANTE: Não estou representando um fornecedor de Cloud Computing de qualquer tipo (SaaS, PaaS, IaaS). Será que as pessoas que me votou contra o cuidado de identificar a sua lealdade?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top