SlideShare uma empresa Scribd logo
Thiago Pereira Rosa
Engenharia de Software
02/2016
Orientadora:
Msc. Ticiana Linhares Coelho da Silva

Co-orientador:
Dr. Flávio Rubens de Carvalho Souza
UM MÉTODO PARA O DESENVOLVIMENTO DE
SOFTWARE BASEADO EM MICROSSERVIÇOS
Trabalho de Conclusão de Curso
Roteiro da apresentação
• Justificativa
• Trabalhos relacionados
• Problemática e Objetivos
• Microsserviços
• Aplicações monolíticas
• Breve histórico sobre os microsserviços
• Definição formal
• Características
• Método de desenvolvimento
• Estudo de caso & implementação
• Conclusão
• Trabalhos futuros
• Referências bibliográficas
Objetivo
Propor um método para o desenvolvimento de
software baseado em microsserviços
Trabalhos Relacionados
• LEVCOVITZ, Alessandra; TERRA, Ricardo; VALENTE, Marco Tulio. Towards
a Technique for Extracting Microservices from Monolithic Enterprise
Systems. 3rd Brazilian Workshop on Software Visualization, Evolution
and Maintenance (VEM), p. 97-104, 2015.
• NAMIOT, Dmitry; SNEPS-SNEPPE, Manfred. On Micro-services Architecture.
International Journal of Open Information Technologies, v. 2, n. 9, p.
24-27, 2014.
• VIENNOT, Nicolas et al. Synapse: a microservices architecture for
heterogeneous-database web applications. In: Proceedings of the Tenth
European Conference on Computer Systems. ACM, 2015. p. 21.
Microsserviços ou Microserviços?
Para a tradução do termo Microservices, optei por adotar a nova
regra da reforma ortográfica da Língua Portuguesa de 2013 (com
período de adaptação de 4 anos).
– HÍFEN: “R” e “S”

Nova regra: O hífen não será mais utilizado em prefixos
terminados em vogal seguida de palavras iniciadas com “r”
ou “s”. Nesse caso, essas letras deverão ser duplicadas.
Neste caso, o correto é utilizar o termo microsserviços.
Aplicação monolítica
Problemática
A utilização dos microserviços melhora o
desenvolvimento de sistemas de software mais
complexos, confiáveis e com maior qualidade?
Microsserviços
Além da campanha publicitária
até 1990 2000 2010
Pré SOA Tradicional SOA Microsserviços
Microserviços (2014)
• Serviço único por processo
• Rede de comunicação leve e interoperável
• Baseado nos conceitos do negócio
• Linguagem de programação
• Synchronous / Asynchronous
• Independente de outros
RPC (1991)
• Serviço único por processo
• Rede de comunicação encapsulada e interoperável
• Baseado nos conceitos de negócio
• Linguagem de programação
• Synchronous / Asynchronous
• Independente de outros
Microsserviços
Além da campanha publicitária
até 1990 2000 2010
Pré SOA Tradicional SOA Microsserviços
Microserviços (2014)
• Serviço único por processo
• Rede de comunicação leve e interoperável
• Baseado nos conceitos do negócio
• Linguagem de programação
• Synchronous / Asynchronous
• Independente de outros
RPC (1991)
• Serviço único por processo
• Rede de comunicação encapsulada e interoperável
• Baseado nos conceitos de negócio
• Linguagem de programação
• Synchronous / Asynchronous
• Independente de outros
Unix Philosophy (1984)
"Esta é a filosofia Unix:
Escreva programas que façam apenas uma coisa mas que façam bem feito.
Escreva programas que trabalhem juntos. Escreva programas que manipulem
streams de texto, pois esta é uma interface universal”
O ciclo de adoção na TI corporativa
http://enterpriseitadoption.com
“In short, the microservice architectural style is an approach to
developing a single application as a suite of small services, each
running in its own process and communicating with lightweight
mechanisms, often an HTTP resource API.

These services are built around business capabilities and
independently deployable by fully automated deployment
machinery. There is a bare minimum of centralized management
of these services, which may be written in different programming
languages and use different data storage technologies”
– Martin Fowler
Microsserviços e a Arquitetura em Camadas
http://microxchg.io/2016/index.html
Microsserviços e a Arquitetura em Camadas
http://microxchg.io/2016/index.html
Persistência poliglota dos Microserviços
Escalabilidade dos Microserviços
https://leanpub.com/software-architecture-for-developers/read#c4
Características dos Microsserviços
• Pequenos.
• Executados em seu próprio processo.
• Possuem um mecanismo leve de comunicação (via HTTP)
• Construídos em torno da capacidade do negócio
• Independente implementáveis.
• Possuem o mínimo de gerenciamento centralizado.
• Podem ser escritos em linguagens de programação diferentes.
• Podem utilizar diferentes tecnologias de persistência.
A anatomia de um microsserviço
RESTfull API
Tecnologia de
desenvolvimento
escolhida
Configuração de
implantação
}
• Modelagem RML
• JSON
• Traits e schemas
• Java
• Groovy
• Scala
• Go, Node, Ruby…
• Variáveis de ambiente
• Buildpacks
Método de desenvolvimento
Metodologia
• Este método fornece um conjunto de passos para a
construção de software baseado em microsserviços.
• Minimizar a necessidade de re-implementação, caso
ocorram mudanças.
• Limitação de serviços devidamente coesos com os
mecanismos projetado para evolução das interfaces.
• Envolvendo uma combinação de tecnologias em diferentes
áreas da TI.
• Interoperável.
Metodologia Ágil e o Produto mínimo viável
http://www.enricdurany.com/work/stop-thinking-of-minimum-viable-products/
Casos de uso inteligentes
• Cada processo elementar é implementado
em uma única aplicação.
• Os requisitos são modelados usando casos
de uso inteligentes.
• Cada aplicativo consiste em um caso de uso
de alto nível e uma série de casos de uso
subsequentes.
• Deve-se somar os serviços que são
necessários para implementar o modelo.
• Podemos fazer o mapeamento de impacto
sobre os serviços.
• Os casos de uso inteligentes formam uma
base sólida para os testes de integração.
Comportamento dos microsserviços
Caso clientes utilizem diretamente os microsserviços:
• Lógica de negócio e lógica de tratamento de error são
movidos para o lado do cliente.
• Requer várias solicitações para executar um fluxo
padrão.
Caso clientes utilizem um agregador de chamadas:
• Maior desempenho.
• API otimizada para aplicações (comportamento consistente)
• Promoção do isolamento de funcionalidades
Não Sim
Tecnologias de microsserviços
• Spring Boot
• Dropwizard
• Play 2
• Hystrix
• Netflix OSS
• Kibana
• Logstash
• Loggly
• Pagerduty
• Servo
• Atlas
• Graphite
• Zipkin
Desenvolvimento
Logging Monitoramento
• Zookeeper
• Curator
• Eureka
Localização e Descoberta
• Archaius
Configurações
Testando os microsserviços
Code
Developer
Test
Test
Acceptance
Test
Acceptance Live
Método de desenvolvimento
Apresentação
Processo
Domínio
Serviços
…
Páginas
Grids / Panels
Controles
Casos de Uso
Fluxos
Objetos de domínio
Factories / Repositórios
Enuns, Tuplas, Reference Objects
Services gateway
Services Clients
Info objects / Search objects
ComponentesAutenticação Clientes Relatórios
Apresentação
Processo
Domínio
Serviços
…
Páginas
Grids / Panels
Controles
Casos de Uso
Fluxos
Objetos de domínio
Factories / Repositórios
Enuns, Tuplas, Reference Objects
Services gateway
Services Clients
Info objects / Search objects
ComponentesAutenticação Clientes Relatórios
Testes de integração
BDD, Selenium
Testes Unitários
Testes Unitários
Monitoramento Método de desenvolvimento
Estudo de caso & Implementação
Estudo de caso - Startup Fototerapia
• Este estudo de caso consistiu em implementar uma aplicação
funcional básica (protótipo) no contexto de auxílio ao tratamento
médico com o uso de fototerapia, utilizando o método de
desenvolvimento de software baseado em microsserviços
proposto neste projeto de pesquisa e trilhando os requisitos
funcionais elementares necessários para a construção do sistema.
• bright-ms_middleware
• bright-ms_auth
• bright-ms_cliente
• bright-sistema_principal
Estudo de caso
Front-end Estudo de caso
Spring Boot
• Convenção sobre a abordagem de configuração.
• Java, Groovy ou Scala.
• Arquivos auto-contidos em Jar ou War.
• Gerenciamento de dependências através de pré-empacotamento.
Estudo de caso
@ComponentScan
@EnableAutoConfiguration
public class bright-ms_auth_App {
public static void main(String[] args) {
SpringApplication.run(bright-ms_auth_App.class, args);
}
}
Spring Boot | bright-ms_auth (video) Estudo de caso
Repositório Estudo de caso
https://bitbucket.org/kamihouse/bright_microservices
Conclusão
• Microsserviços são complexos e multidisciplinares.
• Apoiam diferente tipos e contextos de software.
• Não devem ser utilizados para qualquer sistema de
software.
• Atenção redobrada para as estruturas de comunicação e
interação entre serviços.
• Diversas tecnologias com suporte à microsserviços
consolidadas no mercado.
Trabalhos futuros
• Advanced Message Queueing Protocol (AMQP)
• Programação reativa
• Segurança dos microsserviços
• Escalabilidade dos microsserviços
Referências Bibliográficas
• FIELDING, Roy Thomas. Architectural styles and the design of network-based
software architectures. 2000. Tese de Doutorado. University of California, Irvine.
• FOWLER, Martin. Patterns of enterprise application architecture. Addison-
Wesley Longman Publishing Co., Inc., 2002.
• LEWIS, James; FLOWER, Martin. Microservices. Disponível em: <http://
martinfowler.com/articles/microservices.html> Acesso em: 18 jun. 2015.
• MARINESCU, Dan C. Cloud computing: Theory and practice. 1.ed. Waltham:
Newnes, 2013.
• Microservices, Docker and Containers, an Overview. Disponível em: <http://
www.simplicityitself.com/articles/microservices-docker-and-containers-an-
overview>. Acesso em: 25 jan. 2016.
• Microxchg - The Microservices Conference in Berlin. Disponível em: <http://
microxchg.io>. Acesso em: 23 jan. 2016.
Referências Bibliográficas
• NAMIOT, Dmitry; SNEPS-SNEPPE, Manfred. On Micro-services Architecture.
International Journal of Open Information Technologies, v. 2, n. 9, p. 24-27,
2014.
• NEWMAN, Sam. Building Microservices. 1 ed. O'Reilly Media, Inc., 2015.
• RICHARDSON, Chris. Microservices architecture. Disponível em <http://
microservices.io/patterns/microservices.html> Acesso em: 20 mai. 2015.
• RICHARDSON, Chris. Microservices: Decomposing applications for deployability
and scalability. 2014.
• The twelve-factor app. Disponível em <http://12factor.net> Acesso em: 13 mai.
2015.
• THONES, Johannes. Microservices. Software, IEEE, v. 32, n. 1, p. 116-116,
2015.
Obrigado!
https://kamihouse.wordpress.com/2015/06/20/um-metodo-para-o-desenvolvimento-de-software-baseado-em-microservices
UM MÉTODO PARA O DESENVOLVIMENTO DE
SOFTWARE BASEADO EM MICROSSERVIÇOS
Thiago Pereira Rosa

Engenharia de Software

Universidade Federal do Ceará
Orientador(a):

Msc. Ticiana Linhares Coelho da Silva
Co-orientador:

Dr. Flávio Rubens de Carvalho Souza

Mais conteúdo relacionado

Mais procurados

Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?
Paula Santana
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating Microservices
Thiago Ramos
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
Diego Pacheco
 
Amadurecendo Equipes com Microservices
Amadurecendo Equipes com MicroservicesAmadurecendo Equipes com Microservices
Amadurecendo Equipes com Microservices
sanchez_ivan
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
Fábio Rosato
 
Microservices
MicroservicesMicroservices
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API Gateway
Marcos Barbero
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenos
Vinícius Krolow
 
Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache Kafka
Gustavo Bellini Bigardi
 
Estudo de caso ASP.NET MVC e Silverlight
Estudo de caso ASP.NET MVC e SilverlightEstudo de caso ASP.NET MVC e Silverlight
Estudo de caso ASP.NET MVC e Silverlight
Glauco Vinicius Argentino de Oliveira
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Renato Groffe
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
Waldyr Felix
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Renato Groffe
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Tiago Marchetti Dolphine
 
Microservices
MicroservicesMicroservices
Microservices
Diego Pacheco
 
O Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareO Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de software
Emmanuel Neri
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Renato Groffe
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
Tiago Marchetti Dolphine
 
Integração utilizando REST API e Microservices
Integração utilizando REST API e MicroservicesIntegração utilizando REST API e Microservices
Integração utilizando REST API e Microservices
Denis Santos
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
José Gabriel Gruber
 

Mais procurados (20)

Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?Microsserviços, moda ou necessidade?
Microsserviços, moda ou necessidade?
 
Integrating Microservices
Integrating MicroservicesIntegrating Microservices
Integrating Microservices
 
Workshop soa, microservices e devops
Workshop soa, microservices e devopsWorkshop soa, microservices e devops
Workshop soa, microservices e devops
 
Amadurecendo Equipes com Microservices
Amadurecendo Equipes com MicroservicesAmadurecendo Equipes com Microservices
Amadurecendo Equipes com Microservices
 
Vantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservicesVantagens e desvantagens de uma arquitetura microservices
Vantagens e desvantagens de uma arquitetura microservices
 
Microservices
MicroservicesMicroservices
Microservices
 
Netshoes - API Gateway
Netshoes - API GatewayNetshoes - API Gateway
Netshoes - API Gateway
 
Microservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenosMicroservices - Quebrando gigantes em pequenos
Microservices - Quebrando gigantes em pequenos
 
Aplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache KafkaAplicações Distribuídas com .NET e Apache Kafka
Aplicações Distribuídas com .NET e Apache Kafka
 
Estudo de caso ASP.NET MVC e Silverlight
Estudo de caso ASP.NET MVC e SilverlightEstudo de caso ASP.NET MVC e Silverlight
Estudo de caso ASP.NET MVC e Silverlight
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | TDC Connections 2021
 
Microservices com ASP.NET 5
Microservices com ASP.NET 5Microservices com ASP.NET 5
Microservices com ASP.NET 5
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App - Março-2021
 
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
Microservices: uma abordagem para arquitetura de aplicações (Devcamp 2015)
 
Microservices
MicroservicesMicroservices
Microservices
 
O Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de softwareO Impacto da arquitetura de Micro Serviços nas soluções de software
O Impacto da arquitetura de Micro Serviços nas soluções de software
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...QCon SP 2016 -  WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
QCon SP 2016 - WebAPIs e delivery: Matando a fome de 1 milhão de pedidos men...
 
Integração utilizando REST API e Microservices
Integração utilizando REST API e MicroservicesIntegração utilizando REST API e Microservices
Integração utilizando REST API e Microservices
 
Fundamentos em Containers
Fundamentos em ContainersFundamentos em Containers
Fundamentos em Containers
 

Destaque

Assignment , PPM-IT
Assignment  , PPM-ITAssignment  , PPM-IT
Assignment , PPM-IT
Devansh Sharma
 
Kpi for managers
Kpi for managersKpi for managers
Kpi for managers
churlathanjones
 
Brand kpi
Brand kpiBrand kpi
Brand kpi
churlathanjones
 
Российский стартап teach4teach.ru
Российский стартап teach4teach.ruРоссийский стартап teach4teach.ru
Российский стартап teach4teach.ru
Светлана Панюкова
 
資料1
資料1資料1
資料1fu____n
 
Bank kpi
Bank kpiBank kpi
Bank kpi
churlathanjones
 
Disability Benefits Attorneys
Disability Benefits AttorneysDisability Benefits Attorneys
Disability Benefits Attorneys
ssdapplication14
 
Open addresses odi devon overview
Open addresses   odi devon overviewOpen addresses   odi devon overview
Open addresses odi devon overview
OpenAddressesUK
 
Oee kpi
Oee kpiOee kpi
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4
beassrr
 
Cobaed #10
Cobaed #10Cobaed #10
Cobaed #10
Salvador Vargas
 
Finance kpi examples
Finance kpi examplesFinance kpi examples
Finance kpi examples
churlathanjones
 

Destaque (13)

Assignment , PPM-IT
Assignment  , PPM-ITAssignment  , PPM-IT
Assignment , PPM-IT
 
Kpi for managers
Kpi for managersKpi for managers
Kpi for managers
 
Brand kpi
Brand kpiBrand kpi
Brand kpi
 
Российский стартап teach4teach.ru
Российский стартап teach4teach.ruРоссийский стартап teach4teach.ru
Российский стартап teach4teach.ru
 
資料1
資料1資料1
資料1
 
Bank kpi
Bank kpiBank kpi
Bank kpi
 
Disability Benefits Attorneys
Disability Benefits AttorneysDisability Benefits Attorneys
Disability Benefits Attorneys
 
Open addresses odi devon overview
Open addresses   odi devon overviewOpen addresses   odi devon overview
Open addresses odi devon overview
 
Oee kpi
Oee kpiOee kpi
Oee kpi
 
Evaluation question 4
Evaluation question 4Evaluation question 4
Evaluation question 4
 
Untitled Presentation
Untitled PresentationUntitled Presentation
Untitled Presentation
 
Cobaed #10
Cobaed #10Cobaed #10
Cobaed #10
 
Finance kpi examples
Finance kpi examplesFinance kpi examples
Finance kpi examples
 

Semelhante a Um método para o desenvolvimento de software baseado em microsserviços

Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto Enomoto
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
Natanael Fonseca
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
Norberto Enomoto
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
Rodrigo Cândido da Silva
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Renato Groff
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Renato Groff
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
Norberto Enomoto
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
Renato Groff
 
MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como Código
Caio Candido
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
Ryan Padilha
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções
Edgar Silva
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
aviram
 
Microservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesMicroservices em Python: desafios e soluções
Microservices em Python: desafios e soluções
Guilherme Vierno
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
José Bringel Filho
 
Preparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicosPreparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicos
Bruno Luiz Pereira da Silva
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Renato Groff
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Renato Groff
 
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Renato Groff
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e Desafios
Ryan Padilha
 
Microservices
MicroservicesMicroservices
Microservices
Rafael Sousa
 

Semelhante a Um método para o desenvolvimento de software baseado em microsserviços (20)

Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Microservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud NetflixMicroservices com Spring Boot e Spring Cloud Netflix
Microservices com Spring Boot e Spring Cloud Netflix
 
Arquitetura de Microservicos
Arquitetura de MicroservicosArquitetura de Microservicos
Arquitetura de Microservicos
 
Workshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura MicroservicesWorkshop Microservices - Arquitetura Microservices
Workshop Microservices - Arquitetura Microservices
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
Alternativas para a Implementação de Microservices no Microsoft Azure - Novem...
 
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 Alternativas para a Implementação de Microservices no Microsoft Azure - Jane... Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
Alternativas para a Implementação de Microservices no Microsoft Azure - Jane...
 
Arquitetura de Microserviços
Arquitetura de MicroserviçosArquitetura de Microserviços
Arquitetura de Microserviços
 
Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016Microserviços - Universidade Metodista - EETI 2016
Microserviços - Universidade Metodista - EETI 2016
 
MIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como CódigoMIT DevOps IaC - Infra como Código
MIT DevOps IaC - Infra como Código
 
Plataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDKPlataforma Android: Produtividade Além do SDK
Plataforma Android: Produtividade Além do SDK
 
Skalena - Overview de Soluções
Skalena - Overview de Soluções Skalena - Overview de Soluções
Skalena - Overview de Soluções
 
Pense Aberto, Pense Linux
Pense Aberto, Pense LinuxPense Aberto, Pense Linux
Pense Aberto, Pense Linux
 
Microservices em Python: desafios e soluções
Microservices em Python: desafios e soluçõesMicroservices em Python: desafios e soluções
Microservices em Python: desafios e soluções
 
Startups e DevOps
Startups e DevOpsStartups e DevOps
Startups e DevOps
 
Preparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicosPreparando sua arquitetura para microservicos
Preparando sua arquitetura para microservicos
 
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
Arquitetura de Microserviços - Stone Tech Saturday - Março/2017
 
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
Arquitetura de Microserviços - Tecnologia na Prática - Julho/2017
 
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
Nuvens com Ênfase em Azure - Locatech + Locaneers - Abril-2019
 
Microservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e DesafiosMicroservices - Arquitetura, Ecossistema e Desafios
Microservices - Arquitetura, Ecossistema e Desafios
 
Microservices
MicroservicesMicroservices
Microservices
 

Mais de Thiago Pereira

Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de Features
Thiago Pereira
 
Windows Azure - Computação em Nuvem
Windows Azure - Computação em NuvemWindows Azure - Computação em Nuvem
Windows Azure - Computação em Nuvem
Thiago Pereira
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
Thiago Pereira
 
Redesign iTest Learning
Redesign iTest LearningRedesign iTest Learning
Redesign iTest Learning
Thiago Pereira
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
Thiago Pereira
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoração
Thiago Pereira
 

Mais de Thiago Pereira (6)

Reuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de FeaturesReuso de Software - Síntese do Modelo de Features
Reuso de Software - Síntese do Modelo de Features
 
Windows Azure - Computação em Nuvem
Windows Azure - Computação em NuvemWindows Azure - Computação em Nuvem
Windows Azure - Computação em Nuvem
 
Arquitetura MVC
Arquitetura MVCArquitetura MVC
Arquitetura MVC
 
Redesign iTest Learning
Redesign iTest LearningRedesign iTest Learning
Redesign iTest Learning
 
Rational Unified Process
Rational Unified ProcessRational Unified Process
Rational Unified Process
 
Padrões de refatoração
Padrões de refatoraçãoPadrões de refatoração
Padrões de refatoração
 

Um método para o desenvolvimento de software baseado em microsserviços

  • 1. Thiago Pereira Rosa Engenharia de Software 02/2016 Orientadora: Msc. Ticiana Linhares Coelho da Silva Co-orientador: Dr. Flávio Rubens de Carvalho Souza UM MÉTODO PARA O DESENVOLVIMENTO DE SOFTWARE BASEADO EM MICROSSERVIÇOS Trabalho de Conclusão de Curso
  • 2. Roteiro da apresentação • Justificativa • Trabalhos relacionados • Problemática e Objetivos • Microsserviços • Aplicações monolíticas • Breve histórico sobre os microsserviços • Definição formal • Características • Método de desenvolvimento • Estudo de caso & implementação • Conclusão • Trabalhos futuros • Referências bibliográficas
  • 3. Objetivo Propor um método para o desenvolvimento de software baseado em microsserviços
  • 4. Trabalhos Relacionados • LEVCOVITZ, Alessandra; TERRA, Ricardo; VALENTE, Marco Tulio. Towards a Technique for Extracting Microservices from Monolithic Enterprise Systems. 3rd Brazilian Workshop on Software Visualization, Evolution and Maintenance (VEM), p. 97-104, 2015. • NAMIOT, Dmitry; SNEPS-SNEPPE, Manfred. On Micro-services Architecture. International Journal of Open Information Technologies, v. 2, n. 9, p. 24-27, 2014. • VIENNOT, Nicolas et al. Synapse: a microservices architecture for heterogeneous-database web applications. In: Proceedings of the Tenth European Conference on Computer Systems. ACM, 2015. p. 21.
  • 5. Microsserviços ou Microserviços? Para a tradução do termo Microservices, optei por adotar a nova regra da reforma ortográfica da Língua Portuguesa de 2013 (com período de adaptação de 4 anos). – HÍFEN: “R” e “S”
 Nova regra: O hífen não será mais utilizado em prefixos terminados em vogal seguida de palavras iniciadas com “r” ou “s”. Nesse caso, essas letras deverão ser duplicadas. Neste caso, o correto é utilizar o termo microsserviços.
  • 7. Problemática A utilização dos microserviços melhora o desenvolvimento de sistemas de software mais complexos, confiáveis e com maior qualidade?
  • 8. Microsserviços Além da campanha publicitária até 1990 2000 2010 Pré SOA Tradicional SOA Microsserviços Microserviços (2014) • Serviço único por processo • Rede de comunicação leve e interoperável • Baseado nos conceitos do negócio • Linguagem de programação • Synchronous / Asynchronous • Independente de outros RPC (1991) • Serviço único por processo • Rede de comunicação encapsulada e interoperável • Baseado nos conceitos de negócio • Linguagem de programação • Synchronous / Asynchronous • Independente de outros
  • 9. Microsserviços Além da campanha publicitária até 1990 2000 2010 Pré SOA Tradicional SOA Microsserviços Microserviços (2014) • Serviço único por processo • Rede de comunicação leve e interoperável • Baseado nos conceitos do negócio • Linguagem de programação • Synchronous / Asynchronous • Independente de outros RPC (1991) • Serviço único por processo • Rede de comunicação encapsulada e interoperável • Baseado nos conceitos de negócio • Linguagem de programação • Synchronous / Asynchronous • Independente de outros Unix Philosophy (1984) "Esta é a filosofia Unix: Escreva programas que façam apenas uma coisa mas que façam bem feito. Escreva programas que trabalhem juntos. Escreva programas que manipulem streams de texto, pois esta é uma interface universal”
  • 10. O ciclo de adoção na TI corporativa http://enterpriseitadoption.com
  • 11. “In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API.
 These services are built around business capabilities and independently deployable by fully automated deployment machinery. There is a bare minimum of centralized management of these services, which may be written in different programming languages and use different data storage technologies” – Martin Fowler
  • 12. Microsserviços e a Arquitetura em Camadas http://microxchg.io/2016/index.html
  • 13. Microsserviços e a Arquitetura em Camadas http://microxchg.io/2016/index.html
  • 14. Persistência poliglota dos Microserviços
  • 16. Características dos Microsserviços • Pequenos. • Executados em seu próprio processo. • Possuem um mecanismo leve de comunicação (via HTTP) • Construídos em torno da capacidade do negócio • Independente implementáveis. • Possuem o mínimo de gerenciamento centralizado. • Podem ser escritos em linguagens de programação diferentes. • Podem utilizar diferentes tecnologias de persistência.
  • 17. A anatomia de um microsserviço RESTfull API Tecnologia de desenvolvimento escolhida Configuração de implantação } • Modelagem RML • JSON • Traits e schemas • Java • Groovy • Scala • Go, Node, Ruby… • Variáveis de ambiente • Buildpacks
  • 19. Metodologia • Este método fornece um conjunto de passos para a construção de software baseado em microsserviços. • Minimizar a necessidade de re-implementação, caso ocorram mudanças. • Limitação de serviços devidamente coesos com os mecanismos projetado para evolução das interfaces. • Envolvendo uma combinação de tecnologias em diferentes áreas da TI. • Interoperável.
  • 20.
  • 21. Metodologia Ágil e o Produto mínimo viável http://www.enricdurany.com/work/stop-thinking-of-minimum-viable-products/
  • 22. Casos de uso inteligentes • Cada processo elementar é implementado em uma única aplicação. • Os requisitos são modelados usando casos de uso inteligentes. • Cada aplicativo consiste em um caso de uso de alto nível e uma série de casos de uso subsequentes. • Deve-se somar os serviços que são necessários para implementar o modelo. • Podemos fazer o mapeamento de impacto sobre os serviços. • Os casos de uso inteligentes formam uma base sólida para os testes de integração.
  • 23. Comportamento dos microsserviços Caso clientes utilizem diretamente os microsserviços: • Lógica de negócio e lógica de tratamento de error são movidos para o lado do cliente. • Requer várias solicitações para executar um fluxo padrão. Caso clientes utilizem um agregador de chamadas: • Maior desempenho. • API otimizada para aplicações (comportamento consistente) • Promoção do isolamento de funcionalidades Não Sim
  • 24. Tecnologias de microsserviços • Spring Boot • Dropwizard • Play 2 • Hystrix • Netflix OSS • Kibana • Logstash • Loggly • Pagerduty • Servo • Atlas • Graphite • Zipkin Desenvolvimento Logging Monitoramento • Zookeeper • Curator • Eureka Localização e Descoberta • Archaius Configurações
  • 26. Apresentação Processo Domínio Serviços … Páginas Grids / Panels Controles Casos de Uso Fluxos Objetos de domínio Factories / Repositórios Enuns, Tuplas, Reference Objects Services gateway Services Clients Info objects / Search objects ComponentesAutenticação Clientes Relatórios
  • 27. Apresentação Processo Domínio Serviços … Páginas Grids / Panels Controles Casos de Uso Fluxos Objetos de domínio Factories / Repositórios Enuns, Tuplas, Reference Objects Services gateway Services Clients Info objects / Search objects ComponentesAutenticação Clientes Relatórios Testes de integração BDD, Selenium Testes Unitários Testes Unitários
  • 28. Monitoramento Método de desenvolvimento
  • 29. Estudo de caso & Implementação
  • 30. Estudo de caso - Startup Fototerapia • Este estudo de caso consistiu em implementar uma aplicação funcional básica (protótipo) no contexto de auxílio ao tratamento médico com o uso de fototerapia, utilizando o método de desenvolvimento de software baseado em microsserviços proposto neste projeto de pesquisa e trilhando os requisitos funcionais elementares necessários para a construção do sistema. • bright-ms_middleware • bright-ms_auth • bright-ms_cliente • bright-sistema_principal Estudo de caso
  • 32. Spring Boot • Convenção sobre a abordagem de configuração. • Java, Groovy ou Scala. • Arquivos auto-contidos em Jar ou War. • Gerenciamento de dependências através de pré-empacotamento. Estudo de caso @ComponentScan @EnableAutoConfiguration public class bright-ms_auth_App { public static void main(String[] args) { SpringApplication.run(bright-ms_auth_App.class, args); } }
  • 33. Spring Boot | bright-ms_auth (video) Estudo de caso
  • 34. Repositório Estudo de caso https://bitbucket.org/kamihouse/bright_microservices
  • 35. Conclusão • Microsserviços são complexos e multidisciplinares. • Apoiam diferente tipos e contextos de software. • Não devem ser utilizados para qualquer sistema de software. • Atenção redobrada para as estruturas de comunicação e interação entre serviços. • Diversas tecnologias com suporte à microsserviços consolidadas no mercado.
  • 36. Trabalhos futuros • Advanced Message Queueing Protocol (AMQP) • Programação reativa • Segurança dos microsserviços • Escalabilidade dos microsserviços
  • 37. Referências Bibliográficas • FIELDING, Roy Thomas. Architectural styles and the design of network-based software architectures. 2000. Tese de Doutorado. University of California, Irvine. • FOWLER, Martin. Patterns of enterprise application architecture. Addison- Wesley Longman Publishing Co., Inc., 2002. • LEWIS, James; FLOWER, Martin. Microservices. Disponível em: <http:// martinfowler.com/articles/microservices.html> Acesso em: 18 jun. 2015. • MARINESCU, Dan C. Cloud computing: Theory and practice. 1.ed. Waltham: Newnes, 2013. • Microservices, Docker and Containers, an Overview. Disponível em: <http:// www.simplicityitself.com/articles/microservices-docker-and-containers-an- overview>. Acesso em: 25 jan. 2016. • Microxchg - The Microservices Conference in Berlin. Disponível em: <http:// microxchg.io>. Acesso em: 23 jan. 2016.
  • 38. Referências Bibliográficas • NAMIOT, Dmitry; SNEPS-SNEPPE, Manfred. On Micro-services Architecture. International Journal of Open Information Technologies, v. 2, n. 9, p. 24-27, 2014. • NEWMAN, Sam. Building Microservices. 1 ed. O'Reilly Media, Inc., 2015. • RICHARDSON, Chris. Microservices architecture. Disponível em <http:// microservices.io/patterns/microservices.html> Acesso em: 20 mai. 2015. • RICHARDSON, Chris. Microservices: Decomposing applications for deployability and scalability. 2014. • The twelve-factor app. Disponível em <http://12factor.net> Acesso em: 13 mai. 2015. • THONES, Johannes. Microservices. Software, IEEE, v. 32, n. 1, p. 116-116, 2015.
  • 40. UM MÉTODO PARA O DESENVOLVIMENTO DE SOFTWARE BASEADO EM MICROSSERVIÇOS Thiago Pereira Rosa Engenharia de Software Universidade Federal do Ceará Orientador(a): Msc. Ticiana Linhares Coelho da Silva Co-orientador: Dr. Flávio Rubens de Carvalho Souza