Blog

Nutrindo conteúdo e informação

Visual Studio Team Foundation

Também conhecido como Team Foundation Server (TFS), é uma ferramenta desenvolvida pela Microsoft, amplamente difundida e adotada no mercado.

Controle de versão de código

Atualmente na versão TFS 2017, um de seus pilares sé o versionamento de código, que conta com a possibilidade de trabalhar com o Team Foundation Version Control (TFVC) ou Git.

Ambos suportam as mais variedades de arquivos e linguagens. Basicamente eles conseguem gerir bem arquivos em texto (como códigos fontes de C#, Visual Basic, Java, C++, PHP, Ruby, Javascript etc).

TFVC tem um foco maior em controle de código centralizado, onde os desenvolvedores têm apenas uma versão de cada arquivo do projeto de software em sua máquina. É possível inclusive controlar se dois desenvolvedores podem alterar o mesmo arquivo ao mesmo tempo.

O TFVC é extremamente fácil e intuitivo de usar devido a sua natureza centralizada (o principal código fonte é o do servidor). Com poucos cliques é possível baixar a versão mais recente de código, alterar e submeter as alterações, bem como realizar forks (a partir de uma versão gerar uma cópia separada e independente no servidor) e merge (juntar essas cópias novamente, caso necessário).

Ainda é possível realizar várias operações conhecidas pelas equipes de desenvolvimento de software com o TFVC, como: Revisão de Código, Resolução de conflitos (quando dois desenvolvedores propõem soluções diferentes para o mesmo trecho de código), Retornar a versão anterior do código, dentre outras.

Já o Git é um protocolo baseado em desenvolvimento de software distribuído e “delta” de diferença de código.

Com o Git cada desenvolvedor tem sua versão de código fonte em um repositório local. Esse repositório é extremamente rápido e leve, pois apenas as alterações são visionadas localmente (por isso que se chama “delta”). Umas vez que o desenvolvedor quiser integrar o código ao servidor, o mesmo pode submeter as alterações de seu repositório local para o repositório remoto no servidor.

O protocolo Git é extremamente rápido e robusto, excelente para grandes equipes de desenvolvimento, inclusive equipes distribuídas geograficamente. Para se ter uma ideia, é o mesmo protocolo em que o kernel do Linux tem seu código fonte “hospedado”, sendo assim um dos maiores cases de desenvolvimento distribuído a longo prazo.

Porém o Git tem um workflow um pouco mais complexo, visto que além da gestão do código fonte no servidor, o desenvolvedor faz uma gestão local também. Ele também suporta as operações mais conhecidas pelas equipes de software: Revisão de Código, Resolução de conflitos (quando dois desenvolvedores propõem soluções diferentes para o mesmo trecho de código), Retornar a versão anterior do código, Fork (nesse caso é uma versão pessoal do código, mas armazenada no servidor), Merge, Branch (quando é gerada uma “cópia” do código principal no servidor), dentre outras.

Workitems

Os workitems (WI), ou itens de trabalhos, são tarefas que podem ser criadas dentro do TFS. Essas tarefas são atividades que os desenvolvedores devem fazer/codificar para construir o software desejado. Elas podem inclusive ser associadas a cada novo código ou alteração de código que o desenvolvedor realizar, dando a possibilidade de rastrear os passos planejados para construir ou alterar um software como as linhas de código fonte em cada versão do mesmo.

A gestão do fluxo de trabalho dos WI é flexível e customizada, sendo que o TFS traz alguns templates por padrão, como um baseado em Scrum, com um kanban board on-line.

Também é possível customizar quais informações/campos um WI terá.

Extra

A proposta do TFS é o Application Lifecycle Management (ALM), ou Gerenciamento de Ciclo de vida da Aplicação. Assim ele agrega uma série de ferramentas, como: Build Server, Test Lab, Relatórios de desempenho da equipe, portais para gerenciamento de trabalho remoto de atividades e código Integração Contínua (cada código novo/alteração é gerado um build).

O Build server funciona nativamente com a plataforma .NET. Há a possibilidade de estendê-los para outras plataformas, como o Java, por exemplo.

O Visual Studio, Ferramenta de desenvolvimento da Microsoft, se integra nativamente ao TFS. Há plugins para outras ferramentas, como o Eclipse. Também há ferramentas para que o controle seja feito através do explorador de arquivos do Windows, além da possibilidade de usar os portais online de gestão.

Instalação, licença e custo para servidores locais.

Para licenciar o TFS 2017, você precisará de uma licença de servidor do TFS e de uma licença do sistema operacional Windows (a do Windows Server é melhor) para cada máquina executando o TFS, mais uma licença de acesso ao cliente para cada pessoa conectando ao TFS. As licenças de acesso ao cliente (CAL) não são necessárias para as pessoas que apenas acessam itens de trabalho: atribua-lhes o acesso “Participante”, que é gratuito.

As extensões para o TFS como o Gerenciador de Testes, Gerenciamento de Pacotes e Pipelines Privados requerem uma compra adicional. Algumas Extensões do TFS são incluídas com as assinaturas do Visual Studio Enterprise, sendo muitas outras gratuitas. As extensões pagas também podem ser adquiridas mensalmente, sem ser necessária uma assinatura do Visual Studio.

Não é preciso fazer um compromisso de compra de 3 anos para o TFS: pode pagar mês a mês e cancelar a qualquer momento. Veja como:

Compre pelo menos uma assinatura do Visual Studio para a licença de servidor: as assinaturas do Visual Studio incluem uma licença de servidor para o TFS e uma TFS CAL Para o assinante. Agora oferecemos assinaturas mensais para o Visual Studio Professional ($45/mês) e para o Visual Studio Enterprise ($250/mês).

Compre o VSTS para CALs do TFS. Quando compra usuários do VSTS (a partir de $6/mês), esses mesmos usuários têm um TFS CAL e podem se conectar a qualquer TFS na sua organização. Se esses usuários também precisarem de extensões do TFS como o Gerenciador de Testes ou o Gerenciamento de Pacotes, ou se precisarem de Pipelines Privados para a sua equipa, pode comprá-los através do Visual Studio Marketplace. Todas as despesas do VSTS são cobradas mensalmente. Veja as instruções detalhadas.

Executar o TFS numa VM do Windows Server no Azure: as VMs do Windows Server incluem o custo de licenaimento do Windows Server, o que lhe dá uma forma flexível de selecionar a VM do tamanho correto para as suas necessidades de desempenho do TFS e pagar mensalmente pela utilização.

Instalação, licença e custo na nuvem.

Gratuito para times com até 5 desenvolvedores.

Para times maiores os preços variam de $30 mensais para 10 usuários, até $6150 mensais para 1000 usuários.

Lembrando que todos os repositórios na nuvem, inclusive os baseados em Git, são privados!

Os builds na nuvem tem limite de horas por mês, excedendo o limite do plano, valores adicionais podem ser cobrados.

Prós

Dispõe de duas opções de controle de versionamento de código.

Git é um dos protocolos de versionamento de código mais utilizado do mundo.

TFVC é um controle de versionamento de código de rápido aprendizado e fácil adesão e gerenciamento.

Possui opções de teste gratuito na nuvem.

Possui build server próprio.

Possui Integração contínua.

Possuí a possibilidade de integrar seu processo de desenvolvimento de software no workflow de trabalho do TFS.

Possui relatórios de desempenho de produto e equipe.

Possui ferramentas para testes de software (Caixa branca e Caixa preta).

Licenciamento na nuvem, rápido, claro e objetivo

Contra

Licenciamento para servidores locais é complexo e custoso.

A ferramenta funciona muito bem integrada com tecnologias Microsoft. Para outras plataformas, customizações podem ser necessárias.

Mais informações

https://www.visualstudio.com/pt-br/tfs/ 

https://www.visualstudio.com/pt-br/team-services/tfs-pricing/ 

https://www.visualstudio.com/pt-br/team-services/

https://www.visualstudio.com/pt-br/team-services/pricing/ 

Gitlab

Uma ferramenta inspirada em um dos maiores repositórios de código fonte do mundo, o GitHub. Sendo assim, aceita praticamente todas as linguagens.

É usado por mais de 100 000 organizações, incluindo NASA, Alibaba, Invincea, O’Reilly Media e TagPlus.

60% das empresas que usam o protocolo Git, usam o Gitlab.

Como ele é um produto baseado no Github, contempla uma série de pequenas funcionalidades para gerir os projetos, como: Wiki, Labels, Milestones (é possível separar as alterações do código fonte por data, nome e versão), Revisão de código, Issue Tracker, Issue Board, Confidential Issues, Gráficos de Burndown, Merge automático, Merge simplificado, Merge baseado em aprovações, Ferramenta de resolução online de Merge etc.

Seu uso é baseado em interfaces web e, por utilizar o protocolo Git, qualquer ferramenta dessa natureza integra a ele, desde as linhas de comando, clientes desktop (SourceTree, GitKraken etc).

Obs: Visual Studio é nativamente integrado ao Git.

Integração

Um dos pontos fortes da do Gitlab é integrar com outras ferramentas, como build servers (Jenkins, Team City), Chat bots (Slack), Workflows (JIRA), Code Analisis (Sonic Qube) etc.

Além disso ele possuí uma série de eventos baseados em webhooks, ou seja, ele faz uma requisição para uma aplicação web que for configurada, com as informações solicitadas, quando ocorrem, exemplo: uma “Issue” foi corrigida, ele alerta por e-mail, no chat do slack, e posta essa informação na intranet da empresa.

Controle de acesso

É possível controlar níveis de acesso dos usuários por projeto.

O login pode ser customizado, integrando inclusive com o Active Directory.

Instalação, licença e custo

É possível baixar a instalar localmente nos servidores da empresa, como utilizar online (na nuvem).

Os valores variam de acordo com a versão. Pode ser gratuito para times iniciantes (sem limite de usuários), porém com limitações de features. Pode atingir o valor de $16.59 por mês e por usuário, com todas as features citadas (e muitas outras) e alta disponibilidade.

Prós

Interface web idêntica ao do Github, o que ajuda os desenvolvedore a se familizarizarem facilmente.

Integração com e-mail, webhooks e serviços conhecidos (Slack, Team City etc).

Robusta, aguentando times grandes, vários projetos, e distribuição remota de trabalho e equipe.

Acesso ilimitado de usuários na versão gratuita.

Estatísticas de usuários.

Contras

Não possui build server, sendo necessário mais uma ferramenta.

Workflows baseados apenas em gestão de código.

Não possui ferramentas de testes de software. Integração é necessária.

Seria bom ter um acompanhamento de uma consultoria para implantar e desenhar o processo/workflow de trabalho.

Mais informações

https://about.gitlab.com/ 

https://about.gitlab.com/features/ 

https://about.gitlab.com/products/ 

Bitbubket

Esta ferramenta de controle de controle distribuído de versionamento de código, tem como fabricante a Atlassian, a mesma empresa por trás do JIRA.

Também baseado em Git, tem todas as vantagens desse protocolo, e por se tratar da Atlassian, se integra facilmente ao Jira e/ou Trello.

Tem um cliente desktop, caso o desenvolvedor opte por não utilizar a interface web.

Também possui uma ferramenta de busca de código, issue tracking, Wiki, integração com diversos boards, filtro de IP, integração com o Confluence (Ferramenta da Atlassian para documentações).

Integração

Também é possível integrar com vários produtos de terceiros, e integração facilitada a toda a gama de produtos da Atlassian (Jira, Trello, Confluence, Source tree etc).

Instalação, licença e custo

É possível baixar a instalar localmente nos servidores da empresa, como utilizar online (na nuvem).

Seus valores

Grátis para 5 usuários.

$5 por usuário mensais para a versão premium.

Há limitações com relação a storage utilizado.

Pros

Integração com ferramentas conhecidas do mercado

Preço acessível.

Baseada em Git.

Serviço de pipeline nativo (scripts que são executado em ordem a cada ação dentro do projeto, como por exemplo, fazer um build e depoloy após uma alteração de código).

Contra

Limite de storage de acordo com o plano.

Mesmo a Atlassian tendo uma série de ferramentas interessantes para o ambiente de TI, as mesmas são cobradas à parte.

Não possui build server.

Não possui suíte de testes.

Mais informações

https://bitbucket.org/ 

https://bitbucket.org/product/features 

https://bitbucket.org/product/pricing?tab=host-in-the-cloud 


Melhorando seu Desempenho no Trabalho (Dica Rápida)

Há muito material por aí, principalmente na Internet, sobre como melhorar a produtividade, melhorar a performance da equipe, manter foco etc.

Mas as vezes deixamos escapar uns detalhezinhos tão fáceis de superar.

Em um dia normal de trabalho, estava fazendo minhas coisas quando de repente me peguei com uma aba do navegador aberta no Facebook. Voltei a fazer minhas coisas e 5 minutos depois eu estava olhando para uma pasta vazia na minha caixa de e-mail me perguntando “o que estava fazendo mesmo (ou deveria estar fazendo)?”...

Algo estava roubando minha atenção, mas o que? O que estava tirando meu foco e concentração?

Então eu percebi: Toda vez que abria algo pesado no meu computador, aquele tempo que levava era o suficiente para me distrair, por exemplo: Depois de dois meses sem reiniciar meu computador, rodando 4 dockers, quando eu tentava abrir um projeto no Visual Studio, levava aproximadamente 20 segundos… esse tempo era mais do que suficiente para eu me distrair em coisas sem sentido na web.

E para ser honesto, isso é muito comum. Sempre escuto histórias como: Eu estava trabalhando em um grande projeto que levava cerca de 20 minutos para compilar, então chamava meus amigos para tomar um café!

Não há mal algum em ter um tempo para o café! Más é bem óbvio que quando algo demora demais, ficamos distraídos.

E a culpa? Bem, a culpa é do Computador!

Sim, quase toda vez o computador é lento ou não tem a performance adequada para fazer a tarefa (Eu disse quase toda vez, pois estou bem ciente que há uma gama de possibilidades aqui).

Para resolver meu problema, bastou eu reiniciar meu computador. Mas já tive computadores bem ruinzinhos em trabalhos passados. E é bem difícil de ser produtivo em um cenário desses!

Então, se você quer uma boa performance e entrega da sua equipe: invista em bons equipamentos!

Se alguém levar apenas alguns segundos para abrir e compilar um projeto, não haverá tempo para distração com Facebooks e afins, nem mesmo para abrir o navegador.

Dessa maneira será fácil manter foco e entrega de um bom trabalho, realizado em um bom tempo!