1

Python in Microservice

#Python #REST
Alex Silva
Alex Silva

Introdução

Muitos desenvolvedores Python já ouviram falar sobre o termo microsserviços e desejaram criar um microsserviço Python. Os microsserviços são uma ótima arquitetura para a construção de aplicativos altamente escaláveis. Antes de começar a criar seu aplicativo usando o microsserviço, você deve estar familiarizado com as vantagens e desvantagens de usar microsserviços. Neste artigo, você aprenderá os benefícios e as desvantagens de usar microsserviços. Você também aprenderá como criar seu próprio microsserviço.

Desmistificando as arquiteturas

  • Na arquitetura monolítica, cada lógica de negócios reside no mesmo aplicativo. Os serviços de aplicativo, como gerenciamento de usuário, autenticação e outros recursos, usam o mesmo banco de dados.
  • Em uma arquitetura de microserviço, o aplicativo é dividido em vários serviços separados que são executados em processos separados. Existe um banco de dados diferente para diferentes funcionalidades do aplicativo e os serviços se comunicam entre si usando HTTP, AMQP ou um protocolo binário como TCP, dependendo da natureza de cada serviço. A comunicação entre serviços também pode ser realizada usando filas de mensagens como: RabbitMQ, Kafka or Redis.

Vantagens

  • A aplicação fracamente acoplada significa que os diferentes serviços podem ser construídos usando as tecnologias que melhor se adaptam a eles. Assim, a equipe de desenvolvimento não está limitada às escolhas feitas ao iniciar o projeto.
  • Já os serviços são responsáveis por funcionalidades específicas o que facilita a compreensão e o controle da aplicação.

Desvantagens

  • Uma vez que diferentes serviços usam diferentes bancos de dados, as transações envolvendo mais de um serviço precisam usar consistência eventual.
  • A divisão perfeita dos serviços é muito difícil de ser obtida na primeira tentativa e precisa ser iterada antes de chegar à melhor separação possível dos serviços.

Case: Criar seu próprio Microservice

Vamos desenvolver um Api Rest em Python nossa aplicação terá essa estrutura:

movie-service
├── app
│   ├── api
│   │   ├── models.py
│   │   ├── movies.py
│   |── main.py
└── env

Para isso seguir os passos a seguir:

  1. Instalar FastAPI:
pip install fastapi
  1. Install uvicorn:
pip install uvicorn

Criando...

  • Um simples api rest: criar um api rest para exibir uma lista de filmes
  1. Inicialmente criar uma pasta app/
  2. dentro desta pasta criar o arquivo main.py e dentro dele:
#~/movie_service/app/main.py

from fastapi import FastAPI

app = FastAPI()


@app.get('/')
async
 def index():

    return {"Real": "Python"}

Ao executar o comando uvicorn app.main:app --reload irá exibir na Tela do Navegador:

"Real": "Python"

Agora queremos exibir uma lista de dados por exemplo uma lista de filmes:

#~/movie_service/app/main.py

from fastapi import FastAPI
from pydantic import BaseModel
from typing import List

app = FastAPI()

fake_movie_db = [
    {
        'name': 'Star Wars: Episode IX - The Rise of Skywalker',
        'plot': 'The surviving members of the resistance face the First Order once again.',
        'genres': ['Action', 'Adventure', 'Fantasy'],
        'casts': ['Daisy Ridley', 'Adam Driver']
    }
]

class Movie(BaseModel):
    name: str
    plot: str
    genres: List[str]
    casts: List[str]


@app.get('/', response_model=List[Movie])
async def index():
    return fake_movie_db

Apos o comando uvicorn app.main:app --reload irá ser exibido no navegador:

[{"name":"Star Wars: Episode IX - The Rise of Skywalker","plot":"The surviving members of the resistance face the First Order once again.","genres":["Action","Adventure","Fantasy"],"casts":["Daisy Ridley","Adam Driver"]}]

Tudo muito simples, não! Não foi necessário muitas configurações. Ao acessar a utl http://127.0.0.1:8000/docs do projeto, temos uma documentação do api desenvolvido:

Não foi fornecido texto alternativo para esta imagem


Conclusão

O artigo abordou de forma rápida o desenvolvimento de um api rest em Python sem muitas configurações podemos ter um api pronto! Claro o framework ajudou bastante. Existem muitos frameworks em python para desenvolvimento de apis, nesse artigo usamos Fastapi contudo podemos sitar ao framework Flask para desenvolvimento de apis rest.


Referencias

  1. https://www.fullstackpython.com/microservices.html
  2. https://blog.geekhunter.com.br/python-microservices/
  3. https://www.toptal.com/python/introduction-python-microservices-nameko
  4. https://sonusharma-mnnit.medium.com/building-a-microservice-in-python-ff009da83dac
  5. https://medium.com/swlh/python-microservices-01-tornado-asyncio-lint-test-coverage-project-setup-9fbf4ca3bf90
  6. https://dev.to/paurakhsharma/microservice-in-python-using-fastapi-24cc

Por Alex José Silva

Sou Analista de Sistemas e especialista em desenvolvimento de software com tecnologias abertas. Ao longo da minha carreira contribui na manutenção de sistemas para gestão empresarial em diversos tipos de segmentos: Hospitais, Mineradoras, Transportadoras e empresas de Logística em Cadeia de Mantimentos. Atuante em grupos de desenvolvedores no estado de Pernambuco: SalesForce, Chatbot Pernambuco, JUG-PE/Usuários Java de Pernambuco, Facebook Developer Circle Recife, GDG Recife, FEMUGPE - Front-End, IA_PE. Sou um experiente participante de HackathonsGameJans e Startup Weekend. Acredito na cultura de inovação e empreendedorismo.

1
18

Comentários (1)

1
⚡Eros Lima

⚡Eros Lima

17/02/2021 12:47

Show Hackathons tu já é fera, acho que a galera aqui é mais iniciante ou intermediária, seu artigo, ficou top, mas eu acredito que seja muito técnico ainda e pesado tu tem que publicar no medium isso ir refinando que vai fazer bem + sucesso, mas vamos ver a audiência que hj tá fraca.


Parabéns me add:


https://github.com/ErosMLima

https://www.linkedin.com/in/%E2%9A%A1%EF%B8%8Feros-m-lima%E2%98%95%EF%B8%8F-57a405198/

Apaixonado por TI

Brasil