Escolar Documentos
Profissional Documentos
Cultura Documentos
DE APOIO
ARQUITETURA DE SOFTWARE EM
NUVEM
Tiago Coelho Ferreto – Aula 03
Professores
MANOEL VERAS TIAGO COELHO FERRETO
Professor Convidado Professor PUCRS
Graduado em Engenharia Elétrica pela Universidade Federal do Professor adjunto da Pontifícia Universidade Católica do Rio
Rio Grande do Norte (UFRN), é mestre em Engenharia Elétrica pela Grande do Sul, possui doutorado em Ciência da Computação pela
Universidade Estadual de Campinas (UNICAMP) e doutor em PUCRS (2010), com doutorado-sanduíche na Technische
Administração na Universidade de São Paulo (USP). Atualmente, é Universität Berlin, na Alemanha (2007-2008). Tem experiência na
professor e consultor vinculado ao Departamento de Administração área de Ciência da Computação, com ênfase em Redes de
da Universidade Federal do Rio Grande do Norte (UFRN). Atua Computadores, atuando principalmente nos seguintes temas:
também no Programa de Pós-Graduação em Administração como computação em nuvem, grades computacionais, virtualização,
coordenador, com vínculo com a linha de pesquisa Estratégia, Gestão processamento de alto desempenho e gerência de infraestrutura
e Tecnologia da Informação. É certificado como PMP pelo PMI desde de TI.
2001, ITIL pelo itSMF e COBIT pelo ISACA.
Ementa da disciplina
Características do paradigma de computação em nuvem (self-service, elasticidade, pay-
as-you-go). Estudo dos modelos de computação em nuvem: SaaS, PaaS e IaaS. Análise
dos principais provedores de nuvem pública (AWS, Google e Azure) e seus serviços.
Estudo sobre arquiteturas de software centradas na nuvem (Cloud-Native Architecture).
Estudo de casos de aplicações que utilizam computação em nuvem. Desafios e
tendências em computação em nuvem.
Desenvolvimento Full Stack
Arquitetura De Software
Em Nuvem
Tiago Ferreto
tiago.ferreto@pucrs.br
1
Quem sou eu?
Tiago Ferreto
Arquitetura de Software em Nuvem – Tiago Ferreto
PPGCC/PUCRS
Programa de Pós-Graduação
em Ciência da Computação
https://bit.ly/ppgcc_pucrs
Grupo de Pesquisa
em Redes, Infraestrutura e
Computação em Nuvem
https://www.linkedin.com/in/tiagoferreto
https://bit.ly/grin_pucrs
tiago.ferreto@pucrs.br
2
GRIN – Grupo de Pesquisa em Redes, Infraestrutura e Computação em Nuvem
Arquitetura de Software em Nuvem – Tiago Ferreto
• Projetos de pesquisa,
desenvolvimento e
inovação
CLOUD/EDGE BIG DATA
• Formação e capacitação
• Mestrado e Doutorado
(PPGCC/PUCRS)
• Atuação em projetos
governamentais e em
colaboração com empresas HPC NETWORKS
3
Vamos falar de nuvem…
Arquitetura de Software em Nuvem – Tiago Ferreto
https://dilbert.com/strip/2011-01-07
4
O que é Computação em Nuvem?
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.cloudpulsestrat.com/posts/the-blind-men-and-cloud
5
HISTÓRICO
6
Histórico – Mainframes (Anos 60 e 70)
• IBM System/360
Arquitetura de Software em Nuvem – Tiago Ferreto
• TCP/IP
• WWW – World Wide Web
https://www.opte.org/the-internet
https://www.phaedsys.com/principals/segger/seggeremtcpip.html
https://commons.wikimedia.org/wiki/File:Arpanet_logical_map,_march_1977.png https://home.cern/science/computing/birth-web
8
Histórico – PCs e Supercomputadores (Anos 80 e 90)
• Máquinas com menor custo
Arquitetura de Software em Nuvem – Tiago Ferreto
• Supercomputadores
• Cluster computing
Histórico – Grid computing (Anos 90 e 2000)
• Demanda por maior capacidade computacional
Arquitetura de Software em Nuvem – Tiago Ferreto
13
O que é Computação em Nuvem?
Arquitetura de Software em Nuvem – Tiago Ferreto
14
O que é Computação em Nuvem?
Arquitetura de Software em Nuvem – Tiago Ferreto
Pay-per-use Multitenant
Self-service Elasticidade
15
Gerência de infraestrutura tradicional
Arquitetura de Software em Nuvem – Tiago Ferreto
Previsão
Recursos de de demanda
TI
Falta de alocados
capacidade Redução de
CAPACIDADE DE TI
demanda
Muita
capacidade
Demanda
atual
TEMPO
16
Gerência de infraestrutura na Nuvem
Previsão de
Arquitetura de Software em Nuvem – Tiago Ferreto
demanda
TEMPO
17
Infraestrutura local x Cloud Computing
Arquitetura de Software em Nuvem – Tiago Ferreto
Gerência de
Alta
Escalabilidade Serviços Multi-Tenancy
Disponibilidade
Automatizada
18
Modelos de serviço
• Aplicações e serviços
Arquitetura de Software em Nuvem – Tiago Ferreto
• Provisionamento de recursos
computacionais básicos
BUILD IaaS – Infraestrutura como Serviço • Usuário é responsável por instalar e
gerenciar seus sistemas nos
recursos alocados
19
Modelos de serviço - responsabilidades
Arquitetura de Software em Nuvem – Tiago Ferreto
Você gerencia
Aplicações Aplicações Aplicações Aplicações
Você gerencia
Dados Dados Dados Dados
20
Modelos de implantação
Nuvem pública
Arquitetura de Software em Nuvem – Tiago Ferreto
Nuvem híbrida
Nuvem privada
21
NUVENS PÚBLICAS
22
Adoção de nuvens públicas
Despesas em TI pelas organizações – tradicional x nuvem pública Quadrante mágico do Gartner
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.gartner.com/en/newsroom/press-releases/2022-02-09-gartner-
says-more-than-half-of-enterprise-it-spending https://aws.amazon.com/pt/resources/analyst-
reports/gartner-mq-cips-2021/
23
Adoção de nuvens públicas
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.theregister.com/2022/05/02/cloud_market_share_q1_2022/
https://www.statista.com/chart/18819/worldwide-market-share-of-leading-
cloud-infrastructure-service-providers/
24
Amazon Web Services (AWS)
• Plataforma de computação na nuvem oferecida pela Amazon.com
Arquitetura de Software em Nuvem – Tiago Ferreto
• https://aws.amazon.com
• Primeiros serviços
• SQS (comunicação) – 2004
• EC2 (computação) – 2006
• S3 (armazenamento) – 2006
• Usuários
https://www.clickittech.com/aws/why-aws-cloud/
25
Microsoft Azure
• Plataforma de computação na nuvem oferecida pela Microsoft
Arquitetura de Software em Nuvem – Tiago Ferreto
• https://azure.microsoft.com
• Usuários
Google Cloud Platform
• Plataforma de computação na nuvem oferecida pela Google
Arquitetura de Software em Nuvem – Tiago Ferreto
• https://cloud.google.com
• Usuários
snapchat Airbnb
Outros provedores
Arquitetura de Software em Nuvem – Tiago Ferreto
https://cloud.ibm.com/ https://www.oracle.com/br/cloud/
https://www.rackspace.com/pt-br/cloud
https://www.alibabacloud.com/
https://www.huaweicloud.com/
28
INFRAESTRUTURA DE NUVEM
29
Infraestrutura de nuvem - Data Centers
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.youtube.com/watch?v=XZmGGAbHqa0
31
Visitando um Data Center da Google
Lenoir, North Carolina
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.youtube.com/watch?v=avP5d16wEp0
https://goo.gl/maps/6NRN5fLVCHSQZrne9
32
Data Centers – Evolução
Microsoft Data Centers
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.nextplatform.com/2016/09/26/rare-tour-microsofts-hyperscale-datacenters/
33
AWS Global Infrastructure
• Região
Arquitetura de Software em Nuvem – Tiago Ferreto
34
AWS Global Infrastructure Map
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.infrastructure.aws/ https://aws.amazon.com/pt/about-aws/global-infrastructure/
35
SERVIÇOS DE NUVEM
36
Serviços de computação em nuvem
https://console.aws.amazon.com/ https://azurecharts.com/overview
Arquitetura de Software em Nuvem – Tiago Ferreto
https://github.com/gregsramblings/google-cloud-4-words
37
Principais serviços de computação em nuvem
Máquina virtual
Computação Container
Arquitetura de Software em Nuvem – Tiago Ferreto
Baseado em objetos
Baseado em blocos
Armazenamento
Sistema de arquivos distribuído
Banco de dados
38
Computação / Máquina Virtual
• Uma máquina virtual (VM) é um recurso de
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
• EC2 (Elastic Compute Cloud)
• Azure Virtual Machine
• Google Compute Engine
39
Computação / Máquina Virtual
• Criação de máquina virtual na nuvem
Arquitetura de Software em Nuvem – Tiago Ferreto
40
Computação / Container
• Provisionamento de aplicações
Arquitetura de Software em Nuvem – Tiago Ferreto
encapsuladas em containers
• Container inclui o executável da aplicação e
dependências
• Vantagens
• Imagens com menor tamanho (em relação a
VMs), menor tempo de provisionamento, menor
demanda por recursos
• Utilização do padrão Docker
• Dockerfile – manifesto descrevendo a imagem
base do container
• As imagens dos containers são https://www.nakivo.com/blog/docker-vs-kubernetes/
armazenadas em um registro
• Docker Hub, Amazon ECR, Azure Container
Registry
41
Computação / Container
Arquitetura de Software em Nuvem – Tiago Ferreto
Dockerfile
FROM ubuntu:16.04
WORKDIR /app
EXPOSE 5000
https://docs.docker.com/get-started/overview/
42
Computação / Container
• Utilizando containers em nuvem
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
• ECS (Elastic Container Service), EKS (Elastic Kubernetes Service), ECR (Elastic
Container Registry)
• Azure Container Instances, AKS (Azure Kubernetes Service), Azure Container Registry
• Kubernetes Engine, Artifact Registry
43
Computação / Função como serviço
• Também chamado de serverless computing (computação sem servidor)
Arquitetura de Software em Nuvem – Tiago Ferreto
https://isometrik.io/evolution-serverless-functions/
44
Computação / Função como serviço
• Evita a necessidade do gerenciamento dos • Exemplos
Arquitetura de Software em Nuvem – Tiago Ferreto
https://aws.amazon.com/getting-started/deep-dive-serverless/
45
Armazenamento / Baseado em objetos
• Armazenamento de arquivos (objetos) com acesso pela Internet
Arquitetura de Software em Nuvem – Tiago Ferreto
46
Armazenamento / Baseado em objetos
Arquitetura de Software em Nuvem – Tiago Ferreto
https://aws.amazon.com/s3/
47
Armazenamento / Baseado em bloco
• Serviço de discos virtuais para ser utilizado pelas
VMs
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos https://blog.estabil.is/aws-na-pratica-armazenamento-ebs-e-s3/
• Amazon EBS (Elastic Block Storage)
• Azure Page Blobs, Managed Disks
• Persistent Disk
48
Armazenamento / Sistema de arquivos distribuído
• Sistema de arquivos compartlihado entre
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
• Amazon EFS (Elastic File System)
• Azure Files
• File Store
https://medium.com/@surajjadhav525k/deployment-of-
application-on-aws-using-terraform-efs-service-d3cf522242fa
49
Armazenamento / Banco de dados
• Bancos de dados relacionais e não relacionais (NoSql) gerenciados pelo
Arquitetura de Software em Nuvem – Tiago Ferreto
provedor de nuvem
• Provisionamento, escalabilidade, patching e backups automáticos
• Alta disponibilidade (Disaster Recovery)
• Desenvolvedor é responsável pela estrutura dos dados, ingestão, consultas e
permissões de acesso
• Compatibilidade com engines de bancos de dados tradicionais
• MySQL, PostgreSQL, SQL Server, Oracle
• Exemplos
• Amazon RDS, Amazon DynamoDB
• Azure SQL Database, Azure CosmosDB
• Cloud SQL, Cloud Datastore
50
Armazenamento / Banco de dados
Arquitetura de Software em Nuvem – Tiago Ferreto
https://aws.amazon.com/blogs/database/migrating-your-sql-server-database-to-amazon-rds-for-sql-server-using-aws-dms/
51
Comunicação / Rede virtual privada
• Rede virtual isolada logicamente de
outros usuários
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
• Amazon VPC
• Azure VNet
• (GCP) Virtual Private Cloud
https://acervolima.com/amazon-vpc-introducao-ao-amazon-virtual-cloud/
52
Comunicação / Load balancer
• Distribuição do tráfego de rede entre
instâncias de computação
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
• (AWS) Elastic Load Balancing
• Azure Load Balancer
• Cloud Load Balancing https://medium.com/ankercloud-engineering/10-reasons-why-you-should-
think-about-using-an-aws-application-loadbalancer-945f57816c34
53
Comunicação / CDN
• Content Delivery Network
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
https://www.drupal.org/project/cloudfront_path_invalidate
• Amazon CloudFront
• Azure CDN
• Cloud CDN
54
Segurança / Controle de acesso
• Controle centralizado sobre o
Arquitetura de Software em Nuvem – Tiago Ferreto
• Exemplos
• AWS Identity and Access
Management (IAM)
• Azure Active Directory
• Cloud IAM
https://docs.aws.amazon.com/pt_br/IAM/latest/UserGuide/intro-structure.html
55
Serviços avançados de nuvem
Arquitetura de Software em Nuvem – Tiago Ferreto
Edge Computing
56
Big Data Analytics
• Permite a criação de um cluster para processamento de dados de Big Data
Arquitetura de Software em Nuvem – Tiago Ferreto
57
Edge Computing
• Método de otimização de sistemas de computação em nuvem, executando o processamento
de dados na borda da rede, próximo à fonte dos dados.
Arquitetura de Software em Nuvem – Tiago Ferreto
https://innovationatwork.ieee.org/real-life-edge-computing-use-cases/
58
Edge Computing https://aws.amazon.com/about-aws/global-infrastructure/localzones/locations/
59
Outros serviços – Exemplos AWS
60
Outros serviços – Exemplos AWS
Arquitetura de Software em Nuvem – Tiago Ferreto
• Amazon GameLift
• Hospedagem de servidores de jogos com baixa latência
• Amazon SageMaker
• Serviço de Machine Learning
• Amazon Elastic Transcoder
• Transcodificação de mídia na nuvem
• Amazon Braket
• Serviço de computação quântica
• AWS Ground Station
• Gerência automatizada de estações terrestres para comunicação por satélites
• AWS Sumerian
• Criação de aplicações 3D de realidade aumentada e realidade virtual
61
Comparação entre serviços nas nuvens públicas
Arquitetura de Software em Nuvem – Tiago Ferreto
https://comparecloud.in/
62
SOLUÇÕES, ARQUITETURAS E
CUSTO NA NUVEM
63
Exemplos de soluções/arquiteturas
• AWS Reference Architecture Diagrams
Arquitetura de Software em Nuvem – Tiago Ferreto
• https://aws.amazon.com/pt/architecture/reference-architecture-diagrams
• Exemplo: Asynchronous Online Gaming
64
Quanto custa a nuvem?
https://calculator.aws https://cloud.google.com/products/calculator
Arquitetura de Software em Nuvem – Tiago Ferreto
https://azure.microsoft.com/en-us/pricing/calculator
65
Exemplo – arquitetura para website dinâmico na AWS
• Amazon RDS
• Banco de dados relacional provisionado em AZs
distintas com replicação de dados em modo
primário/secundário com failover automático
• Amazon Route 53
• Serviço de DNS (Domain Name Service) para registro
do domínio do website
https://docs.aws.amazon.com/whitepapers/latest/how-aws-pricing-works/aws-cloud-cost-calculation-example.html 66
Estimativa de recursos necessários
Característica Uso Estimado Descrição
Arquitetura de Software em Nuvem – Tiago Ferreto
Elastic Load Balancing $87.60 $1051.20 Número de Network Load Balancers (1), Bytes processados por
NLB para TCP (20 GB por hora)
Amazon Elastic IP address $0 $0 Número instâncias EC2 (1), Número EIPs por instância (1)
Amazon Route 53 $183.00 $2,196.00 Hosted Zones (1), Número de Elastic Network Interfaces (2)
Amazon Virtual Private Cloud $92.07 $1,104.84 Custo de transferência de dados, Inbound (da Internet) 1 TB por
(Amazon VPC) mês Outbound (para Internet) 1 TB por mês
68
Análise de custos
• Os preços com nuvem dependem de vários fatores
Arquitetura de Software em Nuvem – Tiago Ferreto
• Cloudorado - https://www.cloudorado.com/
• Ferramenta de comparação de provedores de nuvem
69
Nível gratuito da AWS (Free Tier)
• Tipos de ofertas
• 12-month Free Tier
• Always Free
• Short term trials
conta
• Válido por 30 dias
https://azure.microsoft.com/pt-br/free/
71
GCP – Teste gratuito
• US$ 300 em créditos ao criar uma
Arquitetura de Software em Nuvem – Tiago Ferreto
conta
• Válido durante 90 dias
https://cloud.google.com/free
72
CERTIFICAÇÕES DE
COMPUTAÇÃO EM NUVEM
73
Certificações AWS
Outras certificações
Arquitetura de Software em Nuvem – Tiago Ferreto
https://aws.amazon.com/pt/certification/exams/
74
Certificações Azure e GCP
• Azure • Google Cloud Platform
Arquitetura de Software em Nuvem – Tiago Ferreto
• https://docs.microsoft.com/pt- • https://cloud.google.com/certification
BR/learn/certifications/
https://captainazurecloud.com/2021/05/30/choosing-a-certification-path/ https://github.com/sathishvj/awesome-gcp-certifications
75
NUVENS PRIVADAS
76
Arquitetura de Software em Nuvem – Tiago Ferreto
77
Microsoft Azure Stack
• Extensão do Microsoft Azure que permite que as organizações forneçam
Arquitetura de Software em Nuvem – Tiago Ferreto
78
Azure Stack HCI
• Solução de cluster HCI (infraestrutura
Arquitetura de Software em Nuvem – Tiago Ferreto
79
Azure Stack Edge
• Dispositivos de computação de borda entregues como uma solução de
Arquitetura de Software em Nuvem – Tiago Ferreto
Azure Stack Edge Pro 2 Azure Stack Edge Pro R Azure Stack Edge Mini R
https://docs.microsoft.com/pt-br/azure/databox-online/
80
Azure Stack Hub
• Azure Stack Hub é uma extensão do Azure
Arquitetura de Software em Nuvem – Tiago Ferreto
https://docs.microsoft.com/pt-br/azure-stack/operator/azure-stack-overview?view=azs-2108
81
OpenStack
Arquitetura de Software em Nuvem – Tiago Ferreto
82
Arquitetura de Software em Nuvem – Tiago Ferreto
OpenStack Landscape
83
Arquitetura de Software em Nuvem – Tiago Ferreto
84
OpenStack - Usuários
Arquitetura de Software em Nuvem – Tiago Ferreto
https://www.openstack.org/user-stories 85
CLOUD NATIVE COMPUTING
86
Cloud Native Computing
• Cloud native é uma abordagem para criar e executar aplicativos que
Arquitetura de Software em Nuvem – Tiago Ferreto
87
Arquitetura de Software em Nuvem – Tiago Ferreto
https://landscape.cncf.io/
88
CNCF Technology Radar
• Avalia tecnologias de cloud native computing
Arquitetura de Software em Nuvem – Tiago Ferreto
https://radar.cncf.io/
89
Cloud Foundry https://www.cloudfoundry.org/
https://www.cloudfoundry.org/the-foundry/#cert-distros
90
Referências – Cloud Computing
1. MARINESCU, Dan C. Cloud computing: theory and practice. Morgan Kaufmann,
2017.
Arquitetura de Software em Nuvem – Tiago Ferreto
Arquitetura De Software
Em Nuvem
Tiago Ferreto
tiago.ferreto@pucrs.br
93