Pessoal, vou contar um pouco da minha história, mais especificamente um subset, acho importante mostrar como algumas coisas se desenharam ao longo desses anos, e acredito que esteja perto de algo muito, muito grandioso.
Esse post trata da minha história com Linux, com Docker e com todo o processo que culminou no que chamo hoje de maior oportunidade de reciclagem profissional.
Embora minha história profissional começasse em 2002, partimos aqui de 2013, quando ainda estava no iMusica, uma startup de música, onde eu gerenciava uma equipe que cuidava dos sistemas de backoffice da empresa. Como uma startup de tecnologia, encontrei diversos desafios, trabalhar desde a gestão até a codificação de uma nova arquitetura não era algo fácil mas foi o que fiz ali.
Quem me conhece sabe que não sou astronauta, não sou arquiteto de caixinha, não importa onde eu esteja, eu sou daqueles que dá a cara a tapa, senta frente ao visual studio e mostra como e porquê.
Sempre fui dev, sempre serei dev! No final do dia, todos nós somos devs.
Mas os desafios eram imensos, e naquela época eu havia me deparado com um problema de escalabilidade que poderia endereçar um message broker, lembro que RabbitMQ foi minha escolha entre uma dúzia de soluções avaliadas. RabbitMQ me chamou a atenção por ser uma implementação de um standard, um standard que, inclusive, grandes players como Microsoft, Red Hat, VMWare, Cisco, WSO2, apoiavam. Estou pesquisando agora, mas existiam muitos outros nomes de muito peso envolvidos nesse processo. Enfim, na época ter esses nomes me dava respaldo na escolha. Outro ponto a favor do RabbitMQ e principalmente do AMQP, era a possibilidade de olharmos para outros vendors, e trocarmos de vendors com certa facilidade. Essa independência era viável pela primeira vez, e ser amparado por um standard tende a oferecer esse tipo de possibilidade. Eu nunca busquei o mais fácil, eu sempre busquei o mais sensato para cada cenário e momento.
Meus servidores velhos
Nessa época, em 2013, eu adicionei ao stack que estava montando RabbitMQ e Redis. Ambos capotavam muito no Windows, principalmente pois os servidores que eu tinha eram muito, mas muito antigos, ainda rodavam sob Windows Server 2003… Naquela época, a Microsoft já havia lançado o 2012!
Bom, o desafio era ou abandonar tais soluções ou ter de implantar um linux, o primeiro dessa equipe para hospedar esses serviços. Mas lembre-se, estamos falando de uma equipe .NET, sem conhecimento nenhum sobre Linux, uma equipe moldada pela influência da Microsoft de Steve Ballmer. Era uma equipe Microsoft de Carteirinha.
É importante ressaltar, que mesmo trabalhando diariamente com .NET, defendo e durante toda minha carreira defendi seu uso em comunhão com soluções open source. Em 2005 recomendei NHibernate para a Petrobras(eu disse isso no podcast gago.io) e desde então não parei de usar soluções open source com .NET. Redis, RabbitMQ, ElasticSearch, NHibernate, WSO2, NancyFX, Keycloak, kong, a lista é de fato imensa.
Barreira: o Mindset
Eram outros tempos, e sabia que tinha um mega desafio. Linux era a opção certa, mas eu tinha muito medo. Eu nunca havia estreitado minha relação com o pinguim. Não tinha nenhum preconceito, muito pelo contrário, achava interessante, só tínhamos nenhuma intimidade.
Eu tive ajuda
Com muito receio, e com a ajuda de um rapaz que trabalhava conosco, Felipe Mayor, que já conhecia o suficiente de Linux para me ajudar a administrar um servidor (sim, nessa equipe, eu assumi o controle da gestão dos nossos servidores), e o pessoal de infra ficou responsável somente por entregar uptime. A gestão operacional era toda nossa, principalmente nos servidores Windows, e agora no nossos primeiros servidores linux.
Então subimos o primeiro servidor Linux da equipe, nessa época eu sequer sabia o que era container, e só conheci mais tarde. Mas já estava feliz por estar, aos poucos, sabendo lidar com um servidor headless, algo extremamente incômodo, praticamente um black box.
Lembro que me sentia sem poder, incapaz de analisar e identificar problemas, sentia que não tinha controle sobre o servidor. Aquilo parecia um cavalo indomável, quase um cavalo de troia, pois já que não conhecia, não sabia avaliar problemas e poderia facilmente se tornar um servidor de deep web, ou uma porta de vazamento de informação sigilosa, ou sei lá mais o quê. A ausência de uma interface gráfica intuitiva como o windows me angustiava…
Me recordo que queria instalar uma interface gráfica. E aos poucos, com ajuda, claro, aquilo foi deixando de ser um problema e fui me habituando. Fui entendendo mais, me sentindo cada vez menos desconfortável, até que fluiu. Não vou ser leviando de dizer que nessa época era algo confortável: Definitivamente não! Não era, mas eu estava perdendo ao menos o desconforto. Na nossa infra tínhamos quem conhecesse bem Linux, nosso servidor de MongoDB, por exemplo, ficava sob gestão total da equipe de infra.
Dois anos se passaram, muita coisa legal foi entregue, nossas decisões técnicas foram de sucesso e eu já me sentia mais confortável com a tela preta. Não podia subir nossas aplicações, embora eu tivesse alguma tendência a pensar no Mono como alternativa para rodar nossos projetos no linux. Mas isso não foi pra frente. Era muito para o momento. É muito curioso lembrar disso agora. Lembro que cheguei a fazer algumas coisas com NancyFX para rodar no Mono.
O que ficou desse tempo foram aprendizados, o mindset, o resultado obtido quando resolvi ir contra a corrente e contra a opção óbvia e tomar, mais uma vez, minhas próprias decisões. Sempre com cautela, mas sempre tentando olhar sob diversos prismas em busca de soluções com um fit ideal.
Nessa época relancei meu site, que havia morrido quando infectei minha instância anterior do wordpress, era um deploy no windows que estava servindo à deep web e eu nem fazia ideia disso. A propósito, já faz uns 10 anos que eu tenho sempre uma VPS, em algum lugar. Sempre uso para subir meus projetos, fazer testes, subir meus sites, experimentar tecnologias e soluções. E nessa época, com o conhecimento adquirido, eu resolvi que iria criar minha nova infra sob um Linux. E foi uma experiência incrível.
Menos inseguro que da primeira vez, mas nem por isso seguro, eu subi um novo VPS Linux. E desde então eu nunca mais abandonei o Linux.
Uma coisa o Linux não é: Intuitivo. Você precisa conhecer o jeito que ele trabalha, entender sua arquitetura para entender como chegar às informações que precisa ou operações que precisa fazer. Diferente do Windows que é extremamente intuitivo, no Linux, principalmente em um setup headless, você precisa saber E-XA-TA-MEN-TE o que quer, muito bem. Pois há opções para tudo, mas não necessariamente suas buscas no google resultarão em algo conclusivo. Se não adaptar seu mindset, sofrerá horrores.
E assim fui construindo minhas coisas, meu site, meus projetinhos de teste, comecei a brincar com NodeJS, dei uma parada no Oragon Architecture quando a Microsoft anunciou o .NET vNEXT em 2014, e isso me deu tempo para aprender mais, mais sobre gestão, sobre updates, passei a usar Jenkins no Linux, coisa que só havia feito no Windows. E fui enriquecendo esse conhecimento, pouco-a-pouco, superando cada nova barreira estudando.
Docker – Meu primeiro contato
Anos depois, em 2015, com .NET Core avançando no suporte a Linux, me deparo com Docker: Um tipo de VM diferente, uma vm que não é vm, algo enxuto, diferente, com capacidade de rodar diversas distribuições em uma só máquina. Me pareceu uma bruxaria. Dessa vez, eu estava lidando com mais e mais desafios, e estava mais confiante. Eu já havia saído do iMusica para atender a um projeto insano na BRQ, um projeto de refatoração muito, mas muito louco, muito desafiador, mas concluído com excelência. Esse foi um dos projetos em que implantamos RabbitMQ, ElasticSearch, LogStash e Kibana. Mas tudo ma-nu-al-men-te! Sim, eram kg de documentos word! Ainda usávamos Windows ali, mas era claro que Linux atenderia melhor, e Docker me parecia uma opção. Mas eu não conhecia o suficiente.
Uma oportunidade
Não conhecer o suficiente de Linux e Docker para argumentar naquele projeto foi algo que me deixou chateado. Eu sabia do potencial, da diferença e tinha total ciência de que sob esse aspecto eu poderia fazer mais. Se eu que vinha do mundo Microsoft tinha ciência disso, o mundo teria em breve, era só uma questão de tempo. Então estava claro para mim que eu precisava me dedicar minimamente à compreensão do Linux e Docker para definitivamente entregar poder para novos projetos. Aqui estamos falando de 2015, a Microsoft já anunciara que o .NET Core seria Cross Platform.
Era mais uma revolução, mas eu sabia que se permanecesse preso ao mundo que me trouxera até ali, eu não conseguiria dar próximos passos muito satisfatórios, então eu fiz meu dever de casa. Eu parei para estudar de forma profissional algo totalmente disruptivo para mim.
Eu parei para entender quais fundamentos do Linux não estavam claros para mim, qual eram as questões que faziam Windows e Linux serem tão diferentes e onde residia meu desconhecimento. Eu sabia que para entender Docker precisava entender como o Linux funcionava, então me dediquei a entender algumas coisas de baixo nível. Não tive muito sucesso olhando o código. Mas logo me deparei com conteúdos intermediários, que pincelavam o baixo nível e me davam cada vez mais clareza sobre como aquilo se conectava, como aquilo funcionava. O que eram Linux Containers, o que a Google tinha a ver com Docker? O que docker faz diferente de LXC puro? Qual a sua parcela de genialidade nisso tudo. Eu estudei muito!
A gente tropeça
Uma vez entendendo um pouco sobre como as coisas funcionavam, necessário para quem tinha uma bagagem tão longa com o Windows, eu me dediquei a entender o docker em si. Como subir containers, como trabalhar com imagens, cometi meus erros (como esse aqui). Eu estava fascinado. Eu estava diante de uma solução que provavelmente revolucionaria a forma como desenvolvemos aplicações, estava diante de algo grande, com imenso potencial.
Docker & .NET
Nessa época, não se falava de Docker e .NET por aqui. Na verdade somente Fabrício Lopes Sanchez, Technical Evangelist at Microsoft falava sobre isso, mas seu ponto de vista sobre o tema mostrava apenas relevância e importância: Claro, era o que dava para falar naquele momento. Mas eu queria ensinar aquilo que havia aprendido nos últimos anos. Eu não concebia como meus amigos e colegas estavam deixando uma oportunidade de ouro passar. Não entendia como os projetos não cogitavam coisas assim como forma de aumentar a eficiência de suas entregas. Entenda, eu não estava mudando de lado, eu continuo achando Windows o melhor SO para desktops, inclusive para devs.
O meu lugar ao sol
Então achei meu espaço, eu via que dava para entregar algo novo, algo único, algo que pudesse entregar cada um dos fundamentos necessários para entender docker e containers em geral, e daí surgiu em 18 de Maio de 2016 meu primeiro vídeo falando de docker.
Entenda, eu sou tímido, pelo menos era. Não sou daqueles que quer fazer barulho e tumulto. Mas eu precisei mudar, precisei me adaptar, precisei achar uma forma de me conectar com uma audiência, e encontrei no youtube um espaço para falar. Sem saber se estava mandando bem, se o que estava era correto. Eu venci o medo, venci o receio de falar para a câmera, e posteriormente falar para pessoas, ao vivo. Eu sou a prova viva de que a zona de conforto não é um bom lugar para residir. É na zona de desconforto que encontramos com nossos medos e temos a oportunidade de vencê-los. No youtube, tive a oportunidade de vencer mais um.
Docker de A a Z
Desde então eu não parei mais. A série Docker de A a Z conta com 27 vídeos, dezenas de milhares de minutos assistidos, milhares de visualizações. Sempre dedicada a passar fundamentos, exemplos, stacks e muita coisa.
Esse projeto se estendeu para o Canal .NET onde eu, Renato, Andre e Joel fizemos diversas lives sobre Docker, a maioria delas quando eu ainda era convidado.
Desses eventos e vídeos surgiram palestras, e nunca mais parei de falar de docker, da mesma forma que nunca mais deixei de usar docker.
Vocês não fazem ideia da quantidade de pessoas suportadas, de projetos que a gente ajudou direta ou indiretamente. São milhares de pessoas e projetos. A gente fez tudo que era possível, nesses últimos anos, para viabilizar a compreensão plena do que é Docker, de como usar Containers, como beneficiar-se de Containers, pela perspectiva de quem vinha de um background Windows.
Os céticos sempre ficam pra trás
Mas ainda há quem não tenha aprendido, há quem não tenha parado para estudar e quem nos peça, quase que diariamente, um treinamento ou algo do gênero. E não somente, há também quem está buscando velocidade, quem não tem tempo para enfrentar problemas e resolver problemas, gente que quer velocidade e dicas que de fato poupam tempo e economizam dinheiro. Uma parcela considerável não sabe sequer por onde começar, não consegue organizar sua agenda de estudos, vai, perifericamente tentando pular etapas e morre na praia.
Ou pior, uma parcela dos que não conseguiram aprender docker ainda, correm riscos, não de perderem seus empregos, mas de não conseguirem se recolocar caso queiram. De não achar projeto novo sendo criado sem docker. Há uma parcela de profissionais que estão chegando agora que nunca verão um setup fora de um container, ou verão poucas vezes na vida. E não importa se estamos falando de docker ou um padrão que o suplante. Essa forma de lidar com isolamento, abstração e reaproveitamento de kernels é onde a mágica acontece e é um caminho sem volta.
Foi lindo, mas eu falhei
O Docker de A a Z, minha série gratuita de vídeos sobre docker aqui no gaGO.io peca e peca muito. Embora eu tivesse empenhado centenas de horas respondendo perguntas e ajudando pessoas nas comunidades, faltava o acompanhamento. Gravar vídeos apenas não resolve, não explica a SUA dúvida, que pode ser semelhante à do amigo, mas talvez um detalhe, faça você achar que é algo diferente.
Embora eu tivesse me dedicado muito, muito mesmo para tentar ajudar, não era possível sem um formato que fosse inclusivo, imersivo, intimista, pautado em disciplinas e um cronograma. É impossível para uma boa parcela entender o mínimo sem uma conversa cara-a-cara, mesmo que digital, com perguntas e respostas diretas.
E por isso eu falhei. Na tentativa de entregar o que era possível, e serviu para muitos, eu não entreguei o que quem não aprendeu de fato precisava: Suporte, apoio, empurrões, e puxões de orelha! Por mais próximo que eu estivesse da comunidade, e sempre me fiz muito, mas muito presente, não dava para entregar alguma coisa que de fato fizesse o papel de ser transformador.
Eu encontrei uma forma de fazer diferença
Eu sou a prova viva de que é possível aprender. De que é possível, mas precisa de método, precisa de uma linha mestra que guie o estudo, um roteiro bem definido que esclareça ponto-a-ponto como um mapa detalhado.
Assim, planejo há mais de 1 ano um treinamento que pudesse ser desenhado para todas as faixas etárias e categorias de profissionais. Eu não queria entregar apenas um treinamento de Docker, queria mostrar arquitetura, composição de serviços, arquitetura de soluções, algo que transforme na direção de entregar a melhor experiência para quem quer entender como os pontos se conectam e que possa não só entender arquiteturas complexas, mas compreender como tirar proveito delas. Que possa decidir o que adicionar mas também o que remover de forma pautada em fundamentos e sólidos argumentos. Assim nasce o Docker Definitivo.
O maior e mais completo treinamento de Docker do Brasil
Docker tem o potencial de reduzir de 7 a 100 mil dólares em custo de infra por ano, dependendo do tamanho do teu workload. E as pessoas sequer pensam nisso.
Seu potencial para melhorar o consumo de recursos da sua própria infraestrutura atual é inimaginável. Isso quer dizer, sem custo de hardware adicional, você consegue entregar muito mais densidade computacional de forma controlada. Viabiliza criar sua infra pessoal para estudo. Viabiliza conhecer projetos que você nunca teria acesso. Permite entregar ambientes mais rápido, de forma mais controlada.
Bom, e já falei isso diversas vezes, eu já mostrei meu servidor pessoal, com mais de 50 containers, dos mais variados e custo de menos de 300 reais/mês.
Nós fizemos de tudo para que você aprendesse, e aqui está uma nova oportunidade. Uma oportunidade que sinceramente não sei quando vamos fazer novamente, sequer sei se faremos outra vez. Mas acho que precisamos entregar algo para aqueles que nos pedem todo dia, um treinamento, algo definitivo que traga da total ignorância sobre linux e containers, para a total proficiência sobre Linux e Docker.
É para essas pessoas que quero avisar algo:
Em Agosto/2019 vamos lançar não somente o nosso treinamento de Docker, vamos lançar o maior treinamento de Docker do Brasil. É o maior, mais profundo e simultaneamente mais abrangente!
Esse projeto é muito ambicioso, pois ele conta com uma super infraestrutura, online, para entrega de conteúdo, lives privadas para alunos, plantão tira-dúvidas, suporte 24h com SLA, conteúdo e material adicional.
O que eu tinha para falar é isso! Ainda estamos falando de uma imersão gratuita.
Eu parei para detalhar isso em um vídeo, é esse vídeo que postei abaixo.
Ótima postagem. Mostra os obstáculos que enfrentamos no caminho até aonde desejamos chegar.
Parabéns. Me identifiquei com as dores apresentadas