BT

Mudando de uma Arquitetura Monolítica para de Microserviços na SoundCloud

| por Jan Stenberg Seguir 37 Seguidores , traduzido por Marcelo Costa Seguir 40 Seguidores em 28 out 2014. Tempo estimado de leitura: 2 minutos |

Mudar a arquitetura da SoundCloud para Micro Serviços foi fundamental ao permitir que nossas equipes entreguem novas funcionalidades de forma mais rápida, Philip Calçado compartilhou em uma série de 3 artigos suas experiências quando saíram de uma arquitetura de sistema monolítico para micro serviços

A SoundCloud, uma plataforma de distribuição de áudio online que tem o brasileiro Philip Calçado como diretor de engenharia, foi originalmente criada como uma simples aplicação Ruby on Rails. Com o passar do tempo corrigir o sistema ao invés de resolver os problemas de escalabilidade tornou necessário que eles precisassem decidir em mudar tudo para uma arquitetura de micro serviços. Devido as experiências ruins que a equipe enfrentou depois de uma refatoração de grande proporção, decidiram investir em uma abordagem de não adicionar nada novo no antigo sistema e construir novas funcionalidades utilizando micro serviços.

Um problema que emergiu no inicio foi de que devido a grande parte da lógica ainda estar no sistema antigo muitos dos novos serviços ainda precisavam se comunicar com este antigo sistema. Uma solução que adotaram foi a de fazer uso de APIs públicas em conjunto com as novas APIs internas o que lhes ajudou a manter todos os novos micro serviços desacoplados do antigo sistema.

Depois que a mudança arquitetural foi implementada, o próximo desafio foi extrair funcionalidades do antigo sistema. O conceito de contexto delimitado vindo do Domain-Driven Design (DDD) foi escolhido para definir conjuntos de funcionalidades auto-contidas evitando ao máximo grandes refatorações necessárias para cada conjunto de funcionalidades extraídas, os novos micro serviços precisavam trabalhar com o antigo sistema pelo tempo que for necessário até que toda a lógica seja completamente modificada para a nova arquitetura. Durante a transição, a nova implementação do serviço acessava temporariamente a antiga base de dados como um serviço de consulta e apenas com permissão de leitura até que o novo serviço estivesse totalmente funcional. Aplicando estes princípios as equipes se habilitaram para extrair novas funcionalidades a serem construídas a partir do antigo sistema migrando tudo para micro serviços.

Com base em suas próprias preferências, a equipe decidiu escolher a plataforma JVM e suas diferentes implementações disponíveis. Ao buscar por frameworks que atendessem suas necessidades para RPC, resiliência e concorrência e estabeleceram que usariam o Finagle, um tipo de protocolo agnóstico para sistemas RPC, após investir tempo para resolver alguns problemas.

Mais uma vez, baseado em suas experiências anteriores, Philip resume este artigo afirmando que a nova arquitetura de micro serviços mostrou-se crucial para o desenvolvimento de recursos prontos para produção com ciclos de feedback mais curtos.

A ambição de Philip é completar sua série descrevendo como eles estão usando Finagle e Scala para mudar de uma API RESTful única para back-ends otimizados.

Avalie esse artigo

Relevância
Estilo/Redação

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Faça seu login para melhorar sua experiência com o InfoQ e ter acesso a funcionalidades exclusivas


Esqueci minha senha

Follow

Siga seus tópicos e editores favoritos

Acompanhe e seja notificados sobre as mais importantes novidades do mundo do desenvolvimento de software.

Like

Mais interação, mais personalização

Crie seu próprio feed de novidades escolhendo os tópicos e pessoas que você gostaria de acompanhar.

Notifications

Fique por dentro das novidades!

Configure as notificações e acompanhe as novidades relacionada a tópicos, conteúdos e pessoas de seu interesse

BT