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 ...
Microservices with Dropwizard, SparkJava, SpringBoot and Vert.x
By Ricardo Longa
Microservices with Dropwizard, SparkJava, SpringBoot and Vert.x
- 2,113