Master
ThoughtWorks
Menu
Fechar
  • O que fazemos
    • Visão geral
    • Experiência de Cliente, Produto e Design
    • Estratégia, Engenharia e Análise de Dados
    • Operação e Transformação Digital
    • Modernização Empresarial, Plataformas e Nuvem
  • Com quem trabalhamos
    • Visão geral
    • Setor automotivo
    • Saúde
    • Setor público
    • Cleantech, energia e utilidade pública
    • Mídia
    • Varejo e e-commerce
    • Serviços financeiros e seguros
    • Organizações sem fins lucrativos
    • Viagem e transporte
  • Insights
    • Visão geral
    • Destaques

      • Tecnologia

        Uma análise abrangente de tecnologias e práticas de engenharia nas empresas

      • Negócios

        Mantenha-se em dia com as mais recentes tendências da indústria

      • Cultura

        Um espaço para conteúdo sobre desenvolvimento profissional e nossa visão sobre justiça social e inclusão

    • Ferramentas e Publicações Digitais

      • Technology Radar

        Um guia com opiniões firmes sobre as fronteiras da tecnologia

      • Perspectives

        Uma publicação para líderes digitais

      • Modelo de Fluência Digital

        Um modelo para priorizar as competências digitais necessárias para se navegar a incerteza

      • Decoder

        Um guia de A a Z sobre tecnologia para lideranças executivas

    • Todos os Insights

      • Artigos

        Visões de especialistas para ajudar seu negócio a crescer

      • Blogs

        Pontos de vista pessoais de ThoughtWorkers de todo o mundo

      • Livros

        Explore nossa vasta biblioteca

      • Podcasts

        Discussões instigantes sobre as últimas novidades em negócios e tecnologia

  • Carreiras
    • Visão geral
    • Processo de aplicação

      O que esperar de uma entrevista conosco

    • Pessoas em início ou mudança de carreira

      Comece sua jornada na tecnologia aqui

    • Vagas abertas

      Encontre oportunidades na sua região

    • Conecte-se

      Assine nossa newsletter mensal

  • Sobre
    • Visão geral
    • Nosso propósito
    • Prêmios e reconhecimentos
    • Diversidade, equidade e inclusão
    • Nossas lideranças
    • Parcerias
    • Notícias
    • Conferências e eventos
  • Contato
Brazil | Português
  • United States United States
    English
  • China China
    中文 | English
  • India India
    English
  • Canada Canada
    English
  • Singapore Singapore
    English
  • United Kingdom United Kingdom
    English
  • Australia Australia
    English
  • Germany Germany
    English | Deutsch
  • Brazil Brazil
    English | Português
  • Spain Spain
    English | Español
  • Global Global
    English
Blogs
Selecione um tema
Ver todos os tópicosFechar
Tecnologia 
Gestão de Projetos Agil Nuvem Entrega Contínua Ciência e Engenharia de Dados Defendendo a Internet Livre Arquitetura Evolutiva Design de Experiência IoT Linguagens, Ferramentas & Frameworks Modernização de sistemas legados Machine Learning & Artificial Intelligence Microsserviços Plataformas Segurança Testes de Software Estratégia de Tecnologia 
O negócio 
Serviços Financeiros Saúde Global Inovação Varejo Transformação 
Carreiras 
Dicas de Carreira Diversidade e Inclusão Transformação social 
Blogs

Topics

Escolha um tópico
  • Tecnologia
    Tecnologia
  • Tecnologia Visão Geral
  • Gestão de Projetos Agil
  • Nuvem
  • Entrega Contínua
  • Ciência e Engenharia de Dados
  • Defendendo a Internet Livre
  • Arquitetura Evolutiva
  • Design de Experiência
  • IoT
  • Linguagens, Ferramentas & Frameworks
  • Modernização de sistemas legados
  • Machine Learning & Artificial Intelligence
  • Microsserviços
  • Plataformas
  • Segurança
  • Testes de Software
  • Estratégia de Tecnologia
  • O negócio
    O negócio
  • O negócio Visão Geral
  • Serviços Financeiros
  • Saúde Global
  • Inovação
  • Varejo
  • Transformação
  • Carreiras
    Carreiras
  • Carreiras Visão Geral
  • Dicas de Carreira
  • Diversidade e Inclusão
  • Transformação social
Tecnologia

Microsserviços em poucas palavras

James Lewis James Lewis
Martin Fowler Martin Fowler

Published: Feb 23, 2015

O termo "Arquitetura de Microsserviços (Microservice Architecture)" surgiu nos últimos anos para descrever uma maneira específica de desenvolver software como suites de serviços com deploy independente. Embora não exista uma definição precisa desse estilo de arquitetura, há certas características comuns em relação à organização, à capacidade de negócios, ao deploy automatizado, à inteligência nos terminais e ao controle descentralizado de linguagens e de dados.

O que segue foi retirado de um artigo que apareceu originalmente no website do Martin Fowler.  

"Microsserviços" - mais um novo termo nas ruas lotadas da arquitetura de software. Embora a nossa inclinação natural seja olhar para essas coisas com um certo desprezo, a terminologia descreve um estilo de sistemas de software que temos achado cada vez mais atraente. Temos visto muitos projetos usando esse estilo nos últimos anos, e os resultados até agora têm sido positivos; tanto que, para muitos de nossos colegas, microsserviços vem se tornando o estilo padrão para o desenvolvimento de aplicativos corporativos. Infelizmente, no entanto, não há muita informação que descreva o estilo de microsserviços e como aplicá-lo.

Resumindo, o estilo de arquitetura de microsserviços é uma abordagem que desenvolve um aplicativo único como uma suite de pequenos serviços, cada um executando seu próprio processo e se comunicando através de mecanismos leves, muitas vezes em uma API com recursos HTTP. Esses serviços são construídos em torno de capacidades de negócios e funcionam através de mecanismos de deploy independentes totalmente automatizados. Há o mínimo possível de gerenciamento centralizado desses serviços, que podem ser escritos em diferentes linguagens de programação e utilizam diferentes tecnologias de armazenamento de dados.

Para começar a explicar o estilo de microsserviços, é útil compará-lo com o estilo de aplicativo monolítico, construído como uma única unidade. Aplicativos corporativos geralmente são construídos em três partes principais: a interface de usuário do lado do cliente (que consiste em páginas HTML e JavaScript executadas em um navegador na máquina do usuário) um banco de dados (que consiste em muitas tabelas inseridas em um sistema de gerenciamento de banco de dados comum, geralmente relacional), e um aplicativo do lado do servidor. O aplicativo do lado do servidor lida com as solicitações HTTP, executa a lógica do domínio, recupera e atualiza dados do banco de dados, e seleciona e preenche as visualizações HTML a serem enviadas para o navegador. Esse aplicativo do lado do servidor é monolítico - um executável lógico único. Quaisquer mudanças no sistema envolvem criação e deploy de uma nova versão do aplicativo no lado do servidor.

O servidor monolítico é o caminho natural para abordar a construção de um sistema desse tipo. Toda a sua lógica para lidar com uma solicitação é executada em um único processo, o que lhe permite usar os recursos básicos de sua linguagem para dividir a aplicação em classes, funções e namespaces. Com um pouco de cuidado, você pode executar e testar o aplicativo no laptop de um desenvolvedor, usando um pipeline de deploy para garantir que as mudanças sejam devidamente testadas e colocadas em produção. Você pode escalar um aplicativo monolítico horizontalmente, executando muitas instâncias atrás de um balanceador de carga.

Aplicativos monolíticos podem funcionar bem, mas cada vez mais as pessoas estão se frustrando com eles, especialmente à medida que mais aplicativos vem tendo seus deploys na nuvem. Ciclos de alterações são vinculados - uma alteração feita uma pequena parte do monolito requer que todo ele seja reconstruído e que o deploy seja refeito. Ao longo do tempo muitas vezes é difícil manter uma boa estrutura modular, o que dificulta mantermos as alterações que devem afetar apenas um módulo de dentro do módulo. Escalar requer o redimensionamento de todo o aplicativo, ao invés de partes que exigem mais recursos.

Essas frustrações levaram à criação do estilo de arquitetura de microsserviços: construir aplicativos como suites de serviços. Assim como os serviços têm deploy independente e são escaláveis, cada serviço também possui um limite de módulo firme, que permite inclusive que diferentes serviços sejam escritos em diferentes linguagens de programação. Eles também podem ser gerenciados por equipes diferentes.

Não estamos afirmando que o estilo de microsserviços seja novo ou inovador, suas raízes remontam, pelo menos, aos princípios de design do Unix. Mas realmente pensamos que ainda são poucas as pessoas que consideram uma arquitetura de microsserviços e que muitos desenvolvedores de software se beneficiariam dessas informações.

Saiba mais:

O artigo de James e Martin prosegue com a definição de o que é uma arquitetura de microsserviços expondo 9 características comuns, discutindo sua relação com a Arquitetura Orientada a Serviços, e refletindo sobre se este estilo é o futuro do software corporativo. Leia aqui: martinfowler.com/articles/microservices.html. 

Assista à fala recente de James sobre microsserviços, em Londres.

 

James Lewis é um Consultor Principal na ThoughtWorks e membro do TAB. O interesse de James no desenvolvimento de aplicativos em pequenos serviços em colaboração vem da sua experiência em integração de sistemas corporativos em grande escala. Ele desenvolveu uma série de sistemas que utilizam microsserviços e tem sido um participante ativo dessa comunidade em expansão há alguns anos.

Martin Fowler é um autor, palestrante e falador de desenvolvimento de software. Está há muito intrigado com o problema de como compor sistemas de software, depois de ouvir mais solicitações vagas do que gostaria. Ele espera que os microsserviços demonstrem o potencial que seus primeiros defensores viram.

Master
Política de privacidade | Declaração contra a escravidão moderna | Acessibilidade
Connect with us
×

WeChat

QR code to ThoughtWorks China WeChat subscription account
© 2021 ThoughtWorks, Inc.