InteropX – “E aí professor?”

Senhores, que evento em Ijuí/RS! A última vez que estive na Unijuí havia sido em 2006, por ocasião da minha formatura no curso de Sistemas da Informação daquela instuição. Já conhecia o auditório principal e sua grandiosidade – tinha minhas dúvidas se ele lotaria. E lotou: mais de 500 pessoas estiveram presentes neste que eu considero o melhor evento de TI do Rio Grande do Sul. Feito por pessoas apaixonadas por tecnologia e compartilhamento do conhecimento – SEM FINS LUCRATIVOS.

Interop X

Este ano participei como palestrante, com o assunto “Serviços Grátis do Azure”. Palestra semelhante a que fiz no Global Azure Bootcamp em abril. Como nesta oportunidade tive mais tempo, consegui fazer uma demo da Face API do Azure, mostrando para audiência como é possível implementar uma solução fantástica de reconhecimento facial rapidamente, sem gastar um centavo.

O formato desse ano mudou: pela manhã, palestras no auditório principal. A tarde, programação parelela em 4 mini-auditórios com assuntos específicos. O time da Microsoft Community of Practices da Dell particiou em peso, tanto palestrando, como auxiliando na organização do evento. Nota 1000!

Interop X Palestra Marcel Goldhardt

“E aí professor?” – caminhando por lá, encontrei ex-alunos (sim, já fui professor em 2006-2007-2008). Só por isso o evento já valeu a pena. Conversar e descobrir que aquilo que tentei transmitir anos atrás para eles, de alguma forma, agregou valor e pode inspirá-los nas suas carreiras. Que satisfação! É isso que me motiva a continuar nestas iniciativas.

Aos meus amigos Andre Ruschel e Rafael Felipe, os mais sinceros parabéns por mais um ano. O evento só acontece devido a dedicação de vocês. Contiuem sendo a inspiração destes estudantes e colegas de profissão! Até o Interop 2019!

 

Global Azure Bootcamp 2018 – Um Sucesso!

Azure Bootcamp 2018 - Porto Alegre - Palestrantes
Palestrantes do Evento

Sábado, 21 de abril – feriado nacional. Para complicar ainda mais, muita chuva em Porto Alegre. Entretanto, um SHOW da comunidade técnica Microsoft: auditório LOTADO! Mais de 100 pessoas investiram seu tempo e prestigiaram esse tradicional evento global que acontece todos os anos. Esta edição aconteceu no moderno auditório Global Tecnopuc, localizado dentro da PUC/RS. Este ano o evento foi organizado pelo Diego Moreira Matos e o MVP Rafael Felipe, contando com a gigante ajuda da Microsoft Community of Practices da Dell. Um teamwork poucas vezes visto.

Novamente tive a honra de palestrar no evento, desta vez com o assunto “Serviços Grátis do Azure“. Já fui dono de empresa do passado, e sei como é difícil começar um negócio, principalmente no que se refere a gastos. Já fui estudante e deixei de utilizar algumas tecnologias porque “precisava pagar”. O Azure possui uma série de serviços grátis que pode ajudar estes dois públicos a dar o pontapé inicial nos seus projetos.

As palestras tiveram um excelente nível técnico, com o público engajado o tempo inteiro. Simplesmente, UM SUCESSO! Até o ano que vem!

Cloud Foundry CLI: Error read/writing config

Durante o último final-de-semana fizemos o deploy de alguns artefatos para Pivotal Cloud Foundry, em uma algumas instâncias privadas de Produção na empresa. Como precisei monitorar algumas coisas (log tail princinpalmente), abri vários prompts do Windows e utilizei o CLI do Cloud Foundry em paralelo. Resultado? Após certo tempo, o CLI deixou de funcionar. Para qualquer comando, este erro:

Error read/writing config: invalid character ‘:’ after top-level value

Desinstalei e instalei o CLI algumas vezes. Não resolveu.
Solução? Simples. Só adicionar o valor abaixo nas variáveis de ambiente:

DevOps Day 2017 – Porto Alegre

DevOps Day Porto Alegre 2017No último sábado aconteceu em Porto Alegre a edição 2017 do DevOps Day. Cerca de 180 pessoas estiveram presentes no evento realizado na Faculdade de Tecnologia do Senac. Foi uma verdadeira maratona, com 14 palestras em um dia. Achei muito legal o formato do evento: sessões rápidas, direto ao ponto. Perguntas e respostas com um momento definido, geralmente em um slot de 15 minutos a cada três palestras. Uma atividade que eu não conhecia, mas que trouxe muita discussão entre a audiência, foi o fishbowl – extremamente interessante.

Quanto ao conteúdo, achei a maioria das palestras de alto nível, apesar de sentir falta de mais demos. Já no que envolve Cloud Computing, praticamente nada de Azure (domínio de AWS). Sem dúvidas, ano que vem irei submeter uma palestra ao evento contemplando algumas coisas da plataforma. Minha avaliação geral do evento é muito boa – recomendo a todos a participação.

Application Insights – Monitoramento de Endpoint

Já precisou fazer o health-check do endpoint da sua aplicação ou serviço, e ser notificado caso haja problemas? Há pouco tempo atrás, a feature de monitoramento de Endpoints era própria da WebApp no Azure. Na semana passada precisei configurar, e não a encontrei no local que eu costumava. Uma pesquisada rápida e descobri que essa feature foi movida para o Application Insights, atuando de maneira independente da WebApp. Para quem não conhecia/conhece o recurso: ele permite pings (http requests) periódicos de maneira externa a aplicação, a partir de diversas regiões do mundo. Obviamente, também permite a configuração de notificações, seja por e-mail ou webhooks.

A configuração é simples:

  • Crie o recurso Application Insights, caso não tenha feito juntamente com  a criação da WebApp. Para este propósito (http request), utilizei a opção “General”:

Azure Monitoramento de Endpoints Application Insights 1

  • Assim que  estiver que o AppInsights estiver rodando, adicione um teste (“Availability” -> “Create Test”):

Azure Monitoramento de Endpoints Application Insights 2

  • Escolha um nome e adicione a URL a ser monitorada (no meu caso, a URL root da aplicação). Deixei como freqüencia de teste, 5 minutos. Escolhi localidades aleatórias (obviamente isso depende das suas necessidades de negócio): Brasil, Sydney, Moscou e San Jose:

Azure Monitoramento de Endpoints Application Insights 3

  • Critério de sucesso: utilizei o padrão (retorno de um http 200), mas poderia inclusive validar o conteúdo de retorno desta chamada.

Azure Monitoramento de Endpoints Application Insights 4

  • Alertas: diminuí o treshold (se falhar em mais de 2 localidades, dispara a trigger). Por padrão, será enviado um e-mail para o administrador da subscription. Se eu quisesse algo mais personalizado, poderia configurar um webhook (e receber uma ligação de voz com detalhes do alerta, conforme explico neste post):

Azure Monitoramento de Endpoints Application Insights 5

  • Criado o teste, é só deixar rodando:

Azure Monitoramento de Endpoints Application Insights 6

  • Para fins de validação, parei e aplicação e aguardei os erros refletirem no dashboard:

Azure Monitoramento de Endpoints Application Insights 7

Extremamente fácil e útil!

Até a próxima!

[ ]´s

 

IIS AppPool: troca das credenciais

Essa semana passei trabalho com uma conta de serviço (do domínio) que estava sendo bloqueda por tentativas inválidas de login. Esta mesma conta é utilizada na Application Pool de uma aplicação no IIS, para fins de autenticação integrada no acesso a banco e aplicações externas. Em paralelo as investigações para descobrir a origem do lockout, precisei alterar as credenciais utilizadas na Application Pool, pois a conta bloqueada estava causando um HTTP 503, consequentemente derrubando a aplicação. Solução? Powershell. Sempre ele.

# Conta de serviço antiga e nova (com senha)
$oldAppPoolUser     = "CONTOSO.COM\ServiceMyApp"
$newAppPoolUser     = "CONTOSO.COM\ServiceMyAppNew"
$newAppPoolPassword = "mypassword"

Import-Module "WebAdministration"

# Percorre todas Application Pools do IIS
foreach ($appPool in (Get-ChildItem –Path IIS:\AppPools)){
    
    # Verifica as credenciais da Application Pool corrente
    $currentUser = Get-Item (Join-Path 'IIS:\AppPools' $appPool.name) | select -ExpandProperty processModel  | select userName

    # Se a Application Pool utilizar o usuario 'antigo', faz a substituição e restarta a mesma
    if ($currentUser.userName -eq $oldAppPoolUser)
    {
           
     Set-ItemProperty (Join-Path 'IIS:\AppPools' $appPool.name) -Name ProcessModel -Value @{userName=$newAppPoolUser;password=$newAppPoolPassword;identitytype=3}

     Restart-WebAppPool $appPool.name

    }
}

 

Indo além: Azure Resource Groups

Eu sou um grande fã do Azure Resource Manager, devido a versatilidade neste tipo de situação. Simplesmente listo todas VM´s pertencentes ao Resource Group (um agrupamento lógico) e aplico o script para cada umas delas. Assumindo que o nome do meu Resource Group seja AppPoolValidationRG:

    • Opção1: Conectando pelo nome da VM (estando conectado via VPN ao Azure):
Login-AzureRmAccount

$vmList = Get-AzureRMVM -ResourceGroup AppPoolValidationRG

foreach ($vm in $vmList){
    # TODO1: Conectar em Cada VM
    # TODO2: Veriricar se há IIS instalado/rodando
    # TODO3: Chamar FUNCTION que faz a troca do user da AppPool
    # Invoke-Command -ComputerName $ip.PrivateIpAddress -ScriptBlock {...}
}

 

  • Opção 2: Conectando pelo IP privado (estando conectado via VPN ao Azure):
Login-AzureRmAccount

$vmList = Get-AzureRMVM -ResourceGroup AppPoolValidationRG

foreach ($vm in $vmList){
    
    $nics = Get-AzureRmNetworkInterface | where {$_.VirtualMachine.Id -eq $vm.Id}

    foreach ($nic in $nics){
        
        $ip = Get-AzureRmNetworkInterfaceIpConfig -NetworkInterface $nic

        Write-Host $vm.name $ip.PrivateIpAddress

        # TODO1: Conectar em Cada VM
        # TODO2: Veriricar se há IIS instalado/rodando
        # TODO3: Chamar FUNCTION que faz a troca do user da AppPool
        # Invoke-Command -ComputerName $ip.PrivateIpAddress

    }
}

 

  • Opção 3: Conectando pelo IP público (caso exista para todas VM´s):
Login-AzureRmAccount

$publicIPs = Get-AzureRmVM -ResourceGroupName ‘AppPoolValidationRG’ | Get-AzureRmPublicIpAddress

foreach ($publicIP in $publicIPs){
    # TODO1: Conectar em Cada VM
    # TODO2: Veriricar se há IIS instalado/rodando
    # TODO3: Chamar FUNCTION que faz a troca do user da AppPool
    # Invoke-Command -ComputerName $publicIP -ScriptBlock {...}
}

[ ]´s

SQL Saturday 609 – Caxias do Sul/RS

Mais uma vez o interior dando show na realização de eventos para a comunidade de TI. No último sábado, 24 de junho, aconteceu na cidade de Caxias do Sul/RS o SQL Saturday 609. Contando com mais de 400 inscritos, este evento ocorreu nas dependências de Uniftec, tendo sua organização liderada pelo MVP Rodrigo Crespi e sua equipe nota 10. Simplesmente impecável! Nada menos que 18 palestras, divididas em 3 trilhas: BI & Big Data, Database Administration e Database Development.

SQL Saturday 609 Caxias do Sul Marcel Goldhardt e MVP Rafael FelipeTive a oportunidade de palestrar juntamente com o MVP Rafael Felipe, líder da Microsoft Community of Practices da Dell. Apresentamos a palestra Remote Desktop Services no Microsoft Azure. Tentamos mostrar para o público como um DBA pode tirar proveito da virtualização com RDS, desde o processo de desenvolvimento de uma aplicação até a publicação das suas ferramentas de adminitração de banco, em produção.

Existe uma coisa impagável neste tipo de evento: o contato com outros profissionais, o compartilhamento de suas experiências do dia-a-dia, tanto técnicas quanto de carreira. Como por exemplo, conversar por uma hora com o monstro Marcelo Fernandes sobre sua mudança para Berlim, seus desafios pessoais e profissionais enfrentados neste processo. Ou “ganhar” umas dicas de SQL Server do Marcus Vinicius Bittencourt. Este tipo de acontecimento, por si só, já faz a ida ao evento valer a pena.

Meus sinceros agradecimentos ao colega Rafael Felipe e ao Rodrigo Crespi pela oportunidade de palestrar. O voto de confiança de vocês me motiva a estudar e crescer a cada dia. Como eu li em uma parede da Uniftec: It´s a long way to the top if you wanna rock and roll. Valeu! Até a próxima!

SQL Saturday 609 Caxias do Sul Palestrantes
Palestrantes ao final do evento

Azure Continuous Delivery em 9 minutos

Neste vídeo explico como configurar o Azure Continuous Delivery para sua aplicação Web. Esta nova feature do AppService nos permite implementar o Continuous Integration/Deployment rapidamente e de maneira muito fácil.

Cenário:

  • Código na máquina do desenvolvedor (standalone)
  • Criação do repositório Git local
  • Criação do repositório remoto (Github) e sincronização
  • Criação do projeto de build no Visual Studio Team Services
  • Configuração de build e deploy diretamente no Azure Portal

Tudo isso em 9 minutos!

 

Nota: não está no vídeo, mas você poderia ainda integrar um mecanismo de notificações utilizando o Zapier e o Twilio. Ao fim de cada deploy (com sucesso, mas principalmente falha) você poderia receber uma chamda de voz). A implementação é muito semelhante a deste post.