Deploy e Sysadmin para desenvolvedores


English Version (Google Translate)

Sábado agora começa o curso de Deploy. A idéia deste curso surgiu conversando com o Carlos Eduardo (sócio da eGenial) e nós percebemos que não existia em lugar algum uma forma centralizada de aprender o que realmente acontece em um um servidor. Rapidamente o Carlos veio com uma estrutura de grade do que poderia ser o curso e eu achei a idéia muito legal.

Faltava encontrar um instrutor, já que alguém com perfil de desenvolvedor (pois é um curso para desenvolvedores) e com profundo conhecimento de sysadmin não é fácil de encontrar. E para esta tarefa ninguém melhor que o Silvestre Mergulhão (Rede Parede, Portal do Voluntário, Improve-it, e etc).

Por que o curso é importante?

Para 2010 a eGenial veio com um planejamento um pouco diferente. Atuando forte na comunidade Ruby, o Carlos e o restante do pessoal criou 4 cursos de Ruby. Todos cursos são complementares e com conteúdo que você não consegue encontrar facilmente (e centralizado) por aí. Ao final dos 4 cursos nós, instrutores, e a eGenial estaremos contribuindo para criar uma comunidade Ruby com mais qualidade.

Os cursos são:
  1. Rails do Básico ao Avançado (que eu ministro)
  2. Ruby e Rails Imersão (que eu também vou ministrar)
  3. BDD on Rails (com o Lucas Húngaro)
  4. Sysdeploy (com o Mergulhão)

Com o primeiro curso você será capaz de criar aplicações Rails já com qualidade e bem elaboradas. Com o imersão Ruby você vai entender como as “mágicas” funcionam e como criar a sua própria magia da forma correta. O curso de BDD é uma obrigação para qualquer desenvolvedor Ruby e é a única forma de garantir manutenção a longo prazo e qualidade em seu sistema (mais para frente faço um post sobre este curso).

E para finalizar, o curso de Sysdeploy é a resposta para todas as pessoas que perguntam sobre performance do Rails mas que na verdade mal sabem o que é uma VPS. Todas as dúvidas sobre performance que aparecem são porque as pessoas não sabem o que é VPS, cluster, escalar vertical ou horizontalmente, proxy balancer, cache, memcache, diferença entre servidor de banco, web e aplicação e etc.

Desenvolver aplicações para internet não é apenas escrever código, UI e testes. É também garantir que estas coisas vão rodar da forma correta, com performance, automatizadas e que não serão invadidas por qualquer script kid que fique “chutando” senhas via ssh.

Vejo muita gente dizendo que hoje é fácil fazer deploy de aplicações Rails pois a forma básica é igual a PHP. Sinceramente que fala uma coisa dessas não tem a menor idéia do que é deploy de aplicações em nenhuma linguagem. Colocar uma aplicação rodando em um shared host é fácil mas você nunca poderá fazer deploy de uma aplicação séria (isso em qualquer linguagem) em um shared host.

Já que cedo ou tarde você não vai poder recorrer mais aos shared hosts você terá que contratar uma VPS (se não sabe o que é isso então é mais um motivo para fazer o curso). E com uma VPS você está sozinho, nada de suporte, ninguém para configurar as coisas para você e ninguém para você colocar a culpa quando sair uma nova versão do Rails e sua app não funcionar.

Temas como configuração de servidores e automatização de deploy são tão difíceis de aprender que o suporte das empresas de hospedagem estão sempre atolados. Os desenvolvedores web de hoje pensam como desenvolvedores desktop, compilei, instalei e pronto. O que na prática a coisa deveria ser totalmente diferente.

Mas eu não vou ser sysadmin

Nem eu quero arrumar emprego de sysadmin, mas a pouco tempo escutei um podcast com um entrevista do Chad Fowler onde ele fala que todos os bons desenvolvedores que ele conhece sabem fazer tudo. Quando ele diz tudo é desenvolver o código, testar, noções de UI, configurar um servidor, escalar este servidor e etc.

Mesmo que você não trabalhe com isto diariamente vai precisar saber onde a sua aplicação deve se comportar de certa forma para se adequar a estrutura dos seus servidores e você não vai poder abrir um ticket ou contratar um sysadmin cada vez que fizer deploy e aplicação não iniciar.

Mas eu já uso Linux e sei instalar uma VPS do zero

Quem bom, mas mais uma vez você está errado. Nenhum sistema respeitável vai depender de ajustes manuais para fazer deploy ou configurar servidores.

Você vai precisar conhecer ferramentas como Capistrano, Chef, Puppet, Moonshine e etc. Ferramentas responsáveis por automatizar o processo de deploy da sua aplicação e criação dos servidores ou você vai querer gastar dois dia para cada deploy? Ou pior, você não tem um servidor de Staging pois demora para deixar tudo sincronizado ( O.O )

E para estas ferramentas funcionarem é preciso ter conhecimento da aplicação, conhecer quais gems são necessárias, como compilar libs binárias e etc. Este tipo de coisa não será um sysadmin de um host contratado o responsável por fazer.

Mas ainda posso aprender sozinho…

O servidor de produção não é um bom local para cometer erros. É bom que tudo funcione de primeira, sem falhas de segurança e principalmente com backups. Este é o tipo de coisa que eu gostaria de ter tido um curso para minimizar os meus erros.

Um exemplo comum: Backups. Raramente quando comento sobre Backups eu escuto uma boa estratégia. Normalmente é dump do banco e um tar.gz da pasta da aplicação, (que as vezes é agendado no cron) e a pessoa baixa isto para um disco local. Esta é a pior estratégia de backup possível.

Seu backup deveria ser feito automaticamente, no mínimo uma vez ao dia e enviado para um outro servidor seguro ou disco remoto em um data center, sem nunca passar pela sua máquina. Existem outras diversas formas de ter um Backup de qualidade, mas a mais comum (do parágrafo anterior) é a mais errado de todas.

E Backup é só um assunto que eu pagaria facilmente para nunca ter problemas, existem vários outros. E para evitar estes problemas que tal pagar pelo curso e aprender com alguém já sabe tudo isto na prática?

Faça já sua matrícula

Veja a grade no site e faça já sua matrícula para subir um nível na sua carrera de desenvolvedor. E melhor ainda, preparar a base para que você possa criar suas próprias aplicações. Ou você vai querer cometer os erros acima em seu próprio produto?

PS: Eu não ganho comissão por curso ein :-)


9 Comentários to “Deploy e Sysadmin para desenvolvedores”

Rafael Cruz Rubert diz:

Algo que acredito ser positivo para qualquer programador é ele ter noção da infraestrutura, já que para a maioria dos casos sysadmin acha que o programador sempre é errado e vice versa, o que sinto falta é o curso avançado de rails, que muito tempo ouço comentários mas nada concreto. Excelente post, parabéns.


Norberto Oliveira Junior diz:

Esse é o Daniel !!

Eu não sei nada disso aí que você citou no post, quero aprender tudo isso, por isso vou fazer o curso. Excelente post Daniel.


Daniel Docki diz:

Eu vou fazer também, fui o sortudo que ganhei o curso, mas já fiz o Rails do Básico ao Avançado, o próximo vai ser BDD de depois Ruby e Rails Imersão. Não sei nada de sysadmin, espero aprender muito.


Sylvestre Mergulhão diz:

Uhu, sensacional Daniel, eu não teria feito um post melhor! Acho que você deve negociar com o Carlos uma comissão ;-)

Grande abraço!


Breno diz:

O que será Ruby Rails imersão ? O que será tratado neste curso?


Diogo Chaves de Souza diz:

Devo dizer que estava em dúvida se ia fazer o curso ou não, mas após ler o post, já fiz minha inscrição! \o/

Valeu por partilhar sua opinião sobre o assunto! E realmente, merecia uma comissão… =P


Ronaldo C Schork Jr diz:

Grande mestre. Eu já estava bem interessado em fazer o curso, e seu post deu a certeza de que eu realmente precisava fazer… mesmo não podendo comparecer ao primeiro dia, tô inscrito lá e depois corro atrás.

Abraços.


Ricardo Farias diz:

Daniel, parabéns pelo post !!! Estou fazendo o curso de Rails com você e já me inscrevi nos outros 3 cursos. Estou determinado a aprender cada vez mais sobre Desenvolvimento para Web com RoR e todas as tecnologias que o cercam. Conheci o Mergulhão no OxenteRails e vi que é um profundo conhecedor dessa área de deploy, com riquíssimas experiências, algumas já compartilhadas no Congresso de Natal. Assim como você, é uma pessoa simples, que compartilha todos os detalhes, todos os segredos, sem ficar “escondendo o jogo”; ao contrário, pessoas como vocês e os outros ícones do mundo Rails (Akita, Tapajós, e outros) fazem questão de compartilhar seus conhecimentos e ajudar os iniciantes a se tornarem profissionais. Me sinto muito honrado de ter encontrado vocês e toda a comunidade de desenvolvimento ágil. Espero um dia estar ensinando Ruby e/ou Rails também.


pandora necklace diz:

que muito tempo ouço comentários mas nada concreto. Excelente post, parabéns. links of london charms


Comentário