Visão geral dos relatórios mais interessantes do Joker 2018: versão EastBanc Technologies

Olá, cidadãos de Habrovsk! Neste post, queremos compartilhar nossas impressões da conferência para desenvolvedores de Java do Joker 2018 , qual do que ouvimos foi a mais memorável.

Esperamos que isso ajude você a navegar pelo vídeo da conferência quando ele aparecer em domínio público. Enquanto isso, adicionamos links para apresentações sempre que possível.




1º dia


Não se afaste da complexidade, corra - Venkat Subramaniam


Ágil é a capacidade de se adaptar às mudanças. O uso eficaz do Agile é impedido por nossa própria complexidade de sistema criada.

O relatório da Venkat contém uma lista de questões que complicam o sistema do palestrante e conselhos gerais sobre desenvolvimento de software. É improvável que este relatório seja uma revelação, mas mesmo coisas óbvias precisam ser conhecidas; às vezes é útil atualizá-las na memória e no uso.

Como tornamos os sistemas complexos:

  • Peças móveis
    Faça uma configuração desnecessária, crie componentes não utilizados, crie muitas camadas etc.
  • Código ilegível
    "Este código funciona, mas parece que não deveria." Difícil ler o código leva à invisibilidade das alterações. Mudanças opacas geram bugs e interferem na compreensão do que está acontecendo com o objeto.
  • Muitas dependências
    As dependências tornam-se rapidamente incompatíveis, quanto mais existem, mais difícil é gerenciá-las.
  • Paixão imprudente por introduzir novas tecnologias
    Tente responder suas perguntas:

    - Qual o preço da introdução de uma nova tecnologia?
    - Quão fácil será abandonar a tecnologia selecionada?
    - Uma biblioteca ou estrutura? Você usa a biblioteca e a estrutura "envolve". É muito mais fácil recusar uma biblioteca do que uma estrutura. Portanto, a decisão de usar a estrutura precisa ser tomada com mais cuidado. Se será fácil retornar à abordagem antiga e se pudermos provar isso, precisamos adotá-la. Não faça o download do que realmente não precisa.
    - Desenvolvimento orientado a currículo.
  • Dificuldade aleatória
    Por exemplo, multithreading de baixo nível. Se você resolveu o problema com o conjunto de encadeamentos, agora você tem o conjunto de problemas.

Cascatas de transação ou como construir uma arquitetura de microsserviço transacional - Harald Wendel ( apresentação )


Harald contou como o projeto resolveu o problema de organizar transações distribuídas, removendo as transações e substituindo-as pela State Machine. Para manter a consistência entre os microsserviços, eles devem implementar o suporte a condições, incluindo deficiências, e responder às suas mudanças. O projeto usa o Kafka para se comunicar entre os serviços.

De fato, o relatório tem uma idéia - abandonar as transações ao mudar para um sistema distribuído.

Como a operação anterior da transação funciona:

  1. Ainda é transacional, mas apenas uma operação comercial (condicionalmente uma) é confirmada no banco de dados. Outros na transação salvam um banco de dados para o Kafka.
  2. Além disso, como parte da transação, obtemos uma nova transação comercial do Estado. Este é um estado independente totalmente correto.
  3. Um manipulador especial lê a base: pesquisa ou confirmação do gancho na entidade, se o manipulador estiver no mesmo local que a entidade. Em seguida, envia uma mensagem para Kafka.
  4. Os assinantes do Kafka processam mensagens. Aqui, o mecanismo de garantia de entrega padrão é útil para nós. As mensagens estão em Kafka na hora certa e um dia serão processadas pelo serviço.
  5. Durante o processamento, os assinantes podem confirmar seus bancos de dados e alterar seu estado. Nesse caso, os serviços trocam de estado.
  6. Transação de negócios de reversão no. E há três opções para lidar com problemas:

    • Até o final, aguarde o processamento correto da mensagem do Kafka.
    • Se ocorrer um erro (e o número necessário de repetições), o estado "errado" correspondente será convertido.
    • Envie uma mensagem para Kafka para ser processada pelo iniciador da transação comercial (e outros participantes), a fim de executar etapas para reverter suas transações locais.

Memória de processo Java nas prateleiras - Andrey Panguin


O relatório de Andrey pode ser usado como referência e instruções sobre problemas de depuração com vazamento de memória nativa pelo exemplo de memória não heap.

O relatório é útil para entender quem e o que consome memória. Andrei mostra ferramentas para analisar a memória, incluindo o AsyncProfiler, que está embutido no Idea: "O próximo IntelliJ IDEA 2018.3 integra um perfilador de amostragem de baixo overhead que pode criar perfil de JVM e código nativo - perfil de Async".

Recomendamos que todos os assistam e executem seus módulos e microsserviços nas mesmas etapas.

Correspondência de padrões e seus amigos imaginários - Tagir Valeev


Tagir fala sobre as possibilidades das linguagens de programação: o que, como, quando e com que muletas podem aparecer em Java, que problemas os desenvolvedores e a comunidade da linguagem precisam resolver para isso. Há pouca aplicabilidade prática óbvia, mas pode ser útil a longo prazo.

Aventuras do senor Holmes e Junior Watson no mundo do desenvolvimento de software [Joker Edition] - Evgeny Borisov e Baruch Sadogursky ( apresentação )


O resumo do relatório já era intrigante. Holmes e Watson prometeram resolver vários quebra-cabeças do desenvolvimento diário: ferramentas, bibliotecas e estruturas que perplexam os desenvolvedores comuns em sua rotina diária.

Observamos os pontos mais úteis da história:

  • No Spring 5, você pode adicionar compartimentos e outros itens de primavera em um arquivo groovy externo. I.e. não há necessidade de reconstruir, basta reiniciar, por exemplo, para adicionar o BeanPostProcessor.
  • Você precisa se lembrar do nome do feijão. Por exemplo, você não pode criar um bean ConversionService, porque isso já está no intestino da primavera.
  • Você precisa se lembrar dos padrões. Por exemplo, multipartes é permitido apenas para postagem, e o Spring está assistindo.
  • Precisa ler a documentação. Vamos explicar usando o exemplo de um útero. AllArgsConstructor inclui a anotação java.beans.ConstructorProperties para o construtor. Além disso, se não houver anotação, Jacson usa o construtor e getters padrão, porque nomes de parâmetros do construtor não são salvos após a compilação. Se houver uma anotação, os nomes dos parâmetros serão indicados nela (de acordo com a convenção do java beans) e Jacson usará o construtor .. A anotação do Lombok SneakyThrows altera as exceções marcadas para as exceções não verificadas.
  • O relatório também levantou uma questão interessante: "Precisamos de exceções verificadas em princípio?" Nós pensamos.

Dia 2


Hardcore reativo: como criar seu editor <?> - Oleg Dokuka


Podemos dizer que esta é uma introdução à programação reativa: o relatório descreve conceitos e abstrações básicas. Oleg mostra toda a evolução do nosso raciocínio, o que nos leva a implementar o Publisher a partir da biblioteca padrão do Reactive Streams. Aconselhamos que você procure para entender de onde as pernas crescem.

Aprendizado de máquina em Java do nada à produção em uma hora - Derek Ferguson ( apresentação )


Você pode ouvi-lo se estudar o Machine Learning. Embora não esteja muito claro para quem o relatório foi destinado. Se as pessoas entendem, então para elas não é mais interessante. Se eles não entenderem, esse relatório não será resolvido; há muito pouca informação para entender.

A principal mensagem é: você pode usar o Google TensorFlow para treinar modelos a partir de Java, mas o suporte ao treinamento é limitado. Mas você pode usar modelos treinados. Por exemplo, carregue um modelo treinado em um microsserviço TensorFlow e envie solicitações do Java ou outro microsserviço para obter uma resposta. Por exemplo, reconheça uma imagem, conte por sintomas, que tipo de doença ...

A equipe do TensorFlow também possui uma imagem do Docker com o TensorFlow, que pode ser usada para carregar modelos lá e enviar solicitações para o uso desses modelos. Doce!

Micronaut vs Spring Boot, ou quem é o menor aqui? - Kirill Tolkachev e Maxim Gorelikov


Cyril e Maxim compararam as estruturas modernas em termos de velocidade de inicialização, quantidade de memória necessária para executar e complexidade de codificação.

Um fato chamou nossa atenção: o Micronaut implementa DI no tempo de compilação e Spring no tempo de execução / execução. Isso permite que o Micronaut inicie mais rapidamente. Mas até que a versão de lançamento do Micronaut seja lançada, é preciso ter uma palavra.

Distribuidor reativo ok.ru/music - Vadim Tsesko ( apresentação )


Vadim Tsesko fala sobre a arquitetura do distribuidor de música em Odnoklassniki. O relatório contém uma descrição dos servidores e suas funções, uma descrição do balanceamento e como a tolerância a falhas e a alta disponibilidade são fornecidas. Separadamente - sobre a abordagem reativa em um caso real sem detalhes técnicos especiais. OK mostrou um exemplo prático de uso de uma abordagem reativa.

São apresentados vários conceitos, práticas recomendadas e arquitetura para obter um serviço tolerante a falhas devido ao balanceamento e replicação e outros truques para armazenar dados em cache para entrega rápida de dados ao usuário. Como sempre, na apresentação, a OK possui vários links para um estudo mais aprofundado do tópico no slide.

Primavera Reativa - Josh Long


O relatório para o qual estávamos viajando :) Na verdade não, mas Josh Long é uma das duas grandes estrelas da conferência. Seu relatório é legal, combina humor e tecnologia.

O que chamamos de relatório na prática foi uma sessão de codificação ao vivo sobre a criação de microsserviços reativos usando o Spring WebFlux. Ele fornece uma compreensão geral do que é a API Reativa, oferece um exemplo de uso no Spring 5 e o bônus é uma apresentação divertida. Houve também um exemplo com o Proxy Reativo como uma alternativa ao Zuul. Aconselhamos a todos a olhar.

O mundo finalmente se tornou reativo. Ou a impressão geral dos relatórios do Coringa


Havia muitos relatórios sobre isso e discutimos ainda mais nas áreas de discussão. De fato, a grande questão é se o mundo se tornou reativo ou se já faz tanto tempo, mas agora eles criaram um novo nome para os velhos padrões e derramaram sangue novo neles.

Entre os relatórios sobre reatividade estavam todos os gostos: e puramente técnico, por exemplo, Josh Long, que contou como fazer a reatividade na primavera. E casos reais de uso de reatividade - por exemplo, Vadim Tsesko, da Classmates.

Nossa principal tecnologia é a Spring, por isso consideramos o relatório Josh Long um item obrigatório. ( Link para o repositório do relatório ). Há um exemplo de um serviço reativo que reage com o Mongo e um serviço reativo que proxies reativamente outro serviço reativo. Foi muito útil para descobrirmos.

Source: https://habr.com/ru/post/pt427517/


All Articles