{"id":13340669,"url":"https://github.com/alcarlucci/Azure-Lab-SAA","last_synced_at":"2025-03-11T18:31:35.719Z","repository":{"id":236061008,"uuid":"791360427","full_name":"alcarlucci/Azure-Lab-SAA","owner":"alcarlucci","description":"Documentação da execução do laboratório prático do evento Semana Arquiteto Azure promovido pela TFTEC Cloud.","archived":false,"fork":false,"pushed_at":"2024-04-25T13:31:16.000Z","size":2040,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-10-24T06:28:47.776Z","etag":null,"topics":["app-services","application-gateway","azure","cloud","cloud-architecture","cloud-computing","vpn"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alcarlucci.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-04-24T15:21:48.000Z","updated_at":"2024-04-27T14:14:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"ec60dfa4-fd92-43c7-91ad-ef04fc5b39d9","html_url":"https://github.com/alcarlucci/Azure-Lab-SAA","commit_stats":null,"previous_names":["alcarlucci/azure-lab-saa"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alcarlucci%2FAzure-Lab-SAA","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alcarlucci%2FAzure-Lab-SAA/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alcarlucci%2FAzure-Lab-SAA/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alcarlucci%2FAzure-Lab-SAA/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alcarlucci","download_url":"https://codeload.github.com/alcarlucci/Azure-Lab-SAA/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243090404,"owners_count":20234798,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["app-services","application-gateway","azure","cloud","cloud-architecture","cloud-computing","vpn"],"created_at":"2024-07-29T19:23:54.642Z","updated_at":"2025-03-11T18:31:35.711Z","avatar_url":"https://github.com/alcarlucci.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Evento Semana Arquiteto Azure\n\nDocumentação das atividades realizadas na execução do laboratório prático do evento **Semana Arquiteto Azure** promovido pela **TFTEC Cloud**.\n\n## Objetivos do Projeto SAA\n\n- Realizar a migração das Aplicações da TFTEC Cloud para o Azure\n- Escopo técnico:\n  - Configuração de um Modelo de Nuvem Híbrida: Azure e On-premises\n  - Definição de conectividade ligando a rede local com o ambiente do Azure\n- Avaliações para estabelecer critério técnico e financeiro para estratégia de migração\n\n## Etapas de Migração para Nuvem\n\n- Fazer o Inventário do Ambiente (Azure Migrate)\n- Definir a Estratégia de Migração\n- Desenhos arquiteturais (atual/ proposta para migração)\n- Estimativa de Precificação\n- Avaliação CPSDM\n- Padrões de Taxonomia\n\n### Arquitetura Local (atual) - On Premises\n\n- Servidor com duas Aplicações: Sistema de Lçto de Despesas; Dashboard de apresentação de informações\n- Servidor de Database sendo acessado pelas duas aplicações\n\n**Diagrama da Arquitetura Local:**\n\n![diagram-onpremises](./Img/diagram-local.png)\n\n### Arquitetura proposta para Migração - Azure e Local\n\n**Diagrama da Arquitetura Híbrida:**\n\n- VPN S2S: conexão do Azure com On Premises\n  - Azure: VPN Gateway\n  - Local: Firewall\n- Migração do Sistema de Lçto de Despesas: Azure App Service\n- Migração do DB: Azure SQL Database\n\n![diagram-azure](./Img/diagram-Azure-Local.png)\n\n### Precificação do Projeto\n\n- Precificação estimada baseada na Arquitetura proposta para migração\n- Ferramenta **Azure Pricing Calculator**: \u003chttps://azure.microsoft.com/en-us/pricing/calculator/\u003e\n\n**Estimativa de Preço para o Projeto:**\n\n![estimativa-preço](./Img/Estimate-SAA.png)\n\n### Metodologia CPSDM\n\nFatores:\n\n- **C**usto: peso 2\n- **P**erformance: peso 1,5\n- **S**eguro: peso 1,5\n- **D**isponível: peso 1\n- **M**oderno: peso 1\n\nPontuações:\n\n- 1: Não aderente\n- 2: Parcialmente aderente\n- 3: Totalmente aderente\n\nResultados:\n\n- 21 - 15: recurso altamente adequado às necessidades do Cliente\n- 14 - 12: recurso moderadamente adequado às necessidades do Cliente\n- 07 - 12: recurso não recomendado às necessidades do Cliente\n\n**Resultados da avaliação CPSDM realizada para o Projeto:**\n\n![resultados-CPSDM](./Img/resultados-CPSDM.png)\n\n### Padrões de Taxonomia\n\nPadrões de nomenclatura para os recursos do Azure utilizados no Projeto.\n\n| Recurso  | Ex. Taxonomia | Descrição |\n| -------- | :-----------: | ---------: |\n| Resource Group | rg-prd-prj | rg - recurso |\n|                |            | prd - ambiente |\n|                |            | prj - projeto |\n| Virtual Machine | vm-ad-prd-eastus | vm - recurso |\n|                 |                  | ad - workload |\n|                 |                  | prd - ambiente |\n|                 |                  | eastus - região |\n| Virtual Network | vnet-prd-eastus-001 | vnet - recurso |\n|                 |                     | prd - ambiente |\n|                 |                     | eastus - região |\n| Subnet | snet-prd-eastus-001 | snet - recurso |\n|        |                     | prd - ambiente |\n|        |                     | eastus - região |\n| Network Security Group | nsg-prd-eastus-001 | nsg - recurso |\n|                        |                    | prd - ambiente |\n|                        |                    | eastus - região |\n| Public IP | pip-vm-prd-eastus-001 | pip - recurso |\n|           |                       | vm - recurso associado |\n|           |                       | prd - ambiente |\n|           |                       | eastus - região |\n| Application Gateway | agw-prd-uks-001 | agw - recurso |\n|                     |                 | prd - ambiente |\n|                     |                 | uks - região |\n\n## Ambiente Local: detalhes de execução do Projeto\n\nO ambiente Local (On-premises) será representado dentro do próprio Azure, simulando o que seria o ambiente local das aplicações.\n\n### Simulação do ambiente Local criado no Azure\n\n- Resource Group: **rg-local**\n- Virtual Network: **vnet-local**\n  - CIDR: 10.0.0.0/16\n  - Subnet **sub-app**: 10.0.1.0/24\n  - Subnet **sub-db**: 10.0.2.0/24\n- Virtual Machines:\n  - **vm-app**: Windows Server 2022 Datacenter Azure Edition\n  - **vm-db**: SQL Server 2022 on Windows Server 2022\n- Network security group: **nsg-local**\n  - Inbound security rules - allow: 3389, 80, 8080\n\n### Simulação do Firewall para conectividade da VPN S2S entre Local e Azure\n\n#### Criação de VM para ser o Firewall/Roteador (NVA - Network Virtual Appliance)\n\n- Virtual Network: **vnet-local-fw**\n  - CIDR: 10.1.0.0/16\n  - Subnet **sub-fw**: 10.1.1.0/24\n- Virtual Machine (firewall): **vm-fw**\n- Image: Windows Server 2022 Datacenter Azure Edition\n- Size: Standard B2s\n- Username: [my_user]\n- Password: [my_password]\n- Virtual Network: vnet-local-fw\n- Subnet: sub-fw\n- NIC nsg: Basic (ambiente local: NSG direto na placa de rede)\n  - Ports: 3389\n\n#### Realizar configurações de roteamento na VM (encaminhamento de tráfego)\n\n**Obs.:** realizar essas configurações após criar recursos do Azure definidos no tópico \"Recursos Básicos\" mais abaixo.\n\nConfigurações no lado do Ambiente Local:\n\n- Virtual Machines \u003e \"vm-fw\" \u003e Networking settings \u003e clicar em Network interface (NIC)\n  - NIC \u003e IP configurations \u003e IP Settings \u003e **Enable IP forwarding**: habilitar\n\n- Conectar na \"vm-fw\" via RDP (configurar RRAS - Role Remote Access Server - roteamento)\n  - Server Manager \u003e Manage \u003e Add Roles and Features\n    - Server Roles - **Remote Access**: habilitar\n    - Remote Access \u003e Role Services\n      - **DirectAccess and VPN (RAS)**: habilitar\n      - **Routing**: habilitar\n    - [Install]\n  - Configuração: clicar na notificação no topo direito \u003e Open the Getting Started Wizard (irá carregar janela de configuraçaõ do RAS)\n    - Deploy VPN only \u003e botão dir. \"vm-fw\" \u003e Configure and Enable RAS (criação da Network Interface com Azure)\n      - Configuration - selecionar **Secure connection between two private networks**\n      - Demand-Dial Interface Wizard\n        - Interface name: **VPN-AZURE**\n        - Connection Type: VPN\n        - VPN Type: IKEv2\n        - Destination Address: [IP_VirtualNetworkGateway_Azure]\n    - \"vm-fw\" \u003e IPv4 \u003e Static Routes \u003e botão dir. \u003e New Static Route (configuração de Static Rote p/ rede no AZure)\n      - Interface: VPN-AZURE\n      - Destination: [192.168.0.0] (IP da VNet criada no ambiente do Azure)\n      - Mask: 255.255.0.0\n    - \"vm-fw\" \u003e Network Interfaces \u003e \"VPN-AZURE\" \u003e botão dir. \u003e Properties\n      - Options:\n        - Connection type: selecionar \"Persistent connection\"\n        - Dialing policy \u003e Redial attempts: 3\n      - Security (definição de uma chave compartilhada para conexão):\n        - Authentication \u003e selecionar \"Use preshared key\": [definir_uma_chave_compartilhada]\n\nConfigurações no lado do Ambiente Azure:\n\n- Local Network Gateway \u003e create (representação no Azure do ambiente Local)\n  - Name: **lng-prd-uks-001**\n  - Endpoint: IP address\n  - IP address: [191.232.171.229] [IP da \"vm-fw\" - firewall do ambiente local]\n  - Address Space(s): (Endereço das redes do ambiente local)\n    - 10.0.0.0/16 (vnet-local)\n    - 10.1.0.0/16 (vnet-local-fw)\n\n- Virtual Network Gateway \u003e \"vng-prd-uks-001\" \u003e Settings \u003e Connections \u003e + Add (configuração da Connection entre VNG e LNG)\n  - Connection type: Site-to-Site (IPSec)\n  - Name: **vpn-azure**\n  - Virtual network gateway (VNG): vng-prd-uks-001\n  - Local network gateway (LNG): lng-prd-uks-001\n  - IKE Protocol: IKEv2\n\n- Connections \u003e \"vpn-azure\" \u003e Authentication (configurar \"Chave Compartilhada\" do ambiente Local no Azure)\n  - Shared key (PSK): [chave_compartilhada_definida]\n  - [Save]\n\nNesse ponto, a VPN está conectando os dois ambiente, o que precisa agora é definir o Roteamento para que os demais recursos também consigam se comunicar pela VPN.\n\n- Route Tables \u003e Create\n  - Resource group: rg-local\n  - Name: **rt-azure**\n- Route Tables \u003e \"rt-azure\" \u003e Routes \u003e + Add\n  - Route name: **route-firewall**\n  - Destination type: IP Address\n  - Destination IP: 192.168.0.0/16 (Endereço da VNet do ambiente do Azure)\n  - Next hop type: Virtual appliance\n  - Next hop address: 10.1.1.4 (IP da \"vm-fw\" - firewall)\n- Route Tables \u003e \"rt-azure\" \u003e Subnets \u003e + Associate\n  - VNet: vnet-local-fw\n  - Subnet: sub-fw\n\n- Route Tables \u003e Create\n  - Resource group: rg-local\n  - Name: **rt-azure-eastus**\n- Route Tables \u003e \"rt-azure-eastus\" \u003e Routes \u003e + Add\n  - Route name: **route-firewall**\n  - Destination type: IP Address\n  - Destination IP: 192.168.0.0/16 (Endereço da VNet do ambiente do Azure)\n  - Next hop type: Virtual appliance\n  - Next hop address: 10.1.1.4 (IP da \"vm-fw\" - firewall)\n- Route Tables \u003e \"rt-azure-eastus\" \u003e Subnets \u003e + Associate\n  - VNet: vnet-local\n  - Subnet: sub-app\n- Route Tables \u003e \"rt-azure-eastus\" \u003e Subnets \u003e + Associate\n  - VNet: vnet-local\n  - Subnet: sub-db\n\n### Peering entre VNets \"vnet-local\" e \"vnet-local-fw\"\n\nObs.: a separação em duas VNets para simulação do ambiente Local (On-premises) foi para criação das VMs em Regiões diferentes, possibilitando assim, a realização do laboratório utilizando uma contra \"Free Tier\".\n\n- Virtual Network \u003e \"vnet-local\" \u003e Settings - Peerings \u003e + Add:\n  - This VNet - Peering link name: **local-to-local-fw**\n  - Allow 'vnet-local' to access 'vnet-local-fw': habilitado\n  - Allow 'vnet-local' to receive forwarded traffic from 'vnet-local-fw': habilitado\n  - Remote Vnet - Peering link name: **local-fw-to-local**\n  - Virtual network: vnet-local-fw\n  - Allow 'vnet-local-fw' to access 'vnet-local': habilitado\n  - Allow 'vnet-local-fw' to receive forwarded traffic from 'vnet-local': habilitado\n\n### Simulação de um \"Client\" para teste de conectividade nas Aplicações/rede/Azure\n\n- Virtual Machine: **vm-client**\n- Image: Windows 11 Pro\n- Size: Standard B2s\n- Username: [my_user]\n- Password: [my_password]\n- Virtual Network: vnet-local-fw\n- Subnet: sub-fw\n- NIC nsg: Basic (ambiente local: NSG direto na placa de rede)\n  - Ports: 3389\n\n**Obs.:** acessar as VMs e desabilitar o firewall para realizar os testes de conectividade entre ambientes\n\n## Ambiente Azure: detalhes de execução do Projeto\n\n### Recursos Básicos\n\n- Resource Group: **rg-prd-saa**\n- Virtual Network: **vnet-prd-uks-001**\n  - CIDR: 192.168.0.0/16\n  - Subnet **snet-prd-uks-001**: 192.168.1.0/24\n- VNet \u003e Subnet \u003e + Gateway subnet:\n  - **GatewaySubnet**: 192.168.2.0/24\n- Network Security Group:\n  - **nsg-prd-uks-001**\n  - Subnets \u003e + Associate: snet-prd-uks-001\n- Virtual Network Gateway:\n  - **vng-prd-uks-001**\n  - Gateway type: VPN\n  - SKU: VpnGw1\n  - VNet: vnet-prd-uks-001 (deve carregar a Subnet \"GatewaySubnet\")\n  - Public IP \u003e new: **pip-vng-prd-uks-001**\n  - Enable active-active mode: Disable\n\n### Criação de uma VM para testes de conectividade no ambiente\n\n- Resource group: rg-prd-saa\n- **vm-tmp-dev**\n- Image: Windows Server 2022 Datacenter Azure Edition\n- Size: Standard B2s\n- Username: [my_user]\n- Password: [my_password]\n- Virtual Network: vnet-prd-uks-001\n- Subnet: snet-prd-uks-001\n- NIC nsg: None (irá usar o NSG da Subnet)\n\n**Habilitar conexão RDP com a VM no NSG:**\n\n- Network Security Group \u003e \"nsg-prd-uks-001\"\n  - Inbound security rules \u003e + Add:\n    - Source: Any\n    - Destination: IP Addresses [192.168.1.4]\n    - Service: RDP\n    - Allow\n    - Priority: 300\n\n**Obs.:** acessar a VM e desabilitar o firewall para realizar os testes de conectividade entre ambientes\n\n## Migração da Aplicação na VM para um App Service\n\n### Projeto do Azure Migrate\n\n- Azure Migrate \u003e Create project\n  - Project: **prj-saa**\n  - Geography: US\n\n### Azure App Service Plans\n\n- App Service Plans \u003e Create\n  - Name: **asp-sis-uks-001**\n  - OS: Windows\n  - Pricing Plan: Standard S1\n\n### Executar o processo de migração na VM para o App Services\n\n- Conectar na \"vm-app\" e Instalar o Assistente de Migração do App Service para .NET\n  - baixar/instalar assistente: \u003chttps://appmigration.microsoft.com/api/download/windows/AppServiceMigrationAssistant.msi\u003e\n  - Abrir o App Service Migration Assistant\n    - Executar o \"Assessment Report\" para o web site desejado\n    - Azure Migrate Hub: projeto do Azure Migrate criado anteriormente no portal do Azure - \"prj-saa\"\n    - Destination Site Name: **app-saa** [unique-site-name]\n    - App Service Plan \u003e Use existing: criado anteriormente no portal do Azure - \"asp-sis-uks-001\"\n    - [Migrate]\n\n### Ajustes de Conectividade do App Service com a Database na \"vm-db\"\n\n- Virtual Network \u003e \"vnet-prd-uks-001\" \u003e Subnets \u003e + Subnet (Subnet exclusiva para VNet Integration do App Service)\n  - Name: **snet-int-uks-001**\n  - Subnet address range: 192.168.3.0/24\n\n- App Service \u003e \"app-saa\" \u003e Networking \u003e Outbound traffic \u003e VNet integration \u003e clicar em \"Not configured\"\n  - Add VNet integration\n  - VNet: \"vnet-prd-uks-001\"\n  - Subnet: \"snet-int-uks-001\"\n\n## Migração do SQL Server na VM para o Azure SQL Database\n\n### Executar o processo de migração na VM de dados para o SQL Database\n\n- SQL databases \u003e Create\n  - Database name: **saa-database** (utilizar mesmo nome do DB no SQL Server na VM)\n  - Server \u003e Create new:\n    - Server name: **srv-saadb-prd-uks-001**\n    - Authentication: Use SQL Authentication\n    - Server admin login: [my_username] (usar mesmo usuário do SQL Server na VM)\n    - Password: [my_password] (usar mesmo password do SQL Server na VM)\n  - Workload environment: Production\n  - Compute + storage \u003e Configure database:\n    - Service tier: DTU-based - Standard\n    - [Definir DTUs e Storage, ex.: 10 DTUs; 5 Gb storage]\n\n- SQL servers \u003e \"srv-saadb-prd-uks-001\" \u003e Networking (definição de Private Endpoint para conectividade interna com o SQL Database)\n  - Private access \u003e Create a private endpoint\n    - Name: **pvt-saadb-prd-uks-001**\n    - VNet: vnet-prd-uks-001\n    - Subnet: snet-prd-uks-001\n    - Integrate with private DNS zone: Yes\n\n- Private DNS zones \u003e \"privatelink.database.windows.net\" \u003e VNets links (cria o link das demais VNets ao DNS Zone criado pelo Private Endpoin)\n  - Add:\n    - Link name: link-local\n    - Virtual network: vnet-local\n  - Add:\n    - Link name: link-local-fw\n    - Virtual network: vnet-local-fw\n\n- Conectar na \"vm-db\" e Instalar o Microsoft Data Migration Assistant\n  - baixar/instalar assistente: \u003chttps://www.microsoft.com/en-us/download/details.aspx?id=53595\u003e\n  - Abrir o Data Migration Assistant \u003e + New (primeiro faz o Assessment da Database)\n    - Project type: Assessment\n    - Project name: **ass-saa-db**\n    - Assessment type: Database Engine\n    - Source server type: SQL Server\n    - Target server type: Azure SQL Database\n    - [Create]\n    - Select Sources\n      - Server name: localhost\n      - Authentication type: SQL Server Authentication\n      - Username: [my_username]\n      - Password: [my_password]\n      - Connection properties (marcar): Encrypt connection; Trust server certificate\n\n- Abrir o Data Migration Assistant \u003e + New (agora faz o projeto de Migração do Schema da Database)\n  - Project type: Migration\n  - Project name: **mgt-saa-db**\n  - Source server type: SQL Server\n  - Target server type: Azure SQL Database\n  - Migration scope: Schema only (melhor prática migrar de forma separada o Schema e depois Dados)\n  - [Create]\n  - Select Source (SQL Server local na VM)\n    - Server name: localhost\n    - Authentication type: SQL Server Authentication\n    - Username: [my_username]\n    - Password: [my_password]\n    - Connection properties (marcar): Encrypt connection; Trust server certificate\n  - Select target (Azure SQL Database)\n    - Server name: \"srv-saadb-prd-uks-001.database.windows.net\"\n    - Authentication type: SQL Server Authentication\n    - Username: [my_username]\n    - Password: [my_password]\n    - Connection properties (marcar): Encrypt connection; Trust server certificate\n\n- Abrir o Data Migration Assistant \u003e + New (finalmente faz o projeto de Migração dos Dados da Database)\n  - Project type: Migration\n  - Project name: **mgt-saa-db-data**\n  - Source server type: SQL Server\n  - Target server type: Azure SQL Database\n  - Migration scope: Data only\n  - [Create]\n  - Select Source (SQL Server local na VM)\n    - Server name: localhost\n    - Authentication type: SQL Server Authentication\n    - Username: [my_username]\n    - Password: [my_password]\n    - Connection properties (marcar): Encrypt connection; Trust server certificate\n  - Select target (Azure SQL Database)\n    - Server name: \"srv-saadb-prd-uks-001.database.windows.net\"\n    - Authentication type: SQL Server Authentication\n    - Username: [my_username]\n    - Password: [my_password]\n    - Connection properties (marcar): Encrypt connection; Trust server certificate\n\n### Atualizar a Connection String das Aplicações apontando para o Azure SQL Database\n\n- SQL databases \u003e \"saa-database\" \u003e Connection strings\n  - ADO.NET (SQL authentication): copiar connection string\n\n- Conectar na \"vm-app\" \u003e Editar arquivo \"appsettings.json\" das aplicações trocando a connection string\n  - c:/inetpub/wwwroot/Dashboard (Nuvem Híbrida: apenas o Dashboard ficará rodando na VM)\n\n- App Services \u003e \"app-saa\" \u003e Settings - Configuration \u003e Connection strings \u003e New connection string\n  - Name: **DefaultConnection**\n  - Value: [colar_connection_string_copiada]\n  - Type: SQLAzure\n  - [Save]\n\n## Configuração do Azure Application Gateway\n\n**Diagrama de como o Application Gateway trabalha:**  \n\n![how-application-gateway-works](./Img/how-application-gateway-works.png)\n\n- Virtual Network \u003e \"vnet-prd-uks-001\" \u003e Subnets \u003e + Subnet (Subnet exclusiva para Application Gateway)\n  - Name: **snet-agw-uks-001**\n  - Subnet address range: 192.168.4.0/24\n\n- Application Gateway \u003e Create\n  - Name: **agw-prd-uks-001**\n  - Tier: WAF V2 (habilitar o WAF como boa prática de segurança)\n  - Enable autoscaling: No\n  - Instance count: 2\n  - WAF Policy \u003e Create new:\n    - Name: **rule-WAF**\n  - VNet: vnet-prd-uks-001\n  - Subnet: snet-agw-uks-001\n  - Frontend IP type: Public\n  - Public IPv4 address \u003e Add new:\n    - Name: **pip-agw-prd-uks-001**\n  - Backends \u003e Add a backend pool: (Aplicação no App Service)\n    - Name: **pool-sistema-app**\n    - Target type: App Services\n    - Target: \"app-saa\"\n  - Backends \u003e Add a backend pool: (Aplicação na VM)\n    - Name: **pool-dashboard-vm**\n    - Target type: IP address\n    - Target: \"10.0.1.4\"\n  - Configuration \u003e Routing rules \u003e Add a routing rule: (Aplicação no App Service)\n    - Rule name: **rule-sistema-app**\n    - Priority: 100\n    - Listener:\n      - Listener name: **lst-sistema-app**\n      - Protocol: HTTP\n      - Port: 80\n    - Backend targets:\n      - Target type: Backend pool\n      - Backend target: \"pool-sistema-app\"\n      - Backend settings \u003e Add new:\n        - Backend settings name: **https-sistema-app**\n        - Backend protocol: HTTPS\n        - Backend port: 443\n        - Backend server's certificate by a well-known CA: Yes\n        - Host name: Yes\n        - Host name override - Host name: \"app-saa.azurewebsites.net\"\n    - [Add]\n  - Configuration \u003e Routing rules \u003e Add a routing rule: (Aplicação na VM)\n    - Rule name: **rule-dashboard-vm**\n    - Priority: 101\n    - Listener:\n      - Listener name: **lst-dashboard-vm**\n      - Protocol: HTTP\n      - Port: 8080\n    - Backend targets:\n      - Target type: Backend pool\n      - Backend target: \"pool-dashboard-vm\"\n      - Backend settings \u003e Add new:\n        - Backend settings name: **http-dashboard-vm**\n        - Backend protocol: HTTP\n        - Backend port: 8080\n        - Host name: No\n    - [Add]\n\n## Ajustes Finais de Segurança\n\n### Configurar Private Endpoint para App Service\n\nA configuração de um Private Endpoint no App Service tem o objetivo de impedir o acesso público ao Web App por meio do seu domínio default, permitindo o acesso seguro ao Sistema apenas através do Application Gateway.\n\n- App Services \u003e \"app-saa\" \u003e Networking \u003e Inbound traffic config \u003e Private endpoints\n  - Add \u003e Express:\n    - Name: **pvt-wap-prd-uks-001**\n    - VNet: vnet-prd-uks-001\n    - Subnet: snet-prd-uks-001\n    - Integrate with private DNS zone: Yes\n\n### Retirar o IP público da VM\n\nRetirar o acesso externo à \"vm-app\" por meio do IP público, permitindo o acesso seguro ao Dashboard apenas através do Application Gateway.\n\n- Virtual Machines \u003e \"vm-app\" \u003e Network settings \u003e clicar na NIC \u003e IP configurations \u003e \"ipconfig1\"\n  - Associate public IP address: desabilitar\n  - [Save]\n\n## Acessar as Aplicações\n\n**Aplicação Sistema**: [Public_IP_Application_Gateway]  \n\n![tela-acesso-sistema](./Img/tela-acesso-sistema.png)\n\n**Aplicação Dashboard**: [Public_IP_Application_Gateway]:8080  \n\n![tela-acesso-dashboard](./Img/tela-acesso-dashboard.png)\n\n## Listagem dos Recursos criados no Azure\n\nListagem de todos os recursos criados no Azure para montagem dos Ambientes \"On-premises\" e \"Azure\", totalizando cerca de 44 recursos criados ao longo da execução do laboratório.\n\n![all-resources-p01](./Img/all-resources-p01.png)  \n![all-resources-p02](./Img/all-resources-p02.png)  \n![all-resources-p03](./Img/all-resources-p03.png)\n\n## Custos com os recursos utilizados no Azure\n\nVisão geral dos custos ocorridos com os recursos utilizados no Azure durante a realização do Laboratório, ao longo de aproximadamente 10 dias. Destacando que mantinha as VMs desligadas nos períodos em que não estava desenvolvendo o laboratório.\n\n![azure-spending-rate](./Img/azure-spending-rate.png)\n\n## Badge de Conclusão da \"Semana Arquiteto Azure\"\n\n![badge-conclusao-SAA](./Img/badge-conclusao-SAA.jpg)\n\n## Links de Referência\n\n[Azure Pricing Calculator](https://azure.microsoft.com/en-us/pricing/calculator/)  \n[Azure App Service Pricing](https://azure.microsoft.com/en-us/pricing/details/app-service/windows/)  \n[Taxonomy Azure Best Practices](https://learn.microsoft.com/en-us/azure/cloud-adoption-framework/ready/azure-best-practices/resource-naming)  \n[.NET migration cases for Azure App Service | Microsoft Learn](https://learn.microsoft.com/en-us/azure/app-service/app-service-asp-net-migration)  \n[Modernize ASP.NET web apps to Azure App Service code | Microsoft Learn](https://learn.microsoft.com/en-us/azure/migrate/tutorial-modernize-asp-net-appservice-code)  \n[PowerShell Scripts - Azure/App-Service-Migration-Assistant Wiki | GitHub](https://github.com/Azure/App-Service-Migration-Assistant/wiki/PowerShell-Scripts)  \n[Overview of Data Migration Assistant - SQL Server | Microsoft Learn](https://learn.microsoft.com/en-us/sql/dma/dma-overview?view=sql-server-ver16)  \n[How an application gateway works | Microsoft Learn](https://learn.microsoft.com/en-us/azure/application-gateway/how-application-gateway-works)\n\n---\nBons estudos!  \n***André Carlucci***\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falcarlucci%2FAzure-Lab-SAA","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falcarlucci%2FAzure-Lab-SAA","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falcarlucci%2FAzure-Lab-SAA/lists"}