2. • ViniciusQuaiato
• Ninja developer na Lambda3
• twitter.com/vquaiato
• github.com/vquaiato
• vquaiato.github.io
• facebook.com/vquaiato
• Wennder Santos
• Microsoft MVP vindo da roça / developer na
Lambda3
• twitter.com/wenndersantos
• github.com/wenndersantos
• wenndersantos.github.io
• facebook.com/wennder.santos
3. Cenário atual
• Web apps
• Mobile apps
• Desktop apps
• IoT apps
• Wearable apps
• Whatever apps
4. Cenário atual
• Diferentes tipos de apps tem diferentes necessidades
• Processamento mobile é diferente de desktop, que é diferente de wearable,
etc
5. Os problemas
• Timeout
• Request de uma app online
• Processamento
• Grande consumo de CPU em uma app mobile
• Wearable… nem se fala
• Scheduled
• Consolidação de dados a cada X tempo
6. Soluções
• Timeout
• Aumentar o limite de tempo do request
• Processamento
• newThread()
• Scheduled
• Scheduled task doWindows
• Timers nas apps desktop
7. Soluções
• Existem N soluções diferentes
• Cada solução pode ser boa em um determinado cenário e não tão bom em
outro
• É preciso analisar cada caso e entender os trade offs
9. AzureWebJobs
“AzureWebJobs provide an easy way to run scripts or programs as background
processes in the context of an App Service web app, API app, or mobile app.”
Image processing or other CPU-intensive work.
Queue processing.
RSS aggregation.
File maintenance, such as aggregating or cleaning up log files.
Other long-running tasks that you want to run in a background thread, such as sending emails
Tempo do request
- O usuário precisa esperar mais tempo
- O servidor fica sobrecarregado com vários requests não finalizados e eventualmente para de responder
- Chegará um momento que o request que era de 30 segundos vai subir para 1min, depois 2min, 5min, até quando?
Threads
- Quantas threads podemos criar em uma app mobile antes que o processamento pare?
- Quantas threads podem ser criadas até que o SO informe que o seu app parou?
- Quantas threads até o processador começar a fritar o device?
Timers / Scheduled Tasks
- Como escalar os timers?
- Como isolar a execução de um Timer na sua aplicação?
- Como dar manutenção e versionar uma scheduled task?
- Quando for necessário alterar a task, como fazer um deploy com CI e CD?
There is no additional cost to use WebJobs.
Rotinas como Serviço
Rodar em context do XPTO app
Geralmente vai ter uma StorageAccount vinculada
Poderia ao invés disso se comunicar com uma API
https://code.msdn.microsoft.com/Azure-App-Calling-a-WebJob-c41ccf5d
Explicar a criação de um WebJob com o Visual Studio
- Template de projeto
- SDK do Azure
- MÉTODOS ESTÁTICOS!!!!
- Explicar como vincular a conta do Azure
- Configurar as variáveis no app.settings que o projeto define
- Deploy vinculado a um projeto de website asp.net
USAR A DEFINIÇÃO DO CRON
{second} {minute} {hour} {day} {month} {day of the week}
A definição da MS não é recomendada pelo time do Azure
Caracteres proibidos em uma RowKey ou PartitionKey
- The forward slash (/) character
- The backslash (\) character
- The number sign (#) character
- The question mark (?) character
https://docs.microsoft.com/pt-br/rest/api/storageservices/fileservices/Understanding-the-Table-Service-Data-Model?redirectedfrom=MSDN
Mostrar no portal do Azure como fica sinalizado que é um Schduled job
Mostrar logs
RunMode: OnDemand
Main: RunAndBlock
Função só é executada quando critérios forem satisfeitos
QueueTrigger
FileTrigger
BlogTrigger
- https://github.com/Azure/azure-webjobs-sdk-extensions