Pergunta

À procura de opiniões sobre a modularização de aplicações web. Já a maioria das aplicações, independentemente da linguagem têm um backend de banco de dados e suporte tie-ins com seu respectivo servidor de aplicativos web (Apache, IIS, Lighttp, etc), mas um monte de desenvolvedores Eu lidei com têm problemas chegando a um acordo com o uso Memcached ou qualquer coisa fora do espaço processo imediato do aplicativo web.

É modularização de uma aplicação web como coisa boa uma coisa como eu acredito, ou há algo que eu estou sentindo falta que causas todos do Sr. Developers para CTO de ser hesitante em mudar partes específicas do lógica de negócios para fora da parte dianteira da web fim e em serviços de back-end especializados?

Por exemplo, há alguns anos atrás eu levei um tiro para baixo em uma reunião de concepção do projeto para um muito alto website tráfego quando eu sugeri que rasgar a lógica ACL intensivo processo fora do âmbito front-end e transformá-lo em um serviço semi-clusterable aplicação no backend. Para mim, os benefícios foi uma separação mais clara do código e a capacidade de reutilizar a lógica ACL em vários lugares usando REST / JSON como a ponte entre digamos PHP e Python.

Os desenvolvedores que não concordavam com a minha idéia argumentou que era "muito complicada", mas eu não podia ver como? Meus argumentos são que, assim como não pode haver tag sopa para a camada de apresentação, não pode e muitas vezes é uma sopa lógica do código que está tão entrelaçada juntos que se um problema surge, pode ser quase impossível de realizar um reparo "cirúrgico".

Assim, para reduzi-lo para baixo, quais são do & ou Pro de quebra de grandes aplicações para baixo em processos independentes mas cooperativos (não fios ou sub pedidos) con. MySQL, Memcache, processo serviço similar são grandes ... mas não por qualquer outra coisa? Como está indo por este caminho "muito complicado"?

Foi útil?

Solução

Bem, às vezes "muito complicado" significa "eu não quero pensar fora da minha zona de conforto."

O sons noção básica boa --- você está falando arquitetura orientada a serviços sobre bastante plausível aqui.

Agora, na medida em que os prós e contras, a primeira coisa contra ela é que você do , de fato tem que levar as pessoas a pensar fora de suas zonas de conforto. A con mais técnica é que você precisa para preservar o que é, com efeito, o estado da sessão. Digamos que você pegar o token de autenticação do seu serviço de autenticação; como é esse símbolo vai ficar associada com a sessão de usuário correto.

Outra questão é que ele pode ser mais difícil de debug, uma vez que está acontecendo de forma mais dinâmica.

No lado profissional, porém, se você pode satisfazer a questão de estado de sessão, você tem uma arquitetura altamente escalável; se precisar de mais serviços, você pode ampliar o servidor ou simplesmente adicionar outro servidor.

Outras dicas

Eu sou um fã de separar a funcionalidade lógica do servidor / core business a partir do código do aplicativo web. Isto é para algumas razões diferentes:

  1. Você pode controlar melhor a lógica de negócios. Não haverá maneira de misturar isso com código de GUI e criar uma confusão. Você quer manter toda a lógica de negócio separado para que você possa mais tarde fazer uma API para chamar a funcionalidade de código e não esperamos que nenhuma lógica de negócios fez o seu caminho para o código GUI.
  2. Direito a partir do get-go você tem que projetar uma boa API que você tem que usar-se para se comunicar com o servidor do cliente. O cliente pode ser a interface web ou pode ser um usuário remoto.
  3. Estabilidade. código de web GUI pode ser facilmente escrito errado e consumir muita memória tendo assim abaixo o aplicativo inteiro.
  4. Para dimensionar você pode mover esses componentes separados para diferentes servidores. Se você estiver usando um sistema de cache que já permite o agrupamento ampliação pode ser tão simples como apenas adicionando mais servidores de cache.
  5. Descobri que as atualizações do aplicativo são feitas na maioria das vezes para o código GUI para que o serviço central não tem que ser tomada para baixo a maior parte do tempo.
  6. Segurança. Você pode ter certeza de que o código de segurança é implementado no código do servidor por isso, se alguém usa sua API não será capaz de ignorar qualquer código de segurança que fez o seu caminho para o código GUI.

O nosso sistema tem um serviço de núcleo 'motor' implementado como um aplicativo Java. A aplicação web também é escrito em Java e (atualmente) a comunicação é via RMI. Nosso site / aplicativo está crescendo e nós ainda não tinha que começar a usar um serviço de cache como memcached ou JCS.

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