Globalcode – Open4education
Globalcode – Open4education
Trilha – Arquitetura .NETCaliel Costa
Nerd, ouvinte de blues, pesquisador, esportista e fotógrafo amador, desenvolvedor e projetista de soluções em TI. Software Designer no Superplayer.
Globalcode – Open4education
Agenda
• Definições Básicas• Necessidade• Problema• Solução• Implementando• Próximos passos
Globalcode – Open4education
escalabilidade através de micro serviços
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
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
Globalcode – Open4education
através de
Advérbio
Do Latim ad + transverse
Por entre
Pelo meio de
De um para outro lado de
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
Globalcode – Open4education
escalabilidade
40Kg20Kg 20Kg
Escalabilidade Vertical(Scale Up)
Escalabilidade Horizontal(Scale Out)
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 brasileiraCriado em 2012
Globalcode – Open4education
Web, Android, iOS, Windows Phone, ...
+ 8.500.000USUÁRIOS ÚNICOS
ACUMULADOS
+ 1.400.000USUÁRIOS ÚNICOS POR MÊS
+ 4.500.000VISITAS POR MÊS
Globalcode – Open4education
Problema
• Estatísticas• Métricas• Previsão
Globalcode – Open4education
Quais as playlists mais ouvidas?
API
/play
Globalcode – Open4education
Problema
• Estatísticas• Métricas• Previsão
Globalcode – Open4education
Quais as playlists mais ouvidas em Porto Alegre e São Paulo
API
/play
Globalcode – Open4education
Mas a Natureza é sábia....
Quando temos uma vírus…
o corpo não cria uma supercélula
Globalcode – Open4education
Globalcode – Open4education
Escalabilidade Horizontal para resolver o problema
Globalcode – Open4education
Nuvem de serviços
Globalcode – Open4education
Aka Beet
Globalcode – Open4education
Quais as playlists mais ouvidas em Porto Alegre e São Paulo
API
/play
Beet
Globalcode – Open4education
Beet
Dó Ré Mi
Fá Sol Lá Si
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
Globalcode – Open4education
Escalabilidade Horizontal
DóRé
Mi
Fá Sol Lá Si
RéRé
Globalcode – Open4education
Alteração de Tecnologia
DóRé
Sol Lá Si
RéRé
Mi
Fá
Globalcode – Open4education
Arquitetura
Web Android iOS WP
APIs
SQLServer
MongoDB Beet
Back office
Globalcode – Open4education
Plataformas
API WEB APIRESTEstalabilidade HorizontalSincrono
Beet Agents
NancyFXRESTResponsabilidade ÚnicaEscabilidade HorizontalAssincronos
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
Globalcode – Open4education
NancyFX
public class SampleModule : Nancy.NancyModule{ public SampleModule() { Get["/"] = _ => "Hello World!"; }}
Globalcode – Open4education
CODE TIME
Globalcode – Open4education
Time line
Back office
SQLServer
Playlists
Track
Artista
Album
Playlist
MongoDB
Playlist
TrackAlbumArtist
TrackAlbumArtist
TrackAlbumArtist
Globalcode – Open4education
Time line
Play
MongoDB
Playlist
TrackAlbumArtist
TrackAlbumArtist
TrackAlbumArtist
API Web
Play @Rock
Playlist com tracks
Suggestion
Rock por Caliel
Cal
iel
Globalcode – Open4education
API
BeetSDK
Back Office 1
Back Office 2
Back Office 2
BeetSDK
Beet
Htt R
esquest
Globalcode – Open4education
14 Agentes Diferentes
Playlist PushSpotPlay Track Suggestion
Globalcode – Open4education
Hardware
Load Balancer
Beet
Beet
Beet
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
Globalcode – Open4education
Perguntas?
Globalcode – Open4education