Do not speak Portuguese? Translate this site with Google or Bing Translator
MonolithFirst microsserviços ou monoliticos

Posted on: April 25, 2023 07:44 PM

Posted by: Renato

Views: 394

MonolithFirst

.

Martin Fowler é um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos, UML, padrão de projeto de software e metodologias de desenvolvimento ágil de software, incluindo Programação extrema. Wikipédia

Nascimento: 18 de dezembro de 1963 (idade 59 anos), Walsall, Reino Unido

Formação: University College London (1983–1986), Queen Mary's Grammar School

Ao ouvir histórias sobre equipes usando uma arquitetura de microsserviços , notei um padrão comum.

  1. Quase todas as histórias bem-sucedidas de microsserviços começaram com um monólito que ficou muito grande e foi quebrado
  2. Quase todos os casos em que ouvi falar de um sistema que foi construído como um sistema de microsserviços do zero acabaram em sérios problemas.

Esse padrão levou muitos de meus colegas a argumentar que você não deve iniciar um novo projeto com microsserviços, mesmo se tiver certeza de que seu aplicativo será grande o suficiente para valer a pena. .

 

 

Os microsserviços são uma arquitetura útil, mas mesmo seus defensores dizem que usá-los gera um MicroservicePremium significativo , o que significa que eles só são úteis com sistemas mais complexos. Esse prêmio, essencialmente o custo de gerenciamento de um conjunto de serviços, desacelerará uma equipe, favorecendo um monolito para aplicativos mais simples. Isso leva a um argumento poderoso para uma estratégia monolítica primeiro, em que você deve criar um novo aplicativo como um monólito inicialmente, mesmo que ache provável que ele se beneficie de uma arquitetura de microsserviços mais tarde.

A primeira razão para isso é o clássico Yagni . Quando você inicia um novo aplicativo, qual é sua certeza de que ele será útil para seus usuários? Pode ser difícil dimensionar um sistema de software mal projetado, mas bem-sucedido, mas ainda é um lugar melhor para se estar do que o inverso. Como agora estamos reconhecendo, geralmente a melhor maneira de descobrir se uma ideia de software é útil é criar uma versão simplista dela e ver como ela funciona. Durante esta primeira fase, você precisa priorizar a velocidade (e, portanto, o tempo de ciclo para feedback), portanto, o premium dos microsserviços é um empecilho que você deve dispensar.

O segundo problema de começar com microsserviços é que eles só funcionam bem se você criar limites bons e estáveis ​​entre os serviços - que é essencialmente a tarefa de elaborar o conjunto correto de BoundedContexts . Qualquer refatoração de funcionalidade entre serviços é muito mais difícil do que em um monólito. Mas mesmo arquitetos experientes que trabalham em domínios familiares têm grande dificuldade em definir os limites logo no início. Ao construir um monólito primeiro, você pode descobrir quais são os limites corretos, antes que um design de microsserviços passe uma camada de melaço sobre eles. Também lhe dá tempo para desenvolver os pré-requisitos de microsserviço necessários para serviços mais refinados.

Guia de microsserviços

Meus colegas e eu escrevemos sobre microsserviços desde que chegaram ao radar do mundo do software. Esta página de guia contém artigos sobre quando usar microsserviços, as práticas que você deve ter ao começar, como testá-los de forma eficaz e como decompor um monólito.

Já ouvi diferentes maneiras de executar uma estratégia monolítica primeiro. A maneira lógica é projetar um monólito com cuidado, prestando atenção à modularidade dentro do software, tanto nos limites da API quanto em como os dados são armazenados. Faça isso bem e será uma questão relativamente simples mudar para microsserviços. No entanto, eu me sentiria muito mais confortável com essa abordagem se tivesse ouvido um número decente de histórias em que funcionou dessa maneira. [1]

Uma abordagem mais comum é começar com um monólito e remover gradualmente os microsserviços nas bordas. Essa abordagem pode deixar um monólito substancial no centro da arquitetura de microsserviços, mas com a maioria dos novos desenvolvimentos ocorrendo nos microsserviços enquanto o monólito é relativamente inativo.

Outra abordagem comum é apenas substituir o monólito inteiramente. Poucas pessoas veem isso como uma abordagem da qual se orgulhar, mas há vantagens em construir um monólito como uma Arquitetura de Sacrifício . Não tenha medo de construir um monólito que você descartará, principalmente se um monólito puder levá-lo ao mercado rapidamente.

Outra rota que encontrei é começar com apenas alguns serviços de baixa granularidade, maiores do que aqueles que você espera obter. Use esses serviços granulares para se acostumar a trabalhar com vários serviços, aproveitando o fato de que essa granularidade grosseira reduz a quantidade de refatoração entre serviços que você precisa fazer. Então, à medida que os limites se estabilizam, divida-se em serviços mais refinados. [2]

Embora a maior parte dos meus contatos se incline para a abordagem monolítica, não é de forma unânimeO contra-argumento diz que começar com microsserviços permite que você se acostume com o ritmo de desenvolvimento em um ambiente de microsserviços. É preciso muita disciplina, talvez até demais, para construir um monólito de maneira suficientemente modular para que possa ser facilmente dividido em microsserviços. Ao começar com microsserviços, você acostuma todos a desenvolver em pequenas equipes separadas desde o início, e ter equipes separadas por limites de serviço torna muito mais fácil escalar o esforço de desenvolvimento quando necessário. Isso é especialmente viável para substituições de sistema, nas quais você tem mais chances de criar limites suficientemente estáveis ​​com antecedência. Embora as evidências sejam escassas, acho que você não deve começar com microsserviços, a menos que tenha uma experiência razoável na construção de um sistema de microsserviços na equipe.

Acho que ainda não tenho anedotas suficientes para ter um controle firme sobre como decidir se devo usar uma estratégia monolítica primeiro. Estamos nos primeiros dias em microsserviços e há relativamente poucas anedotas para aprender. Portanto, os conselhos de qualquer pessoa sobre esses tópicos devem ser vistos como provisórios, por mais confiantes que sejam.

Leitura adicional

Sam Newman descreve um estudo de caso de uma equipe que está pensando em usar microsserviços em um projeto totalmente novo.

Notas

1: Você não pode presumir que pode pegar um sistema arbitrário e dividi-lo em microsserviços. A maioria dos sistemas adquire muitas dependências entre seus módulos e, portanto, não pode ser separada de forma sensata. Já ouvi falar de muitos casos em que uma tentativa de decompor um monólito acabou rapidamente em uma confusão. Também ouvi falar de alguns casos em que uma rota gradual para microsserviços foi bem-sucedida - mas esses casos exigiam um design modular relativamente bom para começar.

2: Suponho que estritamente você deva chamar isso de "duólito", mas acho que a abordagem segue a essência da estratégia do primeiro monólito: comece com granularidade grosseira para obter conhecimento e divida depois.

Reconhecimentos

Roubei muito desse pensamento de meus colegas: James Lewis, Sam Newman, Thiyagu Palanisamy e Evan Bottcher. Os comentários de Stefan Tilkov sobre um rascunho anterior desempenharam um papel fundamental para esclarecer meus pensamentos. Chad Currie criou os adoráveis ​​dragões glyphy. Steven Lowe, Patrick Kua, Jean Robert D'amore, Chelsea Komlo, Ashok Subramanian, Dan Siwiec, Prasanna Pendse, Kief Morris, Chris Ford e Florian Sellmayr discutiram rascunhos em nossa lista de discussão interna.

## Mais informações que pode ser util.

Microsserviços vs API – saiba o que é certo para o seu negócio

Você está confuso entre os termos “Microservices"E"API” em discussões técnicas? É mais geral do que você pensa. É razoável confundir os conceitos, mas entender a diferença entre os dois ajuda a resolver problemas de negócios existentes, encontrar soluções práticas e realizar reuniões mais produtivas em geral.

Este Blog fornecerá a você o conhecimento sobre o que são APIs e o que são Microsserviços. A seguir, você verá como os dois termos funcionam juntos e como eles diferem. 

Ao projetar um aplicativo móvel, você deve decidir como conectá-lo ao restante dos serviços. As opções típicas são criar um microsserviço ou usar uma API. Cada um deles tem suas vantagens e desvantagens. Mas, como podemos ver, às vezes os microsserviços funcionam melhor em alguns casos e as APIs funcionam melhor em outros casos.

Então, qual você deve escolher, Microsserviços vs API? Vamos ver: 

O que é uma API?

Antes de tudo, antes de iniciar a discussão de Microsserviços vs API, você deve entender o significado básico de ambos os termos. API ou você diz Application Programming Interface tem muitos tipos ou vem em muitas formas.

Quando alguém diz “API“, eles podem dizer qualquer coisa, desde APIs privadas até APIs públicas, ou APIs SOAP para APIs RESTful. Agora você pode perceber e entender por que tantas pessoas confundem isso?

Basicamente, a API permite que dois componentes de software enviem e recebam mensagens e dados de forma estruturada sem a necessidade de intervenção humana ou entrada manual de dados. Quando falamos de integração de software, geralmente usamos APIs para permitir que esse software se comunique.

Para facilitar o entendimento, vamos falar sobre as APIs mais usadas no contexto de APIs REST e como eles são usados ​​em arquiteturas de microsserviços. Ao falar sobre APIs típicas de transferência de estado (REST) ​​ou APIs RESTful, elas se referem a estilos de API específicos.

API REST fornece um caminho de mensagens sem estado entre aplicativos. Essa arquitetura requer que todas as mensagens transmitidas entre os aplicativos sejam completamente autocontidas.

API do Google Maps e API do Twitter são exemplos de APIs REST disponíveis publicamente. Outra ideia é que a API seja uma forma de sua aplicação se comunicar com serviços externos como Google Maps e Twitter usando um conjunto de comandos e métodos bem definidos. Isso permite que você adicione facilmente recursos específicos que outros usuários criaram para seu aplicativo ou software.

Vamos explicar a API usando a analogia. Pense no fabricante da lâmpada. Você não precisa saber como fazer uma tomada ou como gerar e transmitir eletricidade. Eles sabem que basta fazer uma lâmpada com o cabo de alimentação correto (de acordo com as especificações padrão da indústria) e a tomada fornecerá a energia necessária para que a lâmpada funcione corretamente. É o cabo de alimentação com o qual a tomada e a lâmpada podem interagir.

A API é o cabo de alimentação para seu aplicativo. Essa é a conexão que permite que seu aplicativo receba os dados e mensagens de que precisa para funcionar corretamente.

Aqui está um exemplo mais específico. Suponha que você queira criar o seguinte aplicativo de compartilhamento de viagens que requer o uso de um cartão. Você tem várias opções: Você e alguns de seus melhores amigos podem criar algo semelhante ao Google Maps do zero e mudar a si mesmos sempre que precisar. Você também pode usar a API do Google Maps. O Google abstrai todos os detalhes necessários para implementar o serviço por trás da API e fornece a funcionalidade necessária para o aplicativo. A última opção permite que os desenvolvedores de software se concentrem na criação de valor específico do aplicativo, em vez de criar a roda (ou mapa, neste caso) do zero.

Agora que temos uma compreensão mais profunda do que é a API, e os microsserviços?

O que são Microsserviços?

Microservices são um estilo de arquitetura que divide um aplicativo em serviços ou componentes independentes menores (geralmente voltados para funções de negócios). Esses serviços normalmente usam APIs para se comunicarem.

Ou seja, o API conecta cada serviço dentro da arquitetura de microsserviços para fornecer um serviço ou aplicativo totalmente funcional. Nesse contexto, a funcionalidade da API é um pouco diferente.

Suponha que um novo aplicativo de compartilhamento de viagens precise fornecer recursos de mapa e faturamento. Você pode implementar cada recurso como um microsserviço separado e incorporar todas as regras de negócios, lógica e dados necessários para cada serviço de maneira relativamente independente.

Isso não apenas facilita a manutenção de seus serviços, mas também melhora a tolerância a falhas de seu aplicativo. Quando um único serviço falha, o aplicativo como um todo não necessariamente fica inativo.

Conexão entre microsserviços e APIs (REST)

Agora que sabemos mais sobre microsserviços e como eles diferem dos monólitos, vamos para a primeira pergunta. Como os microsserviços são diferentes das APIs?

Se a forma como os aplicativos se comunicam é a API REST, a arquitetura de microsserviços é o local de conversa e prática social.

Cada componente da arquitetura de microsserviços possui sua própria API para comunicação com outros componentes. Cada componente da arquitetura se baseia nos recursos de outros componentes para fornecer aos usuários finais uma experiência de aplicativo coesa e agregar valor aos seus negócios.

Microsserviços e APIs continuará a desempenhar um papel importante no desenvolvimento e integração de software até 2022, transformando as soluções de software de negócios. As empresas que buscam alavancar os recursos digitais em seus processos de negócios precisam saber a diferença entre os dois conceitos.

No entanto, a arquitetura de microsserviços não é uma panacéia para problemas de software corporativo. Mudar para microsserviços requer grandes mudanças culturais e design consciente para que o software possa atingir todo o seu potencial.

Conclusão

Esses debates sobre microsserviços versus API geralmente giram em torno de conversas sobre as grandes mudanças que estão ocorrendo no mundo da tecnologia. Independentemente da situação, se algum tipo de desenvolvimento está tentando determinar se sua nova função utilizaria APIs ou se dois desenvolvedores estão apenas interessados ​​em expressar suas opiniões sobre o assunto, é importante ser educado sobre o assunto. Os desenvolvedores devem saber o que amam e odeiam e para onde estão indo enquanto continuam suas carreiras. Tendo isso em mente, esperamos que nossa pesquisa sobre componentes de Microservices vs API tenha sido um recurso útil para você.

Fonte: 

- https://martinfowler.com/bliki/MonolithFirst.html

- https://cynoteck.com/pt/blog-post/microservices-vs-api/

Martin Fowler (Walsall1963) é um autor conhecido na área de arquitetura de software, especializado em análise orientada a objetos, UMLpadrão de projeto de software e metodologias de desenvolvimento ágil de software, incluindo Programação extrema (XP). Ele começou a trabalhar com desenvolvimento de software no início dos anos 80 e escreveu vários livros populares sobre desenvolvimento, alguns deles já traduzidos para português.

Livros (em Português)


2

Share

Donate to Site


About Author

Renato

Developer

Add a Comment

Blog Search


Categories

OUTROS (16) Variados (109) PHP (133) Laravel (171) Black Hat (3) front-end (29) linux (114) postgresql (39) Docker (28) rest (5) soap (1) webservice (6) October (1) CMS (2) node (7) backend (13) ubuntu (56) devops (25) nodejs (5) npm (3) nvm (1) git (8) firefox (1) react (7) reactnative (5) collections (1) javascript (7) reactjs (8) yarn (0) adb (1) Solid (2) blade (3) models (1) controllers (0) log (1) html (2) hardware (3) aws (14) Transcribe (2) transcription (1) google (4) ibm (1) nuance (1) PHP Swoole (5) mysql (31) macox (4) flutter (1) symfony (1) cor (1) colors (2) homeOffice (2) jobs (3) imagick (2) ec2 (1) sw (1) websocket (2) markdown (1) ckeditor (1) tecnologia (14) faceapp (1) eloquent (14) query (4) sql (40) ddd (3) nginx (9) apache (4) certbot (1) lets-encrypt (3) debian (12) liquid (1) magento (2) ruby (1) LETSENCRYPT (1) Fibonacci (1) wine (1) transaction (1) pendrive (1) boot (1) usb (1) prf (1) policia (2) federal (1) lucena (1) mongodb (4) paypal (1) payment (1) zend (1) vim (4) ciencia (6) js (1) nosql (1) java (1) JasperReports (1) phpjasper (1) covid19 (1) saude (1) athena (1) cinnamon (1) phpunit (2) binaural (1) mysqli (3) database (42) windows (6) vala (1) json (2) oracle (1) mariadb (4) dev (12) webdev (24) s3 (4) storage (1) kitematic (1) gnome (2) web (2) intel (3) piada (1) cron (2) dba (18) lumen (1) ffmpeg (2) android (2) aplicativo (1) fedora (2) shell (4) bash (3) script (3) lider (1) htm (1) csv (1) dropbox (1) db (3) combustivel (2) haru (1) presenter (1) gasolina (1) MeioAmbiente (1) Grunt (1) biologia (1) programming (22) performance (3) brain (1) smartphones (1) telefonia (1) privacidade (1) opensource (3) microg (1) iode (1) ssh (3) zsh (2) terminal (3) dracula (1) spaceship (1) mac (2) idiomas (1) laptop (2) developer (37) api (5) data (1) matematica (1) seguranca (2) 100DaysOfCode (9) hotfix (1) documentation (1) laravelphp (10) RabbitMQ (3) Elasticsearch (1) redis (2) Raspberry (4) Padrao de design (4) JQuery (1) angularjs (4) Dicas (43) Kubernetes (3) vscode (2) backup (1) angular (3) servers (2) pipelines (1) AppSec (1) DevSecOps (4) rust (1) RustLang (1) Mozilla (1) algoritimo (1) sqlite (1) Passport (2) jwt (5) security (2) translate (1) kube (2) iot (1) politica (2) bolsonaro (1) flow (1) podcast (1) Brasil (1) containers (3) traefik (1) networking (1) host (1) POO (2) microservices (2) bug (1) cqrs (1) arquitetura (3) Architecture (4) sail (3) militar (1) artigo (1) economia (1) forcas armadas (1) ffaa (1) autenticacao (2) autorizacao (2) authentication (4) authorization (3) NoCookies (1) wsl (4) memcached (1) macos (2) unix (2) kali-linux (1) linux-tools (5) apple (1) noticias (2) composer (1) rancher (1) k8s (1) escopos (1) orm (1) jenkins (4) github (5) gitlab (3) queue (1) Passwordless (1) sonarqube (1) phpswoole (1) laraveloctane (1) Swoole (1) Swoole (1) octane (1) Structurizr (1) Diagramas (1) c4 (1) c4-models (1) compactar (1) compression (1) messaging (1) restfull (1) eventdrive (1) services (1) http (1) Monolith (1) microservice (1) historia (1) educacao (1) cavalotroia (1) OOD (0) odd (1) chatgpt (1) openai (3) vicuna (1) llama (1) gpt (1) transformers (1) pytorch (1) tensorflow (1) akitando (1) ia (1) nvidia (1) agi (1) guard (1) multiple_authen (2) rpi (1) auth (1) auth (1) livros (2) ElonMusk (2) Oh My Zsh (1) Manjaro (1) BigLinux (2) ArchLinux (1) Migration (1) Error (1) Monitor (1) Filament (1) LaravelFilament (1) replication (1) phpfpm (1) cache (1) vpn (1) l2tp (1) zorin-os (1) optimization (1) scheduling (1) monitoring (2) linkedin (1) community (1) inteligencia-artificial (2) wsl2 (1) maps (1) API_KEY_GOOGLE_MAPS (1) repmgr (1) altadisponibilidade (1) banco (1) modelagemdedados (1) inteligenciadedados (4) governancadedados (1) bancodedados (2) Observability (1) picpay (1) ecommerce (1) Curisidades (1) Samurai (1) KubeCon (1) GitOps (1) Axios (1) Fetch (1) Deepin (1) vue (4) nuxt (1) PKCE (1) Oauth2 (2) webhook (1) TypeScript (1) tailwind (1) gource (2)

New Articles



Get Latest Updates by Email