Ambiente de desenvolvimento integrado na nuvem (Cloud IDE)

As vantagens de usar cloud IDE é a capacidade de reproduzir facilmente o ambiente a partir do repositório do git, outra vantagem é não precisar instalar programas no seu computador, também é possível começar o desenvolvimento em uma máquina e continuar exatamente onde você parou em outro computador.

Caso seja necessário desenvolver em computadores diferentes como faço? Cloud IDE. Por exemplo, usar o meu computador quando estou em casa de manhã e continuar o desenvolvimento quando vou pra casa do meu pai a noite.

Os principais recursos necessários

Uma IDE deve fornecer um local único para o trabalho de desenvolvimento. Para isso é preciso recursos principais como: editor de código, gerenciamento de código fonte, execução e visualização do resultado.

Editor de código

É a parte principal de escrita de código então esse recurso deve ter meios de ajudar o desenvolvedor a se adaptar a sua forma de escrita de código, ou o contrário, o desenvolvedor tem que adaptar a como é que a IDE disponibiliza suas facilidades.

Gerenciamento de código fonte

Pra mim o que faz o andamento das funcionalidades é o git. Esse tipo de fluxo de trabalho é bem explicado pelo github: https://guides.github.com/introduction/flow/

Basicamente, cria uma branch, adiciona commits, abre um pull request para discussões, comentários + code review, faz deploy e reintegra a branch na master.

Sendo assim os códigos gerados pela IDE não ficam “presos”, estão sempre a disposição do time para contribuições.

Execução e visualização do resultado

Aqui a IDE deve fornecer uma maneira legal de executar e visualizar aquilo que está sendo trabalho. Para esse caso, eu sempre prefiro conseguir reproduzir o mais próximo do ambiente de produção para evitar erros de incompatibilidade.

Assumindo responsabilidade de infraestrutura

Devido essas facilidades, podemos deixar de lado a relação direta com a infraestrutura, mais um benefício, conseguir trabalhar com “a infra estando por baixo dos panos”.

Em determinados momentos da carreira é importante assumir responsabilidades de infraestrutura, eu recomendo aprender docker e aws, essas coisas que ajudam pra caramba o trabalho do desenvolvedor, está ligado mais a infraestrutura do que ao desenvolvimento e isso vai dar uma bagagem necessária para ser o profissional completo.

Mas se estiver se aprofundando em programação, aprendendo sobre um framework, por que seria necessário assumir essa responsabilidade?

Como eu uso?

Você também pode criar ambiente de desenvolvimento rapidamente eu vou mostrar o passo a passo abaixo. Quero que você também tenha o gatilho mais rápido do oeste para executar aplicações, hehe.

Codeanywhere

1- Acesse https://codeanywhere.com/

codeanywhere.com

2- Clique em Login

3- Clique no ícone do GitHub

codeanywhere.com-login-github

4- Informe o seu login e senha da conta do Github

5- No editor escolha o nome para o container, no meu caso vou escolher “slim-skeleton”

6- Escolher a stack, para PHP digite php7 na busca, click na stack php7 no centos 6.5

editor-php7

7- Clique em CREATE, vai aparecer uma mensagem de progresso ex: “Status: Deploying Container…”

8- Na aba do terminal que está aberta faça o clone do projeto que vai executar, no meu caso “git clone git@github.com:ptcmariano/slim-skeleton-controller.git .”

9- baixar as dependencias do projeto comando “composer install”

10- Clique em Run Project, e irá abrir uma nova aba com o projeto sendo executado

editor-executando-projeto

Está pronto, só continuar o fluxo de desenvolvimento do git, toda stack está na mão com poucos comandos.

Dica: caso precise criar um ambiente em cloud IDE que seja para um fim específico, utilize um email temporário, com a ferramenta https://temp-mail.org/pt/

E agora, recomendo experimentar trabalhar dessa forma. Depois volte nesse post e me diga se valeu a pena ou se você preferiu continuar com o ambiente local. Preciso saber quais seriam os motivos para que eu tivesse que assumir a responsabilidade de infra em ambiente local.

Abraços e codifiquemos!

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

Minha Jornada com PHP

Recentemente me deparei que estou envolvido até as tampas com PHP. Comecei aqui mesmo em 2010 e nem sabia, a plataforma wordpress ainda não tinha me trazido para desenvolvimento, era só uma forma de compartilhar os meus estudos.

Agora em 2017, nos últimos só tenho utilizado PHP, por que? Simples, ele é produtivo. Ah beleza, se usar Rails ou Django tem gente que consegue criar aplicações com facilidade. Mas eu ter trabalhado 3 anos e meio na Catho, sai pra montar um negócio (em outro post explico, eu se quiser me mande uma msg), fez com que eu conhecesse essa incrivel plataforma, gratuita, popular e vamos dizer “simpática”. Veja só é um elefante! (elephantine mascot of the PHP project) rsrs.

elephpant-running-78x48

Bom pra continuar essa saga, comprei um livro, criando aplicações web com wordpress.

Pretendo criar artigos sobre WP aqui! e continuar a descrição dos meus estudos nesse blog. Depois de um hiato de alguns meses.

Abraços.

Paulo Tiago Castanho Mariano