Perfil

Filipe A Ximenes @xima


Sobre mim

Desenvolvedor e sócio da http://www.vinta.com.br/

Propostas

A longa e difícil jornada de submeter um formulário

Lidar com a submissão de formulários é uma tarefa corriqueira de quase todo desenvolvedor web. É também uma tarefa que pode a primeira vista parecer bastante simples, mas será que é mesmo? Desenvolver um formulário capaz de: realizar validações, lidar com erros, exceções e que tenha uma boa experiência de usuário (UX) exige muito mais do que você pode imaginar. Nessa palestra vamos explorar os desafios de desenvolver um formulário com todas essas características e vamos responder as seguintes perguntas:


- Como e onde e quando fazer validações?
- Como lidar com requisições asíncronas?
- Como reportar erros?
- Como garantir um boa UX?


Para isso, vamos utilizar algumas ferramentas modernas como: React, Redux, Sagas, Tapioca-Wrapper e Django REST Framework.

APIs: o que são, onde vivem, do que se alimentam?

APIs vem se tornando um tema cada vez mais popular nos últimos anos. Isso de deu por diversos fatores como a popularização dos smartphones, dos frameworks de “Aplicação de página única” (SPA - Single page application) e a popularização do SaaS (Software as a service). Mas devido a quantidade de coisas que envolvem o desenvolvimento de aplicações web, esse costuma ser um tema um pouco obscuro para quem tem pouco tempo na área.


Nessa palestra, vamos tentar responder algumas perguntas como: O que são APIs? Como elas funcionam? Quais são as diferenças entra uma aplicação web convencional e uma feita com APIs? O que é esse tal REST?

APIs: o que são, onde vivem, do que se alimentam?

APIs vem se tornando um tema cada vez mais popular nos últimos anos. Isso de deu por diversos fatores como a popularização dos smartphones, dos frameworks de “Aplicação de página única” (SPA - Single page application) e a popularização do SaaS (Software as a service). Mas devido a quantidade de coisas que envolvem o desenvolvimento de aplicações web, esse costuma ser um tema um pouco obscuro para quem tem pouco tempo na área.


Nessa palestra, vamos tentar responder algumas perguntas como: O que são APIs? Como elas funcionam? Quais são as diferenças entra uma aplicação web convencional e uma feita com APIs? O que é esse tal REST?

Aplicações multi-tenacidade com Django

Multi-tenacidade (multitenancy) é característica de um sistema atender vários clientes a partir de uma única instância de software. Esta é uma característica bastante fácil de se verificar em sistemas SaaS mas que pode ser encontrada em diversos níveis e formas em arquiteturas de software.


O caso de uso mais comum de uso de muni-tenacidade é para isolamento de dados entre clientes. Uma forma de fazer isso é através do uso de múltiplos bancos de dados. Outra forma bastante comum é utilizar-se de apenas um banco de dados e modelar relacionamentos nas tabelas de forma que seja possível realizar consultas isoladas. A terceira forma mais comum é, novamente, ter apenas um banco de dados mas desta vez ter 'schemas' separados para cada cliente.


Nesta palestra falarei sobre cada um destas abordagens. Para cada uma delas você entenderá como funciona a arquitetura, como desenvolvê-la utilizando Django, verá exemplos de como realizar consultas e conhecerá as ferramentas que podem ajudar no processo de desenvolvimento. Ao fim você será capaz de escolher a abordagem que melhor se adequa a sua próxima aplicação.


Sumário:


- O que é multi-tenacidade (~2 min)
    - Contexto para exemplos (~2 min)
    - Múltiplos bancos de dados (~8 min)
    - Como rotear
    - Consultas
    - Escalabilidade
    - Manutenção
- Único banco/Único schema (~8 min)
    - Roteamento
    - Isolando dados
    - Consultas
    - Possíveis problemas
- Único banco/Múltiplos schemas (~10 min)
    - Tabelas compartilhadas vs. tabelas de cliente
    - Roteamento
    - Django-tenant-schemas
    - Como funciona internamente
    - Consultas
    - Migrações


 

Aplicações multitenancy com Django

Multitenancy é um modelo de arquitetura de sistemas onde uma única instancia de software serve múltiplos clientes (tenants) cada um em seu próprio contexto disjunto de dados. Isolar dados não só nos permite evitar falhas de segurança no sistema como também simplifica o desenvolvimento da aplicação e sua manutenção. Nesta palestra vamos falar sobre as formas de se desenvolver um sistema multitenant, monstrando vantagens e desvantagens e também explorar as ferramentas disponíveis para o Django que podem facilitar bastante o nosso trabalho. 

Conheça o seu [Django] ORM




Fazer queries com o ORM do Django é fácil e nos poupa muito tempo. Muitas vezes é possível fazer projetos inteiros com simples `get`s e `filter`s. Também é muito comum encontrar projetos que precisam de cálculos e queries mais complexas, mas que optam por fazer queries simples e e fazer processamentos no Python. Por esses motivos, muita gente acaba não explorando todo o potencial do ORM. Nessa palestra vamos mostrar como utilzar essas ferramentas tantas vezes subutilizadas mas que podem acelerar e simplificar o desenvolvimento. Aqui alguns dos tópicos que vamos cobrir:
- Filter
- Exclude
- Select related
- Prefetch related
- Cláusulas Case When
- Anotações
- Agregações
- Cláusulas Q
- Cláusulas F
- Queryset Union
- Managers customizados
- Querysets customizados



Criação de wrappers utilizando Tapioca

Vamos aprender como se usa um wrapper feito com o Tapioca (http://tapioca-wrapper.readthedocs.io/en/stable/index.html), e depois podemos procurar APIs de serviços que ainda não tenham clientes Tapioca para desenvolver durante a sprint. Desenvolver um wrapper usando Tapioca não costuma levar mais do que 2 horas, assim temos tempo suficiente para inciar e concluir o desenvolvimento!

Isolando os dados dos seus clientes com Django

Multitenancy é um modelo de arquitetura de sistemas onde uma única instancia de software serve múltiplos clientes (tenants) cada um em seu próprio contexto disjunto de dados. Isolar dados não só nos permite evitar falhas de segurança em nosso sistema como também simplifica o desenvolvimento da aplicação e sua manutenção.


 


Nesta palestra vamos falar sobre as formas de se desenvolver um sistema multitenant, monstrando vantagens e desvantagens e também explorar as ferramentas disponíveis para o Django que podem facilitar bastante o nosso trabalho. 

Isolando os dados dos seus clientes com Django

Multitenancy é um modelo de arquitetura de sistemas onde uma única instancia de software serve múltiplos clientes (tenants) cada um em seu próprio contexto disjunto de dados. Isolar dados não só nos permite evitar falhas de segurança em nosso sistema como também simplifica o desenvolvimento da aplicação e sua manutenção.


Nesta palestra vamos falar sobre as formas de se desenvolver um sistema multitenant, monstrando vantagens e desvantagens e também explorar as ferramentas disponíveis para o Django que podem facilitar bastante o nosso trabalho. 

O que é esse tal de REST?

REST é a bola vez quando falamos sobre API. As maioria dos serviços que encontramos na web fornece interfaces deste tipo para que possamos desenvolver integrações. Será mesmo que estas APIs podem ser consideradas RESTful? O que é preciso para que uma API seja considerada RESTful? Você sabia que este padrão já existe a mais de 15 anos? Nesta palestra vamos nos aprofundar no tema e entender os conceitos e constraints de um sistema RESTful para que possamos explorar suas vantagens na hora de arquitetar nossa próxima API web.

[Quase] Tudo que você precisa saber sobre tarefas assíncronas

Por quanto tempo é aceitável deixar o seu usuário esperando uma resposta do servidor? Para a maioria dos casos a resposta certa é: o mínimo que a conexão de internet dele permitir. Isso significa que o tempo que o seu servidor deve passar processando a requisição deve ser o mais próximo de zero possível. Nessa palestra vamos falar sobre o que são, para que servem, como  funcionam e quais são as boas práticas a se seguir quando estamos desenvolvendo tarefas assíncronas.

Testando sua API web

Todo desenvolvedor com um pouco de experiência já está cansado de saber (ou deveria estar) que tests são essenciais para se desenvolver uma aplicação de maneira saudável e sustentável. Nessa palestra vamos conversar sobre APIs web explorando que partes e como devemos testa-las. Vamos usar a ferramenta para desenvolvimento de APIs mais popular do Python, o Django REST framework para os exemplos, porém os conceitos devem valer para testar aplicações feitas com qualquer outra ferramenta.

Testando sua API web

Todo desenvolvedor com um pouco de experiência já está cansado de saber (ou deveria estar) que tests são essenciais para se desenvolver uma aplicação de maneira saudável e sustentável. Nessa palestra vamos conversar sobre APIs web explorando que partes e como devemos testa-las. Vamos usar a ferramenta para desenvolvimento de APIs mais popular do Python, o Django REST framework para os exemplos, porém os conceitos devem valer para testar aplicações feitas com qualquer outra ferramenta.

Testando sua API web

Todo desenvolvedor com um pouco de experiência já está cansado de saber (ou deveria estar) que tests são essenciais para se desenvolver uma aplicação de maneira saudável e sustentável. Nessa palestra vamos conversar sobre APIs web explorando que partes e como devemos testa-las. Vamos usar a ferramenta para desenvolvimento de APIs mais popular do Python, o Django REST framework para os exemplos, porém os conceitos devem valer para testar aplicações feitas com qualquer outra ferramenta.

Usando Tapioca para acessar APIs web

Bibliotecas como facepy e python-twitter são muito populares e nos ajudam a interagir com as APIs do Facebook e do Twitter. Nesta palestra, vamos conversar sobre como estas bibliotecas funcionam, explicitar alguns de seus problemas e mostrar como Tapioca pode facilitar nosso trabalho. https://github.com/vintasoftware/tapioca-wrapper