Skip to content

Aula 3 - Tópicos para 21/Out #22

@huogerac

Description

@huogerac

Aula 3

Vamos colocar o chapéu do BACKEND, vamos codar uma versão inicial e nossa primeira funcionalidade

🐍 Requisitos

  • Ter python (de preferência com PyEnv)
  • Saber um pouco de pip e virtualenv

🚀 Objetivos principais

  • Criar API para listar notícias: Criar a primeira funcionalidade de forma completa, ou seja, api, testes, banco de dados e fazer deploy.
  • Conectar o frontend ao backend real e entender todas as peças

Assuntos & Tarefas

  • Papo rápido sobre D-Jà vue e nossa formação fullstack
  • Setup inicial do hackernews API (Flask)
  • Vantagens de "API Design first"
  • Alterar para Flask com OpenAPI (connexion)
  • Teste de conexão com BD (PyTest)
  • Subir um Postgres 13 (com Docker)
  • Implementar conexão ao banco no Flask (SQLAlchemy)
  • Teste da API
  • Implementar API
  • Teste do serviço de listar_noticias
  • Criar tabela de notícias (Migrations com Alembic)
  • Implementar listar notícias (SQLAlchemy)
  • Definir como a notícia é serializada
  • Rodar local e conectar com o frontend (desliga o Mock API)
  • Rodar no ambiente DEV (Vercel + Heroku)
  • Rodar em PROD (Digital Ocean)

🤔 FAQ

  • Preciso de docker-compose? posso usar isto em PROD?
  • E este CORS ai?

💣 Polêmicas

  • Framework vs Microframework (Django vs Flask)
  • Organização e estrutura de projetos para API Python
  • Design first API vs Documentação quando sobrar tempo

🤔 Por que Flask? Por que não FastAPI?

  • O objetivo não é ensinar Flask, nem focar em um framework específico, mas sim focar em APIs com Python, nas peças necessárias para nossa arquitetura
  • Vamos promover um desacoplamento das camadas, logo, não é para ser difícil trocar a camada de API (Flask por FastAPI)
  • Queremos apresentar uma estrutura pronta e testada em produção, com Flask já temos uma estrutura bem madura para isto
  • Por último, mas não menos importante, Flask tem uma forma que facilita a implementação de Design First APIs
  • Podemos falar mais disto aqui Afinal, qual stack vamos utilizar no Hackernews clone? #3

💁 Visão geral da arquitetura

  • Não se assuste, é mais simples que parece
  • Se fizer este desenho no Django vai ficar ainda mais complicado
  • Entenda que são camadas para facilitar o separação de responsabilidades, deixar mais fácil de testar

hackernews-Layers drawio_v1

💁 Visão geral dos ambiente (DEVOPS)

hackernews-DeployEnvs drawio_v1

Vai dar para ver tudo isto em 2h?

Não! mas serão os assuntos para os próximos 2 ou 3 encontros...

Quer ficar LIGADO em tudo que vai rolar sobre Backend?

Dá um WATCH nos repos abaixo:
👉 FRONTEND https://github.com/confraria-devpro/hackernews-clone
👉 BACKEND https://github.com/confraria-devpro/hackernews-api

Links:

https://plataforma.dev.pro.br/42242-formacao-fullstack
https://github.com/confraria-devpro/hackernews-clone/discussions
Playlist REST API Riverfount

Quando?

👉 Todas as Quintas-feiras às 20h!
Próximo encontro, dia 21/10/2021
Sala do Zoom está em https://plataforma.dev.pro.br/42242-formacao-fullstack, salve na sua agenda!

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentation

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions