O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.

Dividindo para conquistar: microservicos com o jeitinho .NET

373 visualizações

Publicada em

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.

Publicada em: Educação
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

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

×