Olá a todos.
Como eu já suspeitava que fosse ocorrer com o post da semana passada, muita gente abordou-me a perguntar porque fiz sobre o Nexus e não sobre o Artifactory. O que me levou a escolher entre os dois e qual o motivo da minha preferencia pelo Nexus.
Para responder a isso, escrevi este post, na qual vou abordar os meus motivos e enumerar o que acho positivo em cada uma da suites de software.
Relembrando, o que é um repositório de artefatos?
Um repositório de artefatos, também conhecido como “artefato”, é uma ferramenta crucial para qualquer organização ou homelab que faça desenvolvimento de software para criar e entregar self built applications. Um repositório de artefatos é o local centralizado na infraestrutura onde os developers armazenam e gerenciam artefatos binários (como JARs, WARs, imagens do Docker e RPM/DEB’s) e outros recursos necessários para compilações e releases de software.
Qual a importância de um repositório de artefatos?
- Gestão de dependências: No desenvolvimento de software moderno, os aplicativos são compostos por vários layers e camadas de bibliotecas e módulos. Um repositório de artefatos ajuda a gerir essas dependências, fornecendo um local centralizado para armazenar e compartilhar esses artefatos. Ajuda a garantir que todos os developers estejam a utilizar a mesma versão da bibilioteca-dependência, reduzindo as chances de problemas de compatibilidade.
- Automação no processo de build: um repositório de artefatos desempenha um papel crítico na automação do processo de construção. Em vez de os developers terem de descarregar e instalar manualmente as dependências, o processo de compilação pode descarregar automaticamente os artefatos necessários do repositório.
- Controle de Versão: Um repositório de artefatos por definição fornece controle de versão para artefatos. Isto ajuda a fazer o tracking do histórico de alterações feitas num artefato, facilitando a reversão ou reversão para uma versão anterior, se necessário. Lembrem-se que não é considerado best practices guardar binários pré compilados em repositórios git.
- Colaboração: Um repositório de artefatos permite a colaboração entre developers, fornecendo um local central para compartilhar e armazenar artefatos. Isto ajuda a reduzir a duplicação de esforços e melhora a eficiência do processo de desenvolvimento.
Artifactory vs Nexus Repository
O Artifactory e Nexus são dois dos repositórios de artefatos mais populares disponíveis no mercado.
Aqui estão para mim, as principais diferenças entre os dois:
- Licença: Artifactory é um produto proprietário, enquanto o Nexus tem uma versão gratuita e uma paga. E voces já sabem o que penso de software free.
- Interface do utilizador: O Artifactory possui uma interface do utilziador mais moderna e intuitiva em comparação com o Nexus.
- Suporte a plugins: O Artifactory possui uma gama maior de plugins disponíveis, facilitando a integração com outras ferramentas no processo de desenvolvimento. No entanto alguns são pagos a peso de ouro.
- Formatos de repositório: o Nexus oferece suporte a uma ampla variedade de formatos de repositório, incluindo NuGet, npm e RubyGems, enquanto o Artifactory oferece suporte mais limitado a esse respeito.
- Desempenho: O Artifactory é conhecido por seu alto desempenho, enquanto o Nexus pode sofrer com um desempenho mais lento com repositórios grandes. Sofre ainda da incapacidade propositada na versão free de escalamento horizontal e suporte para alta disponibilidade.
Uma ultima nota referente ao Artifactory: Existe uma versão gratuita selfhosted do Artifactory chamada Artifactory Community Edition. Ela está disponível para download no site do JFrog e pode ser instalada localmente. O Community Edition oferece suporte a todos os principais formatos de repositório, incluindo Maven, Gradle, npm e Docker, e possui um conjunto relativamente de recursos, incluindo controle de acesso refinado, recursos avançados de pesquisa e integração de compilação.
No entanto, possui algumas limitações em relação à versão paga, como capacidade de armazenamento limitada/tradeoff de velocidade quando se passa um limite previamente establecido de repositório e falta de alguns recursos avançados. No entanto, é uma boa opção para pequenas equipes ou organizações que precisam de um repositório de artefatos confiável e gratuito.
Esta versão community tem para mim as principais limitações:
O Artifactory Community Edition não possui alguns dos recursos avançados disponíveis na versão paga do Artifactory, incluindo:
- Alta disponibilidade: O Community Edition não suporta configurações de alta disponibilidade (HA). Isto significa que ele não pode fornecer failover automático ou recursos de balanceamento de carga para componentes críticos.
- Replicação: O Community Edition não suporta recursos avançados de replicação, como replicação multi-push, que permite aos utilizadores distribuir artefatos para vários repositórios remotos simultaneamente.
- Controle de acesso avançado: o Community Edition não tem o mesmo nível de recursos de controle de acesso granular que a versão paga do Artifactory. Por exemplo, ele não oferece suporte à autenticação LDAP, SAML ou OAuth (So, no freeIPA).
- Pesquisa Avançada: A Community Edition não possui os mesmos recursos de pesquisa avançada da versão paga, como pesquisa por compilação, pesquisa por propriedade e pesquisa por soma de verificação.
- Suporte: O Community Edition não vem com suporte técnico da JFrog, a empresa por trás do Artifactory. Os utilizadores podem no entantocontar com fóruns da comunidade ou documentação para obter ajuda.
E acerca das limitações de espaço?
Como referi anteriormente a capacidade máxima de armazenamento do Artifactory Community Edition depende da versão que está a ser usada.
A partir da versão mais recente na altura em que estou a escrever este post, Artifactory Community Edition 7.8.4, a capacidade máxima de armazenamento é limitada a 2 GB.
Isto significa que o Community Edition destina-se a implantações de pequena escala ou para fins de teste e avaliação. Para implantações em grande escala que exigem mais capacidade de armazenamento, as organizações devem considerar o uso da versão paga do Artifactory, que não tem limitações de armazenamento e fornece recursos avançados adicionais. Também é importante sublinhar que o limite de 2 GB é um limite “suave”, o que significa que o Artifactory continuará a funcionar após exceder o limite, mas os utilizadores irão ter problemas de desempenho e estabilidade reduzidos.
Apesar dessas limitações, o Artifactory Community Edition ainda é no seu proprio direito um repositório de artefatos poderoso que pode atender às necessidades de muitas organizações, especialmente aquelas com implantações de menor escala e requisitos mais simples.
Em conclusão do post desta semana, estabelecemos que um repositório de artefatos é uma ferramenta crítica para o desenvolvimento de software moderno e embora o Artifactory e o Nexus ofereçam funcionalidades semelhantes, cada um tem seus pontos fortes e fracos exclusivos.
Nós como arquitetos de sistemas e integradores devemos avaliar as necessidades específicas de cada projeto e escolher a solução que melhor se adapta aos seus requisitos.
Para mim, no meu homelab, escolhi o Nexus. Mas isto é uma decisão minha e que para mim melhor se adapta a minha necessidade.
Até ao proximo post. E já sabem se notarem alguma coisa estranha, ou menos correcta, é avisar.
Abraço
Nuno