Pegar uma matéria de Sistemas Distribuídos na UFTPR!
Eu nunca tinha estudado formalmente o assunto, minha Engenharia foi bem baixo nível.
Talvez você pense: "Ah, faculdade está atrasada"
Mas será? Segue o fio... 👇
Tivemos no total 11 aulas e vou comentar cada uma delas.
1ª Características de Sistemas Distribuídos
É bem legal você conhecer o que são essa categorias de sistemas. Quais são os desafios? O que é realmente um Middleware? Esse último aí eu tinha uma definição errada.
2ª Arquiteturas de Sistemas Distribuídos
Todo mundo conhece o Cliente-Servidor. Mas já ouviu falar do Peer2Peer? Conhece o Pub/Sub? #ApacheKafka tá aqui no Pub/Sub e foi bom discutir como apesar das coisas avançarem desde que o livro foi escrito, o livro não está desatualizado.
3ª Comunicação entre Processos
Essa aí eu manjava quase tudo. TCP, UDP e ... Não! Eu não manjava Multicast. Eu tinha visto em Redes, mas nunca tinha implementado. Agora eu sei como o Youtube consegue achar meu celular no mesmo wifi.
Teve discussão sobre síncrono e assíncrono.
4ª-A Modelos de Falhas
Como falhas acontecem em comunicação entre processos. São tanto tipos de falhas e elas já estão todas catalogadas lá desde muito tempo atrás. Conhecer ela é muito bom para saber modelar direito uma comunicação, para fazer uma analise de causa raiz.
4ª-B Modelo de Segurança
Sabe diferenciar Autenticação de Autorização? Sabe o que é Auditoria? Tem um pouco de criptografia também.
Teve uma discussão sobre as formas de ataques para sistemas em rede.
5ª Coordenação e Acordo
A aula faz um passeio pelos algoritmos de seleção de líder e votação. Foi muito importante porque eu gastei um pouco estudando os "internals" do #ApacheKafka. Também vi como o Raft foi feito através de puro design de código.
6ª Comunicação entre Objetos Distribuídos
Um pouco a fundo de como dois sistemas interagem. Pegou a teoria que já tava nas aulas passadas e adicionou mais conteúdo. Esquece o "Objetos" e pensa no REST/gRCP/Kafka. Qual é modelo de falhas deles?
7ª Eventos e Notificações
Aula sobre o paradigma Pub/Sub. Como caracterizar, o que é um broker? Nessa aula eu vi que 90% dos termos que usava estavam corretos. Mas depois li um artigo que me abriu a mente para Event-Driven/Event Sourcing.
OK! Desatualizado! MAS... A caracterização serve pra isso. Se você conseguir caracterizar o seu Middleware da forma como o Java RMI foi caracterizado na aula, você aprendeu!
9ª Serviços Web
Bom... Quase desatualizada... Foi explicado o que é SOAP e todos elementos e fizemos uns paralelos com REST. Por exemplo o OpenAPI é uma forma de fazer o papel do WSDL, mas ainda falta alguns conceitos que podem ser preenchidos.
Como é que se garante que os dados são consistentes? Quais são os principais problemas de concorrência e como podem ser resolvidos?
Em resumo, as aulas foram muito boas. Apesar de alguns estudos de casos estarem desatualizados, deu pra fazer uma correlação. O livro usado eu não li, eu tenho o Tanenbaum e não o troco pode nada... Pena que ele tá caro e não tem tradução atualizada.
Outro livro que eu estava terminando e parei foi o "Designing Data-Intensive Applications" que também toda em muitos dos temas das aulas 10 e 11. Se você quer se aprofundar, dá uma olhada na O'Reilly.
E por fim, deixo o texto da caracterização que fiz de "Sistemas Orientados a Eventos". Eu escrevi esse post antes de ler o artigo citando anteriormente.
Já a apresentação eu fiz depois do artigo. Dá pra ver que tem mais conceitos, mas como só tinha 20min eu tive que resumir. Daria pra falar 2hs sobre o tema... speakerdeck.com/vepo/arquitetu…
Se achou interessante... Procura uma universidade pública que você gosta e fica atento ao calendário da pós-graduação. Sempre existe a possibilidade de você ver aula como aluno externo ou aluno especial.
É bom pra você aprender e se relacionar com a academia.
Ps.: Trabalho com Sistemas Distribuídos faz 10 anos, mas nunca estudei formalmente. Na minha formação nem estava no catálogo, circuitos e arquitetura de computadores (não se software) tinham preferência.
Quando eu comecei na minha atual empresa, o pessoal do escritório em São Paulo, que trabalha junto a clientes externos, sempre diziam: "em Dublin quando dá 17hs a caneta cai e a Guinness se abre".
Criaram o mito de que brasileiro é preguiçosos (...)
Mas esse mito existe porque a relação trabalhador/empregador sempre foi conflituosa. Em muitos casos, alguns empregador sonham em voltar a antes do dia 13/05/1888.
Dúvida? Procura aí "trabalho análogo a escravidão" no Google.
Existem alguns livros que podem nos ajudar a melhorar a qualidade do seu código e nessa thread vou indicar alguns e falar a minha opinião sobre outros.
1/n
"Código Limpo" do Uncle Bob.
Quando eu li eu gostei desse livro, mas ele não é nem o último livro e nem o melhor. Fico muito preocupado quando devs colocam ele como a única referência. O livro é bom? Mais ou menos. Recomendo? Sim, com cautela.
Porque? Porque o autor coloca a opinião dele como última. Não há debate, não há discussão. Tudo que foge ao que ele diz é errado e, provavelmente, eu e você estamos errados. Sem contar que ele é um extremista, tanto que está fazendo propaganda da rede social supremacista.
3/n
Você quer aprender #Java do começo? Então acompanha aqui o que você precisa saber?
!!Java não é Spring!!
1. Tenha uma IDE. Instale no seu computador uma IDE que você saiba usar. Se não sabe tente conhecer. Eu recomendo o @intellijidea. Aprenda a criar um projeto e executar ele.
2. Conheça a linguagem. Java é uma linguagem com sintax similar ao C. Você pode procurar um livro (não sei algum bom) ou pode ler na internet. Vou dar como referência a W3Schools. Tenta usar as estruturas básicas com System.out.println(). Se divirta.
3. Java é uma linguagem orientada a objetos (OO). Se você sair por aí "codando" você vai achar dificil. Tente entender o que é OO e como usar. Entenda o que é uma classe, um objeto e uma interface.
Estou vendo alguns tweets de pessoas decepcionadas com o @doisdedosdeteo.
Mas ele sempre produziu uma péssima teologia que inclusive vai contra o autor que dá nome ao insittuto dele.
Eu vi alguns videos dele e ele sempre reduz a teologia ao "pode-não-pode" ou "como o calvinismo É A ÚNICA verdade e você está errado".
Dica, leia Francis Schaeffer em seu Verdadeira Espiritualidade e vocês vão ver que ele diz o contrário!
Principios morais são culturais e não principios universais de fé. "Crente no Brasil acha que beber álcool é digno de quem vai pro inferno", isso é uma insanidade em qualquer outro país. Aliás, o vinho é parte da fé cristã. Lutero fala de cerveja o tempo inteiro. PONTO FINAL.
Gente, vocês sabem que a idéia de vocês estudarem apenas coisa técnicas e NÃO terem tempo pra outras discussões é algo extremamente ideológico. Sabem?
Tentem entender o mundo ao seu redor. É libertador.
Reservem um tempo para ler livros sobre a loucura que nos rodeia. Eu super indico o "Corrosão de Caráter". Um sociólogo depois de aposentado vai rever quem ele estudou e percebe mudanças importantes na moralidade deles. É muito interessante.
Ter um blog técnico não é só escrever, exige preparação, escolha de temas, melhoria da técnica de escrita e divulgação. Eu comecei a escrever em 2017 e recomendo. Não parei, só mudei o foco nesse ano. Há coisas no forno que sairão ano que vem.
Mas antes disso tudo, comece! Escreva e avalie o que escreveu. Peça uma revisão de alguém ou mesmo uma avaliação do conteúdo. Qualquer coisa que você escrever terá uma finalidade, mesmo que seja o seu próprio aprendizado.
Não há aprendizado melhor que a escrita.
Meu único conselho é: valide o que você escreveu. Busque fontes e não apenas escreva código, mas escreva código que rodou e se possível coloque o repositório.