Back-End

21 nov, 2016

Microframeworks ou Framework Full Stack, qual a melhor opção?

Publicidade

Desde que comecei a programar venho acompanhando o mercado de frameworks, suas aplicações e o quanto elas evoluíram rapidamente, especialmente quando falamos de desenvolvimento em plataforma web.

Em menos de oito anos vi tantas tecnologias entrarem em desuso, como Flex e Flash (ActionScript), Silverlight, WebForms, e, em contrapartida, presenciei o surgimento de novas tendências, como o HTML5, NoSQL, Ionic, MVC. Por isso, saber se adequar a essas inovações acabou se tornando uma necessidade para nos mantermos no mercado de trabalho.

Além do surgimento de diversas novas tecnologias, o mercado de frameworks trouxe inúmeras novidades e novos conceitos, juntamente com as boas práticas de desenvolvimento e padrões de projeto.

Para nós, desenvolvedores, entender um framework é muito importante, pois ele é a nossa caixa de ferramentas, onde podemos encontrar mil e uma utilidades que nos ajudam no dia a dia. Isso sem falar na praticidade que ele proporciona para o desenvolvimento em um contexto geral.

Para quem ainda não teve contato com algum Framework Full Stack ou um Microframework, vou explanar um pouco sobre o que é cada um e indicar algumas excelentes alternativas que utilizamos inclusive em alguns projetos dentro da Gerencianet.

O termo framework significa biblioteca, ou seja, são coleções de recursos que abstraem desde um Active Record a um recurso de Pagination, bem como outras opções que aprimoram, agilizam e auxiliam em um desenvolvimento mais maduro e nos moldes das boas práticas de desenvolvimento de sistemas.

Agora que você entende o conceito de framework, iremos fazer um comparativo entre duas formas mais comuns de aplicações, são eles: Framework Full Stack e os Microframeworks.

Framework Full Stack

O Framework Full Stack contempla uma biblioteca mais completa de recursos onde temos praticamente todas as opções para agilizar o desenvolvimento de sistemas. Desde uma abstração de banco de dados a uma camada de visualização utilizando controladores e suas views, proporcionando uma estrutura de MVC (Model View Controller) bem distribuída e arquitetada.

São exemplos de Frameworks Full Stack:

– Laravel: Framework em PHP. Possui uma comunidade recente, mas que vem crescendo muito em pouco tempo, tem uma proposta bem parecida com a do Ruby on Rails em relação a parte de mapeamento de objetos relacionais (ORM), mas com o toque do PHP e toda a praticidade das Migrations, além de uma estrutura MVC bem amadurecida.

– Zend Framework: em PHP. Podemos falar que hoje é um dos mais difundidos e possui uma comunidade bem articulada e empenhada. Sua mantenedora, a Zend, aplica testes de certificação PHP em diversas modalidades. Vale a pena conferir.

O Zend tem uma API chamada APIGility, compatível com sua versão mais recente, que tem como intuito facilitar o desenvolvimento de aplicações híbridas, como no caso do framework Ionic.

– Ruby on Rails: Framework em Rails, que traz ideias bem interessantes e se destaca com seu recurso de mapeamento de objetos relacionais (ORM). Talvez este seja o grande diferencial do Rails, bem como toda a praticidade das Migrations. Ele sabe aproveitar bem as funcionalidades da linguagem Ruby, se diferenciando de muitos concorrentes do mercado.

Com o Ruby on Rails é possível desenvolver um código simples e elegante. Tudo isso devido ao seu mapeamento relacional de objeto pelo Active Record, proporcionando uma interação com seu banco de dados de uma forma surpreendente, sem precisar gastar muitas horas em queries gigantescas como em uma estrutura orientada a objetos sem ORM.

O Ruby on Rails é bem mais complexo, e a curva de aprendizado é bem maior quando o comparamos com o Laravel, que é desenvolvido em PHP. Além disso, sua estrutura de codificação se destaca pela excelente otimização de codificação.

Microframeworks

Os Microframeworks são frameworks modularizados, que geralmente possuem uma função específica que proporcionará um ou mais recursos. Ressalvo que alguns frameworks, como o Zend, possibilitam que você utilize recursos separadamente como o paginator. Tudo isso é feito de forma separada sem precisar utilizar todo o framework em sua forma Full Stack.

São exemplos de microframeworks:

– Slim: É um microframework em PHP que facilita sua vida na hora de desenvolver estruturas RESTful, ou seja, com ele a criação de rotas fica muito fácil e não perde em nada para um Framework Full Stack com estruturas RESTful.

Ao instalar o Slim via composer você verá que outros Microframeworks poderão estar agregados, como o Symphony. Sugiro que baixe apenas o conteúdo que irá utilizar do Slim, caso não precise utilizar o composer para realizar a instalação.

Twig: também em PHP, é utilizado para recursos de exibição de templates na camada de visualização de sua aplicação. Para se ter uma ideia, existem alguns frameworks do mercado que utilizam o Twig como seu mecanismo de view e template padrão embutido em seu pacote, como o Phalcon por exemplo.

PHP ActiveRecord: ele persiste objetos em um mapeamento objeto-relacional, abstraindo sua camada de modelo em sua estrutura MVC. Facilita na elaboração de queries em SQL e traz simplicidade para o seu código. Como o próprio nome diz, é em PHP.

Algumas aplicações

Neste momento você deve estar se perguntando qual a melhor opção: um framework Full Stack ou um microframework? Isso irá depender muito do projeto que você está desenvolvendo e do domínio de sua linguagem de programação.

Em um framework Full Stack você encontrará uma estrutura MVC geralmente pronta, com fácil interpretação e utilização, porém poderá ter recursos que não serão utilizados por completo devido à gama de possibilidades que ele proporciona. E mesmo com toda esta gama, ainda esbarramos em incompatibilidades que exigirão alguns esforços para integrar com algum um outro Microframework.

Uma outra desvantagem impactante em um Framework Full Stack são as atualizações de versões. Dependendo do framework, o processo acaba ficando inviável, e o desenvolvedor fica sempre adiando a atualização de versão do framework em sua aplicação com medo de acontecer alguma falha devido a incompatibilidades. Desta forma, seu projeto acaba caindo em uma desatualização sem necessidade. Com um Microframework, isto já é mais tranquilo, pois ele tem uma independência em relação a estrutura de pastas.

Já os Microframeworks geralmente são utilizados em projetos que exigem mais simplicidade, pois não precisam de estrutura de projeto bem definida, possuem fácil implementação e um custo mais reduzido. Mas isso não quer dizer que se aplicam apenas a um projeto de menor complexidade. Não existe uma receita de bolo para definir isto, por isso, orienta-se que faça uma análise de requisitos do seu projeto antes para identificar a melhor escolha.

Uma desvantagem na utilização de um Microframework é que você pode ter dificuldades para encontrar um determinado recurso separado para o desenvolvimento de projetos mais robustos. Isso acontece porque em um Framework Full Stack estas opções geralmente estarão inclusas dentro da sua library.

Na hora de escolher qual utilizar, observe bem cada característica que diferencia um de outro:

  • Performance e peso
  • Requisitos e dependências do sistema
  • Curva de aprendizado
  • Facilidade de uso
  • Suporte da comunidade
  • Qualidade da documentação
  • Qualidade do código
  • Cobertura de testes
  • Compatibilidade

Conclusão

Apesar do Microframework ser mais fácil de implementar e sua curva de aprendizado ser menor, recomendo a quem está começando a desenvolver que entenda primeiro um Framework Full Stack, pois com ele é possível mergulhar em toda a gama de possibilidades que um Framework de mercado é capaz de oferecer.

Sem falar no quão robusto e prático eles são também, além de toda a estrutura e amadurecimento em nível de lógica que você irá absorver de todo este complexo de recursos. Mas isto é só no início, não se prenda a ele!

Se estiver pensando em desenvolver sua startup ou projeto de forma ágil e organizada, aconselho a implementar um projeto do zero, sempre trabalhando as boas práticas e, quem sabe, utilizando alguns Microframeworks, criando sua própria estrutura MVC sem componentes desnecessários, apenas com o que realmente será utilizado.

Mas não se esqueça de analisar e pesar sempre três pilares importantes quando for desenvolver algum projeto que envolva tecnologias recentes:

  1. Requisitos gerais do seu projeto e análise de risco
  2. Tempo de aprendizado e de desenvolvimento em relação a estrutura em si
  3. Prazo de entrega do projeto

Eu espero que este tema tenha aberto um leque de opções para aguçar ainda mais a busca pela renovação do seu conhecimento em qualquer nova tecnologia ou linguagem.