Microframework PHP definição

Micro frameworks em minha observação

Vou descrever um pouco sobre o que tenho aprendido sobre framework PHP e esclarecer um pouco da diferença entre micro frameworks e fullstack frameworks. A comunidade PHP tem se dedicado em desenvolver essas duas frentes para facilitar a criação de novas aplicações, cada uma com suas vantagens. Acredito que podemos chegar a uma definição e esclarecer quando usar.

Proposta de definição

Um microframework é um termo usado para se referir a um framework de aplicação web minimalista. É contrastado com fullstack frameworks também chamados de frameworks entreprise, onde há uma coleção completa de recursos a disposição. Para um micro framework os recursos adicionais são considerados como dependências da aplicação, deixando mais enxuto o mecanismo mínimo de funcionamento.

Um micro framework facilita o recebimento de uma requisição HTTP, roteando a requisição para uma controller apropriada, despachando uma controller e retornando uma resposta HTTP. Além desse recurso talvez alguns adicionais, como log, porém a ideia que recursos sejam dependências do projeto a ser implementado. Como pode ser ilustrado na imagem abaixo:

ex de arquitetura de um microframework
exemplo de arquitetura de um microframework

Um fullstack framework é comum ter um conjunto de recursos para uma aplicação web completa, como:

  • Autenticação, contas, papéis, login, etc.
  • Acesso a base de dados, principalmente através de um mapeamento objeto relacional
  • Validação de entradas e sanitização de input
  • Views e template engine
  • Abstração de sistemas de arquivos

Também pode ser adicionado recursos por dependências em projetos fullstack, porém para uma aplicação web os recursos já existem em boa parte. Como é ilustado na imagem abaixo:

arquitetura de fullstack framework
exemplo de arquitetura de um fullstack framework

Projetos de microframeworks em PHP

Abaixo listei os quais eu consegui captar, eu particularmente uso o Slim framework e tenho um skeleton para usa-lo com o paradgima de Orientação a Objetos PHP em https://github.com/ptcmariano/slim-skeleton-controller

Movimento de microserviços

A proposta desse artigo não é se aprofundar a discussão para o movimento de microserviços, porém acredito que esses projetos de microframeworks vem para facilitar a implementação da estratégia de microserviços. Deve haver relações entre esses movimentos, se alguém tiver referências por favor comentem para que a comunidade tenham melhor entendimento dessa relação.

Conclusão, prós e contras

Podemos observar a diferença principal é que os microframeworks usam dependências para criar as aplicações web, isso traz a vantagem de maior flexibilidade para variar quais dependências você vai escolher para cada projeto, porém há necessidade de administração maios das dependências. Para a escolha de um fullstack framework, tem a vantagem de haver recursos disponíveis para a sua aplicação, tendo também a facilidade de uma única documentação explicar como tratar todos recursos disponíveis, com a desvantagem de carregar recursos que talvez não sejam necessários para o projeto que você irá usar e menor flexibilidade para alterar os recursos que serão usados (não é comum altera-los já que estão disponíveis). Bom com essas informações é possível melhorar a escolha de cada projeto, sendo que pode ser enriquecido a decisão com seus próprios critérios para escolha de um ou outro tipo de framework. Desejo que a próxima vez que tomar a decisão de usar um framework leve em consideração, além é claro de sua experiência, qual é a necessidade do projeto, vai usar poucos recursos? vai experimentar um recurso novo? Com isso você terá a oportunidade de expandir a suas habilidades e a aplicação web ter novos recursos quem sabe até disponibilizar novas oportunidades de negócios.

Se achar que algum ponto pode ser melhor no artigo, por favor faça comentários a respeito. Pretendo aumentar a discussão sobre isso para entendermos melhor essas frentes.

Referências

Acessados em 17/04/2017

https://belitsoft.com/laravel-development-services/full-stack-framework-or-microframework-laravel-or-lumen

https://en.wikipedia.org/wiki/Microframework

Melhoria de processo (externa) melhora?

Sobre: http://blog.aspercom.com.br/2008/05/27/nao-jogue-dinheiro-fora-com-melhoria-de-processos/

A ideia que o Rodrigo deseja passar é que as pessoas que fazem as coisas na empresa, não os processos. Investir no crescimento das pessoas terá resultados melhores do que uma melhoria de processos imposta de alguém que é “supremo” fora da equipe.

As pessoas gostam de aprender, não é necessário ensinar uma criança a perguntar, todas pessoas levanta questões e gosta de ver o resultado. Se bloquear esse processo de questões e resultados, impondo um processo definido que outra pessoa coloca, vai limitar o potencial de crescimento da equipe.

Sugestão é que as empresas liberte as equipes, trazer as pessoas a criar suas questões e deixar as soluções surgir. Cada projeto vai ter um processo, cada interação haverá mudança.

Sei que uma mudança radical na mentalidade não será possível, vou aplicar o conceito de interações integrando novas ideias aos poucos e que estas tragam esse resultado esperado.