dividindo para conquistar: microserviços com o jeitinho .net

40
Globalcode – Open4education Globalcode – Open4education Trilha – Arquitetura .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: caliel-costa

Post on 17-Jan-2017

2.563 views

Category:

Technology


1 download

TRANSCRIPT

Page 1: Dividindo para Conquistar: microserviços com o jeitinho .NET

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.

Page 2: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Agenda

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

Page 3: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

escalabilidade através de micro serviços

Page 4: Dividindo para Conquistar: microserviços 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: microserviços 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: microserviços 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: microserviços 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: microserviços com o jeitinho .NET

Globalcode – Open4education

escalabilidade

40Kg20Kg 20Kg

Escalabilidade Vertical(Scale Up)

Escalabilidade Horizontal(Scale Out)

Page 9: Dividindo para Conquistar: microserviços 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: microserviços com o jeitinho .NET

Globalcode – Open4education

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

Page 11: Dividindo para Conquistar: microserviços com o jeitinho .NET

+ 8.500.000USUÁRIOS ÚNICOS

ACUMULADOS

Page 12: Dividindo para Conquistar: microserviços com o jeitinho .NET

+ 1.400.000USUÁRIOS ÚNICOS POR MÊS

Page 13: Dividindo para Conquistar: microserviços com o jeitinho .NET

+ 4.500.000VISITAS POR MÊS

Page 14: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Problema

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

Page 15: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Quais as playlists mais ouvidas?

API

/play

Page 16: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Problema

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

Page 17: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

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

API

/play

Page 18: Dividindo para Conquistar: microserviços 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 19: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Page 20: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Escalabilidade Horizontal para resolver o problema

Page 21: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Nuvem de serviços

Page 22: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Aka Beet

Page 23: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

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

API

/play

Beet

Page 24: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Beet

Dó Ré Mi

Fá Sol Lá Si

Page 25: Dividindo para Conquistar: microserviços 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 26: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Escalabilidade Horizontal

DóRé

Mi

Fá Sol Lá Si

RéRé

Page 27: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Alteração de Tecnologia

DóRé

Sol Lá Si

RéRé

Mi

Page 28: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Arquitetura

Web Android iOS WP

APIs

SQLServer

MongoDB Beet

Back office

Page 29: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Plataformas

API WEB APIRESTEstalabilidade HorizontalSincrono

Beet Agents

NancyFXRESTResponsabilidade ÚnicaEscabilidade HorizontalAssincronos

Page 30: Dividindo para Conquistar: microserviços 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 31: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

NancyFX

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

Page 32: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

CODE TIME

Page 33: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Time line

Back office

SQLServer

Playlists

Track

Artista

Album

Playlist

MongoDB

Playlist

TrackAlbumArtist

TrackAlbumArtist

TrackAlbumArtist

Page 34: Dividindo para Conquistar: microserviços 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 35: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

API

BeetSDK

Back Office 1

Back Office 2

Back Office 2

BeetSDK

Beet

Htt R

esquest

Page 36: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

14 Agentes Diferentes

Playlist PushSpotPlay Track Suggestion

Page 37: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Hardware

Load Balancer

Beet

Beet

Beet

Page 38: Dividindo para Conquistar: microserviços 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 39: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

Perguntas?

Page 40: Dividindo para Conquistar: microserviços com o jeitinho .NET

Globalcode – Open4education

[email protected]