Slide 1

Slide 1 text

Construindo microsserviços a partir de um monolito

Slide 2

Slide 2 text

*/omarkdev 2

Slide 3

Slide 3 text

3 Aviso: Um monte de explicação

Slide 4

Slide 4 text

O que é monolito? 4

Slide 5

Slide 5 text

“ Monumento ou obra constituída por um só bloco de pedra. Segundo o google

Slide 6

Slide 6 text

“ Aplicação constituída como uma unidade lógica executável. No mundo de software

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

O que é microsserviço? 8

Slide 9

Slide 9 text

“ Microsserviço é quando separamos cada responsabilidade da aplicação em um serviço. Algumas dizem que é isso

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

“ Microsserviço é uma abordagem para desenvolver uma aplicação como uma suíte de serviços, cada um rodando em seu próprio processo e se comunicando através de mecanismos leves. Estes serviços são construídos em torno de recursos de negócio e publicados em produção de maneira independente através de processos de deploys automatizados. Existe um gerenciamento centralizado mínimo destes serviços, que podem ser escritos em diferentes linguagens e usarem diferentes tecnologias para armazenamento de dados.

Slide 12

Slide 12 text

Características ◉ Dividido por recursos de négocio; ◉ Independentes; ◉ Produtos e não projetos; ◉ Governança descentralizada; ◉ Gerenciamento de dados descentralizados; ◉ Automatização de infra-estrutura; ◉ Design para falhas; ◉ Design evolucionário. 12

Slide 13

Slide 13 text

Se comparamos com um monolito 13

Slide 14

Slide 14 text

No content

Slide 15

Slide 15 text

“Entendi como a arquitetura de microsserviços funciona, mas quais realmente são as vantagens que eu terei?” ?

Slide 16

Slide 16 text

Vantagens ◉ Escalabilidade; ◉ Melhor utilização dos recursos; ◉ Facilidade de implantação; ◉ Diversidade tecnológica; ◉ Equipes focadas em serviços específicos; ◉ Isolamento de falhas. 16

Slide 17

Slide 17 text

“Mas também tem desvantagens, certo?” ?

Slide 18

Slide 18 text

Desvantagens ◉ Desenvolvimento trabalhoso; ◉ Complexidade operacional; ◉ Chamadas remotas podem ser lentas; ◉ Duplicidade de dados; ◉ Necessidade de uma cultura DevOps forte; ◉ Inimigo do MVP. 18

Slide 19

Slide 19 text

“Interessante, então já posso sair migrando tudo para microsserviços?” ?

Slide 20

Slide 20 text

A sua aplicação tem que estar bem arrumada para isso !

Slide 21

Slide 21 text

No content

Slide 22

Slide 22 text

Requisitos ◉ Equipe madura; ◉ Processo maduro para implantação; ◉ Familiaridade com o negócio da aplicação; ◉ Cultura DevOps; ◉ Monitoramento básico; ◉ Rápido provisionamento; ◉ Possibilidade de deploy automatizados; ◉ Estar pronto para perder produtividade agora e ganhar futuramente. 22

Slide 23

Slide 23 text

No content

Slide 24

Slide 24 text

Mas o mais importante, pergunte-se se você realmente precisa de uma arquitetura de microsserviços !

Slide 25

Slide 25 text

“Mas como eu sei se preciso?” ?

Slide 26

Slide 26 text

Necessidades 1. Alguma parte precisa ser deployada e gerenciada de forma independente? 2. Alguma parte precisa de uma escalabilidade ou tecnologia diferente das demais? 3. As partes representam diferentes casos de negócio ou domínio? 4. As abordagens de arquitetura distribuída não resolvem o meu problema? 26

Slide 27

Slide 27 text

Como construir microsserviços a partir de um monolito? 27

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

Podemos fazer algumas coisas antes para facilitar a nossa migração !

Slide 32

Slide 32 text

Pare de cavar O buraco que é seu monolito não pode ficar maior. 1 32

Slide 33

Slide 33 text

“ Se você se encontrar em um buraco, pare de cavar Law of Holes

Slide 34

Slide 34 text

No content

Slide 35

Slide 35 text

Separe seu front-end do back-end Pode facilitar entender as responsabilidades 2 35

Slide 36

Slide 36 text

Camadas ◉ Presentation layer; ◉ Business logic layer; ◉ Data-access layer. 36

Slide 37

Slide 37 text

Existe uma separação muito clara entre a lógica de apresentação em um lado e as regras de negócio e de dados em outro !

Slide 38

Slide 38 text

No content

Slide 39

Slide 39 text

No content

Slide 40

Slide 40 text

Um problema grande quebrado em 2, torna-se 2 problemas menores, mas ainda são problemas. !

Slide 41

Slide 41 text

“Mas como decompor algo já existente?” ?

Slide 42

Slide 42 text

Padrões para nos ajudar ◉ Decompose by business capability; ◉ Decompose by subdomain. 42

Slide 43

Slide 43 text

Decompose by business capability 1 43

Slide 44

Slide 44 text

Decompor em serviços o que são capacidades de negócio. !

Slide 45

Slide 45 text

“ Capacidades de negócio são o que uma empresa faz ou pode fazer. Capacidade de negócio

Slide 46

Slide 46 text

Capacidades de negócio ◉ Filmes; ◉ Celebridades; ◉ Classificação e Comentários; ◉ Eventos; ◉ Notícias; ◉ Trailers; ◉ Usuários; ◉ Anúncios. 46

Slide 47

Slide 47 text

No content

Slide 48

Slide 48 text

Decompose by subdomain 2 48

Slide 49

Slide 49 text

Cria os serviços que são subdomínios definidos com DDD. !

Slide 50

Slide 50 text

“ Um subdomínio é uma parte específica do domínio, na qual alguns usuários usam um determinado idioma ubíquo. Capacidade de negócio

Slide 51

Slide 51 text

Subdomínios ◉ Filmes: informações, classificação e comentários; ◉ Celebridades: informações classificação e comentários; ◉ Anúncios no site; ◉ Propaganda direcionada; ◉ Blog; ◉ Usuário. 51

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

“Agora ficou fácil, já sei como fica a decomposição, é só começar a desenvolver, certo?” ?

Slide 54

Slide 54 text

No content

Slide 55

Slide 55 text

Requisitos ◉ Notícias no blog deve mostrar algumas informações sobre os filmes; ◉ Filmes devem mostrar títulos e links de notícias relacionadas. ◉ As informações apresentadas em um serviço sobre o outro serviço pode ser customizada. 55

Slide 56

Slide 56 text

“Mas aí fica fácil, basta eles conectarem no mesmo banco”

Slide 57

Slide 57 text

O ideal é confirmar se sua abordagem está seguindo as características de microsserviço !

Slide 58

Slide 58 text

Características ◉ Dividido por recursos de négocio; ◉ Independentes; ◉ Produtos e não projetos; ◉ Governança descentralizada; ◉ Gerenciamento de dados descentralizados; ◉ Automatização de infra-estrutura; ◉ Design para falhas; ◉ Design evolucionário. 58

Slide 59

Slide 59 text

Alguns efeitos colaterais de se fazer desta maneira !

Slide 60

Slide 60 text

Efeitos colaterais ◉ Se uma query de um serviço travar o banco de dados, o outro serviço é afetado; ◉ Ninguém garante que um serviço não vai alterar o dado do outro serviço; ◉ A escalabilidade afeta todos os serviços. 60

Slide 61

Slide 61 text

“Mas achei a solução, cada um com seu banco de dados e eles se comunicam por uma API”

Slide 62

Slide 62 text

Sempre confirmar as características !

Slide 63

Slide 63 text

Características ◉ Dividido por recursos de négocio; ◉ Independentes; ◉ Produtos e não projetos; ◉ Governança descentralizada; ◉ Gerenciamento de dados descentralizados; ◉ Automatização de infra-estrutura; ◉ Design para falhas; ◉ Design evolucionário. 63

Slide 64

Slide 64 text

Outros efeitos colaterais de se fazer desta maneira !

Slide 65

Slide 65 text

Efeitos colaterais ◉ Se um serviço cair o outro poderá não continuar funcionando normalmente; ◉ Se houver uma mudança em um serviço o outro é afetado. 65

Slide 66

Slide 66 text

“Ficou mais difícil, mas os serviços podem se comunicar por eventos.”

Slide 67

Slide 67 text

Confirmar as características sempre! !

Slide 68

Slide 68 text

Características ◉ Dividido por recursos de négocio; ◉ Independentes; ◉ Produtos e não projetos; ◉ Governança descentralizada; ◉ Gerenciamento de dados descentralizados; ◉ Automatização de infra-estrutura; ◉ Design para falhas; ◉ Design evolucionário. 68

Slide 69

Slide 69 text

Parece que conseguimos! !

Slide 70

Slide 70 text

Mas... !

Slide 71

Slide 71 text

Você não tem garantia que os dados vão ficar consistentes !

Slide 72

Slide 72 text

No content

Slide 73

Slide 73 text

Manipulação de dados é um problema em microsserviços, talvez o problema mais difícil !

Slide 74

Slide 74 text

Padrões para resolver problemas de manipulação de dados ◉ Databases per Service; ◉ Shared Database; ◉ Saga; ◉ API Composition; ◉ CQRS; ◉ Domain event; ◉ Event sourcing. 74

Slide 75

Slide 75 text

A manipulação e os limites dos dados devem estar alinhados com o seu negócio. !

Slide 76

Slide 76 text

Toda escolha vai ter um efeito colateral, o ideal é minimizar isso. !

Slide 77

Slide 77 text

“Ok, acredito que a manipulação dos meus dados está bem desenvolvida e limitada, mas como meus serviços vão se comunicar?” ?

Slide 78

Slide 78 text

No content

Slide 79

Slide 79 text

Esse tipo de problema se chama Service Discovery !

Slide 80

Slide 80 text

Padrões para resolver problemas de service discovery ◉ Client-side discovery; ◉ Server-side discovery; ◉ Service registry; ◉ Self registration; ◉ 3rd party registration. 80

Slide 81

Slide 81 text

No content

Slide 82

Slide 82 text

Cada padrão tem um propósito e uma complexidade !

Slide 83

Slide 83 text

“Eu posso começar com microsserviços?” ?

Slide 84

Slide 84 text

Monolito - Se você é capaz de criar um bom monolito, talvez seja capaz de criar bons microsserviços; - Refatorar algo que é pequeno é mais fácil; - Ao começar com monolito é provável que as partes fiquem muito acopladas. Microsserviços - É difícil testar ideias de forma rápida; - Não consegue priorizar velocidade; - Dificuldade em definir limites de serviços no começo

Slide 85

Slide 85 text

Monolito não é ruim. !

Slide 86

Slide 86 text

Microsserviço não é bala de prata. !

Slide 87

Slide 87 text

Escolha com sabedoria. !

Slide 88

Slide 88 text

No content