Microservices with Dropwizard, SparkJava, SpringBoot and Vert.x

 

https://about.me/ricardo.longa   ​ |    http://goo.gl/awklqD

Quebrando o gelo

O que é Microservices?

Nosso primeiro serviço

Dropwizard (Healthchecks)

Comunicação entre serviços

Feedback para o usuário

SpringBoot (Admin)

SparkJava (Lambdas)

Agenda

Datas em JSon

Guerra entre equipes

Vert.x (Nanoservices?)

Docker

Continuous Delivery

Documentação das APIs

SQL x NoSQL

Kubernetes / CoreOS / AWS

Monitoramento em tempo real

Quebrando o gelo...

Já participou de uma guerra?

Já participou de uma guerra?

Têm certeza!?

Têm certeza!?

Ou de uma grande construção?

Ou de uma grande construção?

Conhece a Burj Khalifa?

Conhece a Burj Khalifa?

828m, 160 andares, 49 elevadores

828m, 160 andares, 49 elevadores

2008, Netflix em um único war...

2008, Netflix em um único war...

2010, +100 micro serviços...

2010, +100 micro serviços...

O que é microservices?

Nosso primeiro serviço

Dropwizard (Healthcheck)

0.7.x suporta Jersey 1.18.1

0.7.x suporta Jersey 1.18.1

Comunicação entre serviços

feedback para o usuário

Springboot (ADMIN)

https://github.com/codecentric/spring-boot-admin

Sparkjava (Lambdas)

Datas em json

Como representar um texto em Json?

{

           "nome": "Ricardo Longa"

}

Como representar um inteiro em Json?

{

           "nome": "Ricardo Longa"

           "idade": 28

}

Como representar um decimal em Json?

{

           "nome": "Ricardo Longa"

           "idade": 28

          "altura": 1.83

}

Como representar uma data em Json?

{

           "nome": "Ricardo Longa"

           "idade": 28

          "altura": 1.83

          "nascimento": "21/02/1987 18:00:00"

}

Como representar uma data em Json?

{

           "nome": "Ricardo Longa"

           "idade": 28

          "altura": 1.83

          "nascimento": "02/21/1987 18:00:00"

}

Como representar uma data em Json?

{

           "nome": "Ricardo Longa"

           "idade": 28

          "altura": 1.83

          "nascimento": 540939600000

}

Como representar uma data em Json?

{

           "nome": "Ricardo Longa"

           "idade": 28

          "altura": 1.83

          "nascimento": "Tue, 1 Jul 2003 10:52:37 +0200"

}

ISO 8601

{

         "nascimento": "2015-05-14"

         "nascimento": "2015-05-14T10:30:00"

         "nascimento": "2015-05-14T10:30:00Z"

         "nascimento": "2015-05-14T10:30:00-03:00"

}

guerra entre equipes

Vert.x (nanoservices?)

Docker

Comandos que mais utilizamos:

  • docker ps (lista containers em execução)
  • docker ps -a (lista todos os containers)
  • docker images (lista imagens disponíveis)
  • docker run (inicia um novo container)
  • docker rm -f (pára e exclui um container)
  • docker stop (apenas pára um container)
  • docker rmi (exclui uma imagem disponível)
  • docker pull (baixa uma imagem de um repo)
  • docker push (envia uma imagem para um repo)
  • docker inspect (verificar infos e envs)
  • docker logs -f (checar os logs)

continuous delivery

Documentação das apis

Kubernetes / CoreOS / AWS

Distro para containers

docker nativo

etcd nativo

kernel + atualizado

Master não enxergava os nós

(apenas no CoreOS)

Problemas com registry privado

(problemas no pull)

monitoramento em tempo real

riemann.io / Datadog / librato

SQL ou Nosql?

PostgreSQL >>> MongoDB

scalability / shard / schema-less / Tables > json / json is beautiful ...

Made with Slides.com