(EN) How to use Visual Studio Code to develop a Python Flask application that uses Azure Cosmos DB, How To create our Docker image and store It using Azure Container Registry: without stress.
(IT) Come sviluppare in Visual Studio Code un'applicazione Python Flask e Azure Cosmos DB, creare un'immagine Docker e archiviarla in Azure Container : senza stress.
4. • Database service multi-modello per lo sviluppo di applicazioni scalabili a
livello globale
• Aggiunta di "Azure Locations" in qualsiasi momento con un singolo click,
Azure Cosmos DB provvederà a replicare i dati e a renderli disponibili
• Failover automatico (o manuale)
• Replicazione e sincronizzazione multi-regione automatica
• Scritture multi-regione per ridurre la latenza ed aumentare la disponibilità
• Azure Cosmos DB permette di scalare throughput e storage in modo
elastico e globale secondo le esigenze della nostra applicazione, pagando
solo per il necessario
Azure Cosmos DB : Overview
5. • Supporto API multi-model : SQL (Core), Cassandra, Mongo DB, Gremlin,
Spark, Table
• 5 modelli di consistenza ben definiti:
Azure Cosmos DB : Overview
6. • Throughput garantito
• High Availability: 99,999% (letture multi-regione, 99,99% per singola
regione)
• Latenza: <10ms in lettura e <10ms in scrittura (single-digit latency, 99
percentile)
• Dati, indici, backups, attachments cifrati per default
• Nessun impatto sulle performance
• Completamente trasparente alle nostre applicazioni
Azure Cosmos DB : Overview
7. • ACD usa il partitioning per lo scaling dei containers
• Gli items di un container sono divisi in partizioni logiche
• Basate sulla partition key (PK) associata ad ogni container
• Tutti gli items in una partizione logica (PL) avranno lo stesso valore di PK
• In aggiunta alla PK, ogni Item ha un "ID" (univoco a livello di PL)
• PK + ID (identifica univocamente l’item) crea l’Index
• ACD gestisce in modo trasparente ed automatico il mapping tra PL e PF per
soddisfare le necessità di scalabilità e performance del container
• Queries che accedono ai dati di una singola PL sono piu’ costosi rispetto a
queries che accedono a partizioni multiple (“hot spots”)
• Le transazioni (Stored Procedure o Triggers) sono permesse solo su elementi di
una singola partizione logica
• Request unit (RU) : misura dell’throughput in ACD. 1RU = throughput di un GET
di un document da 1KB
Azure Cosmos DB : Partitioning
9. • Fornisce un ambiente locale che permette di emulare il servizio Azure
Cosmos DB per scopi di sviluppo e testing
• Supporta funzionalità identiche alla versione cloud (es. creazione di
documenti, query, stored procedure, triggers)
• Data Explorer supporta solo clients per SQL (Core) API
• Stesse funzionalità, differente l'implementazione
• L'emulatore utilizza le componenti standard del sistema operativo
• No geo-replication
• No single-digit millisecond latency
• Un solo modello di consistenza disponibile
Azure Cosmos DB : Emulator
10. • White Paper: Trusted Cloud: security, privacy, compliance, resiliency, and IP
https://download.microsoft.com/download/1/6/0/160216AA-8445-480B-
B60F-5C8EC8067FCA/WindowsAzure-SecurityPrivacyCompliance.pdf
• Azure Compliance
https://azure.microsoft.com/en-us/overview/trusted-cloud/compliance/
Azure Cosmos DB : Security & Compliance
11. Il link https://tinyurl.com/y8gpmw3l documenta Use Cases in ambito:
• Retail
• IoT + Manufacturing
• Gaming
• Financial Services
• Machine Learning
Azure Cosmos DB : Uses Cases
13. • Python Web App Application
• Python (3.7.4 - 64 bit)
• Flask
• “lightweight WSGI web application framework”
• Per semplici o complesse applicazioni
• Uno dei più popolari framework web per Python
Flask App & Virtual Environments
14. • Un Virtual Environment evita l'installazione di librerie e tool a livello
globale
• Controllo delle librerie e delle versioni utilizzate per specifica applicazione
• Creazione di un environment (Windows) -> python -m env <nome_env>
• Esportare tutte le librerie usate nel Virtual Environment
• pip freeze > requirements.txt
• Installare tutte le librerie tramite
• pip install -r requirements.txt
Flask App & Virtual Environments
16. • ACR è un servizio "Docker Registry" privato basato su "Docker Registry 2.0"
• build, store e management di immagini Docker per il deployment di tutti i
tipi di container
ACR : Azure Container Registry
17. • Per eseguire il push ed il pull di immagini è necessario aver installato
Docker
• Key Features:
• Tasks: build di immagini on demand o basate su triggres (es. "code commits")
• Geo-Replication
• Container Registry con Azure Container Instances
• Container Registry con Azure Kubernetes Service (AKS)
• Container Registry con Service Fabric
ACR : Azure Container Registry
18. • Il modo migliore per il package, deploy e manage di applicazioni cloud
senza preoccuparsi di gestire VMs
• Ideale per scenari che operano in containers isolati (single applications,
task automation e build jobs)
• Per scenari più complessi, si consiglia l'uso di AKS
• Startup : secondi
• Internet : Indirizzo IP pubblico e FQDN (custom label)
customlabel.azureregion.azurcontainer.io
• Free e-book: https://tinyurl.com/vj9vpmd
Azure Container Instances
19. • Suite di features all'interno di ACR che permette build di immagini per
Docker Container in modo efficiente (anche senza Docker installato
localmente)
• ACR Task utilizza lo stesso "Dockerfile" locale, non è necessario
cambiareadattare nulla
• ACR Task può essere utilizzato in modalità Single step (demo) o multi-step
utilizzando YAML
Azure Container Registry Tasks