FLÁVIO GOMES DA SILVA LISBOA M.Sc.
www.fgsl.eti.br
Quem sou eu
●
Doutorando na UTFPR
●
Mestre em Tecnologia e Sociedade
●
Especialista em Tecnologia Java
●
Engenheiro e Arquiteto de Software certificado pela Zend
●
Instrutor de cursos de desenvolvimento de software
●
Professor de Análise e Projeto de Sistemas, Linguagem de Programação
para Web, Inteligência Artificial, Sistemas Operacionais, Sistemas
Distribuídos, Sistemas de Bancos de Dados e Frameworks PHP.
●
Monitor de adolescentes aprendizes
●
Analista de desenvolvimento, atualmente trabalhando com software para
PaaS
●
Pai da Koriander
●
Autor de livros sobre programação, quadrinhos e, mais recentemente, de
ficção
Arquitetura de Software
A arquitetura de software de um sistema é o
conjunto de estruturas necessárias para
raciocinar sobre o sistema, que compreende
os elementos de software, as relações entre
eles e as propriedades de ambos.
LEN BASS PAUL CLEMENTS RICK KAZMAN
Arquitetura de Software
[…] ter uma arquitetura de
software é importante para o
modelo de desenvolvimento de
sucesso [...]
LEN BASS PAUL CLEMENTS RICK KAZMAN
Arquitetura de Software
Nem todas as arquiteturas são
boas arquiteturas
LEN BASS PAUL CLEMENTS RICK KAZMAN
Arquitetura Monolítica
https://cloud.google.com/kubernetes-engine/kubernetes-comic?hl=pt-br
CARA,
O QUE
É
ISSO?
BEM-VINDO A UM TEMPO ANTIGO, MUITO,
TEMPO ATRÁS, QUANDO TÊNIS PLATAFORMA
ERA POPULARES, GAME OF THRONES
ESTAVA, ACHO, NA SEGUNDA TEMPORADA -
- E APLICAÇÕES
MONOLÍTICAS
REGIAM A TERRA!
OH, NÃO!
SOCORRO!
Arquitetura Monolítica
https://cloud.google.com/kubernetes-engine/kubernetes-comic?hl=pt-br
MONOLITOS TINHAM
CONJUNTOS DE
FUNCIONALIDADES
IMPRESSIONANTES, MAS
MUITAS PARTES
INTERDEPENDENTES,
POR ISSO A INTEGRAÇÃO
E A IMPLANTAÇÃO ERAM
UM PESADELO.
COLOCANDO-OS EM
PROCESSOS INDIVIDUAIS, NO
ENTANTO, APRENDEMOS A
COLOCAR ESTES MONSTROS
SOB CONTROLE
Arquitetura de Microsserviços
Microsserviços podem ser depurados,
atualizados e implementados individualmente
sem necessidade do projeto completo estar
estável, um passo importante no caminho para a
integração e entrega contínuos
https://cloud.google.com/kubernetes-engine/kubernetes-comic?hl=pt-br
Arquitetura de Microsserviços
A ideia da arquitetura de
microsserviços permite a
construção e manutenção de
uma aplicação com
orquestração de serviços:
Assim como instrumentos em
uma orquestra coordenados
pelo maestro produzem uma
sinfonia, um serviço principal
coordena os demais para
produzirem um resultado
completo.
Arquitetura de Microsserviços
Assim como na orquestra não
se espera que todos os
instrumentos sejam tocados
ao mesmo tempo o tempo
todo, na aplicação com
microsserviços não se espera
que todos os serviços
operem o tempo todo. E
assim como alguns
instrumentos podem fazer
solo, alguns serviços podem
operar sozinhos,
independentes, em alguns
momentos.
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
POD A POD B POD C POD D
COCKPIT-WEB COCKPIT-API COCKPIT-
MONITOR
COCKPIT-DB-
MGR
CADA POD PODE USAR
UMA IMAGEM DOCKER
DIFERENTE, COM UM
S.O. DIFERENTE
CADA POD PODE USAR
UMA IMAGEM DOCKER
DIFERENTE, COM UM
S.O. DIFERENTE
CADA POD PODE ESTAR
EM UMA MÁQUINA REAL
(BAREMETAL)
DIFERENTE, EM UM
LUGAR DIFERENTE
CADA POD PODE ESTAR
EM UMA MÁQUINA REAL
(BAREMETAL)
DIFERENTE, EM UM
LUGAR DIFERENTE
O Estudo de Caso:
a aplicação Cockpit
https://www.serpro.gov.br/tema/edicao-238/estaleiro-a-nuvem-do-serpro
CLUSTERS
Kubernetes: onde hospedar?
https://aws.amazon.com/pt/eks/
Kubernetes: onde hospedar?
https://azure.microsoft.com/pt-br/topic/what-is-kubernetes/
Kubernetes: onde hospedar?
https://www.ibm.com/br-pt/cloud/container-service
Kubernetes: onde hospedar?
https://cloud.google.com/kubernetes-engine?hl=pt-br
O Estudo de Caso:
a aplicação Cockpit
https://docs.mezzio.dev/
O Estudo de Caso:
a aplicação Cockpit
Conheça mais sobre
Mezzio na palestra de Er
Galvão: APIs === HTTP
+ PHP + Mezzio!
Palestra que ele fez
neste mesmo
evento!
Er Galvão
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
D
I
A
G
R
A
M
A
D
E
C
L
A
S
S
E
S
Um microsserviço
reduz a complexidade,
mas não a elimina.
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
O Estudo de Caso:
a aplicação Cockpit
https://github.com/fgsl/swagger-docs
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Autenticação
A classe JwtAdapter fornece autenticação
baseada em Javascript Web Token. Ela foi
projetada para funcionar como provedor de
LaminasAuthentication.
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Middleware
A classe AbstractAuthHandler fornece um
tratamento de HTTP com controle de
autenticação e autorização.
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Middleware
A classe AbstractAclHandlerFactory facilita a
criação de fábricas para manipuladores com
controle de acesso. Esta classe usa o modelo
AclFactory para criar um controle de permissão
baseado no componente LaminasPermissions
Rbac.
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Middleware
A classe AclHandler fornece um manipulador
HTTP para uma página de erro de autorização.
Use AclHandlerFactory para criar instâncias de
AclHandler.
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Middleware
A classe LogoutHandler fornece um manipulador
HTTP padrão para sair de um aplicativo. Use
LogoutHandlerFactory para criar instâncias de
LogoutHandler.
Extensões para o Mezzio
https://github.com/fgsl/microserviceframework
Middleware
A classe SessionMiddleware permite o uso de
sessão para um aplicativo.
Extensões para o Mezzio
Você ainda pode usar, além dos diversos
componentes do framework Laminas, algumas
extensões disponíveis neste projeto:
https://github.com/fgsl/framework
Uso de Mezzio com Swoole
https://www.swoole.co.uk/docs/
Uso de Mezzio com Swoole
https://www.zimuel.it/slides/phpday2018/expressive_swoole#/
Uso de Mezzio com Swoole
https://blog.vivaweb.net/2020/08/25/php-assincrono-e-mais-
rapido-que-nodejs-com-swoole/
Uso de Mezzio com Swoole
https://docs.mezzio.dev/mezzio-swoole/
Uso de Mezzio com Swoole
https://docs.mezzio.dev/mezzio-swoole/
$ ./vendor/bin/mezzio-swoole start
Iniciando uma aplicação Mezzio com
Swoole como servidor web:
Obrigado!
www.fgsl.eti.br

Turbinando microsserviços em PHP

  • 1.
    FLÁVIO GOMES DASILVA LISBOA M.Sc. www.fgsl.eti.br
  • 2.
    Quem sou eu ● Doutorandona UTFPR ● Mestre em Tecnologia e Sociedade ● Especialista em Tecnologia Java ● Engenheiro e Arquiteto de Software certificado pela Zend ● Instrutor de cursos de desenvolvimento de software ● Professor de Análise e Projeto de Sistemas, Linguagem de Programação para Web, Inteligência Artificial, Sistemas Operacionais, Sistemas Distribuídos, Sistemas de Bancos de Dados e Frameworks PHP. ● Monitor de adolescentes aprendizes ● Analista de desenvolvimento, atualmente trabalhando com software para PaaS ● Pai da Koriander ● Autor de livros sobre programação, quadrinhos e, mais recentemente, de ficção
  • 3.
    Arquitetura de Software Aarquitetura de software de um sistema é o conjunto de estruturas necessárias para raciocinar sobre o sistema, que compreende os elementos de software, as relações entre eles e as propriedades de ambos. LEN BASS PAUL CLEMENTS RICK KAZMAN
  • 4.
    Arquitetura de Software […]ter uma arquitetura de software é importante para o modelo de desenvolvimento de sucesso [...] LEN BASS PAUL CLEMENTS RICK KAZMAN
  • 5.
    Arquitetura de Software Nemtodas as arquiteturas são boas arquiteturas LEN BASS PAUL CLEMENTS RICK KAZMAN
  • 6.
    Arquitetura Monolítica https://cloud.google.com/kubernetes-engine/kubernetes-comic?hl=pt-br CARA, O QUE É ISSO? BEM-VINDOA UM TEMPO ANTIGO, MUITO, TEMPO ATRÁS, QUANDO TÊNIS PLATAFORMA ERA POPULARES, GAME OF THRONES ESTAVA, ACHO, NA SEGUNDA TEMPORADA - - E APLICAÇÕES MONOLÍTICAS REGIAM A TERRA! OH, NÃO! SOCORRO!
  • 7.
    Arquitetura Monolítica https://cloud.google.com/kubernetes-engine/kubernetes-comic?hl=pt-br MONOLITOS TINHAM CONJUNTOSDE FUNCIONALIDADES IMPRESSIONANTES, MAS MUITAS PARTES INTERDEPENDENTES, POR ISSO A INTEGRAÇÃO E A IMPLANTAÇÃO ERAM UM PESADELO. COLOCANDO-OS EM PROCESSOS INDIVIDUAIS, NO ENTANTO, APRENDEMOS A COLOCAR ESTES MONSTROS SOB CONTROLE
  • 8.
    Arquitetura de Microsserviços Microsserviçospodem ser depurados, atualizados e implementados individualmente sem necessidade do projeto completo estar estável, um passo importante no caminho para a integração e entrega contínuos https://cloud.google.com/kubernetes-engine/kubernetes-comic?hl=pt-br
  • 9.
    Arquitetura de Microsserviços Aideia da arquitetura de microsserviços permite a construção e manutenção de uma aplicação com orquestração de serviços: Assim como instrumentos em uma orquestra coordenados pelo maestro produzem uma sinfonia, um serviço principal coordena os demais para produzirem um resultado completo.
  • 10.
    Arquitetura de Microsserviços Assimcomo na orquestra não se espera que todos os instrumentos sejam tocados ao mesmo tempo o tempo todo, na aplicação com microsserviços não se espera que todos os serviços operem o tempo todo. E assim como alguns instrumentos podem fazer solo, alguns serviços podem operar sozinhos, independentes, em alguns momentos.
  • 11.
    O Estudo deCaso: a aplicação Cockpit
  • 12.
    O Estudo deCaso: a aplicação Cockpit
  • 13.
    O Estudo deCaso: a aplicação Cockpit POD A POD B POD C POD D COCKPIT-WEB COCKPIT-API COCKPIT- MONITOR COCKPIT-DB- MGR CADA POD PODE USAR UMA IMAGEM DOCKER DIFERENTE, COM UM S.O. DIFERENTE CADA POD PODE USAR UMA IMAGEM DOCKER DIFERENTE, COM UM S.O. DIFERENTE CADA POD PODE ESTAR EM UMA MÁQUINA REAL (BAREMETAL) DIFERENTE, EM UM LUGAR DIFERENTE CADA POD PODE ESTAR EM UMA MÁQUINA REAL (BAREMETAL) DIFERENTE, EM UM LUGAR DIFERENTE
  • 14.
    O Estudo deCaso: a aplicação Cockpit https://www.serpro.gov.br/tema/edicao-238/estaleiro-a-nuvem-do-serpro CLUSTERS
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
    O Estudo deCaso: a aplicação Cockpit https://docs.mezzio.dev/
  • 20.
    O Estudo deCaso: a aplicação Cockpit Conheça mais sobre Mezzio na palestra de Er Galvão: APIs === HTTP + PHP + Mezzio! Palestra que ele fez neste mesmo evento! Er Galvão
  • 21.
    O Estudo deCaso: a aplicação Cockpit
  • 22.
    O Estudo deCaso: a aplicação Cockpit
  • 23.
    O Estudo deCaso: a aplicação Cockpit
  • 24.
    O Estudo deCaso: a aplicação Cockpit D I A G R A M A D E C L A S S E S Um microsserviço reduz a complexidade, mas não a elimina.
  • 25.
    O Estudo deCaso: a aplicação Cockpit
  • 26.
    O Estudo deCaso: a aplicação Cockpit
  • 27.
    O Estudo deCaso: a aplicação Cockpit
  • 28.
    O Estudo deCaso: a aplicação Cockpit https://github.com/fgsl/swagger-docs
  • 29.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework
  • 30.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework
  • 31.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework Autenticação A classe JwtAdapter fornece autenticação baseada em Javascript Web Token. Ela foi projetada para funcionar como provedor de LaminasAuthentication.
  • 32.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework Middleware A classe AbstractAuthHandler fornece um tratamento de HTTP com controle de autenticação e autorização.
  • 33.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework Middleware A classe AbstractAclHandlerFactory facilita a criação de fábricas para manipuladores com controle de acesso. Esta classe usa o modelo AclFactory para criar um controle de permissão baseado no componente LaminasPermissions Rbac.
  • 34.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework Middleware A classe AclHandler fornece um manipulador HTTP para uma página de erro de autorização. Use AclHandlerFactory para criar instâncias de AclHandler.
  • 35.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework Middleware A classe LogoutHandler fornece um manipulador HTTP padrão para sair de um aplicativo. Use LogoutHandlerFactory para criar instâncias de LogoutHandler.
  • 36.
    Extensões para oMezzio https://github.com/fgsl/microserviceframework Middleware A classe SessionMiddleware permite o uso de sessão para um aplicativo.
  • 37.
    Extensões para oMezzio Você ainda pode usar, além dos diversos componentes do framework Laminas, algumas extensões disponíveis neste projeto: https://github.com/fgsl/framework
  • 38.
    Uso de Mezziocom Swoole https://www.swoole.co.uk/docs/
  • 39.
    Uso de Mezziocom Swoole https://www.zimuel.it/slides/phpday2018/expressive_swoole#/
  • 40.
    Uso de Mezziocom Swoole https://blog.vivaweb.net/2020/08/25/php-assincrono-e-mais- rapido-que-nodejs-com-swoole/
  • 41.
    Uso de Mezziocom Swoole https://docs.mezzio.dev/mezzio-swoole/
  • 42.
    Uso de Mezziocom Swoole https://docs.mezzio.dev/mezzio-swoole/ $ ./vendor/bin/mezzio-swoole start Iniciando uma aplicação Mezzio com Swoole como servidor web:
  • 43.