SlideShare uma empresa Scribd logo
1 de 40
Baixar para ler offline
Globalcode – Open4educationGlobalcode – 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.
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
40Kg
20Kg 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 brasileira
Criado em 2012
Globalcode – Open4education
Web, Android, iOS, Windows Phone, ...
+ 8.500.000
USUÁRIOS ÚNICOS
ACUMULADOS
+ 1.400.000
USUÁRIOS ÚNICOS POR MÊS
+ 4.500.000
VISITAS 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
SQL
Server
Mongo
DB Beet
Back office
Globalcode – Open4education
Plataformas
API WEB API
REST
Estalabilidade Horizontal
Sincrono
Beet
Agents
NancyFX
REST
Responsabilidade Única
Escabilidade Horizontal
Assincronos
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
SQL
Server
Playlists
Track
Artista
Album
Playlist
Mongo
DB
Playlist
Track
Album
Artist
Track
Album
Artist
Track
Album
Artist
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
Globalcode – Open4education
API
BeetSDK
Back Office
1
Back Office
2
Back Office
2
BeetSDK
Beet
HttResquest
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
jointheband@superplayer.fm

Mais conteúdo relacionado

Mais procurados

[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...Vinicius Campos Silva
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...tdc-globalcode
 
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featureTDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featuretdc-globalcode
 
Conheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live ShareConheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live ShareLetticia Nicoli
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azuretdc-globalcode
 
Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.
Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.  Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.
Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo. rodrigorahman
 
Palestra LPI - Julho de 2009
Palestra LPI - Julho de 2009Palestra LPI - Julho de 2009
Palestra LPI - Julho de 2009Rankest
 
TDC2012 - A falácia do desenvolvimento ágil
TDC2012 - A falácia do desenvolvimento ágilTDC2012 - A falácia do desenvolvimento ágil
TDC2012 - A falácia do desenvolvimento ágilLeandro Guimarães
 
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#Diego Gabriel Cardoso
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDatatdc-globalcode
 
Palestra LPI w3c
Palestra LPI w3cPalestra LPI w3c
Palestra LPI w3cRankest
 

Mais procurados (13)

[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
[TDCPOA2019] Upstream Kanban: exercitando a eficácia criativa do seu fluxo de...
 
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
TDC2017 | Florianopolis - Trilha DevOps How we figured out we had a SRE team ...
 
TDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e featureTDC2018SP | Trilha Arq .Net - Performance e feature
TDC2018SP | Trilha Arq .Net - Performance e feature
 
Conheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live ShareConheça Visual Studio IntelliCode e Visual Studio Live Share
Conheça Visual Studio IntelliCode e Visual Studio Live Share
 
Arquitetura Limpa em .NET Core
Arquitetura Limpa em .NET CoreArquitetura Limpa em .NET Core
Arquitetura Limpa em .NET Core
 
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on AzureTDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
TDC2018SP | Trilha Arq .Net - Serverless Reactive Programming on Azure
 
Desenvolvedor 2.0
Desenvolvedor 2.0Desenvolvedor 2.0
Desenvolvedor 2.0
 
Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.
Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.  Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.
Akka 2.0 + MongoDB - Caso de sucesso no Ecommerce Turismo.
 
Palestra LPI - Julho de 2009
Palestra LPI - Julho de 2009Palestra LPI - Julho de 2009
Palestra LPI - Julho de 2009
 
TDC2012 - A falácia do desenvolvimento ágil
TDC2012 - A falácia do desenvolvimento ágilTDC2012 - A falácia do desenvolvimento ágil
TDC2012 - A falácia do desenvolvimento ágil
 
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
TDC SP 2017 Trilha .NET - TechWar: Threads, ThreadPools e Tasks em C#
 
TDC2016SP - Trilha BigData
TDC2016SP - Trilha BigDataTDC2016SP - Trilha BigData
TDC2016SP - Trilha BigData
 
Palestra LPI w3c
Palestra LPI w3cPalestra LPI w3c
Palestra LPI w3c
 

Semelhante a Arquitetura .NET Microserviços Escalabilidade

Dividindo para conquistar: microservicos com o jeitinho .NET
Dividindo para conquistar: microservicos com o jeitinho .NETDividindo para conquistar: microservicos com o jeitinho .NET
Dividindo para conquistar: microservicos com o jeitinho .NETtdc-globalcode
 
TDC2016SP - Utilizando Azure Storage em app´s Xamarin
TDC2016SP - Utilizando Azure Storage em app´s XamarinTDC2016SP - Utilizando Azure Storage em app´s Xamarin
TDC2016SP - Utilizando Azure Storage em app´s Xamarintdc-globalcode
 
As aventuras de um Dev em uma squad de Ops
As aventuras de um Dev em uma squad de OpsAs aventuras de um Dev em uma squad de Ops
As aventuras de um Dev em uma squad de OpsJanderson Silva
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Jonathan Prates
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...José Correia
 
Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016Yves Bouckaert
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
 
Prepare-se para o Deep Learning
Prepare-se para o Deep LearningPrepare-se para o Deep Learning
Prepare-se para o Deep LearningHélio Silva
 
Lean change TDC2018 Porto Alegre
Lean change  TDC2018 Porto AlegreLean change  TDC2018 Porto Alegre
Lean change TDC2018 Porto AlegreAdemir Silva
 
Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Paulo Cesar Ortins Brito
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwaretdc-globalcode
 
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...tdc-globalcode
 
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaTDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaEric Lemes
 
Como testar sua aplicação Android e iOS: uma abordagem prática
Como testar sua aplicação Android e iOS: uma abordagem práticaComo testar sua aplicação Android e iOS: uma abordagem prática
Como testar sua aplicação Android e iOS: uma abordagem práticaElias Nogueira
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vidaLuiz Borba
 
Computação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaComputação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaDr. Spock
 

Semelhante a Arquitetura .NET Microserviços Escalabilidade (20)

Dividindo para conquistar: microservicos com o jeitinho .NET
Dividindo para conquistar: microservicos com o jeitinho .NETDividindo para conquistar: microservicos com o jeitinho .NET
Dividindo para conquistar: microservicos com o jeitinho .NET
 
TDC2016SP - Utilizando Azure Storage em app´s Xamarin
TDC2016SP - Utilizando Azure Storage em app´s XamarinTDC2016SP - Utilizando Azure Storage em app´s Xamarin
TDC2016SP - Utilizando Azure Storage em app´s Xamarin
 
Azure blob xamarin-tdc2016
Azure blob xamarin-tdc2016Azure blob xamarin-tdc2016
Azure blob xamarin-tdc2016
 
As aventuras de um Dev em uma squad de Ops
As aventuras de um Dev em uma squad de OpsAs aventuras de um Dev em uma squad de Ops
As aventuras de um Dev em uma squad de Ops
 
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014Migração de Banco de Dados - Oracle para MongoDB - TDC2014
Migração de Banco de Dados - Oracle para MongoDB - TDC2014
 
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...TDC2013  - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
TDC2013 - Trilha de Testes - Iterasys - José Correia - Testar em Multiplos A...
 
Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016Openredu - ConsoliNE 2016
Openredu - ConsoliNE 2016
 
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPCombatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHP
 
Mergulhando no ecossistema .NET
Mergulhando no ecossistema .NETMergulhando no ecossistema .NET
Mergulhando no ecossistema .NET
 
Prepare-se para o Deep Learning
Prepare-se para o Deep LearningPrepare-se para o Deep Learning
Prepare-se para o Deep Learning
 
Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014Refatorar é preciso. Palestra TDC 2014
Refatorar é preciso. Palestra TDC 2014
 
Lean change TDC2018 Porto Alegre
Lean change  TDC2018 Porto AlegreLean change  TDC2018 Porto Alegre
Lean change TDC2018 Porto Alegre
 
Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#Utilizando a API do Roslyn, o novo compilador do C#
Utilizando a API do Roslyn, o novo compilador do C#
 
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de softwareTDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
TDC2017 | POA Trilha Arquitetura - Antifragilidade e desenvolvimento de software
 
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...
 
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquiteturaTDC 2014 - A influência dos processos de desenvolvimento na arquitetura
TDC 2014 - A influência dos processos de desenvolvimento na arquitetura
 
Como testar sua aplicação Android e iOS: uma abordagem prática
Como testar sua aplicação Android e iOS: uma abordagem práticaComo testar sua aplicação Android e iOS: uma abordagem prática
Como testar sua aplicação Android e iOS: uma abordagem prática
 
O ciclo da vida
O ciclo da vidaO ciclo da vida
O ciclo da vida
 
Palestra Unesp
Palestra UnespPalestra Unesp
Palestra Unesp
 
Computação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma JavaComputação Física com Arduino/Program-ME e a Plataforma Java
Computação Física com Arduino/Program-ME e a Plataforma Java
 

Mais de Caliel Costa

Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Caliel Costa
 
Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Caliel Costa
 
Garinpando no MongoDB sem picareta e com elegância
Garinpando no MongoDB sem picareta e com elegânciaGarinpando no MongoDB sem picareta e com elegância
Garinpando no MongoDB sem picareta e com elegânciaCaliel Costa
 
Localizando uma Agulha: usando MongoDB para dados Geolocalizados
Localizando uma Agulha: usando MongoDB para dados GeolocalizadosLocalizando uma Agulha: usando MongoDB para dados Geolocalizados
Localizando uma Agulha: usando MongoDB para dados GeolocalizadosCaliel Costa
 
DynamoDB: um banco NoSQL
DynamoDB: um banco NoSQLDynamoDB: um banco NoSQL
DynamoDB: um banco NoSQLCaliel Costa
 
A velocidade de repercussão de uma frase
A velocidade de repercussão de uma fraseA velocidade de repercussão de uma frase
A velocidade de repercussão de uma fraseCaliel Costa
 
Avaliação NOSQL para indexação do Twitter
Avaliação NOSQL para indexação do TwitterAvaliação NOSQL para indexação do Twitter
Avaliação NOSQL para indexação do TwitterCaliel Costa
 

Mais de Caliel Costa (7)

Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?Porque eu deveria usar TypeScript?
Porque eu deveria usar TypeScript?
 
Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0Entity Framework 7.0 a.k.a Entity Core 1.0
Entity Framework 7.0 a.k.a Entity Core 1.0
 
Garinpando no MongoDB sem picareta e com elegância
Garinpando no MongoDB sem picareta e com elegânciaGarinpando no MongoDB sem picareta e com elegância
Garinpando no MongoDB sem picareta e com elegância
 
Localizando uma Agulha: usando MongoDB para dados Geolocalizados
Localizando uma Agulha: usando MongoDB para dados GeolocalizadosLocalizando uma Agulha: usando MongoDB para dados Geolocalizados
Localizando uma Agulha: usando MongoDB para dados Geolocalizados
 
DynamoDB: um banco NoSQL
DynamoDB: um banco NoSQLDynamoDB: um banco NoSQL
DynamoDB: um banco NoSQL
 
A velocidade de repercussão de uma frase
A velocidade de repercussão de uma fraseA velocidade de repercussão de uma frase
A velocidade de repercussão de uma frase
 
Avaliação NOSQL para indexação do Twitter
Avaliação NOSQL para indexação do TwitterAvaliação NOSQL para indexação do Twitter
Avaliação NOSQL para indexação do Twitter
 

Arquitetura .NET Microserviços Escalabilidade