Introdução

Neste tutorial, abordaremos como integrar o Django, um poderoso framework Python, com o React, uma biblioteca JavaScript popular, e o Kubernetes, uma plataforma de automação de contêineres, para criar aplicações web escaláveis e responsivas. Você aprenderá desde a configuração do ambiente até a implementação, testagem e implantação em um cluster Kubernetes. Este guia é ideal para desenvolvedores que desejam dominar a criação de aplicações modernas, utilizando as melhores práticas de desenvolvimento de software, arquitetura de microservices e contêinerização. Vamos explorar juntos os passos necessários para construir uma aplicação robusta e escalável que atende às demandas do mercado atual.

Etapas

  1. Configuração do Ambiente de Desenvolvimento

    Antes de começarmos, certifique-se de ter Python, Node.js e Kubernetes instalados. Você pode verificar as versões instaladas usando os comandos `python –version`, `node -v`, e `kubectl version –client`. Se não tiver essas ferramentas instaladas, siga as instruções nos sites oficiais para cada tecnologia.

    commands
    # Verificar versões instaladas
    python --version
    node -v
    kubectl version --client

  2. Criação do Projeto Django

    Usaremos o Django para criar a API RESTful. Primeiro, crie um novo projeto Django chamado `api`. Navegue até a pasta desejada e execute o seguinte comando.

    commands
    # Criar novo projeto Django
    django-admin startproject api
    # Navegar para o diretório do projeto
    cd api

  3. Criação da Aplicação Django

    Dentro do projeto Django, criaremos uma nova aplicação chamada `produtos` que conterá nossa lógica de negócios.

    commands
    # Criar nova aplicação
    python manage.py startapp produtos

  4. Definindo o Modelo de Produto

    No arquivo `models.py` da aplicação `produtos`, defina um modelo chamado `Produto` que representará os produtos na loja.

    produtos/models.py
    from django.db import models
    
    class Produto(models.Model):
        nome = models.CharField(max_length=100)
        preco = models.DecimalField(max_digits=10, decimal_places=2)
    
        def __str__(self):
            return self.nome

  5. Criando a API REST usando Django REST Framework

    Instale o Django REST Framework e crie um arquivo de serializer. No terminal, execute `pip install djangorestframework`. Depois, crie um novo arquivo chamado `serializers.py` na pasta `produtos`.

    commands
    # Instalar Django REST Framework
    pip install djangorestframework

    produtos/serializers.py
    from rest_framework import serializers
    from .models import Produto
    
    class ProdutoSerializer(serializers.ModelSerializer):
        class Meta:
            model = Produto
            fields = '__all__'

  6. Criando as Views da API

    Crie uma view para gerenciar as operações CRUD para o modelo `Produto`. Edite o arquivo `views.py` da aplicação `produtos`.

    produtos/views.py
    from rest_framework import viewsets
    from .models import Produto
    from .serializers import ProdutoSerializer
    
    class ProdutoViewSet(viewsets.ModelViewSet):
        queryset = Produto.objects.all()
        serializer_class = ProdutoSerializer

  7. Configurando as URLs

    Configure as URLs para a API em um novo arquivo chamado `urls.py` dentro da aplicação `produtos`. Em seguida, adicione as URLs no arquivo principal `urls.py` do projeto.

    produtos/urls.py
    from django.urls import path, include
    from rest_framework.routers import DefaultRouter
    from .views import ProdutoViewSet
    
    router = DefaultRouter()
    router.register(r'produtos', ProdutoViewSet)
    
    urlpatterns = [
        path('', include(router.urls)),
    ]

    api/urls.py
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('api/', include('produtos.urls')),
    ]

  8. Testando a API Localmente

    Antes de implantar, teste a API localmente. Execute o servidor e use o Postman ou cURL para interagir com a API.

    commands
    # Executar o servidor Django
    python manage.py runserver

    curl_examples
    # Criar um novo produto
    curl -X POST -H "Content-Type: application/json" -d '{"nome":"Produto 1", "preco":99.99}' http://localhost:8000/api/produtos/
    # Listar todos os produtos
    curl http://localhost:8000/api/produtos/

  9. Configuração do Ambiente React

    Agora, crie um novo aplicativo React que será a interface do usuário para a API Django. Use o Create React App para inicializar o projeto.

    commands
    # Criar novo aplicativo React
    npx create-react-app frontend
    # Navegar para o diretório do frontend
    cd frontend

  10. Instalando Axios para Requisições HTTP

    Instale o Axios, que será utilizado para fazer requisições para a nossa API Django.

    commands
    # Instalar Axios
    npm install axios

  11. Criando o Componente ProductList

    Crie um componente React chamado `ProductList` que irá exibir a lista de produtos que estão sendo buscados da API.

    frontend/src/ProductList.js
    import React, { useEffect, useState } from 'react';
    import axios from 'axios';
    
    const ProductList = () => {
        const [produtos, setProdutos] = useState([]);
    
        useEffect(() => {
            const fetchData = async () => {
                const result = await axios('http://localhost:8000/api/produtos/');
                setProdutos(result.data);
            };
            fetchData();
        }, []);
    
        return (
            <ul>
                {produtos.map(produto => (
                    <li key={produto.id}>{produto.nome} - R$ {produto.preco}</li>
                ))}
            </ul>
        );
    };
    
    export default ProductList;

  12. Conectando o Componente ao App

    Adicione o componente `ProductList` ao seu componente principal `App.js`.

    frontend/src/App.js
    import React from 'react';
    import ProductList from './ProductList';
    
    const App = () => {
        return (
            <div>
                <h1>Lista de Produtos</h1>
                <ProductList />
            </div>
        );
    };
    
    export default App;

  13. Executando o Aplicativo React

    Execute o aplicativo React e verifique se a lista de produtos é renderizada corretamente.

    commands
    # Executar o aplicativo React
    npm start

  14. Criando o Arquivo Dockerfile para Django

    Crie um arquivo Dockerfile no diretório do seu projeto Django para empacotar a aplicação.

    Dockerfile
    FROM python:3.9
    
    # Set the working directory
    WORKDIR /app
    
    # Install dependencies
    COPY requirements.txt .
    RUN pip install --no-cache-dir -r requirements.txt
    
    # Copy project files
    COPY . .
    
    # Expose port and run the application
    EXPOSE 8000
    CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

  15. Construindo a Imagem Docker

    Na raiz do projeto Django, construa a imagem Docker usando o comando abaixo.

    commands
    # Construir a imagem Docker
    docker build -t django-api .

  16. Criando o Arquivo Kubernetes Deployment

    Crie um arquivo chamado `deployment.yaml` para definir o deployment do Django no Kubernetes.

    deployment.yaml
    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: django-api
    spec:
      replicas: 2
      selector:
        matchLabels:
          app: django-api
      template:
        metadata:
          labels:
            app: django-api
        spec:
          containers:
          - name: django-api
            image: django-api:latest
            ports:
            - containerPort: 8000
    

  17. Criando o Serviço Kubernetes

    Para expor o Django para o exterior, adicione um serviço Kubernetes em um arquivo chamado `service.yaml`.

    service.yaml
    apiVersion: v1
    kind: Service
    metadata:
      name: django-api-service
    spec:
      selector:
        app: django-api
      ports:
        - protocol: TCP
          port: 80
          targetPort: 8000
      type: LoadBalancer
    

  18. Implantando no Kubernetes

    Use os comandos abaixo para implantar o Django e o serviço no Kubernetes.

    commands
    # Aplicar o Deployment
    kubectl apply -f deployment.yaml
    # Aplicar o Serviço
    kubectl apply -f service.yaml

  19. Verificando o Status da Implantação

    Verifique o status da implantação e encontre o endereço IP do serviço usando o comando a seguir.

    commands
    # Verificar implantações
    kubectl get deployments
    # Verificar serviços
    kubectl get services

Conclusão

Neste tutorial, você aprendeu como integrar Django, React e Kubernetes para desenvolver uma aplicação web escalável. Começamos configurando o ambiente, desenvolvendo a API em Django, construindo a interface de usuário com React e, finalmente, implantando a aplicação no Kubernetes. Este fluxo de trabalho fornece uma base sólida para projetos futuros e a capacidade de escalar suas aplicações conforme necessário. Sinta-se à vontade para explorar mais e adicionar novos recursos às suas aplicações.

Hashtags

#Django #React #Kubernetes #APIs #DesenvolvimentoWeb #CloudComputing