PagSeguro
Canais iMasters

PHP

Arquitetura PHP: Decisões

A tomada de decisões sobre o que utilizar pode ser mais complexa do que parece, apesar de já termos em mente algo que seria mais adequado para uma arquitetura com base no que já utilizamos ou mesmo nas novidades apresentadas pela comunidade, sempre temos que avaliar a realidade do cliente e o foco do projeto, e isso pode mudar completamente o direcionamento das decisões.

Entendam como cliente, uma empresa seja pública ou privada, que solicita a definição de arquitetura para um determinado escopo. Entendam como você, uma pessoa física (programador) ou jurídica (Software House e afins).

Vamos começar a pensar um pouco nas situações, onde agregaremos complexidade a cada caso:

Caso 1 – Sistema One

Um sistema simples, onde o cliente quer apenas funcionando sem integração com outros e não precisará fornecer os fontes.

Seria o melhor dos mundos para um serviço expresso, ou seja, utilizar frameworks que forneçam geração de código, bibliotecas prontas e afins. Como o sistema não terá que integrar com nenhum outro, seria o caso perfeito para freelancers, afinal, não haveriam impacto nas escolhas. Se houvesse suporte trabalharia dentro do seu centro de domínio de conhecimento, o que facilitaria qualquer mudança.

Caso 2 – Sistema Two

Um sistema genérico, que será modificado conforme perfil do cliente, adicionando e removendo módulos.

Isso é muito comum em pequenas e médias empresas, que trabalham com produtos específicos e agrega valor ao sistema adicionando módulos. Nesse ponto a arquitetura a ser utilizada precisará fornecer suporte a esta funcionalidade, é importante pensar se os módulos gerados manterão integração com os demais projetos, testes de integração ajudarão bastante na hora de determinadas mudanças, os módulos com peculiaridades específicas de um cliente devem ser tratados de forma diferente dos módulos genéricos.

Escolhas devem ser ponderadas pensando no reaproveitamento de módulos para outros projetos. O centro de conhecimento envolve basicamente o mesmo produto, o que possilita reuniões para discussões e decisões com todos os envolvidos.

Caso 3 – Sistema Corp

Vários sistemas, com integração entre aplicações de diferentes plataformas, manipulando informações corporativas e regras de negócios específicas.

Situação comum nos ERPs e em empresas de grande porte e mesmo o governo, onde há vários sistemas envolvidos, é onde se percebe a efetividade das definições tomadas. É necessário pensar não apenas em um projeto, mas em vários. Se cada equipe/projeto definir sua própria arquitetura, os conflitos nos ambientes podem ter resultados catastróficos, impactando em maior custo para migrar/alterar ambientes, gerenciamento de componentes e afins.

As definições para integrações entre os sistemas não podem ser unilaterais, devem contemplar outras plataformas! Nesse ponto começa-se a ignorar discussões de linguagens: PHP, Java, .Net, Delphi, etc. Já que as soluções precisarão atender qualquer uma, visto que há possibilidades de integrações internas e externas, impossível não pensar em webservices e eternizar as discussões: SOAP, REST, RESTful, WS-* e equipes defendendo seus pontos de vista e tecnologias.

Área de Arquitetura

Já pensou em todas as equipes de projetos discutindo os assuntos sobre linguagens, plataformas e soluções diferentes? Nessa hora é que faz sentido ter uma área para cuidar dos problemas que surgirão, filtrando as decisões unilaterais, fazendo tomadas de decisões com foco no plano estratégico da empresa, pensando no melhor para a corporação e não exclusivamente para o projeto.

Esta área que deve ser composta por representantes que tenham conhecimento adequado para tais discussões, que sejam formadores de opiniões, tenham domínio técnico suficientes e flexibilidade para resolver conflitos.

Convenhamos, muitos desenvolvedores com nível elevado de conhecimento, não aceitam facilmente o fato de um grupo definir essas regras, mas não há como se concentrar em desenvolver um produto e conhecer todos detalhes corporativos da empresa, inclusive dos que seu projeto não se relaciona.

Uma área de arquitetura por sua vez, consegue focar os esforços em estudar as melhores soluções, criar e definir regras que facilitem o desenvolvimento, documentar e organizar os componentes, manter o que é corporativo sempre atualizado, integrado e pensar em todos os outros projetos: legados, atuais e novos.

A tarefa não é fácil, os prazos sempre são complicados, os sitemas legados mal documentados são um fardo enorme e dificultam muito o trabalho, mas com planejamento adequado consegue-se excelentes resultados.

O que se ganha com isso?

  • Padronizações de codificação, nomenclaturas, desenho de arquitetura, que auxiliarão os desenvolvedores a trabalhar em vários projetos de forma uniforme.
  • Redução de tempo com definições e testes de componentes.
  • Centralização de componentes/bibliotecas corporativas, melhorando manutenibilidade.
  • Redução da curva de aprendizagem, já que todos trabalham no mesmo padrão;
  • Melhor gerenciamento de recurso nas fábricas de software, já que o impacto de mudar um desenvolvedor de projetos fica restrito ao conhecimento de negócio.
  • Melhoria na interoperabilidade, já que tendo uma equipe de arquitetura as comunicações de integrações corporativas são facilitadas, seguindo um padrão único é possível aninhar atividades para que se dê como concluídas apenas quando todas as plataformas sejam contempladas.

Considerações

Tenho certeza que o assunto merece muito mais conteúdo, mas o objetivo é contextualizar os tópicos de forma simples e espero tê-lo alcançado.

Até o próximo tópico. Aguardo seus comentários.

Walker de Alencar Oliveira

Walker de Alencar Oliveira

é formado em Desenvolvimento Web, desenvolve software desde 1997. Atua como arquiteto PHP/Web no Fundo Nacional de Desenvolvimento da Educação(FNDE). É grande entusiasta por padrões, qualidade de código, documentação, PHP, OOP, SOA e afins. É palestrante desde 2008, com participação em eventos regionais e nacionais.

Leia os últimos artigos publicados por walker_de_alencar_oliveira


Comente também

19 Comentários

Marcelo Rodrigues
Marcelo Rodrigues

Grande Walker,

Muito bom o artigo. Como já conversamos, sinto falta desse tipo de artigo e eventos focados no assunto em PHP.

A sua iniciativa certamente é o início para alavancar a área de arquitetura no Brasil. Parabéns.

Daniel Maffioletti
Daniel Maffioletti

Eu ando questionando minhas qualidades como programador, principalmente quando vejo assuntos tão importante como este. Eu ainda estou no "melhor dos mundos", espero um dia pensar assim.

Felipe Moura
Felipe Moura

Fala Walker,

Realmente os profissionais de php estão cada vez mais experientes e se faz necessário cada vez mais artigos nessa linha pois a arquitetura do projeto é um ponto crucial para o sucesso da aplicação.

Bacana o artigo, parabéns amigo!

Xico Tevez
Xico Tevez

Tu falas do escopo do PHP, mas é também importante avaliar outras linguagens que podem ser oportunas para o projeto em questão. A análise deve ser mais ampla objetivando entregar um software melhor (na minha opinião). Contudo, parece que há um padrão para desenvolvimento: PHP e MySQL.

Fazer a escolha da melhor linguagem, banco de dados, framework, metodologia de desenvolvimento, protocolos de comunicação, etc. requer que entendamos os aspectos essenciais de cada tecnologia, o que custa tempo, então acaba-se por escolher o mesmo de sempre.

Walker de Alencar Oliveira
Walker de Alencar Oliveira

Não existe melhor linguagem, existe aquela que se adequa melhor para a necessidade do cliente.
Trabalho com PHP e Java e já trabalhei com Delphi, Clipper e ASP. Cada uma tem sua especificidade, hoje para web prefiro trabalhar com PHP, assim como vejo Java indispensável para mobile e desktop.

PHP e MySQL pra sites é muito bom, mas para sistemas de médio e grande porte é natural migrar para um BD mais consistente como POSTGRES e para casos mais robustos ORACLE. Atualmente trabalho com PHP e Oracle, ou seja, o que define o padrão é a necessidade do cliente.

Abraços.

Rafael
Rafael

Boa!

Mariana Bulhão
Mariana Bulhão

Como PHP é um sistema de difícil compreensão, a sua linguagem textual lógica, o torna acessível ao público em geral (os leigos como eu); Na vida precisamos de profissionais que nos instruam a caminhar pelo lado mais fácil. Excelente!

CesarDraw
CesarDraw

Mandou bem!

Rebertweb
Rebertweb

Muito interessante o seu artigo, realmente é um assunto muito importante em nosso meio. Parabéns.

Adão Francisco C Gonçalves
Adão Francisco C Gonçalves

Grande Walker,
primeiramente te parabenizo pelo artigo.
Um dos seus exemplos (Caso 3 – Sistema Corp) caracteriza bem a realidade que vivencio em meu trabalho atual. Uma empresa que não é de TI, mas tem um a equipe de TI própria, da qual faço parte.
Estamos mudando totalmente do ambiente Linux para Microsoft, além de integrar os sistemas desenvolvidos com outros proprietários. Por exemplo, autenticação via LDAP no AD e replicação de autenticação nos DBs e etc.
Bem, o ponto é que nossa tarefa seria menos trabalhosa se tivéssemos todos os sistemas sistematicamente padronizados, como você sugere. A conseqüência da falta inicial da adoção de padrões de codificação, de padrões de projetos, centralização de bibliotecas (por exemplo) é a necessidade de um refactoring dos sistemas, que é o que estamos fazendo.
É um tema importante à ser abordado. E nunca a tarde para “padronizar”.
Um grande abraço.

Walker de Alencar Oliveira
Walker de Alencar Oliveira

Adão,

A questão é que a área precisa ser estabelecida e segue um processo de adequação onde se identifica a arquitetura atual (AS-IS) e projeta-se a arquitetura futura(TO-BE), com base nessas informações é possível iniciar o processo de Análise de Defasagem (GAP-Analysis) e montar os mapas diretores(Roadmaps) com os quais é possível acompanhar a evolução da arquitetura.

Qualquer empresa que começar passará por esse processo de maturação da área, ou seja, é para todos, mas não adianta começar hoje e querer resultados amanhã, leva-se tempo, afinal o legado precisa evoluir e essa é a mais árdua tarefa que os arquitetos de software enfrentarão no processo.

Renato Duarte
Renato Duarte

excelente artigo!!

Walker Nolasco
Walker Nolasco

Artigo muito bem escrito e esclarecedor. grande iniciativa! Abraços.

Wyndson Alencar
Wyndson Alencar

Grande maninho, fico feliz de ver um artigo tão bacana e esclarecedor, continue avançando, não pare nunca, não desista, siga em frente, de seu irmão que te admira!

Afinal .... você foi um bom aluno UahahahahAhahahahhahaha :)
E pra me lascar o aluno está superando o mestre ! hahahahahhah!

Daniel Menezes
Daniel Menezes

Parabéns pelo artigo, primo.
É exatamente isso que acontece na empresa onde trabalho. Imagina só uma Empresa Pública presente em todos Estados sem padronização e sem essa equipe voltada para tomada de decisões !!!? Seria um CAoS total.
Forte abraço

Walker de Alencar Oliveira
Walker de Alencar Oliveira

Daniel,

Não é novidade, a maioria das empresas públicas estão se conscientizando da necessidade da área, e estão buscando profissionais para realizar essas atividades dentro da empresa, o maior problema é enfrentar a quebra de paradigmas que a mudança de cultura causará na empresa, pois mexe na zona de conforto de muitos profissionais, que se garantem pelo conhecimento retido de projetos chaves dentro das empresas.

Creio que em alguns anos estaremos discutindo esses assuntos mais corriqueiramente... espero... :)

Jairo Marra
Jairo Marra

E ae Walker , blza??

Mandou bem no artigo. Ta morando em Bsb ?? Abraco

Eric Teixeira
Eric Teixeira

Mandou bem fiote, gostei do artigo.

Parabens :D

Seu irmão ta se gabando do que ai rsrsrsrs.

Abraçosssss.
Inté.

Waldeyr Mendes
Waldeyr Mendes

Walker Alencar = Referência para assuntos de arquitetura. O Exército Brasileiro que o diga. Colaborou muito conosco

Qual a sua opinião?

Comentários considerados ofensivos serão moderados.

Parceiros

IBM
PagSeguro
Internet Innovation
Dialhost
HostNet
Tecla
KingHost
DotStore
Dinamize