Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dividindo para conquistar: microservicos com o jeitinho .NET

386 views

Published on

A utilização de microserviços cresceu muito em 2014. Eles ajudam a separar responsabilidades e manter o foco em grandes equipes. Nessa palestra será mostrado um exemplo prático de como utilizamos microserviços no Superplayer. Desde o projeto inicial, passando pelo seu desenvolvimento utilizando NancyFX, até a sua utilização e melhorias em produção. Quais vantagens e desvantagens na sua utilização e o futuro que vemos para este modelo.

Published in: Education
  • Be the first to comment

  • Be the first to like this

Dividindo para conquistar: microservicos com o jeitinho .NET

  1. 1. Globalcode – Open4educationGlobalcode – Open4education Trilha – .NET Caliel Costa Nerd, ouvinte de blues, pesquisador, esportista e fotógrafo amador, desenvolvedor e projetista de soluções em TI. Software Designer no Superplayer.
  2. 2. Globalcode – Open4education Agenda • Definições Básicas • Necessidade • Problema • Solução • Implementando • Próximos passos
  3. 3. Globalcode – Open4education escalabilidade através de micro serviços
  4. 4. Globalcode – Open4education serviços Substantivo, masculino singular Com origem no termo latim servitĭum, a palavra serviço define a ação de servir (estar sujeito a/ser prestável alguém por qualquer motivo, fazendo aquilo que essa pessoa quer ou pede). Substantivo utilizado para designar tarefa, trabalho ou obra em execução, a ser executado ou já realizado Ato ou efeito de servir
  5. 5. Globalcode – Open4education micro Substantivo, masculino singular A palavra micro provém do idioma grego e significa “pequeno” Significando também o conjunto de pequenos componentes para montar um todo Convém destacar que em alguns países latino-americanos é usado o vocábulo micro enquanto sinónimo de autocarro. Milésima parte do milímetro
  6. 6. Globalcode – Open4education através de Advérbio Do Latim ad + transverse Por entre Pelo meio de De um para outro lado de
  7. 7. Globalcode – Open4education escalabilidade É uma característica desejável em todo o sistema ou processo Indica sua habilidade de manipular uma porção crescente de trabalho de forma uniforme ou estar preparado para crescer
  8. 8. Globalcode – Open4education escalabilidade 40Kg 20Kg 20Kg Escalabilidade Vertical (Scale Up) Escalabilidade Horizontal (Scale Out)
  9. 9. Globalcode – Open4education Superplayer é um serviço de recomendação musical focado em melhorar todos os momentos da vida das pessoas através da trilha sonora perfeita. Startup brasileira Criado em 2012
  10. 10. Globalcode – Open4education Web, Android, iOS, Windows Phone, ...
  11. 11. Globalcode – Open4education Problema •Estatísticas •Métricas •Previsão
  12. 12. + 10.000.000 USUÁRIOS ÚNICOS ACUMULADOS
  13. 13. + 1.400.000 USUÁRIOS ÚNICOS POR MÊS
  14. 14. + 4.500.000 VISITAS POR MÊS
  15. 15. TOP 600SITES MAIS ACESSADOS DO BRASIL. Alexa – Traffic Rank
  16. 16. Globalcode – Open4education Quais as playlists mais ouvidas? API /play
  17. 17. Globalcode – Open4education Problema •Estatísticas •Métricas •Previsão
  18. 18. Globalcode – Open4education Quais as playlists mais ouvidas em Porto Alegre e São Paulo API /play
  19. 19. Globalcode – Open4education Mas a Natureza é sábia.... Quando temos uma vírus… o corpo não cria uma supercélula
  20. 20. Globalcode – Open4education
  21. 21. Globalcode – Open4education Escalabilidade Horizontal para resolver o problema
  22. 22. Globalcode – Open4education Nuvem de serviços
  23. 23. Globalcode – Open4education Aka Beet
  24. 24. Globalcode – Open4education Quais as playlists mais ouvidas em Porto Alegre e São Paulo API /play Beet
  25. 25. Globalcode – Open4education Beet Dó Ré Mi Fá Sol Lá Si
  26. 26. Globalcode – Open4education Princípio da Responsabilidade Única (The Single Responsability Principle) "A class should have one, and only one, reason to change." ("Uma classe deve ter um, e somente um, motivo para mudar.") Robert "Uncle Bob" Martin
  27. 27. Globalcode – Open4education Escalabilidade Horizontal Dó Ré Mi Fá Sol Lá Si Ré Ré
  28. 28. Globalcode – Open4education Alteração de Tecnologia Dó Ré Sol Lá Si Ré Ré Mi Fá
  29. 29. Globalcode – Open4education Arquitetura Web Android iOS WP APIs SQL Server Mongo DB Beet Back office
  30. 30. Globalcode – Open4education Plataformas API WEB API REST Estalabilidade Horizontal Sincrono Beet Agents NancyFX REST Responsabilidade Única Escabilidade Horizontal Assincronos
  31. 31. Globalcode – Open4education NancyFX Nancy is a lightweight, low-ceremony, framework for building HTTP based services on .Net and Mono. The goal of the framework is to stay out of the way as much as possible and provide a super-duper-happy- path to all interactions. http://nancyfx.org/ Pode ser hospedado com IIS, Azure, Owin (Katana ou self-hosted), Nginx
  32. 32. Globalcode – Open4education NancyFX public class SampleModule : Nancy.NancyModule { public SampleModule() { Get["/"] = _ => "Hello World!"; } }
  33. 33. Globalcode – Open4education CODE TIME
  34. 34. Globalcode – Open4education Time line Back office SQL Server Playlists Track Artista Album Playlist Mongo DB Playlist Track Album Artist Track Album Artist Track Album Artist
  35. 35. Globalcode – Open4education Time line Play Mongo DB Playlist Track Album Artist Track Album Artist Track Album Artist API Web Play @Rock Playlist com tracks Suggestion
  36. 36. Globalcode – Open4education API BeetSDK Back Office 1 Back Office 2 Back Office 2 BeetSDK Beet HttResquest
  37. 37. Globalcode – Open4education 14 Agentes Diferentes Playlist PushSpotPlay Track Suggestion
  38. 38. Globalcode – Open4education BeetSDK namespace TDC.BeetSDK { public interface IBeetService { ICategoryAgent Category { get; } IPlaylistAgent Playlist { get; } ISpotAgent Spot { get; } IPlayAgent Play { get; } ISuggestionAgent Suggestion { get; } IFilterAgent Filter { get; } ITrackAgent Track { get; } INotificationAgent Notification { get; } } }
  39. 39. Globalcode – Open4education BeetSDK namespace TDC.BeetSDK { public interface IPlaylistAgent { bool Put(long playlistId); bool Delete(long playlistId); } }
  40. 40. Globalcode – Open4education BeetSDK namespace TDC.BeetSDK { public interface ISuggestionAgent { Task<bool> Post(long accountId); } }
  41. 41. Globalcode – Open4education Hardware Load Balancer Beet Beet Beet
  42. 42. Globalcode – Open4education Closure A separação em serviços externos facilitou a integração entre os bancos de dados Facilitou a transformação de dados em informação Estamos ajustado o processo de deploy e referência entre os serviços
  43. 43. Globalcode – Open4education jointheband@superplayer.fm

×