quinta-feira, 13 de fevereiro de 2025

Comparacão entre Monólito e Microserviços: Quando Usar Cada Arquitetura?


E aí pessoal, tudo bem?

A escolha entre uma arquitetura monolítica e uma baseada em microserviços é uma das decisões mais importantes no design de sistemas modernos. Ambas têm vantagens e desafios específicos, e entender quando usar cada uma pode impactar diretamente na escalabilidade, manutenção e eficiência do projeto.

O Que é uma Arquitetura Monolítica?

Uma arquitetura monolítica consiste em um sistema único e coeso, onde todos os módulos e funcionalidades estão interligados em um único código-fonte e banco de dados.

Vantagens da Arquitetura Monolítica:

  • Facilidade de desenvolvimento e depuração: Menos complexidade inicial, ideal para times menores.

  • Performance otimizada: A comunicação entre módulos é interna e direta, sem overhead de rede.

  • Implantação simples: Um único deploy para toda a aplicação.

Desafios da Arquitetura Monolítica:

  • Dificuldade de escalabilidade: Não é possível escalar componentes específicos de forma independente.

  • Manutenção complexa: Com o tempo, o código pode se tornar difícil de gerenciar.

  • Implantações arriscadas: Alterações em um único módulo podem impactar toda a aplicação.

O Que é uma Arquitetura de Microserviços?

Microserviços são uma abordagem modular, onde cada funcionalidade do sistema é implementada como um serviço independente, que se comunica via APIs.

Vantagens da Arquitetura de Microserviços:

  • Escalabilidade independente: Cada serviço pode ser escalado conforme a demanda.

  • Facilidade de manutenção: Equipes podem trabalhar de forma independente em diferentes serviços.

  • Implantação mais segura: Mudanças em um serviço não afetam toda a aplicação.

Desafios da Arquitetura de Microserviços:

  • Maior complexidade: Requer orquestração de serviços, monitoramento e estratégias de comunicação eficientes.

  • Overhead de comunicação: As chamadas entre serviços introduzem latência e possíveis falhas de rede.

  • Gerenciamento de dados distribuído: Pode ser necessário sincronizar múltiplas bases de dados.

Quando Usar Cada Arquitetura?

Use Monólito Quando:

✅ O projeto é pequeno ou está no início do desenvolvimento.
✅ A equipe é reduzida e não há necessidade de alta escalabilidade.
✅ A aplicação tem um ciclo de vida curto e não precisa de manutenção prolongada.

Use Microserviços Quando:

✅ O sistema precisa escalar componentes individuais de maneira eficiente.
✅ Equipes diferentes desenvolvem partes distintas da aplicação.
✅ Há necessidade de alta disponibilidade e resiliência.

Aqui temos dois desenhos, um representando arquitetura monolítica e outro arquitetura em microserviços:

A - Monolítica


B - Microserviços


Conclusão

Não existe uma resposta única para qual arquitetura é melhor. O ideal é avaliar os requisitos do projeto e entender qual abordagem se encaixa melhor. Em muitos casos, uma abordagem híbrida (começar com um monólito modular e evoluir para microserviços conforme necessário) pode ser a melhor solução.

Agora que você conhece as diferenças entre monólito e microserviços, qual dessas abordagens faz mais sentido para seu projeto? Compartilhe nos comentários!

Abs e até a próxima.
:wq!

quinta-feira, 23 de janeiro de 2025

Deep Web e Dark Web: Mitos, Verdades e Cuidados na Exploração da Internet Invisível


E aí, pessoal, tudo bem?

A internet que usamos no dia a dia é apenas a ponta do iceberg. Termos como “Deep Web” e “Dark Web” são frequentemente usados, mas também cercados de mistério, desinformação e até mesmo mitos. Vamos explorar o que realmente significam, como se diferenciam e quais cuidados você deve tomar ao navegar por esses territórios virtuais.

O que é a Deep Web?

A Deep Web é composta por todas as páginas da internet que não estão indexadas pelos motores de busca tradicionais, como o Google, Bing ou Yahoo. Isso inclui:

  • Bases de dados privadas;

  • Sistemas internos de empresas;

  • E-mails e mensagens privadas;

  • Sites que exigem autenticação (como contas bancárias online).

Essencialmente, a Deep Web é um ambiente muito maior do que a web visível e é utilizado, na maioria das vezes, de forma totalmente legal.

O que é a Dark Web?

A Dark Web é uma parte específica da Deep Web acessível apenas por meio de softwares especiais, como o navegador Tor (The Onion Router). Ela permite o anonimato tanto para usuários quanto para operadores de sites, criando um ambiente propício para atividades sigilosas, mas também para crimes cibernéticos.

Na Dark Web, é possível encontrar:

  • Fóruns de discussão anônimos;

  • Mercados ilegais (venda de drogas, armas, etc.);

  • Comunicação de ativistas em regiões com censura governamental.

Apesar de seu uso por criminosos, a Dark Web também desempenha papéis importantes, como proteger jornalistas e dissidentes em países opressivos.

Mitos e Verdades

Mito 1: Toda a Deep Web é ilegal.

Verdade: A maior parte da Deep Web é composta por conteúdos legais e rotineiros, como acesso a sistemas internos corporativos e bancos de dados protegidos.

Mito 2: Navegar na Dark Web é crime.

Verdade: O simples acesso à Dark Web não é ilegal. O que pode ser considerado crime é participar de atividades ilícitas.

Mito 3: O navegador Tor é usado apenas para fins criminosos.

Verdade: Tor é amplamente utilizado para proteger a privacidade online, sendo adotado por jornalistas, ativistas e pessoas que buscam anonimato na internet.

Riscos e Cuidados

A exploração da Deep Web ou da Dark Web exige precauções para garantir sua segurança:

  1. Use VPNs (Redes Privadas Virtuais): Elas ajudam a esconder seu endereço IP real.

  2. Nunca compartilhe informações pessoais: Isso pode levar ao roubo de identidade.

  3. Não clique em links desconhecidos: Muitos contêm malware.

  4. Evite realizar compras: Muitos mercados podem ser fraudulentos ou ilegais.

  5. Tenha um bom antivírus: Isso ajuda a proteger seu sistema contra ameaças.

O Futuro da Internet Invisível

Com a evolução das tecnologias de privacidade e anonimato, a Deep Web e a Dark Web continuarão sendo temas polêmicos. Enquanto algumas pessoas as veem como um refúgio para a liberdade de expressão, outras as associam às ameaças cibernéticas. Independentemente disso, compreender esses ambientes é essencial para navegar com segurança e responsabilidade.

Explorar a internet invisível pode ser fascinante, mas também perigoso. Esteja sempre atento às boas práticas e não hesite em buscar mais informações sobre segurança digital antes de aventurar-se por esses territórios menos conhecidos da rede.

O que você achou? Tem alguma experiência ou dúvida sobre a Deep Web ou Dark Web? Compartilhe nos comentários!

Abs
:wq!

terça-feira, 21 de janeiro de 2025

Como os Sites Monitoram Você? Entenda o Papel dos Trackers e Fingerprinting


Fala pessoal, tudo bem?

Vivemos em uma era onde a navegação online é parte essencial do nosso dia a dia. Seja ao buscar informações, realizar compras ou interagir nas redes sociais, nossas ações deixam rastros. O que muitos não sabem é que esses rastros são frequentemente monitorados por sites e empresas para coletar dados sobre o comportamento do usuário. Entre as principais ferramentas utilizadas estão os trackers e o browser fingerprinting. Mas o que exatamente são essas tecnologias e como elas funcionam? Vamos explorar.

O Que São Trackers?

Os trackers, ou rastreadores, são pequenos códigos inseridos em sites que coletam informações sobre como você interage com eles. Essas informações podem incluir:

  • Quais páginas você visitou;

  • Quanto tempo você permaneceu em cada página;

  • Quais links você clicou;

Os trackers geralmente são usados para:

  • Marketing direcionado: empresas criam campanhas personalizadas com base no seu comportamento online.

  • Análise de desempenho: ferramentas como Google Analytics ajudam os sites a entenderem melhor o comportamento de seus visitantes para melhorar a experiência do usuário.

Exemplos comuns de trackers incluem:

  • Pixels de rastreamento: imagens invisíveis que coletam dados quando carregadas.

  • Cookies de terceiros: usados para monitorar suas atividades em diferentes sites.

O Que é Browser Fingerprinting?

O browser fingerprinting é uma técnica mais sofisticada que permite identificar um usuário com base em informações coletadas do navegador. Essas informações incluem:

  • Tipo e versão do navegador;

  • Sistema operacional;

  • Resolução da tela;

  • Plugins instalados;

  • Idioma e fuso horário;

Essas características, quando combinadas, criam uma "impressão digital" única para cada usuário. Mesmo que você não aceite cookies ou utilize modos de navegação privada, o fingerprinting ainda pode identificá-lo.

Por Que Isso É Preocupante?

A coleta de dados por trackers e fingerprinting pode comprometer sua privacidade de várias maneiras:

  • Criação de perfis detalhados: empresas podem acumular informações sobre seus hábitos, preferências e rotina.

  • Rastreamento cruzado: trackers de terceiros permitem que empresas monitorem você em diferentes sites, criando um histórico detalhado de navegação.
  • Falta de transparência: muitas vezes, você não sabe que está sendo monitorado ou como seus dados serão usados.

Como Proteger-se?

Embora seja difícil evitar completamente o monitoramento online, algumas ações podem minimizar os riscos:

  1. Use bloqueadores de trackers:

    • Extensões como uBlock Origin, Privacy Badger e Ghostery ajudam a bloquear rastreadores em sites.

  2. Navegadores focados em privacidade:

    • Experimente navegadores como Brave, que bloqueia trackers automaticamente, ou o Tor, que permite navegação anônima.

  3. Configure seu navegador:

    • Ative a opção de "Não Rastrear" (Do Not Track).

    • Desative cookies de terceiros.

  4. Evite usar contas logadas em todos os sites:

    • Sempre que possível, não permaneça logado em contas como Google ou Facebook enquanto navega.

  5. Use VPNs (Virtual Private Networks):

    • VPNs mascaram seu endereço IP, dificultando o rastreamento da sua localização.

  6. Ferramentas anti-fingerprinting:

    • Algumas extensões ou configurações ajudam a limitar a coleta de dados usados para fingerprinting.

Conclusão

O monitoramento online é uma realidade cada vez mais presente, mas isso não significa que você não pode tomar medidas para proteger sua privacidade. Entender como trackers e fingerprinting funcionam é o primeiro passo para navegar na internet de forma mais segura. Adotar ferramentas e boas práticas de proteção é essencial para manter o controle sobre seus dados e garantir uma experiência online mais privada.

E você, já utiliza alguma dessas técnicas ou ferramentas para proteger sua privacidade? Deixe seu comentário e compartilhe sua experiência!

Abs
:wq!

sexta-feira, 17 de janeiro de 2025

O Que os Sites Sabem Sobre Você? Entenda o Papel do ID de Máquina e Cookies


Fala pessoal, tudo bem?

Na era da internet, cada clique que você dá deixa um rastro. Você já se perguntou o quanto os sites sabem sobre você enquanto navega? A resposta pode ser surpreendente: informações como o seu ID de máquina, localização, preferências de navegação e até seus dispositivos conectados são facilmente capturados, muitas vezes com o uso de cookies.

Mas o que são essas informações? E, mais importante, como você pode proteger sua privacidade? 

Vamos explorar...

O Que É o ID de Máquina?

O ID de máquina é como uma "impressão digital" do seu dispositivo. Ele é gerado a partir de uma combinação de informações, como:

  • Endereço IP (que revela sua localização geográfica aproximada);
  • Configurações do sistema operacional e navegador;
  • Resolução de tela e idioma do sistema;
  • Plugins e extensões instalados no navegador.

Os sites utilizam esses dados para identificar seu dispositivo e rastrear sua navegação. Isso pode ser útil para personalizar sua experiência, mas também levanta questões de privacidade.

Cookies: O Que Eles Fazem?

Os cookies são pequenos arquivos de texto armazenados no seu dispositivo por sites que você visita. Eles têm múltiplas funções, como:

  • Salvar preferências de usuário: Por exemplo, lembrar que você prefere o tema escuro.
  • Manter sessões ativas: Como no caso de um login contínuo em uma loja virtual.
  • Rastreamento: Muitos cookies são usados para acompanhar seu comportamento online e criar perfis de marketing.

O Que Mais os Sites Coletam?

Além do ID de máquina e cookies, os sites também podem capturar:

  • Histórico de navegação: Saber os sites que você visitou anteriormente.
  • Geolocalização precisa: Em dispositivos móveis, a localização exata pode ser acessada.
  • Configurações de hardware: Como tipo de processador e uso de memória.
  • Fingerprinting do navegador: Uma técnica avançada que combina várias dessas informações para criar uma identificação única.

Por Que Isso Pode Ser um Problema?

Embora muitas dessas práticas sejam usadas para melhorar a experiência do usuário, algumas empresas utilizam essas informações para fins menos transparentes, como:

  • Publicidade direcionada: Mostrar anúncios com base no que você pesquisou ou comprou.
  • Compartilhamento com terceiros: Seus dados podem ser vendidos para outras empresas.
  • Risco de violação de dados: Informações pessoais podem ser expostas em caso de ataques cibernéticos.

Como Proteger Sua Privacidade Online?

Aqui estão algumas dicas práticas para navegar com mais segurança e privacidade:

  1. Use navegadores focados em privacidade:

    • Experimente o Brave ou o Firefox com configurações de privacidade ativadas.
  2. Bloqueie cookies de terceiros:

    • Configure seu navegador para bloquear cookies que não sejam essenciais.
  3. Ative o modo de navegação anônima:

    • O modo anônimo do navegador não salva cookies ou histórico localmente.
  4. Utilize VPNs:

    • Uma VPN (Rede Privada Virtual) pode ocultar seu endereço IP e proteger sua conexão.
  5. Desative o JavaScript em sites desconhecidos:

    • Algumas técnicas de fingerprinting dependem de JavaScript.
  6. Ferramentas de privacidade:

    • Instale extensões como uBlock Origin e Privacy Badger para bloquear rastreadores.
  7. Limpe regularmente cookies e cache:

    • Apague os cookies do navegador para evitar o rastreamento contínuo.

Reflexão Final

Embora a coleta de dados seja parte integrante da web moderna, é importante que os usuários compreendam o que está sendo capturado e como podem proteger suas informações. Pequenas ações, como ajustar as configurações do navegador e usar ferramentas de privacidade, podem fazer uma grande diferença.

Lembre-se: na era digital, a privacidade é um direito, e cabe a nós protegê-la.

Abs
:wq!

terça-feira, 14 de janeiro de 2025

Tendências Tecnológicas para 2025: As Inovações que Moldarão o Futuro


Olá pessoal, tudo bem?

Agora sim!!! 2025 começando e por aqui não poderia ser diferente, vamos começar as postagens falando um pouco das tendências tecnológicas para este ano novo.

O ano de 2025 promete ser um marco no avanço tecnológico, com inovações que irão transformar a forma como vivemos, trabalhamos e interagimos com o mundo. Desde a expansão da inteligência artificial até novas fronteiras na computação quântica, este é o momento de se preparar para o futuro. Neste post, vamos explorar as principais tendências tecnológicas que irão ganhar destaque em 2025 e como elas podem impactar negócios e a sociedade como um todo.

Principais Tendências Tecnológicas para 2025

  1. Inteligência Artificial Generativa em Expansão
    A IA generativa, como o ChatGPT, está evoluindo rapidamente, tornando-se mais integrada em processos de negócios, educação e criação de conteúdo. Em 2025, veremos aplicações ainda mais personalizadas e acessíveis, desde assistentes virtuais até ferramentas criativas.

  2. Computação Quântica em Desenvolvimento
    Embora ainda esteja em seus estágios iniciais, a computação quântica começa a sair do laboratório para soluções práticas. Empresas estão investindo em modelos para resolver problemas complexos, como simulações químicas e logística avançada.

  3. Cibersegurança como Prioridade Máxima
    Com o aumento das ameaças digitais, 2025 será o ano em que a cibersegurança baseada em IA e autenticação sem senha (passwordless) ganharão força. Organizações precisarão de estratégias mais robustas para proteger dados e sistemas.

  4. Expansão da Realidade Estendida (XR)
    Tecnologias de Realidade Aumentada (AR) e Realidade Virtual (VR) continuarão a crescer, impulsionando setores como treinamento corporativo, saúde e entretenimento.

  5. Internet das Coisas (IoT) com 5G e 6G
    A conectividade de dispositivos IoT será ainda mais acelerada com a evolução do 5G e o início das pesquisas com 6G, permitindo automação em larga escala, cidades inteligentes e novas possibilidades na indústria.

  6. Sustentabilidade Tecnológica
    A tecnologia verde ganha destaque, com empresas focadas em soluções sustentáveis, como datacenters mais eficientes, energia renovável e práticas de economia circular.

Impacto nas Empresas e Profissionais de TI

Empresas que desejam se manter competitivas em 2025 precisarão abraçar essas inovações rapidamente. Profissionais de TI e desenvolvedores têm a chance de se especializar nessas áreas emergentes para alavancar suas carreiras.

Conclusão

2025 será um ano emocionante para a tecnologia, cheio de oportunidades e desafios. Estar por dentro dessas tendências é essencial para aproveitar ao máximo o que o futuro nos reserva. E você, já está se preparando para o que vem por aí?

Bora 2025, que será um ano incrível!

Abs
:wq!

terça-feira, 31 de dezembro de 2024

Mensagem - Feliz Ano Novo

 


"Que este novo ano seja repleto de inspiração, aprendizado e inovação! Que cada linha de código escrita seja um passo em direção a soluções incríveis, que cada projeto seja um marco na sua jornada e que a tecnologia continue nos conectando e transformando o mundo ao nosso redor. Vamos juntos construir um 2025 cheio de conquistas e possibilidades. Feliz Ano Novo!"

:wq!


segunda-feira, 23 de dezembro de 2024

A Revolução da Inteligência Artificial no Desenvolvimento de Software


Fala pessoa, tudo bem?

A inteligência artificial (IA) tem revolucionado diversas indústrias, e o desenvolvimento de software é uma das áreas que mais se beneficia dessas inovações. Ferramentas baseadas em IA estão transformando como desenvolvedores projetam, escrevem e mantêm código, proporcionando maior eficiência e inovação em todas as etapas do ciclo de vida do software.

Como a IA está impactando o desenvolvimento de software

1. Geração de código

Ferramentas como o GitHub Copilot e Tabnine estão revolucionando a escrita de código. Esses assistentes baseados em IA analisam o contexto do código em que você está trabalhando e sugerem trechos, funções inteiras ou até mesmo algoritmos completos. Isso não apenas acelera o desenvolvimento, mas também reduz o esforço em tarefas repetitivas.

2. Depuração inteligente

A IA também está facilitando a identificação e resolução de bugs. Plataformas como DeepCode e Snyk utilizam aprendizado de máquina para analisar código, identificar vulnerabilidades e sugerir correções. Essas ferramentas ajudam a elevar a qualidade do código e a reduzir o tempo gasto em debugging manual.

3. Testes automatizados avançados

A automação de testes evoluiu significativamente com a IA. Ferramentas como Testim e Applitools permitem a criação de testes mais inteligentes, adaptáveis e resilientes a mudanças no código. Além disso, a IA pode prever áreas críticas que precisam de mais atenção, tornando o processo de testes mais eficiente.

4. Análise preditiva de desempenho

Com a IA, é possível prever gargalos de desempenho antes mesmo que eles ocorram em produção. Soluções como Dynatrace utilizam machine learning para monitorar sistemas, identificar padrões anômalos e alertar equipes sobre possíveis falhas.

5. Documentação automatizada

Documentar código é uma tarefa muitas vezes negligenciada. Ferramentas como Kite e Codex podem gerar documentação automaticamente com base no código-fonte, garantindo que os desenvolvedores tenham acesso a informações claras e precisas sobre o funcionamento do sistema.

Benefícios da IA no desenvolvimento de software

  • Velocidade: As ferramentas baseadas em IA permitem que os desenvolvedores entreguem soluções mais rapidamente.

  • Qualidade: Com análises precisas e sugestões inteligentes, o código final tende a ser mais robusto e menos propenso a falhas.

  • Eficiência: A IA reduz o trabalho manual em tarefas repetitivas, liberando os desenvolvedores para focarem em desafios mais estratégicos.

Desafios e limitações

Embora a IA tenha trazido avanços incríveis, também existem desafios. Entre eles, destacam-se:

  • Dependência de ferramentas: O excesso de confiança em assistentes de IA pode levar a uma perda de habilidades fundamentais.

  • Vieses algorítmicos: Ferramentas de IA podem reproduzir vieses presentes nos dados de treinamento.

  • Custos: Soluções baseadas em IA muitas vezes têm um custo elevado para pequenas empresas ou startups.

O futuro da IA no desenvolvimento de software

O futuro promete ainda mais integrações entre IA e desenvolvimento de software. Desde arquiteturas que se adaptam automaticamente às necessidades do sistema até assistentes que ajudam equipes a colaborar de forma mais eficiente, a IA continuará moldando o setor. Além disso, novas áreas como o uso de IA generativa para design de sistemas e otimização de pipelines CI/CD estão ganhando tração.


A revolução da inteligência artificial no desenvolvimento de software já está em pleno andamento. Ferramentas e técnicas baseadas em IA estão não apenas simplificando tarefas complexas, mas também abrindo portas para inovações que antes eram inimagináveis. Para desenvolvedores e equipes, adotar essas tecnologias é mais do que uma escolha — é uma necessidade para permanecer competitivo no cenário atual.

sexta-feira, 22 de novembro de 2024

Por que a Computação na Borda (Edge Computing) é o Futuro da Tecnologia?


Fala pessoal, tudo certo?

Nos últimos anos, a computação na nuvem dominou o cenário tecnológico, oferecendo escalabilidade e flexibilidade. Mas, à medida que a demanda por velocidade e eficiência aumenta, uma nova tendência está ganhando força: a computação na borda.

O que é Edge Computing?

A computação na borda processa dados próximos de onde eles são gerados ou consumidos, em vez de depender de um data center centralizado. Isso significa que dispositivos como sensores IoT, drones, câmeras inteligentes e até veículos autônomos realizam o processamento localmente ou em servidores próximos.

Por que isso importa?

  1. Baixa latência: Em aplicações críticas como saúde e automação industrial, cada milissegundo conta. Processar dados localmente reduz o tempo de resposta.
  2. Redução de banda: Transferir menos dados para a nuvem diminui os custos e alivia redes congestionadas.
  3. Privacidade e segurança: Com menos dados transitando pela internet, o risco de vazamentos diminui.

Exemplos práticos:

  • Cidades inteligentes: Semáforos inteligentes ajustam o fluxo em tempo real sem depender da nuvem.
  • Varejo: Sensores em lojas analisam o comportamento dos clientes e ajustam promoções na hora.
  • Entretenimento: Serviços de streaming pré-carregam conteúdo próximo aos usuários para experiências sem interrupções.

Conclusão

À medida que a tecnologia avança, a computação na borda se torna essencial para aplicações que exigem alta velocidade, confiabilidade e eficiência. Adotar essa abordagem pode transformar a maneira como interagimos com dispositivos e serviços, levando a um futuro mais conectado e dinâmico.

Abs e até a próxima.
:wq!

segunda-feira, 21 de outubro de 2024

Automação do Deploy da Aplicação com GitHub Actions


Fala pessoal, tudo certo?

Dando sequência, agora vamos providenciar um processo de automação de deploy da nossa aplicação de gerenciamento de tasks com o GitHub Action e também com o Render.

O que é o Render?

Render é uma plataforma de nuvem que simplifica o processo de implantação e gerenciamento de aplicações. Ele oferece uma ampla gama de serviços, como:

  • Hospedagem de Aplicações Web: Permite implantar aplicações web em diversas linguagens, como Python, Node.js, Ruby, entre outras, com facilidade.

  • Deploy Automático: Render integra-se facilmente com repositórios do GitHub e GitLab, permitindo que você faça deploy automaticamente toda vez que houver um push para a branch principal.

  • Escalabilidade: A plataforma é projetada para escalar automaticamente suas aplicações, oferecendo planos de pagamento que variam de gratuito a soluções pagas, dependendo das necessidades do projeto.

  • Suporte a Servidores e Contêineres: Render suporta a execução de aplicações em contêineres Docker e também permite a criação de servidores dedicados.

  • Simplicidade e Facilidade de Uso: Com uma interface amigável e recursos de configuração simples, o Render torna o processo de implantação acessível para desenvolvedores de todos os níveis de experiência.

Em resumo, o Render é uma ótima escolha para desenvolvedores que buscam uma solução simples e eficaz para hospedar suas aplicações na nuvem, sem se preocupar com a complexidade da infraestrutura.

Outro ponto importante do Render, podemos usar para estudo sem gerar custo. =]

Antes de mais nada, você precisar criar sua conta no site do Render - https://render.com/

Depois de ter sua conta criada, vamos ao passo-a-passo.

Criando o Web Service no Render:

Agora, no site do Render, vamos criar nosso projeto / aplicação para que o WorkFlow saiba onde fazer o deploy.

Na página inicial do Render, Clique em + New - Web Service

Conecte-se ao repositório do Git onde está o projeto do gerenciamento de tarefas.

De um nome para ele, pode ser app-task-api, por exemplo.

Na tela seguinte, tera um breve resumo de configurações feitas automaticamente. Mas também teremos alguns itens que precisamos fornecer as informações.

Em Start Command, inseria o comando que o Render irá utilizar para fazer o start da aplicação:

python app.py

Em Instance Type, selecione a opção Free.

E por último, clique no botão Deploy Web Service.

Feito isso, agora vamos voltar para nossa máquina onde está o projeto propriamente dito.

Alteração no app.py

Primeiramente, precisamos adicionar a configuração abaixo no app.py para que seja possível subir IP e Porta no Deploy do Render:

if __name__ == '__main__':

app.run(host='0.0.0.0', port=10000)

Ele ficará quase no final do arquivo:

Criar o arquivo de dependência

Dentro da pasta onde está nosso projeto, vamos criar o arquivo requeriments.txt com as dependências abaixo:

Flask==2.0.2

Werkzeug==2.0.3

Depois, vamos criar o path onde irá residir o arquivo do workflow:

mkdir -p .github/workflows

Lembre-se que aqui, ainda estamos dentro da pasta do projeto.

Vamos entrar dentro deste novo diretório:

cd .github/workflows

Criar o arquivo de deploy.yml e adicionar o seguinte conteúdo:

vi deploy.yml
name: Deploy to Render

on:
  push:
    branches:
      - main

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout code
        uses: actions/checkout@v2

      - name: Set up Python
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'  # ou a versão que você estiver usando

      - name: Install dependencies
        run: |
          python -m pip install --upgrade pip
          pip install -r requirements.txt

      - name: Deploy to Render
        env:
          RENDER_API_KEY: ${{ secrets.RENDER_API_KEY }}
        run: |
          curl -X POST https://api.render.com/deploy/srv-xxxxxxxx  # substitua 'srv-xxxxxxxx' pelo ID do seu serviço

** Essa informação da URL e ID do serviço, você encontra no site do Render - Dentro da estrutura do seu Web Service - Settings - Deploy hook.

Altere para o valor correspondente do seu seriço e salve o arquivo.

Fazendo o push das alterações

Depois de criar o requirements.txt, workflow e alterar o app.py, adicione e faça o commit dessas alterações:

git add requirements.txt .github/workflows/deploy.yml app.py
git commit -m "Add requirements GitHub Actions workflow and app.py update"
git push origin main
Após executar o push, podemos ver que no GitHub Actions teremos um start do WorkFlow:



No Render, dentro de Logs temos o processo de Deploy dentro da ferramenta:

Assim que o Deploy finalizar, mais acima nessa tela temos a URL para acessar e testar nossa aplicação:

Como não teremos nada ainda, o retorno ao acessar a URL deve ser esse (lembrando que precisamos colocar no final dela /api/tasks):


Agora, vamos fazer um teste direto na API.

Para isso, vamos executar o comando curl fazendo o post de um preenchimento de informação:

curl -X POST https://task-api-5rkl.onrender.com/api/tasks -H "Content-Type: application/json" -d '{"title": "Tarefa 1", "completed": false}'

Lembre-se de atualizar a URL de acordo com a da sua aplicação.

Quando acessarmos novamente a aplicação, o resultado será esse:

Com mais esse post, agora já concluímos as seguintes etapas:

  1. Criação de uma aplicação com API exposta para gerenciamento de tarefas;
  2. Utilizar um repositório com versionamento de código;
  3. Automação do processo de Deploy e Publicação da aplicação;
Abs e até a próxima. =]
:wq!

terça-feira, 15 de outubro de 2024

Versionamento de código com Git e GitHub/GitLab


Fala pessoal, tudo certo?

Agora que você já criou sua API de gerenciamento de tarefas em Flask, o próximo passo é garantir que seu código esteja versionado e armazenado de forma segura. Para isso, usaremos o Git para controle de versão e o GitHub (ou GitLab, conforme sua preferência) para hospedar nosso repositório remoto.

Massss ...

O que é Git e GitHub?

Git é um sistema de controle de versão distribuído, amplamente utilizado no desenvolvimento de software. Ele permite que você acompanhe mudanças no código, colabore com outros desenvolvedores e retorne a versões anteriores do projeto, se necessário. Cada vez que você faz uma alteração significativa no código, você pode "comitar" essas mudanças, criando um ponto no histórico do repositório que pode ser revisitado a qualquer momento.

GitHub (ou alternativas como GitLab e Bitbucket) é uma plataforma de hospedagem de repositórios Git na nuvem. Além de fornecer uma interface visual para navegar no seu código versionado, o GitHub permite colaborar com outros desenvolvedores, revisar alterações e contribuir para projetos de código aberto. Ele também facilita a integração com pipelines de CI/CD (integração e entrega contínua) para automatizar testes e deploys.

Ao combinar Git e GitHub, você obtém uma poderosa ferramenta para controlar a evolução do seu código, manter backups e colaborar eficientemente com equipes ou até mesmo contribuir com a comunidade de software aberta.

Entendido o conceito, agora vamos a prática.

1. Instalando o Git

Antes de começarmos, verifique se o Git está instalado na sua máquina:

  • MacOS/Linux: Execute git --version no terminal.
  • Windows: Se o comando não funcionar, baixe o instalador do Git aqui e siga as instruções.

2. Configurando o Git

Após instalar o Git, configure-o com suas credenciais de usuário (nome e e-mail):

git config --global user.name "Seu Nome"
git config --global user.email "seuemail@example.com"

Isso vincula suas alterações de código à sua identidade.

3. Inicializando um repositório Git

Agora, vamos inicializar o repositório Git na pasta do seu projeto. Navegue até o diretório onde está sua API e execute:

git init

Esse comando inicializa um repositório Git localmente.

4. Adicionando arquivos para controle de versão

Depois de inicializar o repositório, adicione os arquivos do projeto à área de stage (onde você prepara os arquivos para o commit):

git add .

. indica que todos os arquivos da pasta serão adicionados.

5. Criando o primeiro commit

Agora que os arquivos estão no stage, crie um commit para registrar a primeira versão do seu código:

git commit -m "Primeira versão da API de gerenciamento de tarefas"

-m permite adicionar uma mensagem descrevendo o que foi feito.

6. Criando um repositório remoto no GitHub/GitLab

Agora que você tem um repositório local, vamos conectar com um repositório remoto para armazenar o código na nuvem.

  1. Acesse GitHub ou GitLab.
  2. Crie uma conta, se ainda não tiver uma.
  3. No GitHub/GitLab, clique em New Repository (Novo Repositório).
  4. Dê um nome ao repositório, por exemplo, task-api, e clique em Create Repository.

Agora você terá um repositório remoto vazio.

7. Conectando o repositório local ao remoto

Com o repositório remoto criado, vamos conectá-lo ao repositório local. No terminal, execute:

git remote add origin https://github.com/seuusuario/task-api.git

Substitua o URL com o link para o seu repositório no GitHub/GitLab.

8. Enviando o código para o repositório remoto

Finalmente, envie seu código para o GitHub/GitLab com o comando:

git push -u origin main

9. Autenticação com Personal Access Token (PAT)

O GitHub agora exige o uso de Personal Access Tokens em vez de senhas. Siga estes passos para gerar e usar o token:

  1. Acesse GitHub Personal Access Tokens e clique em Generate new token.
  2. Escolha as permissões adequadas (como repo) e clique em Generate token.
  3. Ao fazer git push, use o seu nome de usuário do GitHub e, em vez da senha, cole o token gerado.

O código agora está no seu repositório remoto e pode ser acessado de qualquer lugar!

Como testar se está funcionando

  1. Acesse o GitHub/GitLab e verifique se os arquivos estão no seu repositório.
  2. Tente clonar o repositório em outro diretório usando:
git clone https://github.com/seuusuario/task-api.git

Bônus: Comandos úteis do Git

  • Verificar o status dos arquivos no repositório:

git status 

  • Ver o histórico de commits:

git log

  • Reverter para um commit anterior:

git checkout <commit-hash>

Agora seu código está seguro e versionado no GitHub ou GitLab. Você aprendeu como usar o Git para versionar o código e manter um backup remoto. Na próxima postagem, vamos criar uma esteira de deploy automático para sua API.

Abs e até a próxima.
:wq!