Modernizando projetos legados usando APIs

Elton Minetto
Elton MinettoSoftware developer, teacher, speaker, open source evangelist, tech leader at Code:Nation
Modernizando projetos
legados usando APIs
Elton Minetto
http://eltonminetto.net
@eminetto
Modernizando projetos legados usando APIs
Case Winker
Modernizando projetos legados usando APIs
Características
→ Desenvolvido com Yii 1.x e Lumen
→ ~5 anos de desenvolvimento
→ ~160k linhas de código
→ ~70% de cobertura de testes
→ PHP 5.X
→ Estrutura usando containers e AWS
Problemas
→ Crescimento da empresa gera novos desafios de
velocidade de entrega
→ Framework antigo e difícil de manter
Requisitos do projeto
→ Modernizar a stack
→ Lançar uma API pública para aumentar o alcance
do negócio
→ Lançar um portal de desenvolvedores
→ Transformar o projeto em uma plataforma
Arquitetura
proposta
"[...]developers have used virtualized machine
images or container images with Docker containers
to create immutable images of legacy systems and
their configurations. The intent is to contain the
legacy in a box for developers to run locally and
remove the need for rebuilding, reconfiguring or
sharing environments"
https://www.thoughtworks.com/pt/radar/
techniques
Modernizando projetos legados usando APIs
Ferramentas usadas
→ Zend Expressive 2
→ Docker
→ AWS Elastic Beanstalk
→ AWS SQS
→ Bernard - abstração de filas
→ Fractal - transformação de dados
→ Monolog + Sentry - centralização de logs
Ferramentas usadas
→ Doctrine - ORM
→ API Blueprint
→ aglio - documentação da API
→ dredd - testes de API
→ drakov - mock de API
→ phpunit - testes unitários/integração
→ prooph - event bus
Estágio Atual do projeto
→ Integração entre o legado e a nova API
implementada
→ Lançado o primeiro aplicativo externo conectado
à nova arquitetura
→ Legado rodando com PHP 7
Lições aprendidas
→ Testes unitários e de integração são cruciais
→ Containers para isolar as versões tornaram o
processo mais fácil
→ Conflitos entre Amazon Elastic Beanstalk + Docker
Compose foram mais complexos do que o esperado
→ Middlewares (Zend Expressive 2) aceleram o
desenvolvimento
Lições aprendidas
→ Começar pela definição da API foi uma boa
decisão
→ API Blueprint foi uma boa decisão
→ Bernard foi uma boa decisão
→ Trabalhar com filas/processamento paralelo é
complexo
Próximos passos
→ Lançamento do Portal de Desenvolvedores
→ Desenvolvimento do componente Input hooks
Perguntas
Contato
http://eltonminetto.net
http://coderockr.com
http://codenation.com.br
http://asemanaphp.com.br
1 of 18

Recommended

12 factor in the PHP world by
12 factor in the PHP world12 factor in the PHP world
12 factor in the PHP worldElton Minetto
1.4K views42 slides
Novidades PHP 7.4 e 8.0! by
Novidades PHP 7.4 e 8.0!Novidades PHP 7.4 e 8.0!
Novidades PHP 7.4 e 8.0!Marcos Marcolin
33 views60 slides
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli... by
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...
Análise de segurança e hacking de containers Docker - Fernando Silva - Tcheli...Tchelinux
607 views66 slides
Kubernetes no Governo Federal - Kubernetes Meetup #3 by
Kubernetes no Governo Federal - Kubernetes Meetup #3Kubernetes no Governo Federal - Kubernetes Meetup #3
Kubernetes no Governo Federal - Kubernetes Meetup #3Ricardo Katz
656 views21 slides
Introdução ao docker by
Introdução ao dockerIntrodução ao docker
Introdução ao dockerBenicio Ávila
482 views26 slides
NodeJS Under the Hood - Concurrency and Multithreading by
NodeJS Under the Hood - Concurrency and MultithreadingNodeJS Under the Hood - Concurrency and Multithreading
NodeJS Under the Hood - Concurrency and MultithreadingRhuan Karlus Silva
38 views35 slides

More Related Content

What's hot

Cutelyst br-qtcon by
Cutelyst br-qtconCutelyst br-qtcon
Cutelyst br-qtconDaniel Nicoletti
94 views21 slides
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM by
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMMinicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEM
Minicurso WebAPI .NET CORE - SemanaTI2018 - UNIVEMAlisson Solitto
107 views24 slides
Introdução a Containers Docker by
Introdução a Containers DockerIntrodução a Containers Docker
Introdução a Containers DockerMatheus Fidelis
2.5K views22 slides
Programação para Web II: NodeJS by
Programação para Web II:  NodeJSProgramação para Web II:  NodeJS
Programação para Web II: NodeJSAlex Camargo
51 views34 slides
Docker com ASP.NET Core e Hospedagem no Azure by
Docker com ASP.NET Core e Hospedagem no AzureDocker com ASP.NET Core e Hospedagem no Azure
Docker com ASP.NET Core e Hospedagem no AzureRogério Moraes de Carvalho
2.9K views28 slides
O que é Docker? by
O que é Docker?O que é Docker?
O que é Docker?Rodrigo Emereciano
452 views17 slides

Similar to Modernizando projetos legados usando APIs

Integração contínua com Jenkins by
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com JenkinsAécio Pires
1.3K views29 slides
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET... by
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
94 views24 slides
Containers com docker #CPRecife4 by
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4David Ruiz
507 views24 slides
Open4Education | MC122 - Introdução a ALM OpenSource by
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSourcetdc-globalcode
5K views53 slides
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw... by
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Renato Groff
247 views31 slides
Palestra Zend Framework na Campus Party 2011 by
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011Flávio Lisboa
356 views75 slides

Similar to Modernizando projetos legados usando APIs(20)

Integração contínua com Jenkins by Aécio Pires
Integração contínua com JenkinsIntegração contínua com Jenkins
Integração contínua com Jenkins
Aécio Pires1.3K views
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET... by Renato Groffe
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
Renato Groffe94 views
Containers com docker #CPRecife4 by David Ruiz
Containers com docker #CPRecife4Containers com docker #CPRecife4
Containers com docker #CPRecife4
David Ruiz507 views
Open4Education | MC122 - Introdução a ALM OpenSource by tdc-globalcode
Open4Education | MC122 - Introdução a ALM OpenSourceOpen4Education | MC122 - Introdução a ALM OpenSource
Open4Education | MC122 - Introdução a ALM OpenSource
tdc-globalcode5K views
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw... by Renato Groff
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Microsoft e Open Source: expandindo as fronteiras no Desenvolvimento de Softw...
Renato Groff247 views
Palestra Zend Framework na Campus Party 2011 by Flávio Lisboa
Palestra Zend Framework na Campus Party 2011Palestra Zend Framework na Campus Party 2011
Palestra Zend Framework na Campus Party 2011
Flávio Lisboa356 views
Docker para Desenvolvedores - Developers-BR - Julho-2018 by Renato Groff
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
Renato Groff94 views
ASP.NET vNext no .NET Architects Days 2014 by Giovanni Bassi
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
Giovanni Bassi1.3K views
Docker para Desenvolvedores - Developers-BR - Agosto-2018 by Renato Groff
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Renato Groff35 views
Deploying Docker Containers by Hugo Henley
Deploying Docker ContainersDeploying Docker Containers
Deploying Docker Containers
Hugo Henley955 views
Zend Framework 2 - Desenvolvimento Ágil Competente by Michael Cardoso
Zend Framework 2 - Desenvolvimento Ágil CompetenteZend Framework 2 - Desenvolvimento Ágil Competente
Zend Framework 2 - Desenvolvimento Ágil Competente
Michael Cardoso428 views
Orquestrando ambientes com docker e kubernetes by Rhuan Karlus Silva
Orquestrando ambientes com docker e kubernetes	Orquestrando ambientes com docker e kubernetes
Orquestrando ambientes com docker e kubernetes
Containers e DevOps by Raul Leite
Containers e DevOps Containers e DevOps
Containers e DevOps
Raul Leite298 views
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se... by Renato Groff
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Docker: Primeiros Passos, Dicas e Truques no Gerenciamento de Containers - Se...
Renato Groff2.6K views
.NET 6: O que há de novo e o que está por vir? by akamud
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
akamud155 views
.NET 6: O que há de novo e o que está por vir? by Letticia Nicoli
.NET 6: O que há de novo e o que está por vir?.NET 6: O que há de novo e o que está por vir?
.NET 6: O que há de novo e o que está por vir?
Letticia Nicoli360 views
.NET 2015, ASP.NET 5, C# 6 e tudo mais by akamud
.NET 2015, ASP.NET 5, C# 6 e tudo mais.NET 2015, ASP.NET 5, C# 6 e tudo mais
.NET 2015, ASP.NET 5, C# 6 e tudo mais
akamud346 views
Apresentação Docker by André Justi
Apresentação DockerApresentação Docker
Apresentação Docker
André Justi5.2K views
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS by Amazon Web Services LATAM
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWSAcelerando a entrega de software com as ferramentas de desenvolvimento da AWS
Acelerando a entrega de software com as ferramentas de desenvolvimento da AWS

More from Elton Minetto

Go e Microserviços - Nascidos um para o outro by
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outroElton Minetto
1.9K views37 slides
Object Calisthenics em Go by
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em GoElton Minetto
792 views79 slides
Programar != desenvolver software (v2) by
Programar != desenvolver software (v2)Programar != desenvolver software (v2)
Programar != desenvolver software (v2)Elton Minetto
341 views22 slides
Gerenciando uma startup no Github Projects by
Gerenciando uma startup no Github ProjectsGerenciando uma startup no Github Projects
Gerenciando uma startup no Github ProjectsElton Minetto
402 views30 slides
Clean Architecture by
Clean ArchitectureClean Architecture
Clean ArchitectureElton Minetto
916 views37 slides
Serverless em Go by
Serverless em GoServerless em Go
Serverless em GoElton Minetto
433 views31 slides

More from Elton Minetto(20)

Go e Microserviços - Nascidos um para o outro by Elton Minetto
Go e Microserviços - Nascidos um para o outroGo e Microserviços - Nascidos um para o outro
Go e Microserviços - Nascidos um para o outro
Elton Minetto1.9K views
Object Calisthenics em Go by Elton Minetto
Object Calisthenics em GoObject Calisthenics em Go
Object Calisthenics em Go
Elton Minetto792 views
Programar != desenvolver software (v2) by Elton Minetto
Programar != desenvolver software (v2)Programar != desenvolver software (v2)
Programar != desenvolver software (v2)
Elton Minetto341 views
Gerenciando uma startup no Github Projects by Elton Minetto
Gerenciando uma startup no Github ProjectsGerenciando uma startup no Github Projects
Gerenciando uma startup no Github Projects
Elton Minetto402 views
Clean architecture em Go - v2 by Elton Minetto
Clean architecture em Go - v2Clean architecture em Go - v2
Clean architecture em Go - v2
Elton Minetto664 views
Programar != desenvolver software by Elton Minetto
Programar != desenvolver softwareProgramar != desenvolver software
Programar != desenvolver software
Elton Minetto1.6K views
Clean Architecture em PHP by Elton Minetto
Clean Architecture em PHPClean Architecture em PHP
Clean Architecture em PHP
Elton Minetto3.3K views
Clean Architecture in Golang by Elton Minetto
Clean Architecture in GolangClean Architecture in Golang
Clean Architecture in Golang
Elton Minetto1.4K views
A jornada do desenvolvedor by Elton Minetto
A jornada do desenvolvedorA jornada do desenvolvedor
A jornada do desenvolvedor
Elton Minetto636 views
O case da Compufácil e AWS by Elton Minetto
O case da Compufácil e AWSO case da Compufácil e AWS
O case da Compufácil e AWS
Elton Minetto256 views
Como extrair métricas do Trello by Elton Minetto
Como extrair métricas do TrelloComo extrair métricas do Trello
Como extrair métricas do Trello
Elton Minetto2.9K views
Memórias das trincheiras (parte 2) by Elton Minetto
Memórias das trincheiras (parte 2)Memórias das trincheiras (parte 2)
Memórias das trincheiras (parte 2)
Elton Minetto1.4K views

Modernizando projetos legados usando APIs

  • 1. Modernizando projetos legados usando APIs Elton Minetto http://eltonminetto.net @eminetto
  • 5. Características → Desenvolvido com Yii 1.x e Lumen → ~5 anos de desenvolvimento → ~160k linhas de código → ~70% de cobertura de testes → PHP 5.X → Estrutura usando containers e AWS
  • 6. Problemas → Crescimento da empresa gera novos desafios de velocidade de entrega → Framework antigo e difícil de manter
  • 7. Requisitos do projeto → Modernizar a stack → Lançar uma API pública para aumentar o alcance do negócio → Lançar um portal de desenvolvedores → Transformar o projeto em uma plataforma
  • 9. "[...]developers have used virtualized machine images or container images with Docker containers to create immutable images of legacy systems and their configurations. The intent is to contain the legacy in a box for developers to run locally and remove the need for rebuilding, reconfiguring or sharing environments" https://www.thoughtworks.com/pt/radar/ techniques
  • 11. Ferramentas usadas → Zend Expressive 2 → Docker → AWS Elastic Beanstalk → AWS SQS → Bernard - abstração de filas → Fractal - transformação de dados → Monolog + Sentry - centralização de logs
  • 12. Ferramentas usadas → Doctrine - ORM → API Blueprint → aglio - documentação da API → dredd - testes de API → drakov - mock de API → phpunit - testes unitários/integração → prooph - event bus
  • 13. Estágio Atual do projeto → Integração entre o legado e a nova API implementada → Lançado o primeiro aplicativo externo conectado à nova arquitetura → Legado rodando com PHP 7
  • 14. Lições aprendidas → Testes unitários e de integração são cruciais → Containers para isolar as versões tornaram o processo mais fácil → Conflitos entre Amazon Elastic Beanstalk + Docker Compose foram mais complexos do que o esperado → Middlewares (Zend Expressive 2) aceleram o desenvolvimento
  • 15. Lições aprendidas → Começar pela definição da API foi uma boa decisão → API Blueprint foi uma boa decisão → Bernard foi uma boa decisão → Trabalhar com filas/processamento paralelo é complexo
  • 16. Próximos passos → Lançamento do Portal de Desenvolvedores → Desenvolvimento do componente Input hooks