dividindo para conquistar: microservicos com o jeitinho .net

44
Globalcode – Open4education Globalcode – 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.

Upload: tdc-globalcode

Post on 23-Jan-2017

260 views

Category:

Education


3 download

TRANSCRIPT

Page 1: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Globalcode – Open4education

Trilha – .NETCaliel Costa

Nerd, ouvinte de blues, pesquisador, esportista e fotógrafo amador, desenvolvedor e projetista de soluções em TI. Software Designer no Superplayer.

Page 2: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Agenda

• Definições Básicas• Necessidade• Problema• Solução• Implementando• Próximos passos

Page 3: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

escalabilidade através de micro serviços

Page 4: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 5: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 6: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

através de

Advérbio

Do Latim ad + transverse

Por entre

Pelo meio de

De um para outro lado de

Page 7: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 8: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

escalabilidade

40Kg20Kg 20Kg

Escalabilidade Vertical(Scale Up)

Escalabilidade Horizontal(Scale Out)

Page 9: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 10: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Web, Android, iOS, Windows Phone, ...

Page 11: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Problema

• Estatísticas• Métricas• Previsão

Page 12: Dividindo para conquistar: microservicos com o jeitinho .NET

+ 10.000.000USUÁRIOS ÚNICOS

ACUMULADOS

Page 13: Dividindo para conquistar: microservicos com o jeitinho .NET

+ 1.400.000USUÁRIOS ÚNICOS POR MÊS

Page 14: Dividindo para conquistar: microservicos com o jeitinho .NET

+ 4.500.000VISITAS POR MÊS

Page 15: Dividindo para conquistar: microservicos com o jeitinho .NET

TOP600SITES MAIS ACESSADOSDO BRASIL.

Alexa – Traffic Rank

Page 16: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Quais as playlists mais ouvidas?

API

/play

Page 17: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Problema

• Estatísticas• Métricas• Previsão

Page 18: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Quais as playlists mais ouvidas em Porto Alegre e São Paulo

API

/play

Page 19: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Mas a Natureza é sábia....

Quando temos uma vírus…

o corpo não cria uma supercélula

Page 20: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Page 21: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Escalabilidade Horizontal para resolver o problema

Page 22: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Nuvem de serviços

Page 23: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Aka Beet

Page 24: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Quais as playlists mais ouvidas em Porto Alegre e São Paulo

API

/play

Beet

Page 25: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Beet

Dó Ré Mi

Fá Sol Lá Si

Page 26: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 27: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Escalabilidade Horizontal

DóRé

Mi

Fá Sol Lá Si

RéRé

Page 28: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Alteração de Tecnologia

DóRé

Sol Lá Si

RéRé

Mi

Page 29: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Arquitetura

Web Android iOS WP

APIs

SQLServer

MongoDB Beet

Back office

Page 30: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Plataformas

API WEB APIRESTEstalabilidade HorizontalSincrono

Beet Agents

NancyFXRESTResponsabilidade ÚnicaEscabilidade HorizontalAssincronos

Page 31: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 32: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

NancyFX

public class SampleModule : Nancy.NancyModule{ public SampleModule() { Get["/"] = _ => "Hello World!"; }}

Page 33: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

CODE TIME

Page 34: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Time line

Back office

SQLServer

Playlists

Track

Artista

Album

Playlist

MongoDB

Playlist

TrackAlbumArtist

TrackAlbumArtist

TrackAlbumArtist

Page 35: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Time line

Play

MongoDB

Playlist

TrackAlbumArtist

TrackAlbumArtist

TrackAlbumArtist

API Web

Play @Rock

Playlist com tracks

Suggestion

Rock por Caliel

Cal

iel

Page 36: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

API

BeetSDK

Back Office 1

Back Office 2

Back Office 2

BeetSDK

Beet

Htt R

esquest

Page 37: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

14 Agentes Diferentes

Playlist PushSpotPlay Track Suggestion

Page 38: Dividindo para conquistar: microservicos com o jeitinho .NET

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; } }}

Page 39: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

BeetSDK

namespace TDC.BeetSDK{ public interface IPlaylistAgent { bool Put(long playlistId);

bool Delete(long playlistId); }}

Page 40: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

BeetSDK

namespace TDC.BeetSDK{ public interface ISuggestionAgent { Task<bool> Post(long accountId); }}

Page 41: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

Hardware

Load Balancer

Beet

Beet

Beet

Page 42: Dividindo para conquistar: microservicos com o jeitinho .NET

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

Page 43: Dividindo para conquistar: microservicos com o jeitinho .NET
Page 44: Dividindo para conquistar: microservicos com o jeitinho .NET

Globalcode – Open4education

[email protected]