[{"content":"In breve OCI E6 Standard Compute e\u0026rsquo; la nuova generazione AMD x86 da valutare quando devi scegliere tra VM.Standard.E6.Flex, VM.Standard.E5.Flex e VM.Standard.E4.Flex. Se stai avviando oggi un nuovo workload OCI, E6 deve entrare nella shortlist prima di E5 o E4.\nIl motivo e\u0026rsquo; semplice: nel messaggio di lancio Oracle posiziona E6 come una generazione basata su AMD EPYC di quinta generazione, con performance superiori allo stesso prezzo di E5. Questo non rende inutili i benchmark precedenti, ma cambia la prossima domanda: ogni confronto E5/E4 ora dovrebbe avere anche un follow-up su E6.\nRisposta rapida Situazione Prima mossa Nuovo workload AMD x86 su OCI Testa prima VM.Standard.E6.Flex. Workload esistente su E5 Esegui benchmark E6 con stessa OCPU, memoria, immagine e regione prima di migrare. Workload esistente su E4 Confronta E6 contro costo e compatibilita\u0026rsquo;; E4 ora e\u0026rsquo; un baseline piu\u0026rsquo; vecchio. Workload compatibile ARM Confronta ancora con VM.Standard.A1.Flex se il costo e\u0026rsquo; il driver principale. Workload molto dipendente da rete Guarda le varianti Acceleron, non solo la shape E6 base. Questo post non e\u0026rsquo; ancora il benchmark finale. E\u0026rsquo; la mappa decisionale che userei prima di eseguire i prossimi test.\nCosa cambia con OCI E6 Oracle ha annunciato OCI Compute E6 Standard come nuova generazione basata su processori AMD EPYC di quinta generazione. Nel post di lancio, Oracle indica che E6 puo\u0026rsquo; arrivare fino a 2x le performance di E5 allo stesso prezzo e fino al 50% di miglioramento price-performance per VM, a seconda di workload e configurazione.\nQuesto e\u0026rsquo; rilevante perche\u0026rsquo; il precedente confronto compute OCI su questo sito aveva individuato VM.Standard.E5.Flex come shape piu\u0026rsquo; forte in multicore tra E5, E4, A1, Standard3 e Optimized3 nel mio test Geekbench 6: OCI Flex Shapes: E5 vs E4 vs A1 .\nCon E6 disponibile, quel benchmark diventa un baseline, non la fine della storia.\nE6 vs E5 vs E4 Famiglia shape Architettura Come la leggerei oggi VM.Standard.E4.Flex AMD x86 Baseline AMD piu\u0026rsquo; vecchio. Da mantenere per workload stabili, ma non come default per nuovi deployment sensibili alle performance. VM.Standard.E5.Flex AMD x86 Ottima nel benchmark precedente. Ancora rilevante dove E6 non e\u0026rsquo; disponibile, non e\u0026rsquo; certificata o non e\u0026rsquo; ancora testata per il tuo workload. VM.Standard.E6.Flex AMD x86, generazione piu\u0026rsquo; recente Nuova candidata di default per workload AMD x86 Flex. Va testata direttamente contro E5 ed E4 con lo stesso profilo applicativo. Il punto importante non e\u0026rsquo; solo la generazione CPU. Nelle OCI Flex shapes, la decisione reale combina CPU, memoria per OCPU, comportamento di rete, capacita\u0026rsquo; regionale, supporto immagine, licensing e architettura applicativa.\nQuando passare a E6 Scegli E6 per prima quando stai costruendo qualcosa di nuovo e ti serve compatibilita\u0026rsquo; x86. Ha poco senso partire da E4 se non hai un vincolo specifico di disponibilita\u0026rsquo;, certificazione o costo.\nEsegui un test controllato su E6 quando hai gia\u0026rsquo; workload su E5. Usa gli stessi:\nOCI region e availability domain, se possibile numero di OCPU allocazione di memoria immagine del sistema operativo tipo di boot volume versione benchmark versione runtime applicativo Mantieni E5 o E4 quando il workload e\u0026rsquo; certificato dal vendor solo su quelle shape, quando la capacita\u0026rsquo; regionale non e\u0026rsquo; pronta, o quando il benchmark non mostra vantaggi reali per la tua applicazione specifica.\nCosa testerei nel prossimo benchmark Per un articolo E6 davvero utile non farei un solo benchmark sintetico. Testerei almeno quattro angoli:\nTest Perche\u0026rsquo; conta Geekbench 6 multicore Continuita\u0026rsquo; con i dati benchmark OCI gia\u0026rsquo; pubblicati. PHPBench o benchmark runtime applicativo Mostra se il comportamento reale segue lo score sintetico. OpenSSL o test compressione Utile per backend service, gateway e pipeline dati. Throughput rete e storage Importante perche\u0026rsquo; molti workload cloud non sono CPU-bound. Il primo confronto corretto dovrebbe essere:\nVM.Standard.E4.Flex VM.Standard.E5.Flex VM.Standard.E6.Flex stesso numero di OCPU, partendo da 2, 4 e 8 OCPU stessa immagine OS stesse versioni benchmark Poi aggiungerei un secondo articolo focalizzato sul costo-performance, perche\u0026rsquo; la domanda piu\u0026rsquo; interessante non e\u0026rsquo; solo \u0026ldquo;qual e\u0026rsquo; piu\u0026rsquo; veloce?\u0026rdquo;, ma \u0026ldquo;quale produce piu\u0026rsquo; lavoro utile per euro o dollaro?\u0026rdquo;.\nDove entra Acceleron Oracle ha annunciato anche Oracle Acceleron Compute Shapes, incluse E6 Standard Acceleron ed E6 DenseIO Acceleron. E\u0026rsquo; un\u0026rsquo;opportunita\u0026rsquo; separata ma collegata.\nL\u0026rsquo;idea chiave e\u0026rsquo; che Acceleron aggiunge accelerazione infrastrutturale tramite SmartNIC e capacita\u0026rsquo; di offload. Quindi non va trattata come \u0026ldquo;E6 con un nome leggermente diverso\u0026rdquo;. Merita un articolo dedicato, perche\u0026rsquo; l\u0026rsquo;intento di ricerca e\u0026rsquo; diverso:\nintento E6: \u0026ldquo;quale shape CPU devo scegliere?\u0026rdquo; intento Acceleron: \u0026ldquo;cosa cambia in rete OCI, accesso storage e offload infrastrutturale?\u0026rdquo; Per ora, il takeaway pratico e':\nSe ti interessa\u0026hellip; Guarda\u0026hellip; Compute AMD x86 generale VM.Standard.E6.Flex Sostituire E5/E4 per workload normali E6 Standard Workload ad alto throughput rete/storage E6 Acceleron e E6 DenseIO Acceleron Direzione GPU e infrastruttura AI A4 Standard Acceleron La mia raccomandazione Se stai pianificando un nuovo deployment OCI, non trattare piu\u0026rsquo; E5 come default automatico AMD x86. Parti da E6, poi dimostra la scelta con il tuo workload.\nSe sei gia\u0026rsquo; su E5, non migrare alla cieca. Il percorso prudente e\u0026rsquo; piccolo benchmark, canary deployment e rollout controllato.\nSe sei ancora su E4, questo e\u0026rsquo; un buon momento per riaprire il dimensionamento. La risposta corretta potrebbe essere E6, E5, A1 o anche un\u0026rsquo;altra famiglia di shape, ma E4 non dovrebbe piu\u0026rsquo; essere l\u0026rsquo;unico baseline della conversazione.\nFonti Annuncio Oracle: OCI launches E6 Standard Compute powered by AMD Documentazione Oracle: Compute shapes Annuncio Oracle: Oracle Acceleron Compute Shapes FAQ Che cos\u0026rsquo;e\u0026rsquo; VM.Standard.E6.Flex? VM.Standard.E6.Flex e\u0026rsquo; la generazione E6 delle virtual machine flessibili OCI Standard Compute, basata su processori AMD EPYC piu\u0026rsquo; recenti rispetto alle generazioni E5 ed E4.\nConviene scegliere OCI E6 invece di E5? Per nuovi workload AMD x86, E6 dovrebbe essere la prima shape da valutare. Per workload gia\u0026rsquo; su E5, conviene eseguire un benchmark a parita\u0026rsquo; di configurazione prima di migrare.\nOracle Acceleron e\u0026rsquo; la stessa cosa di E6 Standard? No. E6 Standard e\u0026rsquo; la generazione della compute shape. E6 Standard Acceleron fa parte di una famiglia Acceleron piu\u0026rsquo; recente che aggiunge accelerazione di rete e infrastruttura basata su SmartNIC.\n","permalink":"https://www.enricopesce.it/it/oci-e6-vs-e5-vs-e4-compute-flex-shapes/","summary":"\u003ch2 id=\"in-breve\"\u003eIn breve\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eOCI E6 Standard Compute\u003c/strong\u003e e\u0026rsquo; la nuova generazione AMD x86 da valutare quando devi scegliere tra \u003cstrong\u003eVM.Standard.E6.Flex\u003c/strong\u003e, \u003cstrong\u003eVM.Standard.E5.Flex\u003c/strong\u003e e \u003cstrong\u003eVM.Standard.E4.Flex\u003c/strong\u003e. Se stai avviando oggi un nuovo workload OCI, E6 deve entrare nella shortlist prima di E5 o E4.\u003c/p\u003e\n\u003cp\u003eIl motivo e\u0026rsquo; semplice: nel messaggio di lancio Oracle posiziona E6 come una generazione basata su AMD EPYC di quinta generazione, con performance superiori allo stesso prezzo di E5. Questo non rende inutili i benchmark precedenti, ma cambia la prossima domanda: ogni confronto E5/E4 ora dovrebbe avere anche un follow-up su E6.\u003c/p\u003e","title":"OCI E6 vs E5 vs E4: Compute Flex Shapes"},{"content":"\nEnrico Pesce Sono Cloud Solution Engineer in Oracle, basato a Malaga, Spagna. Mi occupo soprattutto di Oracle Cloud Infrastructure (OCI), Kubernetes, architetture serverless, infrastructure as code e Generative AI.\nUso questo blog per pubblicare note tecniche, esperimenti, architetture di riferimento, benchmark e piccoli progetti open-source. Il taglio e\u0026rsquo; pratico: comandi, decisioni architetturali, tradeoff e dettagli di implementazione riutilizzabili da professionisti cloud e team tecnici che vogliono valutare o usare meglio Oracle Cloud Infrastructure.\nRisposta Rapida Enrico Pesce e\u0026rsquo; un Cloud Solution Engineer in Oracle specializzato in Oracle Cloud Infrastructure, OCI Generative AI, Kubernetes/OKE, serverless, infrastructure as code e benchmark cloud. Su enricopesce.it pubblica contenuti tecnici personali pensati per professionisti che vogliono usare OCI con esempi pratici e riutilizzabili.\nPercorso Sono nato vicino a Venezia e lavoro nella tecnologia dagli anni 2000. Il mio percorso attraversa data center locali, servizi internet, piattaforme e-commerce, startup e cloud computing.\nOggi aiuto clienti e team tecnici a progettare e valutare soluzioni cloud-native. I contenuti pubblicati qui sono note tecniche personali e non rappresentano una posizione ufficiale di Oracle.\nAree Principali Oracle Cloud Infrastructure (OCI): Compute, Functions, Kubernetes (OKE), Object Storage, Autonomous Database Generative AI su OCI: modelli, esempi Python, RAG, integrazioni applicative Serverless e FaaS: OCI Functions, eventi, Object Storage Kubernetes e container: OKE, Docker, automazione cluster Infrastructure as Code: Terraform, Pulumi Benchmark e performance: compute shape, CPU, costi, tradeoff Programmazione: Python, Bash Percorsi Parliamo di OCI Progetti open-source Contatti LinkedIn: linkedin.com/in/enricopesce GitHub: github.com/enricopesce Domande Frequenti Chi e\u0026rsquo; Enrico Pesce? Enrico Pesce e\u0026rsquo; un Cloud Solution Engineer in Oracle specializzato in Oracle Cloud Infrastructure, Kubernetes, serverless, infrastructure as code, benchmark cloud e Generative AI.\nSu quali temi pubblica Enrico Pesce? Enrico Pesce pubblica guide pratiche su OCI, OCI Generative AI, OKE/Kubernetes, OCI Functions, Object Storage, Autonomous Database, Terraform, Pulumi, Python e benchmark cloud.\nI contenuti del blog rappresentano Oracle? No. I contenuti pubblicati su enricopesce.it sono note tecniche personali e non rappresentano una posizione ufficiale di Oracle.\n","permalink":"https://www.enricopesce.it/it/about/","summary":"\u003cp\u003e\u003cimg alt=\"Ritratto di Enrico Pesce\" loading=\"lazy\" src=\"/me.webp\"\u003e\u003c/p\u003e\n\u003ch2 id=\"enrico-pesce\"\u003eEnrico Pesce\u003c/h2\u003e\n\u003cp\u003eSono Cloud Solution Engineer in \u003cstrong\u003eOracle\u003c/strong\u003e, basato a Malaga, Spagna. Mi occupo soprattutto di \u003cstrong\u003eOracle Cloud Infrastructure (OCI)\u003c/strong\u003e, \u003cstrong\u003eKubernetes\u003c/strong\u003e, architetture \u003cstrong\u003eserverless\u003c/strong\u003e, \u003cstrong\u003einfrastructure as code\u003c/strong\u003e e \u003cstrong\u003eGenerative AI\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eUso questo blog per pubblicare note tecniche, esperimenti, architetture di riferimento, benchmark e piccoli progetti open-source. Il taglio e\u0026rsquo; pratico: comandi, decisioni architetturali, tradeoff e dettagli di implementazione riutilizzabili da professionisti cloud e team tecnici che vogliono valutare o usare meglio Oracle Cloud Infrastructure.\u003c/p\u003e","title":"Enrico Pesce"},{"content":"Questa non e\u0026rsquo; una pagina commerciale. E\u0026rsquo; il punto di contatto per chi segue i miei contenuti su Oracle Cloud Infrastructure e vuole discuterne in modo pratico.\nPuoi usarla per propormi temi, farmi domande sugli articoli, segnalare casi d\u0026rsquo;uso reali o condividere feedback su esempi, benchmark e progetti open-source.\nRisposta Rapida Per parlare con Enrico Pesce di Oracle Cloud Infrastructure puoi usare LinkedIn e proporre domande, casi d\u0026rsquo;uso o temi tecnici su OCI Generative AI, OKE/Kubernetes, serverless, automazione e benchmark. La pagina serve a creare confronto tecnico intorno ai contenuti personali pubblicati su enricopesce.it.\nPer Chi E' Per cloud engineer, developer, architetti, DevOps, studenti, creator tecnici e professionisti che stanno esplorando Oracle Cloud Infrastructure.\nIl taglio resta tecnico: cosa funziona, cosa manca, quali esempi servono, quali temi vale la pena approfondire.\nTemi Su Cui Confrontarci OCI Generative AI: modelli, API, esempi Python, RAG, agenti e integrazione applicativa. OKE e Kubernetes: automazione, cluster design, deployment e casi d\u0026rsquo;uso reali. Serverless su OCI: Functions, eventi, Object Storage, pattern leggeri. Benchmark e performance: compute shape, CPU, costi e tradeoff. Progetti pratici: repository, demo, starter kit e strumenti riutilizzabili. Contenuti tecnici su OCI: idee per articoli, guide, video, talk o format tecnici. Come Interagire Il canale piu\u0026rsquo; naturale e\u0026rsquo; LinkedIn : commenta i post, scrivimi se hai un tema tecnico da proporre, condividi feedback sugli articoli o segnalami casi d\u0026rsquo;uso che meritano un approfondimento.\nSe un contenuto ti e\u0026rsquo; utile, condividerlo e\u0026rsquo; il modo piu\u0026rsquo; semplice per aiutare questo progetto a crescere.\nI contenuti e le opinioni pubblicate su questo sito sono personali e non rappresentano una posizione ufficiale di Oracle.\nDomande Frequenti Come posso contattare Enrico Pesce per parlare di OCI? Il canale principale e\u0026rsquo; LinkedIn: puoi commentare i contenuti, proporre temi tecnici o condividere casi d\u0026rsquo;uso su Oracle Cloud Infrastructure.\nQuali argomenti OCI si possono proporre? Puoi proporre temi su OCI Generative AI, OKE/Kubernetes, serverless, OCI Functions, Object Storage, benchmark, automazione, RAG e progetti pratici.\nQuesta pagina offre consulenza commerciale? No. La pagina serve a facilitare confronto tecnico e community sui contenuti personali pubblicati da Enrico Pesce su OCI.\n","permalink":"https://www.enricopesce.it/it/parliamo-di-oci/","summary":"\u003cp\u003eQuesta non e\u0026rsquo; una pagina commerciale. E\u0026rsquo; il punto di contatto per chi segue i miei contenuti su \u003cstrong\u003eOracle Cloud Infrastructure\u003c/strong\u003e e vuole discuterne in modo pratico.\u003c/p\u003e\n\u003cp\u003ePuoi usarla per propormi temi, farmi domande sugli articoli, segnalare casi d\u0026rsquo;uso reali o condividere feedback su esempi, benchmark e progetti open-source.\u003c/p\u003e\n\u003ch2 id=\"risposta-rapida\"\u003eRisposta Rapida\u003c/h2\u003e\n\u003cp\u003ePer parlare con Enrico Pesce di \u003cstrong\u003eOracle Cloud Infrastructure\u003c/strong\u003e puoi usare LinkedIn e proporre domande, casi d\u0026rsquo;uso o temi tecnici su OCI Generative AI, OKE/Kubernetes, serverless, automazione e benchmark. La pagina serve a creare confronto tecnico intorno ai contenuti personali pubblicati su enricopesce.it.\u003c/p\u003e","title":"Parliamo di OCI"},{"content":"Questi sono i progetti pubblici che mantengo o uso come materiale pratico collegato agli articoli del sito.\nI progetti coprono esempi eseguibili per OCI Generative AI, cataloghi di modelli LLM su OCI, automazione per Oracle Kubernetes Engine e demo serverless con OCI Functions. Sono pensati come materiale riutilizzabile per cloud engineer, developer e team tecnici che vogliono testare Oracle Cloud Infrastructure con codice concreto.\nOCI GenAI Python Starters Una raccolta di esempi Python eseguibili per OCI Generative AI. Copre uso diretto dell\u0026rsquo;SDK, LangChain, LlamaIndex, LangGraph e flussi con API compatibili OpenAI.\nRepository: github.com/enricopesce/oci-genai-python-starters Articolo collegato: OCI GenAI Python Starters: alcune piccole demo per iniziare OCI GenAI Catalog Una guida di riferimento e selezione per i modelli di Generative AI disponibili su Oracle Cloud Infrastructure.\nProgetto: enricopesce.github.io/oci-genai-catalog Articolo collegato: OCI GenAI Catalog: scegliere il modello giusto OKED Oracle Kubernetes Engine Deploy e\u0026rsquo; un progetto di automazione per creare cluster OKE con Pulumi e default pratici.\nRepository: github.com/enricopesce/oracle-kubernetes-engine-deploy Articolo collegato: Deploy di cluster Oracle Kubernetes Engine in pochi minuti OCI Function Examples Esempi usati nella serie su OCI Functions: funzioni Python, immagini custom, eventi Object Storage, integrazione con Autonomous Database e automazione Terraform.\nRepository: github.com/enricopesce/fn-examples Articoli collegati: OCI Functions: un esempio Python , Attivare una function con Object Storage , Accedere ad Autonomous Database da una OCI Function ","permalink":"https://www.enricopesce.it/it/projects/","summary":"\u003cp\u003eQuesti sono i progetti pubblici che mantengo o uso come materiale pratico collegato agli articoli del sito.\u003c/p\u003e\n\u003cp\u003eI progetti coprono esempi eseguibili per \u003cstrong\u003eOCI Generative AI\u003c/strong\u003e, cataloghi di modelli LLM su OCI, automazione per \u003cstrong\u003eOracle Kubernetes Engine\u003c/strong\u003e e demo serverless con \u003cstrong\u003eOCI Functions\u003c/strong\u003e. Sono pensati come materiale riutilizzabile per cloud engineer, developer e team tecnici che vogliono testare Oracle Cloud Infrastructure con codice concreto.\u003c/p\u003e\n\u003ch2 id=\"oci-genai-python-starters\"\u003eOCI GenAI Python Starters\u003c/h2\u003e\n\u003cp\u003eUna raccolta di esempi Python eseguibili per OCI Generative AI. Copre uso diretto dell\u0026rsquo;SDK, LangChain, LlamaIndex, LangGraph e flussi con API compatibili OpenAI.\u003c/p\u003e","title":"Progetti OCI"},{"content":"In breve OCI GenAI Python Starters e\u0026rsquo; una raccolta di piccole demo Python eseguibili per Oracle Cloud Infrastructure Generative AI. Aiuta gli sviluppatori a passare dalle credenziali a un esempio funzionante usando OCI SDK, LangChain, LlamaIndex, LangGraph o flussi API compatibili OpenAI.\nOgni volta che voglio provare qualcosa di nuovo su OCI Generative AI, mi serve sempre la stessa cosa: un piccolo esempio Python che funzioni davvero.\nNon un framework completo. Non un\u0026rsquo;app rifinita. Solo uno script piccolo, con la configurazione giusta, l\u0026rsquo;endpoint giusto e un percorso chiaro da \u0026ldquo;ho le credenziali\u0026rdquo; a \u0026ldquo;ok, gira\u0026rdquo;.\nDopo aver ricostruito questi snippet alcune volte, li ho raccolti in un unico repository: OCI GenAI Python Starters .\nNiente di sofisticato, solo una serie di piccole demo che puoi eseguire, rompere, modificare e riutilizzare.\nCosa trovi dentro direct-sdk se vuoi partire dal minimo indispensabile langchain, llamaindex e langgraph se vuoi vedere la stessa idea attraverso strumenti di livello piu\u0026rsquo; alto openai-chat, openai-agents e openai-responses se preferisci il percorso in stile OpenAI Una cartella per ogni demo, con il proprio requirements.txt e .env.example Uno script test_all_demos.sh se vuoi eseguire tutto una volta configurate le variabili d\u0026rsquo;ambiente Ho cercato anche di mantenere un ordine sensato: prima SDK diretto, poi gli esempi con framework quando il flusso OCI di base e\u0026rsquo; chiaro.\nUna cosa che mi ha fatto perdere tempo Gli esempi compatibili OpenAI non sono tutti collegati nello stesso modo.\nopenai-chat e openai-agents usano ancora il normale endpoint OCI Generative AI. openai-responses e\u0026rsquo; quello diverso: usa la base URL compatibile OpenAI e richiede anche un Generative AI project OCID.\nE\u0026rsquo; una piccola differenza, ma e\u0026rsquo; esattamente il tipo di dettaglio che puo\u0026rsquo; far perdere mezz\u0026rsquo;ora quando si voleva solo un hello-world veloce.\nSe stai sperimentando con OCI GenAI in Python e vuoi qualche punto di partenza semplice, il repository e\u0026rsquo; qui: OCI GenAI Python Starters .\nFAQ Che cos\u0026rsquo;e\u0026rsquo; OCI GenAI Python Starters? OCI GenAI Python Starters e\u0026rsquo; una raccolta di piccoli esempi Python eseguibili per Oracle Cloud Infrastructure Generative AI, inclusi SDK diretto, LangChain, LlamaIndex, LangGraph e flussi API compatibili OpenAI.\nChi dovrebbe usare OCI GenAI Python Starters? Cloud engineer, sviluppatori e solution architect possono usarlo quando serve un punto di partenza funzionante per esperimenti OCI Generative AI in Python.\nQuale esempio OCI compatibile OpenAI richiede un Generative AI project OCID? L\u0026rsquo;esempio openai-responses usa la base URL compatibile OpenAI e richiede un Generative AI project OCID.\n","permalink":"https://www.enricopesce.it/it/oci-genai-python-starters-demo-python-per-iniziare/","summary":"\u003ch2 id=\"in-breve\"\u003eIn breve\u003c/h2\u003e\n\u003cp\u003e\u003cstrong\u003eOCI GenAI Python Starters\u003c/strong\u003e e\u0026rsquo; una raccolta di piccole demo Python eseguibili per Oracle Cloud Infrastructure Generative AI. Aiuta gli sviluppatori a passare dalle credenziali a un esempio funzionante usando OCI SDK, LangChain, LlamaIndex, LangGraph o flussi API compatibili OpenAI.\u003c/p\u003e\n\u003cp\u003eOgni volta che voglio provare qualcosa di nuovo su OCI Generative AI, mi serve sempre la stessa cosa: un piccolo esempio Python che funzioni davvero.\u003c/p\u003e\n\u003cp\u003eNon un framework completo. Non un\u0026rsquo;app rifinita. Solo uno script piccolo, con la configurazione giusta, l\u0026rsquo;endpoint giusto e un percorso chiaro da \u0026ldquo;ho le credenziali\u0026rdquo; a \u0026ldquo;ok, gira\u0026rdquo;.\u003c/p\u003e","title":"OCI GenAI Python Starters: piccole demo per iniziare"},{"content":"OCI Generative AI e\u0026rsquo; cresciuto rapidamente: Cohere, Google, Meta, OpenAI, xAI, tutti disponibili, ciascuno con piu\u0026rsquo; varianti. Ogni volta che iniziavo un nuovo progetto dovevo consultare la documentazione per trovare il modello corretto.\nCosi\u0026rsquo; ho creato OCI GenAI Catalog : una guida di riferimento con oltre 30 modelli e un wizard guidato per la selezione.\nCosa contiene 24 modelli chat da 5 provider, con specifiche su context window, multimodalita\u0026rsquo;, tool use, reasoning e supporto al fine-tuning 9 modelli embedding e 1 modello reranking per pipeline RAG Un wizard di selezione modello: filtra per task, livello di performance e necessita\u0026rsquo; di contesto per ottenere una top 3 raccomandata Sintesi provider Provider Modelli Punto di forza Cohere 5 RAG, fine-tuning Google Gemini 3 Multimodale, long context fino a 1M token Meta Llama 5 Open weights, efficienza MoE OpenAI gpt-oss 2 Reasoning, agenti xAI Grok 6 Contesto 2M, specializzazione codice I dati provengono dalla documentazione ufficiale OCI e vengono mantenuti aggiornati. Provalo qui: OCI GenAI Catalog .\n","permalink":"https://www.enricopesce.it/it/oci-genai-catalog-scegliere-modello-giusto/","summary":"\u003cp\u003eOCI Generative AI e\u0026rsquo; cresciuto rapidamente: Cohere, Google, Meta, OpenAI, xAI, tutti disponibili, ciascuno con piu\u0026rsquo; varianti. Ogni volta che iniziavo un nuovo progetto dovevo consultare la documentazione per trovare il modello corretto.\u003c/p\u003e\n\u003cp\u003eCosi\u0026rsquo; ho creato \u003cstrong\u003e\u003ca href=\"https://enricopesce.github.io/oci-genai-catalog/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOCI GenAI Catalog\u003c/a\u003e\n\u003c/strong\u003e: una guida di riferimento con oltre 30 modelli e un wizard guidato per la selezione.\u003c/p\u003e\n\u003ch2 id=\"cosa-contiene\"\u003eCosa contiene\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003e24 modelli chat\u003c/strong\u003e da 5 provider, con specifiche su context window, multimodalita\u0026rsquo;, tool use, reasoning e supporto al fine-tuning\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003e9 modelli embedding\u003c/strong\u003e e 1 modello reranking per pipeline RAG\u003c/li\u003e\n\u003cli\u003eUn \u003cstrong\u003ewizard di selezione modello\u003c/strong\u003e: filtra per task, livello di performance e necessita\u0026rsquo; di contesto per ottenere una top 3 raccomandata\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"sintesi-provider\"\u003eSintesi provider\u003c/h2\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eProvider\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eModelli\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePunto di forza\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eCohere\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eRAG, fine-tuning\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eGoogle Gemini\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e3\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eMultimodale, long context fino a 1M token\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMeta Llama\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e5\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eOpen weights, efficienza MoE\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eOpenAI gpt-oss\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e2\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eReasoning, agenti\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003exAI Grok\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e6\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eContesto 2M, specializzazione codice\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eI dati provengono dalla documentazione ufficiale OCI e vengono mantenuti aggiornati. Provalo qui: \u003cstrong\u003e\u003ca href=\"https://enricopesce.github.io/oci-genai-catalog/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOCI GenAI Catalog\u003c/a\u003e\n\u003c/strong\u003e.\u003c/p\u003e","title":"OCI GenAI Catalog: scegliere il modello giusto"},{"content":"E\u0026rsquo; passato un po\u0026rsquo; di tempo dall\u0026rsquo;ultimo articolo. Ultimamente ho approfondito l\u0026rsquo;inferenza AI, cioe\u0026rsquo; il processo di esecuzione dei modelli per generare risposte, cercando di capire se servano davvero GPU costose per eseguire modelli linguistici moderni. Spoiler: la risposta potrebbe sorprenderti.\nDopo molti test su Oracle Cloud Infrastructure (OCI), confrontando processori Ampere basati su ARM con i piu\u0026rsquo; recenti chip AMD EPYC, ho visto che la giusta combinazione di ottimizzazioni software e modelli compressi puo\u0026rsquo; offrire performance notevoli, senza usare una GPU.\nIl \u0026ldquo;mito della GPU\u0026rdquo; e la realta\u0026rsquo; delle CPU E\u0026rsquo; diffusa l\u0026rsquo;idea che l\u0026rsquo;inferenza AI seria richieda GPU costose e ad alto consumo. Chiariamo: le GPU restano essenziali per inferenza e training su larga scala. Tuttavia, per applicazioni chat piccole e medie, strumenti interni, bot di supporto clienti o servizi con traffico moderato, le CPU moderne sono piu\u0026rsquo; che sufficienti.\nLa chiave e\u0026rsquo; la quantizzazione: una tecnica che comprime modelli AI grandi preservando gran parte della loro capacita\u0026rsquo;. Immaginala come la conversione di un\u0026rsquo;immagine ad alta risoluzione in un file piu\u0026rsquo; piccolo che resta ottimo sullo schermo del telefono: scambi una minima perdita di qualita\u0026rsquo; con un forte risparmio di risorse.\nIl tradeoff qualita\u0026rsquo; vs efficienza Una preoccupazione comune e\u0026rsquo;: \u0026ldquo;Se comprimiamo il modello, diventa stupido?\u0026rdquo;. I dati dicono di no. Secondo una ricerca recente [arXiv:2601.14277] , ecco cosa succede comprimendo Llama 3.1 8B:\nLivello di compressione Dimensione modello Qualita\u0026rsquo; mantenuta Caso d\u0026rsquo;uso FP16 (Originale) 16.0 GB 100% Ricerca, baseline Q8 (Leggera) 8.5 GB ~99.9% Produzione Q4 (Media) 4.8 GB 99.7% Raccomandato Q3 (Forte) 3.9 GB 94.5% Vincoli di memoria Il punto ideale e\u0026rsquo; Q4: ottieni qualita\u0026rsquo; quasi identica con il 70% di memoria in meno. Questo pattern vale per i principali modelli open-source, come Mistral, Gemma, Phi e Qwen.\nIl vantaggio Ampere: oltre ARM standard La vera sorpresa non e\u0026rsquo; stata solo vedere che le CPU possono eseguire questi modelli, ma quanto velocemente possono farlo con le giuste ottimizzazioni.\nAmpere Computing ha creato una versione speciale di llama.cpp ottimizzata per i propri processori, insieme a un formato modello ottimizzato che riorganizza i dati per massimizzare l\u0026rsquo;efficienza. Modelli gia\u0026rsquo; ottimizzati sono disponibili nella pagina Hugging Face di Ampere .\nRisultati di performance Ho testato Llama 3.1 8B con quantizzazione Q8 su diverse configurazioni di processore. Per leggere questi benchmark: token al secondo (t/s) misura quanto velocemente l\u0026rsquo;AI genera testo. Per dare contesto, una persona legge circa 4-5 parole al secondo, quindi oltre ~6 t/s la risposta sembra immediata.\nProcessore Configurazione Formato modello Velocita\u0026rsquo; elaborazione Velocita\u0026rsquo; risposta vs baseline Ampere A2 8 OCPUs (16 vCPUs) Q8R16 (Ottimizzato) ~158 t/s ~9.2 t/s 2x piu\u0026rsquo; veloce AMD EPYC \u0026ldquo;Turin\u0026rdquo; 8 OCPUs (16 vCPUs) Q8_0 (Standard) ~72 t/s ~4.3 t/s Baseline Ampere A2 8 OCPUs (16 vCPUs) Q8_0 (Standard) ~32 t/s ~4.3 t/s 0.4x Il punto chiave: con il formato Q8R16 ottimizzato da Ampere, lo stesso hardware offre 5x piu\u0026rsquo; velocita\u0026rsquo; nell\u0026rsquo;elaborazione del prompt e 2x piu\u0026rsquo; velocita\u0026rsquo; nella generazione dei token rispetto al formato standard.\nAncora piu\u0026rsquo; veloce: formato Q4_K_4 ottimizzato Per chatbot e applicazioni real-time, dove la velocita\u0026rsquo; di risposta e\u0026rsquo; critica, il formato Q4 ottimizzato offre la migliore esperienza utente:\nConfigurazione Velocita\u0026rsquo; elaborazione Velocita\u0026rsquo; risposta Ideale per Ampere A2 (8 OCPUs) + Q4_K_4 ~79 t/s ~11.5 t/s App interattive, chatbot Ampere A2 (8 OCPUs) + Q8R16 ~158 t/s ~9.2 t/s Batch processing, casi quality-critical A 11.5 token al secondo, gli utenti percepiscono risposte quasi istantanee, paragonabili a servizi AI commerciali come ChatGPT.\nAnalisi dei costi Basandosi sull\u0026rsquo;OCI Cost Estimator per VM.Standard.A2.Flex:\nRisorsa Prezzo OCPU $0.014/ora Memoria $0.002/GB/ora Configurazione di test: 8 OCPU / 16 vCPU + 32GB = $0.19/ora (~$140/mese)\nCosto per 1M token, al 100% di utilizzo:\nConfigurazione Token/ora Costo per 1M token Q4 ottimizzato (11.5 t/s) 41,400 ~$4.6 Q8 ottimizzato (9.2 t/s) 33,120 ~$5.7 Nota: questo assume generazione continua. Il costo reale dipende dall\u0026rsquo;utilizzo; il tempo idle aumenta il costo effettivo per token.\nScegli self-hosted quando hai bisogno di:\nPrivacy dei dati: i dati non lasciano mai la tua infrastruttura Modelli fine-tuned: puoi eseguire modelli addestrati su misura Costi prevedibili: fattura mensile fissa, senza sorprese da picchi d\u0026rsquo;uso Nessun rate limit: capacita\u0026rsquo; completa disponibile quando serve Nessuna dipendenza da vendor: puoi cambiare modello liberamente Quando usare inferenza CPU Non si tratta di sostituire le GPU: si tratta di usare lo strumento giusto per il lavoro giusto.\nL\u0026rsquo;inferenza CPU e\u0026rsquo; ideale per:\nApplicazioni chat piccole e medie, fino a circa 50 utenti concorrenti Strumenti interni e assistenti per dipendenti Prototipi e proof-of-concept Workload sensibili alla privacy che richiedono deployment on-premise Ambienti in cui le GPU non sono disponibili Le GPU restano necessarie per:\nProduzione su larga scala, con centinaia o migliaia di utenti concorrenti Modelli piu\u0026rsquo; grandi, da 70B+ parametri Training e fine-tuning Requisiti di bassa latenza ad alto volume Implementazione tecnica Per i team pronti a implementare, ecco una partenza rapida sulle istanze Ampere di OCI:\n1. Avviare un\u0026rsquo;istanza Ampere Crea un\u0026rsquo;istanza VM.Standard.A2.Flex su OCI.\n2. Eseguire il container ottimizzato sudo docker run --rm --privileged=true \\ --name llama \\ -v \u0026#34;$(pwd)/models:/models:rw\u0026#34; \\ --entrypoint /bin/bash \\ -it amperecomputingai/llama.cpp:latest-ampereone 3. Ottimizzare i modelli All\u0026rsquo;interno del container, converti i modelli nei formati ottimizzati Ampere. Per questo test ho usato Dolphin3.0-Llama3.1-8B-GGUF :\n# Q4 format: Best for interactive applications ./llama-quantize /models/Dolphin3.0-Llama3.1-8B-F16.gguf /models/Dolphin3.0-Llama3.1-8B-Q4_K_4.gguf Q4_K_4 # Q8 format: Best for quality-critical applications ./llama-quantize /models/Dolphin3.0-Llama3.1-8B-F16.gguf /models/Dolphin3.0-Llama3.1-8B-Q8R16.gguf Q8R16 4. Validare le performance ./llama-bench -m /models/Dolphin3.0-Llama3.1-8B-Q4_K_4.gguf -p 512 -n 512 Conclusioni Le GPU non spariranno: restano essenziali per deployment AI su larga scala. Ma per applicazioni chat piccole e medie, l\u0026rsquo;inferenza CPU ottimizzata e\u0026rsquo; oggi un\u0026rsquo;opzione concreta. Con il software e i formati modello corretti puoi distribuire assistenti AI pronti per la produzione su istanze cloud standard.\nE questo e\u0026rsquo; solo l\u0026rsquo;inizio. OCI sta introducendo la nuova shape A4 basata sui processori Ampere di prossima generazione, promettendo performance ancora maggiori per workload AI. Restate sintonizzati per i benchmark sul nuovo hardware.\n","permalink":"https://www.enricopesce.it/it/generative-ai-inferenza-efficiente-su-cpu-cloud/","summary":"\u003cp\u003eE\u0026rsquo; passato un po\u0026rsquo; di tempo dall\u0026rsquo;ultimo articolo. Ultimamente ho approfondito l\u0026rsquo;inferenza AI, cioe\u0026rsquo; il processo di esecuzione dei modelli per generare risposte, cercando di capire se servano davvero GPU costose per eseguire modelli linguistici moderni. Spoiler: \u003cstrong\u003ela risposta potrebbe sorprenderti\u003c/strong\u003e.\u003c/p\u003e\n\u003cp\u003eDopo molti test su Oracle Cloud Infrastructure (OCI), confrontando processori \u003cstrong\u003eAmpere\u003c/strong\u003e basati su ARM con i piu\u0026rsquo; recenti chip AMD EPYC, ho visto che la giusta combinazione di ottimizzazioni software e modelli compressi puo\u0026rsquo; offrire performance notevoli, \u003cstrong\u003esenza usare una GPU\u003c/strong\u003e.\u003c/p\u003e","title":"Generative AI: inferenza efficiente su CPU cloud"},{"content":"Nel panorama cloud-native di oggi, Kubernetes e\u0026rsquo; diventato lo standard de facto per l\u0026rsquo;orchestrazione dei container. Configurare un cluster Kubernetes pronto per la produzione puo\u0026rsquo; pero\u0026rsquo; essere ancora complesso e richiedere tempo, soprattutto per chi e\u0026rsquo; nuovo nell\u0026rsquo;ecosistema. OKED (Oracle Kubernetes Engine Deploy) e\u0026rsquo; una soluzione che semplifica la distribuzione di cluster Kubernetes su Oracle Cloud Infrastructure.\nCos\u0026rsquo;e\u0026rsquo; OKED? OKED e\u0026rsquo; uno strumento automatico che semplifica la distribuzione di cluster Oracle Kubernetes Engine (OKE). Costruito su Pulumi, consente di avere un ambiente Kubernetes funzionante in pochi minuti, senza richiedere competenze approfondite su OCI o Kubernetes.\n\u0026ldquo;Up and running in minutes without any prompt and OCI expertise.\u0026rdquo;\nLo strumento gestisce tutti gli aspetti della distribuzione del cluster, dal provisioning infrastrutturale alla configurazione di rete. E\u0026rsquo; utile sia per principianti che vogliono sperimentare con Kubernetes, sia per sviluppatori esperti che cercano una base affidabile per ambienti di produzione.\nFunzionalita\u0026rsquo; principali Cosa rende OKED diverso da altri metodi di deployment, incluso il wizard della console OCI?\nDeployment senza esperienza approfondita: ottieni un cluster funzionante senza conoscenza profonda di OCI o Kubernetes Creazione automatica della VCN: definisci una supernet CIDR e OKED calcola le subnet Configurazione multi-availability domain: scoperta e configurazione automatica degli availability domain per aumentare la resilienza del cluster Immagini nodo ottimizzate: selezione automatica delle immagini OKE piu\u0026rsquo; recenti e ottimizzate Configurazione pronta all\u0026rsquo;uso: genera un file Kubernetes config utilizzabile subito con kubectl Sicurezza well-architected: applica buone pratiche di sicurezza basate sulle raccomandazioni ufficiali OCI Estensibilita\u0026rsquo;: essendo basato su Pulumi, e\u0026rsquo; semplice personalizzarlo ed estenderlo per esigenze specifiche Architettura OKED distribuisce un cluster di tipo BASIC, che non comporta costi di gestione, seguendo l\u0026rsquo;architettura raccomandata nella documentazione Oracle .\nL\u0026rsquo;ambiente distribuito include:\nEndpoint pubblico per la Kubernetes API con worker node privati Supporto per load balancer pubblici Segmentazione di rete corretta con security list e route table Alta disponibilita\u0026rsquo; su piu\u0026rsquo; availability domain Con le impostazioni predefinite puoi distribuire un cluster semplice usando risorse Oracle Cloud Free Tier a costo zero, sfruttando le istanze ARM Ampere A1 gratuite.\nCome iniziare Per partire con OKED serve una configurazione minima:\n# Clone the repository git clone https://github.com/enricopesce/oracle-kubernetes-engine-deploy.git cd oracle-kubernetes-engine-deploy # Set up environment python -m venv .venv source .venv/bin/activate pip install poetry pulumi install # Configure and deploy pulumi stack init testing pulumi config set compartment_ocid \u0026#34;your-compartment-ocid\u0026#34; pulumi up In 10-15 minuti avrai un cluster Kubernetes operativo e pronto per le applicazioni:\nchmod 600 kubeconfig export KUBECONFIG=$PWD/kubeconfig kubectl get pods -A Perche\u0026rsquo; scegliere OKED? OKED nasce dalla frustrazione verso soluzioni esistenti spesso complesse da capire o non funzionanti. Il progetto risponde a tre requisiti principali:\nSemplicita\u0026rsquo;: deploy rapido senza conoscenza estesa o configurazione manuale Affidabilita\u0026rsquo;: a differenza di molti esempi online, OKED funziona davvero come dichiarato Best practice: segue le raccomandazioni dell\u0026rsquo;Oracle Well-Architected Framework Per team che vogliono avviare velocemente ambienti Kubernetes su OCI, per sviluppo, test o produzione, OKED offre un percorso diretto che riduce complessita\u0026rsquo; ed errori potenziali.\nProvalo Che tu voglia sperimentare con Kubernetes su Oracle Cloud Free Tier o distribuire cluster pronti per la produzione, OKED e\u0026rsquo; un buon punto di partenza. Il progetto e\u0026rsquo; open-source e cerca feedback e contributi dalla community.\nIl progetto completo e\u0026rsquo; disponibile su GitHub: github.com/enricopesce/oracle-kubernetes-engine-deploy .\nUsi Kubernetes su Oracle Cloud? Sono interessato a feedback pratici sui pattern di automazione del deployment e sui relativi tradeoff.\n","permalink":"https://www.enricopesce.it/it/distribuire-cluster-oracle-kubernetes-engine-in-pochi-minuti/","summary":"\u003cp\u003eNel panorama cloud-native di oggi, Kubernetes e\u0026rsquo; diventato lo standard \u003cem\u003ede facto\u003c/em\u003e per l\u0026rsquo;orchestrazione dei container. Configurare un cluster Kubernetes pronto per la produzione puo\u0026rsquo; pero\u0026rsquo; essere ancora complesso e richiedere tempo, soprattutto per chi e\u0026rsquo; nuovo nell\u0026rsquo;ecosistema. \u003cstrong\u003eOKED\u003c/strong\u003e (\u003cem\u003eOracle Kubernetes Engine Deploy\u003c/em\u003e) e\u0026rsquo; una soluzione che semplifica la distribuzione di cluster Kubernetes su Oracle Cloud Infrastructure.\u003c/p\u003e\n\u003cp\u003e\u003cimg alt=\"Demo distribuzione OKED\" loading=\"lazy\" src=\"https://github.com/enricopesce/oracle-kubernetes-engine-deploy/blob/main/demo.gif?raw=true\"\u003e\u003c/p\u003e\n\u003ch2 id=\"cose-oked\"\u003eCos\u0026rsquo;e\u0026rsquo; OKED?\u003c/h2\u003e\n\u003cp\u003eOKED e\u0026rsquo; uno strumento automatico che semplifica la distribuzione di cluster Oracle Kubernetes Engine (OKE). Costruito su Pulumi, consente di avere un ambiente Kubernetes funzionante in pochi minuti, senza richiedere competenze approfondite su OCI o Kubernetes.\u003c/p\u003e","title":"Distribuire cluster Oracle Kubernetes Engine in pochi minuti"},{"content":"La sfida della traduzione moderna I servizi di traduzione tradizionali spesso faticano con contesto, modi di dire e sfumature linguistiche. Con aziende sempre piu\u0026rsquo; globali, cresce il bisogno di servizi di traduzione capaci di gestire questa complessita\u0026rsquo; mantenendo sicurezza, scalabilita\u0026rsquo; e controllo dei costi.\nEntra in gioco OCI Generative AI Il servizio Generative AI di Oracle Cloud Infrastructure offre una soluzione interessante a queste sfide. A differenza delle API di traduzione tradizionali, OCI usa modelli linguistici avanzati che comprendono contesto e sfumature culturali, rendendolo una scelta adatta ad applicazioni enterprise.\nEcco perche\u0026rsquo; OCI Generative AI e\u0026rsquo; interessante:\nInfrastruttura enterprise-ready: costruito sulla base robusta di OCI, il servizio mantiene le traduzioni disponibili e scalabili al crescere delle esigenze. Soluzione efficiente nei costi: con un modello pay-as-you-go paghi solo quello che usi, quindi resta accessibile anche per progetti piccoli. Sicurezza al centro: funzionalita\u0026rsquo; di sicurezza enterprise e strumenti di compliance proteggono i dati sensibili durante la traduzione. Performance solide: risposte a bassa latenza rendono possibile la traduzione quasi real-time per applicazioni live. Supporto linguistico ampio: il servizio supporta dieci lingue principali, tra cui arabo, cinese, inglese, francese, tedesco, italiano, giapponese, coreano, portoghese e spagnolo. Costruire il servizio di traduzione Vediamo come implementare questo servizio di traduzione. Condivido i componenti principali e gli snippet di codice necessari per partire.\nPreparare l\u0026rsquo;ambiente Assicurati prima di avere Python 3.8 o superiore installato. Il setup e\u0026rsquo; diretto:\nClona il repository: git clone https://github.com/enricopesce/translator cd translator Installa le dipendenze: pip install -r requirements.txt Configurazione semplice Crea un file .env con le credenziali OCI:\nOCI_MODEL_ID=your_model_id OCI_SERVICE_ENDPOINT=your_service_endpoint OCI_COMPARTMENT_ID=your_compartment_id La API in azione Il servizio espone un semplice endpoint REST per le traduzioni. Ecco un esempio di utilizzo:\ncurl -X POST \u0026#34;http://localhost:8000/translate\u0026#34; \\ -H \u0026#34;Content-Type: application/json\u0026#34; \\ -d \u0026#39;{ \u0026#34;text\u0026#34;: \u0026#34;Hello world\u0026#34;, \u0026#34;source_language\u0026#34;: \u0026#34;en\u0026#34;, \u0026#34;target_language\u0026#34;: \u0026#34;es\u0026#34; }\u0026#39; La risposta e\u0026rsquo; pulita e immediata:\n{ \u0026#34;translated_text\u0026#34;: \u0026#34;Hola mundo\u0026#34;, \u0026#34;source_language\u0026#34;: \u0026#34;en\u0026#34;, \u0026#34;target_language\u0026#34;: \u0026#34;es\u0026#34; } Testare il servizio di traduzione Per garantire traduzioni di qualita\u0026rsquo;, il progetto include uno script di test completo. Ecco un esempio realistico:\npython test.py --text \u0026#34;Il piu\u0026#39; grande nemico della conoscenza non e\u0026#39; l\u0026#39;ignoranza, ma l\u0026#39;illusione della conoscenza\u0026#34; --from it --to zh Questo comando traduce una citazione filosofica italiana in cinese, mostrando la capacita\u0026rsquo; del sistema di gestire testo complesso e ricco di sfumature preservandone il significato.\nImpatto reale Il vero valore di questo servizio emerge quando lo si vede in azione. Nei test ha gestito correttamente:\nConcetti filosofici complessi Documentazione tecnica Conversazioni informali Comunicazione business Il sistema non traduce solo parole: interpreta il contesto e mantiene intento e tono del messaggio originale.\nGuardando avanti Con aziende sempre piu\u0026rsquo; internazionali, il bisogno di servizi di traduzione sofisticati continuera\u0026rsquo; a crescere. Costruendo su OCI Generative AI non stai creando solo uno strumento di traduzione, ma un ponte tra culture e mercati.\nPer iniziare Vuoi creare il tuo servizio di traduzione? Il codice completo e la documentazione sono disponibili su GitHub. Che tu debba servire un pubblico globale o stia iniziando un percorso di internazionalizzazione, questo servizio fornisce una base solida.\nRicorda: la traduzione migliore non converte solo parole, ma trasmette significato. Con OCI Generative AI hai gli strumenti per fare entrambe le cose.\n","permalink":"https://www.enricopesce.it/it/servizio-moderno-traduzione-oci-generative-ai/","summary":"\u003ch2 id=\"la-sfida-della-traduzione-moderna\"\u003eLa sfida della traduzione moderna\u003c/h2\u003e\n\u003cp\u003eI servizi di traduzione tradizionali spesso faticano con contesto, modi di dire e sfumature linguistiche. Con aziende sempre piu\u0026rsquo; globali, cresce il bisogno di servizi di traduzione capaci di gestire questa complessita\u0026rsquo; mantenendo sicurezza, scalabilita\u0026rsquo; e controllo dei costi.\u003c/p\u003e\n\u003ch2 id=\"entra-in-gioco-oci-generative-ai\"\u003eEntra in gioco OCI Generative AI\u003c/h2\u003e\n\u003cp\u003eIl servizio Generative AI di Oracle Cloud Infrastructure offre una soluzione interessante a queste sfide. A differenza delle API di traduzione tradizionali, OCI usa modelli linguistici avanzati che comprendono contesto e sfumature culturali, rendendolo una scelta adatta ad applicazioni enterprise.\u003c/p\u003e","title":"Creare un servizio moderno di traduzione con OCI Generative AI"},{"content":"Introduzione Quando esegui workload su Oracle Cloud Infrastructure (OCI), gestire le istanze in modo efficiente e\u0026rsquo; fondamentale. Questa guida mostra come creare un metodo semplice per spegnere una VM OCI dall\u0026rsquo;interno dell\u0026rsquo;istanza stessa, usando instance metadata e autenticazione instance principal.\nPrerequisiti Un\u0026rsquo;istanza OCI con autenticazione instance principal abilitata OCI CLI installata sull\u0026rsquo;istanza Conoscenza base delle operazioni da riga di comando Capire i componenti Instance Metadata Ogni istanza OCI puo\u0026rsquo; accedere ai propri metadata tramite un endpoint locale. Questi metadata includono informazioni importanti come:\nInstance OCID, cioe\u0026rsquo; Oracle Cloud Identifier Region Compartment ID Availability Domain Puoi accedere a queste informazioni senza autenticazione quando fai la richiesta dall\u0026rsquo;interno dell\u0026rsquo;istanza:\ncurl http://169.254.169.254/opc/v1/instance/id curl http://169.254.169.254/opc/v1/instance/region Autenticazione Instance Principal Instance Principal e\u0026rsquo; un modo sicuro per autenticare chiamate API OCI senza gestire file di configurazione o API key. Quando e\u0026rsquo; abilitato, l\u0026rsquo;istanza puo\u0026rsquo; effettuare chiamate API usando la propria identita'.\nIl comando base Questo e\u0026rsquo; il comando base per eseguire uno shutdown ordinato:\noci compute instance action \\ --action SOFTSTOP \\ --instance-id $(curl -s http://169.254.169.254/opc/v1/instance/id) \\ --auth instance_principal \\ --region $(curl -s http://169.254.169.254/opc/v1/instance/region) Vediamo cosa fa ogni parte:\noci compute instance action: comando base per le operazioni sulle istanze --action SOFTSTOP: specifica uno shutdown ordinato --instance-id $(...): recupera l\u0026rsquo;ID dell\u0026rsquo;istanza corrente dai metadata --auth instance_principal: usa l\u0026rsquo;identita\u0026rsquo; dell\u0026rsquo;istanza per l\u0026rsquo;autenticazione --region $(...): recupera la region corrente dai metadata Semplificare tutto con un alias Per semplificare il processo puoi creare un alias. Ecco come:\nApri il file di configurazione della shell: nano ~/.bashrc # per utenti bash # oppure nano ~/.zshrc # per utenti zsh Aggiungi l\u0026rsquo;alias: alias ocishutdown=\u0026#39;oci compute instance action \\ --action SOFTSTOP \\ --instance-id $(curl -s http://169.254.169.254/opc/v1/instance/id) \\ --auth instance_principal \\ --region $(curl -s http://169.254.169.254/opc/v1/instance/region)\u0026#39; Ricarica la configurazione: source ~/.bashrc # per bash # oppure source ~/.zshrc # per zsh Ora puoi digitare semplicemente ocishutdown per arrestare in modo ordinato la tua istanza.\nConclusione Usando instance metadata e autenticazione instance principal puoi creare metodi efficienti e sicuri per gestire le istanze OCI. Questo approccio elimina la necessita\u0026rsquo; di salvare credenziali e semplifica le attivita\u0026rsquo; operative.\nAnche se questa guida si concentra sullo shutdown, gli stessi principi valgono per altre operazioni di gestione, come start, reset o raccolta di informazioni sull\u0026rsquo;istanza. Puoi adattare questi esempi alle tue esigenze.\n","permalink":"https://www.enricopesce.it/it/arrestare-vm-oci-dall-interno-dell-istanza/","summary":"\u003ch2 id=\"introduzione\"\u003eIntroduzione\u003c/h2\u003e\n\u003cp\u003eQuando esegui workload su Oracle Cloud Infrastructure (OCI), gestire le istanze in modo efficiente e\u0026rsquo; fondamentale. Questa guida mostra come creare un metodo semplice per spegnere una VM OCI dall\u0026rsquo;interno dell\u0026rsquo;istanza stessa, usando instance metadata e autenticazione instance principal.\u003c/p\u003e\n\u003ch2 id=\"prerequisiti\"\u003ePrerequisiti\u003c/h2\u003e\n\u003cul\u003e\n\u003cli\u003eUn\u0026rsquo;istanza OCI con autenticazione instance principal abilitata\u003c/li\u003e\n\u003cli\u003eOCI CLI installata sull\u0026rsquo;istanza\u003c/li\u003e\n\u003cli\u003eConoscenza base delle operazioni da riga di comando\u003c/li\u003e\n\u003c/ul\u003e\n\u003ch2 id=\"capire-i-componenti\"\u003eCapire i componenti\u003c/h2\u003e\n\u003ch3 id=\"instance-metadata\"\u003eInstance Metadata\u003c/h3\u003e\n\u003cp\u003eOgni istanza OCI puo\u0026rsquo; accedere ai propri metadata tramite un endpoint locale. Questi metadata includono informazioni importanti come:\u003c/p\u003e","title":"Arrestare una VM OCI dall'interno dell'istanza"},{"content":"OCI Vision: come identifichiamo i cereali? E\u0026rsquo; possibile usare OCI Vision per classificare immagini non incluse nel modello Vision predefinito, senza gestire infrastruttura e senza competenze ML profonde?\nSi\u0026rsquo;, e\u0026rsquo; possibile.\nPuoi usare OCI Vision per identificare il contenuto delle immagini e integrare questa funzionalita\u0026rsquo; nel tuo software o nel tuo business.\nVediamo come In questo esempio ho usato cereali, ma lo stesso approccio puo\u0026rsquo; essere esteso a molti oggetti visibili.\nRicorda che i dati determinano la qualita\u0026rsquo; del risultato.\nSe devi identificare un oggetto specifico, devi addestrare un modello con piu\u0026rsquo; immagini di quell\u0026rsquo;oggetto e migliorare la qualita\u0026rsquo; aggiungendo immagini rappresentative.\nHo preparato codice Python per automatizzare l\u0026rsquo;aumento del dataset e produrre piu\u0026rsquo; dati di training, ma prima servono alcune immagini di esempio.\nTutti i sample e lo script Python sono salvati in questo progetto GitHub: https://github.com/enricopesce/oci-vision-cereals Le cartelle sono definite cosi':\n. ├── README.md ├── original │ ├── corn │ ├── sorghum │ └── wheat └── preprocessing.py Ho scaricato immagini di esempio per tre tipi di semi:\nGrano: una graminacea coltivata per il seme, cereale alla base dell\u0026rsquo;alimentazione mondiale. Viene tipicamente macinato in farina per pane, pasta e altri alimenti. Mais: uno dei cereali piu\u0026rsquo; coltivati al mondo. E\u0026rsquo; usato come alimento umano, mangime per animali e materia prima industriale. Sorgo: cereale versatile usato per alimentazione, mangimi e biocarburanti. Tollera la siccita\u0026rsquo; ed e\u0026rsquo; importante nelle regioni semi-aride. Li ho salvati nella cartella original, raggruppati per nome del cereale.\nPreparare i dati per la rete neurale OCI Vision Queste immagini non sono sufficienti per addestrare un modello utile. Nei miei test il modello aveva bisogno di piu\u0026rsquo; immagini filtrate e aumentate per funzionare bene.\nIn questa piccola iterazione ho preparato uno script per preprocessare e aumentare le immagini originali usando tecniche base:\nResize e crop Rotazione casuale Luminosita\u0026rsquo; casuale Flip orizzontale casuale Altre tecniche sono documentate in questo paper .\nTrovi lo script Python qui: https://github.com/enricopesce/oci-vision-cereals/blob/main/preprocessing.py Lo script genera immagini ottimizzate e aumentate a partire dai sample originali, pronte per l\u0026rsquo;addestramento sui servizi OCI.\npython preprocessing.py Copiare i dati in un bucket OCI Object Storage Prima di importare i file processati, copiali in un bucket OCI Object Storage. I passaggi successivi useranno questo bucket come sorgente dati.\nCrea un bucket e copia tutte le cartelle processate:\noci os object bulk-upload \\ --namespace-name YOURNAMESPACENAME \\ --bucket-name YOURBUCKETNAME \\ --src-dir processed/ --content-type image/jpeg Ora siamo pronti a usare il servizio OCI Artificial Intelligence.\nEtichettare i dati con OCI Data Labeling Prima di costruire il modello dobbiamo classificare le immagini. Ogni immagine deve avere un\u0026rsquo;etichetta corrispondente al suo contenuto: grano, mais o sorgo.\nQuesta fase puo\u0026rsquo; essere ripetitiva, ma lo script di preprocessing ha gia\u0026rsquo; generato un file metadata JSONL importabile in OCI Vision.\nLa nuova cartella processed contiene tutte le immagini elaborate, classificate per cartella, e il file metadata in formato JSON lines supportato da OCI Vision.\n. ├── README.md ├── original │ ├── corn │ ├── sorghum │ └── wheat ├── preprocessing.py └── processed ├── corn ├── metadata.jsonl ├── sorghum └── wheat Ora il contenuto processato e\u0026rsquo; in YOURBUCKETNAME ed e\u0026rsquo; pronto per l\u0026rsquo;import.\nAccedi alla console OCI e vai in Analytics \u0026amp; AI \u0026gt; Machine Learning \u0026gt; Data Labeling \u0026gt; Dataset \u0026gt; Import dataset.\nCreare il modello Finalmente possiamo costruire e usare il modello OCI Vision.\nCrea un nuovo Project nella pagina OCI Vision e seleziona i dati di Data Labeling.\nVai in Analytics \u0026amp; AI \u0026gt; Machine Learning \u0026gt; Vision \u0026gt; Project.\nApri il progetto e crea un modello. Scegli Image classification come tipo e usa il dataset grains da OCI Data Labeling.\nConferma tutto e continua per avviare la build del modello.\nIn questa fase OCI costruisce automaticamente il modello. Il tempo dipende dalla complessita\u0026rsquo; dei dati e puo\u0026rsquo; arrivare fino a 24 ore.\nNon devi configurare server, comprare GPU, dividere manualmente i dati o applicare algoritmi. OCI Vision gestisce il workflow di training.\nIl modello ha un F1 score molto buono: ora possiamo testarlo.\nProvare il modello Ho scaricato nuove immagini casuali relative agli oggetti addestrati e le ho testate:\nIl modello ha restituito l\u0026rsquo;etichetta corretta per ogni immagine con confidenza superiore al 90%, un buon risultato per questo semplice esempio.\nOra il mio OCI Vision distingue i cereali.\nConsiderazioni OCI Vision rende semplice creare un servizio di classificazione immagini senza gestire infrastruttura.\nLa parte OCI e\u0026rsquo; semplice. Gran parte del lavoro e\u0026rsquo; nel preprocessing, nell\u0026rsquo;aumento e nella preparazione dei dati.\n","permalink":"https://www.enricopesce.it/it/oci-vision-identificare-cereali-con-modello-custom/","summary":"\u003ch2 id=\"oci-vision-come-identifichiamo-i-cereali\"\u003eOCI Vision: come identifichiamo i cereali?\u003c/h2\u003e\n\u003cp\u003eE\u0026rsquo; possibile usare OCI Vision per classificare immagini non incluse nel modello Vision predefinito, senza gestire infrastruttura e senza competenze ML profonde?\u003c/p\u003e\n\u003cp\u003eSi\u0026rsquo;, e\u0026rsquo; possibile.\u003c/p\u003e\n\u003cp\u003ePuoi usare OCI Vision per identificare il contenuto delle immagini e integrare questa funzionalita\u0026rsquo; nel tuo software o nel tuo business.\u003c/p\u003e\n\u003ch3 id=\"vediamo-come\"\u003eVediamo come\u003c/h3\u003e\n\u003cp\u003eIn questo esempio ho usato cereali, ma lo stesso approccio puo\u0026rsquo; essere esteso a molti oggetti visibili.\u003c/p\u003e","title":"OCI Vision: identificare cereali con un modello custom"},{"content":"Il mio primo progetto di automazione OCI Dopo 10 anni di esperienza con pratiche DevOps, automazione, infrastructure as code e molte discussioni con clienti, ho deciso di costruire uno strumento che aiuti a distribuire un\u0026rsquo;architettura Kubernetes ben definita senza richiedere competenze infrastrutturali profonde.\nProgetto Oracle Kubernetes Engine Deploy (OKED) OKED aiuta a distribuire un\u0026rsquo;infrastruttura Kubernetes completa su OCI, incluse le dipendenze di rete necessarie, senza richiedere esperienza specifica su OCI.\nI requisiti principali che mi hanno spinto a sviluppare il progetto sono:\nSemplicita\u0026rsquo;: i clienti chiedono di essere operativi in pochi minuti senza prompt complessi o competenze infrastrutturali profonde. Funzionante: molti esempi online sono complessi da capire e alcuni non funzionano. Well-architected: i clienti vogliono sicurezza e design corretti applicati di default. Le funzionalita\u0026rsquo; che differenziano questo tool dal wizard della console OCI e da altri progetti Terraform sono:\nCreazione automatica di VCN e subnetting: basta definire il CIDR della supernet. Discovery e configurazione automatica di tutti gli availability domain per distribuire i nodi e migliorare la disponibilita'. Discovery e configurazione automatica dell\u0026rsquo;immagine OKE node piu\u0026rsquo; recente, corretta e ottimizzata. File di configurazione Kubernetes generato e pronto da usare, ad esempio con export KUBECONFIG=$PWD/kubeconfig. Codice estendibile man mano che crescono le competenze su OCI. Trovi tutte le informazioni nella pagina GitHub del progetto .\nEcco una breve demo:\n","permalink":"https://www.enricopesce.it/it/ottieni-un-cluster-kubernetes-in-pochi-minuti-su-oci/","summary":"\u003ch2 id=\"il-mio-primo-progetto-di-automazione-oci\"\u003eIl mio primo progetto di automazione OCI\u003c/h2\u003e\n\u003cp\u003eDopo 10 anni di esperienza con pratiche DevOps, automazione, infrastructure as code e molte discussioni con clienti, ho deciso di costruire uno strumento che aiuti a distribuire un\u0026rsquo;architettura Kubernetes ben definita senza richiedere competenze infrastrutturali profonde.\u003c/p\u003e\n\u003ch3 id=\"progetto-oracle-kubernetes-engine-deploy-oked\"\u003eProgetto Oracle Kubernetes Engine Deploy (OKED)\u003c/h3\u003e\n\u003cp\u003eOKED aiuta a distribuire un\u0026rsquo;infrastruttura Kubernetes completa su OCI, incluse le dipendenze di rete necessarie, senza richiedere esperienza specifica su OCI.\u003c/p\u003e","title":"Ottieni un cluster Kubernetes in pochi minuti su OCI"},{"content":"Architettura Intel x86 vs ARM: analisi comparativa per tecnologie server Nel campo dinamico delle tecnologie server, il confronto tra architetture CPU e\u0026rsquo; diventato centrale, soprattutto tra l\u0026rsquo;architettura x86 di Intel e i processori basati su ARM. Questo post offre un confronto tra le due architetture, concentrandosi su metriche di performance, efficienza energetica e impatto sul settore server e cloud computing.\nApprofondimento architetturale Architettura Intel x86 L\u0026rsquo;architettura x86 di Intel, basata su un modello CISC, offre un ampio set di istruzioni e grandi capacita\u0026rsquo; di calcolo. E\u0026rsquo; nota per performance robuste e ampia compatibilita\u0026rsquo; software, motivo per cui e\u0026rsquo; stata a lungo la scelta dominante negli ambienti server tradizionali.\nArchitettura ARM L\u0026rsquo;architettura ARM usa invece un modello RISC che semplifica il design del processore e riduce i consumi. ARM eccelle nell\u0026rsquo;efficienza energetica: questa caratteristica le ha permesso di dominare nel mobile e di entrare sempre di piu\u0026rsquo; nel mercato server.\nBenchmark di performance server I processori x86 Intel eccellono in genere nei workload ad alta intensita\u0026rsquo; di calcolo grazie a frequenze elevate e cache estese. I processori ARM stanno pero\u0026rsquo; riducendo questo divario con configurazioni multi-core piu\u0026rsquo; avanzate e frequenze migliorate.\nConsidera la seguente tabella per confrontare CPU server Intel e ARM recenti:\nCaratteristica Intel Xeon Scalable CPU server basata su ARM Numero core Fino a 40 Fino a 80 Frequenza 2,3 GHz 2,6 GHz Consumo energetico 205 Watt 180 Watt Banda I/O 320 GB/s 350 GB/s Funzioni speciali Accelerazione AI Cifratura nativa Il confronto evidenzia i progressi ARM in numero di core ed efficienza energetica, mostrando quanto i processori ARM siano ormai competitivi rispetto alle CPU x86 tradizionali.\nImpatto climatico ed efficienza energetica Nel contesto di consumi energetici e impatto ambientale, ARM offre vantaggi significativi, soprattutto nei grandi data center. Minori requisiti energetici significano minore consumo, meno calore e quindi minore necessita\u0026rsquo; di raffreddamento, con risparmi economici e riduzione dell\u0026rsquo;impronta ambientale.\nEcco un confronto illustrativo in uno scenario tipico di data center:\nMetrica Impatto Intel x86 Impatto ARM Power Usage Effectiveness PUE 1,58 PUE 1,50 Raffreddamento richiesto Alto Moderato Impronta carbonica Maggiore Minore Influenza nel cloud computing Scalabilita\u0026rsquo; ed efficienza rendono i processori ARM molto interessanti nel cloud computing, dove queste caratteristiche sono essenziali per gestire grandi carichi computazionali in modo sostenibile. I principali cloud provider stanno adottando sempre piu\u0026rsquo; istanze basate su ARM per ottimizzare efficienza energetica e costi.\nProspettive future Il confronto tra Intel x86 e ARM nel dominio server continua a evolvere. ARM e\u0026rsquo; ben posizionata per guadagnare quote di mercato grazie a soluzioni di calcolo sostenibili, mentre Intel punta su architetture ibride e gestione energetica avanzata per mantenere la propria rilevanza.\nConclusione La scelta tra x86 e ARM per uso server e\u0026rsquo; sfumata e dipende da requisiti di performance, efficienza energetica e applicazioni specifiche. Le architetture x86 offrono alte prestazioni, mentre ARM offre vantaggi importanti in efficienza energetica, risultando sempre piu\u0026rsquo; interessante nei mercati attenti ai consumi.\n","permalink":"https://www.enricopesce.it/it/architettura-intel-x86-vs-arm-analisi-comparativa-per-tecnologie-server/","summary":"\u003ch2 id=\"architettura-intel-x86-vs-arm-analisi-comparativa-per-tecnologie-server\"\u003eArchitettura Intel x86 vs ARM: analisi comparativa per tecnologie server\u003c/h2\u003e\n\u003cp\u003eNel campo dinamico delle tecnologie server, il confronto tra architetture CPU e\u0026rsquo; diventato centrale, soprattutto tra l\u0026rsquo;architettura x86 di Intel e i processori basati su ARM. Questo post offre un confronto tra le due architetture, concentrandosi su metriche di performance, efficienza energetica e impatto sul settore server e cloud computing.\u003c/p\u003e\n\u003ch3 id=\"approfondimento-architetturale\"\u003eApprofondimento architetturale\u003c/h3\u003e\n\u003ch3 id=\"architettura-intel-x86\"\u003eArchitettura Intel x86\u003c/h3\u003e\n\u003cp\u003eL\u0026rsquo;architettura x86 di Intel, basata su un modello CISC, offre un ampio set di istruzioni e grandi capacita\u0026rsquo; di calcolo. E\u0026rsquo; nota per performance robuste e ampia compatibilita\u0026rsquo; software, motivo per cui e\u0026rsquo; stata a lungo la scelta dominante negli ambienti server tradizionali.\u003c/p\u003e","title":"Architettura Intel x86 vs ARM: analisi comparativa per tecnologie server"},{"content":"Se stai confrontando le shape OCI Compute Flex, la risposta breve di questo test Geekbench 6 e\u0026rsquo;: VM.Standard.E5.Flex guida per performance multicore pura, VM.Standard.A1.Flex e\u0026rsquo; la scelta piu\u0026rsquo; interessante sul costo, mentre le shape Intel restano utili quando la compatibilita\u0026rsquo; x86 e\u0026rsquo; un requisito.\nRaccomandazione rapida Obiettivo Parti da Perche' Migliore performance multicore VM.Standard.E5.Flex Score Geekbench 6 multicore piu\u0026rsquo; alto in questo test. Costo minimo con buon throughput VM.Standard.A1.Flex Score simile a E4/Optimized3 in questo benchmark, con il prezzo piu\u0026rsquo; basso in tabella. Compatibilita\u0026rsquo; x86 per workload esistenti VM.Standard3.Flex o VM.Optimized3.Flex Utile quando pacchetti, binari o supporto vendor richiedono x86. Opzione AMD x86 bilanciata VM.Standard.E4.Flex Opzione x86 a costo inferiore, ma sotto E5 nel benchmark. Questo e\u0026rsquo; uno snapshot di benchmark di marzo 2024. Usa i numeri per confrontare il comportamento relativo, poi verifica disponibilita\u0026rsquo; regionale e prezzi correnti nell\u0026rsquo;OCI Cost Estimator prima di decidere per produzione.\nAggiornamento 2026: OCI E6 Standard Compute e\u0026rsquo; ora disponibile e cambia il confronto AMD x86. Per la nuova mappa decisionale, leggi OCI E6 vs E5 vs E4: Compute Flex Shapes .\nShape OCI Compute testate Le seguenti shape standard flex sono disponibili nella maggior parte delle region OCI:\nVM.Standard.E4.Flex (Processore: AMD EPYC 7J13. Frequenza base 2,55 GHz, boost massimo 3,5 GHz) VM.Standard.E5.Flex (Processore: AMD EPYC 9J14. Frequenza base 2,4 GHz, boost massimo 3,7 GHz) VM.Standard3.Flex (Processore: Intel Xeon Platinum 8358. Frequenza base 2,6 GHz, turbo massimo 3,4 GHz) VM.Optimized3.Flex (Processore: Intel Xeon 6354. Frequenza base 3,0 GHz, turbo massimo 3,6 GHz) VM.Standard.A1.Flex (ogni OCPU corrisponde a un singolo thread hardware. Processore: Ampere Altra Q80-30. Frequenza massima 3,0 GHz) Nell\u0026rsquo;articolo Test di performance PHP con istanze OCI Compute ho testato l\u0026rsquo;esecuzione single-thread PHP sulle shape OCI Standard Flex. In questo articolo mi concentro sul comportamento multicore con Geekbench 6, usando configurazioni da 2, 4 e 8 CPU.\nPer ulteriori informazioni sui test interni Geekbench 6 , consulta la documentazione ufficiale del benchmark.\nConfronto performance Il grafico seguente confronta le performance multi-thread sulle shape OCI Compute testate:\nIl risultato piu\u0026rsquo; forte in questo test e\u0026rsquo; VM.Standard.E5.Flex.\nLa shape AMD E5 si distacca chiaramente dalle altre in score multicore. E\u0026rsquo; quindi la scelta piu\u0026rsquo; diretta quando l\u0026rsquo;applicazione usa piu\u0026rsquo; core CPU e la performance conta piu\u0026rsquo; della riduzione del costo mensile.\nLa seconda osservazione importante e\u0026rsquo; che VM.Standard.A1.Flex, VM.Standard.E4.Flex e VM.Optimized3.Flex sono abbastanza vicine in questo test: prezzo, architettura e compatibilita\u0026rsquo; del workload diventano quindi decisivi.\nConfronto costi La tabella seguente usa lo snapshot di prezzo mensile raccolto a marzo 2024 per una configurazione Oracle Linux con 8 CPU. Considerala una fotografia relativa del rapporto prezzo-prestazioni, non un listino commerciale corrente.\nShape Score multicore Prezzo mensile snapshot Risparmio A1 vs questa shape VM.Standard.A1.Flex 6275 $59.52 0% VM.Standard.E4.Flex 6266 $74.40 20% VM.Standard.E5.Flex 8335 $89.28 33% VM.Standard3.Flex 5925 $119.04 50% VM.Optimized3.Flex 6365 $149.45 60% Come scegliere tra le shape OCI Scegli VM.Standard.E5.Flex quando la performance CPU multicore pura e\u0026rsquo; il requisito principale. In questo benchmark ha lo score piu\u0026rsquo; alto e un rapporto prezzo-prestazioni molto forte.\nScegli VM.Standard.A1.Flex quando puoi eseguire il workload su ARM e vuoi minimizzare il costo tra le opzioni testate. Lo score e\u0026rsquo; vicino a E4 e Optimized3, mentre lo snapshot di prezzo mensile e\u0026rsquo; molto piu\u0026rsquo; basso.\nScegli VM.Standard3.Flex o VM.Optimized3.Flex quando la compatibilita\u0026rsquo; x86 pesa piu\u0026rsquo; dello score di benchmark. Succede con software commerciale, pacchetti nativi, immagini precompilate o dipendenze legacy.\nScegli VM.Standard.E4.Flex quando ti serve una shape AMD x86 e E5 non e\u0026rsquo; necessaria o non e\u0026rsquo; disponibile per regione e piano di capacita'.\nL\u0026rsquo;architettura ARM non e\u0026rsquo; piu\u0026rsquo; solo per mobile o dispositivi a basso consumo. Per workload server puo\u0026rsquo; essere una reale alternativa alle CPU x86 classiche, se runtime, pacchetti, immagini container e stack di osservabilita\u0026rsquo; la supportano. Per approfondire, leggi la pagina Oracle What is Arm? .\nBenchmark correlati Usa questo benchmark insieme a:\nTest di performance PHP con istanze OCI Compute , focalizzato su workload PHP. OCI Compute Standard Flex Shapes: un altro benchmark CPU multicore , un\u0026rsquo;altra vista sui benchmark multicore. Architettura Intel x86 vs ARM: analisi comparativa per tecnologie server , utile quando la decisione e\u0026rsquo; soprattutto architetturale. Generative AI: inferenza efficiente su CPU cloud , focalizzato su workload di CPU inference. FAQ Quale shape OCI Compute ha avuto il miglior score multicore Geekbench 6? VM.Standard.E5.Flex ha ottenuto il miglior risultato in questo benchmark, con score multicore 8335 nel test a 8 CPU.\nVM.Standard.A1.Flex e\u0026rsquo; una buona opzione a basso costo? Si\u0026rsquo;, se il workload supporta ARM. In questo test A1 e\u0026rsquo; vicina a E4 e Optimized3 nello score multicore, ma ha lo snapshot di prezzo mensile piu\u0026rsquo; basso.\nMeglio ARM o x86 su OCI? Scegli ARM quando lo stack applicativo e\u0026rsquo; compatibile e l\u0026rsquo;efficienza di costo e\u0026rsquo; importante. Scegli x86 quando supporto vendor, compatibilita\u0026rsquo; binaria o immagini di deployment esistenti lo richiedono.\nRisultati dettagliati Se vuoi approfondire i test Geekbench 6 e i risultati eseguiti da me, ecco una tabella con i relativi test:\nSHAPE Tipo CPU Geekbench browser VM.Optimized3.Flex Intel(R) Xeon(R) Gold 6354 CPU @ 3.00GHz https://browser.geekbench.com/v6/cpu/4837669 VM.Standard.A1.Flex Neoverse-N1 BIOS virt-4.2 https://browser.geekbench.com/v6/cpu/4837683 VM.Standard.E4.Flex AMD EPYC 7J13 64-Core Processor https://browser.geekbench.com/v6/cpu/4837682 VM.Standard.E5.Flex AMD EPYC 9J14 96-Core Processor https://browser.geekbench.com/v6/cpu/4837947 VM.Standard3.Flex Intel(R) Xeon(R) Platinum 8358 CPU @ 2.60GHz https://browser.geekbench.com/v6/cpu/4837679 ","permalink":"https://www.enricopesce.it/it/confronto-performance-multicore-delle-shape-oci-compute-standard-flex/","summary":"\u003cp\u003eSe stai confrontando le \u003cstrong\u003eshape OCI Compute Flex\u003c/strong\u003e, la risposta breve di questo test Geekbench 6 e\u0026rsquo;: \u003cstrong\u003eVM.Standard.E5.Flex\u003c/strong\u003e guida per performance multicore pura, \u003cstrong\u003eVM.Standard.A1.Flex\u003c/strong\u003e e\u0026rsquo; la scelta piu\u0026rsquo; interessante sul costo, mentre le shape Intel restano utili quando la compatibilita\u0026rsquo; x86 e\u0026rsquo; un requisito.\u003c/p\u003e\n\u003ch2 id=\"raccomandazione-rapida\"\u003eRaccomandazione rapida\u003c/h2\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eObiettivo\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eParti da\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003ePerche'\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eMigliore performance multicore\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eVM.Standard.E5.Flex\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eScore Geekbench 6 multicore piu\u0026rsquo; alto in questo test.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eCosto minimo con buon throughput\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eVM.Standard.A1.Flex\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eScore simile a E4/Optimized3 in questo benchmark, con il prezzo piu\u0026rsquo; basso in tabella.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eCompatibilita\u0026rsquo; x86 per workload esistenti\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eVM.Standard3.Flex\u003c/strong\u003e o \u003cstrong\u003eVM.Optimized3.Flex\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eUtile quando pacchetti, binari o supporto vendor richiedono x86.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003eOpzione AMD x86 bilanciata\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003cstrong\u003eVM.Standard.E4.Flex\u003c/strong\u003e\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eOpzione x86 a costo inferiore, ma sotto E5 nel benchmark.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003cp\u003eQuesto e\u0026rsquo; uno snapshot di benchmark di marzo 2024. Usa i numeri per confrontare il comportamento relativo, poi verifica disponibilita\u0026rsquo; regionale e prezzi correnti nell\u0026rsquo;OCI Cost Estimator prima di decidere per produzione.\u003c/p\u003e","title":"OCI Flex Shapes: E5 vs E4 vs A1"},{"content":"Quando si sceglie un\u0026rsquo;istanza compute, fattori come potenza di calcolo, rapporto prezzo-prestazioni e ottimizzazione del workload hanno un ruolo significativo. Concentriamoci sulle seguenti shape standard flex disponibili nella maggior parte delle region OCI:\nVM.Standard.E4.Flex (Processore: AMD EPYC 7J13. Frequenza base 2,55 GHz, boost massimo 3,5 GHz) VM.Standard.E5.Flex (Processore: AMD EPYC 9J14. Frequenza base 2,4 GHz, boost massimo 3,7 GHz) VM.Standard3.Flex (Processore: Intel Xeon Platinum 8358. Frequenza base 2,6 GHz, turbo massimo 3,4 GHz) VM.Optimized3.Flex (Processore: Intel Xeon 6354. Frequenza base 3,0 GHz, turbo massimo 3,6 GHz) VM.Standard.A1.Flex (ogni OCPU corrisponde a un singolo thread hardware. Processore: Ampere Altra Q80-30. Frequenza massima 3,0 GHz) Ho eseguito benchmark con Geekbench 6 su tre configurazioni CPU: 2, 4 e 8 core.\nPer ulteriori informazioni sui test interni eseguiti , consulta il link.\nEsploriamo i risultati in performance multi-thread:\nPossiamo vedere che la shape piu\u0026rsquo; potente e\u0026rsquo; VM.Standard.E5.Flex. Questa nuova shape basata su AMD supera in modo significativo le altre shape; i risultati, in alcuni casi, sono comunque vicini.\nMa non possiamo valutare solo le performance: nel mondo reale il rapporto prezzo-prestazioni e\u0026rsquo; un fattore decisivo.\nConfronto Costi Mensili Analizziamo i costi mensili approssimativi per ogni shape, basati sui prezzi Oracle di febbraio 2024:\nPossiamo osservare che i prezzi variano e non tutte le shape hanno lo stesso costo. Considerando la shape ARM Ampere VM.Standard.A1.Flex, si puo\u0026rsquo; ottenere una performance simile con circa il 90% del costo di VM.Optimized3.Flex o il 75% del costo di VM.Standard3.Flex.\nRaccomandazioni Scegli la tua istanza OCI Compute valutando con attenzione performance, costo e requisiti del workload. Che tu stia eseguendo database, analytics o workload AI, comprendere le performance CPU multicore aiuta a prendere decisioni piu\u0026rsquo; consapevoli.\nLa shape giusta dipende dal workload, dall\u0026rsquo;obiettivo di performance e dal budget.\n","permalink":"https://www.enricopesce.it/it/un-altro-benchmark-cpu-multicore-delle-shape-oci-compute-standard-flex/","summary":"\u003cp\u003eQuando si sceglie un\u0026rsquo;istanza compute, fattori come potenza di calcolo, rapporto prezzo-prestazioni e ottimizzazione del workload hanno un ruolo significativo. Concentriamoci sulle seguenti shape standard flex disponibili nella maggior parte delle region OCI:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003e\u003cstrong\u003eVM.Standard.E4.Flex\u003c/strong\u003e (Processore: AMD EPYC 7J13. Frequenza base 2,55 GHz, boost massimo 3,5 GHz)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVM.Standard.E5.Flex\u003c/strong\u003e (Processore: AMD EPYC 9J14. Frequenza base 2,4 GHz, boost massimo 3,7 GHz)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVM.Standard3.Flex\u003c/strong\u003e (Processore: Intel Xeon Platinum 8358. Frequenza base 2,6 GHz, turbo massimo 3,4 GHz)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVM.Optimized3.Flex\u003c/strong\u003e (Processore: Intel Xeon 6354. Frequenza base 3,0 GHz, turbo massimo 3,6 GHz)\u003c/li\u003e\n\u003cli\u003e\u003cstrong\u003eVM.Standard.A1.Flex\u003c/strong\u003e (ogni OCPU corrisponde a un singolo thread hardware. Processore: Ampere Altra Q80-30. Frequenza massima 3,0 GHz)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eHo eseguito benchmark con \u003cstrong\u003eGeekbench 6\u003c/strong\u003e su tre configurazioni CPU: 2, 4 e 8 core.\u003c/p\u003e","title":"OCI Compute Standard Flex Shapes: un altro benchmark CPU multicore"},{"content":"Kopia puo\u0026rsquo; usare OCI Object Storage come backend compatibile S3 per backup cifrati, deduplicati e compressi. L\u0026rsquo;obiettivo pratico di questa guida e\u0026rsquo; semplice: creare un repository Kopia su OCI, validarlo, eseguire il primo snapshot e sapere come riconnettersi o ripristinare dati in seguito.\nSetup rapido Step Cosa serve 1. Creare un bucket OCI Nome bucket, namespace e regione. 2. Abilitare accesso S3-compatible Customer access key e secret key per l\u0026rsquo;utente OCI. 3. Creare il repository Kopia kopia repository create s3 con endpoint S3 OCI. 4. Validare il repository kopia repository validate-provider. 5. Creare snapshot kopia snapshot create \u0026lt;path\u0026gt;. Perche\u0026rsquo; Kopia e OCI Object Storage OCI Object Storage e\u0026rsquo; utile per un repository Kopia perche\u0026rsquo; offre:\nAccesso compatibile S3, quindi Kopia puo\u0026rsquo; usare il tipo repository s3. Modello con namespace e bucket dedicati per isolare i dati di backup. Piu\u0026rsquo; storage tier: Standard, Infrequent Access e Archive. Per un repository Kopia attivo, parti da Standard o Infrequent Access; usa Archive solo quando il processo di restore gestisce il recupero degli oggetti prima dell\u0026rsquo;accesso. Vedi la documentazione Oracle sugli Object Storage tiers . Policy IAM e customer secret key, cosi\u0026rsquo; l\u0026rsquo;accesso puo\u0026rsquo; essere limitato al bucket usato per i backup. Kopia e\u0026rsquo; uno strumento di backup e restore con caratteristiche importanti per repository cloud:\nCifratura lato client prima che i dati lascino la macchina. Deduplicazione, cosi\u0026rsquo; blocchi ripetuti vengono archiviati una sola volta. Compressione, per ridurre dati trasferiti e archiviati. Policy di retention per piani hourly, daily, weekly, monthly o custom. Modalita\u0026rsquo; CLI, GUI e server, a seconda del modo in cui vuoi gestirlo. In questa implementazione ho usato la documentazione Kopia:\nguida di installazione guida getting started reference del comando repository create s3 Dettagli OCI richiesti da Kopia Per creare un repository S3 con Kopia ti servono questi dettagli OCI:\nBucket namespace Nome della regione Questi dati compongono l\u0026rsquo;endpoint completo delle API compatibili S3:\n{bucketnamespace}.compat.objectstorage.{region}.oraclecloud.com\nInoltre ti servono:\nNome del bucket Utente con permessi e customer access/secret key Creare il repository Kopia S3 Una volta raccolte le informazioni, il comando sara\u0026rsquo; simile a questo. Le chiavi sono mascherate:\nenrico.pesce@enrico ~ % kopia repository create s3 \\ --bucket=backup \\ --region=eu-frankfurt-1 \\ --endpoint=frddomvd8z4q.compat.objectstorage.eu-frankfurt-1.oraclecloud.com \\ --access-key=3fdsfdsfdsfsdf4543gtfreterter \\ --secret-access-key=dsdsadsadsadasdasdasdau7LF/KEjKZDhb8Q= Durante la creazione Kopia chiede una password del repository. Conservala fuori dal repository e fuori da OCI Object Storage: senza quella password non puoi decifrare il contenuto del backup.\nSe vuoi testare Object Storage e la compatibilita\u0026rsquo;, puoi eseguire un test che effettua operazioni I/O nel repository:\nenrico.pesce@enrico ~ % kopia repository validate-provider Opening 4 equivalent storage connections... Validating storage capacity and usage Validating blob list responses Validating non-existent blob responses Writing blob (5000000 bytes) Validating conditional creates... Validating list responses... Validating partial reads... Validating full reads... Validating metadata... Running concurrency test for 30s... All good. Cleaning up temporary data... Riconnettersi al repository Kopia Per collegarti al repository:\nenrico.pesce@enrico ~ % kopia repository connect s3 \\ --bucket=backup \\ --region=eu-frankfurt-1 \\ --endpoint=frddomvd8z4q.compat.objectstorage.eu-frankfurt-1.oraclecloud.com \\ --access-key=3fdsfdsfdsfsdf4543gtfreterter \\ --secret-access-key=dsdsadsadsadasdasdasdau7LF/KEjKZDhb8Q= Per controllare le informazioni del repository, incluso uno snippet utile per riconnettersi senza scrivere credenziali in chiaro nella command line:\nenrico.pesce@enrico ~ % kopia repository status -t -s Config file: /Users/enrico.pesce/Library/Application Support/kopia/repository.config Description: Repository in S3: frddomvd8z4q.compat.objectstorage.eu-frankfurt-1.oraclecloud.com backup Hostname: enrico Username: enrico.pesce Read-only: false Format blob cache: 15m0s Storage type: s3 Storage capacity: unbounded Storage config: { \u0026#34;bucket\u0026#34;: \u0026#34;backup\u0026#34;, \u0026#34;endpoint\u0026#34;: \u0026#34;frddomvd8z4q.compat.objectstorage.eu-frankfurt-1.oraclecloud.com\u0026#34;, \u0026#34;accessKeyID\u0026#34;: .... ...To reconnect to the repository use: $ kopia repository connect from-config --token eyJ2ZXJzaW9uIjoiMSIsInN0b3JhZ2UiOnsidHlwZSI6InMzIiwiY29uZmlnIjp7ImJ1Y2tldCI6ImJhY2t1cCIsImVuZHBvaW50IjoiZnJkZG9tdmQ4ejRxLmNvbXBhdC5vYmplY3RzdG9yYWdlLmVdsgfdsgdfsgfdsgo537hn9058jg9v-5869g5k89d-kf8946578bj06vfm056jvk0y458bnj908jg9v6k8fy989f658965jgy968jg94586b9k4869g84y6hgb8j69b8hj69hk8g95687h969bmtiomgufiunfbter Ora hai un repository pronto per archiviare i tuoi dati con Kopia.\nCreare il primo snapshot Per esempio puoi creare un backup della cartella Downloads con questo semplice comando usando le impostazioni predefinite:\nenrico.pesce@enrico ~ % kopia snapshot create $HOME/Downloads Snapshotting enrico.pesce@enrico:/Users/enrico.pesce/Downloads ... * 0 hashing, 0 hashed (0 B), 5175 cached (14 GB), uploaded 202 B, estimating... Created snapshot with root k24214076e958e761485b2af904f03b0b and ID de70da14f1c0264b3cbc4016dee67a7f in 0s Completata la copia, puoi gia\u0026rsquo; elencare gli snapshot creati. Nel mio caso, dopo alcuni giorni:\nenrico.pesce@enrico ~ % kopia snapshot list $HOME/Downloads enrico.pesce@enrico:/Users/enrico.pesce/Downloads 2024-02-01 00:06:22 CET k081e4271a2db92d7eefe1ca035ff72c2 15.2 GB drwx------ files:11881 dirs:3150 (daily-5,monthly-2) 2024-02-01 15:00:00 CET k5ed33706ce70d8984d89a8e8258a959f 15.2 GB drwx------ files:11882 dirs:3150 (latest-6..10,daily-4) + 4 identical snapshots until 2024-02-02 01:03:16 CET 2024-02-02 13:31:20 CET k0db08b85d87ee5f366904d44eb149079 15.2 GB drwx------ files:11883 dirs:3150 (latest-5,daily-3,weekly-2) 2024-02-05 11:52:21 CET k2e413b9843f14822438c57be23a1356a 15.2 GB drwx------ files:11895 dirs:3151 (latest-3..4,hourly-3..4,daily-2) + 1 identical snapshots until 2024-02-05 13:00:00 CET 2024-02-06 10:46:14 CET k9eeba61e888e68e09ab26cd2aca07095 15.4 GB drwx------ files:11898 dirs:3158 (latest-1..2,hourly-1..2,daily-1,weekly-1,monthly-1,annual-1) + 1 identical snapshots until 2024-02-06 13:00:00 CET Restore e retention di base Un backup e\u0026rsquo; utile solo se il restore e\u0026rsquo; stato testato. Kopia puo\u0026rsquo; ripristinare un file o una directory da uno snapshot con:\nkopia snapshot restore \u0026lt;snapshot-id\u0026gt; ./restore-test Esegui un piccolo test di restore dopo aver creato il repository, poi programma controlli periodici. Questo fa emergere problemi di accesso al repository, password, lifecycle e retention prima di un incidente.\nPer la retention, configura le policy invece di affidarti alla pulizia manuale. Le policy Kopia permettono di controllare frequenza degli snapshot, finestre di retention e impostazioni di compressione per ogni percorso protetto.\nScreenshot KopiaUI Se non ami la console, ti consiglio la GUI semplice e comoda KopiaUI , intuitiva da usare. Ecco alcuni screenshot:\ndove puoi controllare le cartelle protette: vedere tutte le iterazioni di backup nel tempo con tag colorati: la lista dei file protetti: il ripristino dei file e\u0026rsquo; molto semplice: la configurazione delle policy e\u0026rsquo; completa e granulare: Checklist di troubleshooting Se la creazione del repository fallisce, verifica il formato dell\u0026rsquo;endpoint OCI: {bucketnamespace}.compat.objectstorage.{region}.oraclecloud.com. Se l\u0026rsquo;autenticazione fallisce, controlla customer access key e secret key, non la normale API key OCI. Se la validazione fallisce, conferma che l\u0026rsquo;utente possa elencare, leggere e scrivere oggetti nel bucket target. Se i restore sono lenti o falliscono, controlla se regole lifecycle hanno spostato oggetti del repository in Archive. Se lo storage cresce piu\u0026rsquo; del previsto, rivedi compressione, retention degli snapshot ed eventuali file generati da escludere. Ora puoi usare Kopia con OCI Object Storage e testare sia backup sia restore prima di affidarti al repository.\n","permalink":"https://www.enricopesce.it/it/come-fare-backup-dei-dati-in-10-minuti-con-kopia-e-oci/","summary":"\u003cp\u003eKopia puo\u0026rsquo; usare \u003cstrong\u003eOCI Object Storage\u003c/strong\u003e come backend compatibile S3 per backup cifrati, deduplicati e compressi. L\u0026rsquo;obiettivo pratico di questa guida e\u0026rsquo; semplice: creare un repository Kopia su OCI, validarlo, eseguire il primo snapshot e sapere come riconnettersi o ripristinare dati in seguito.\u003c/p\u003e\n\u003ch2 id=\"setup-rapido\"\u003eSetup rapido\u003c/h2\u003e\n\u003ctable\u003e\n\t\u003cthead\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003cth\u003eStep\u003c/th\u003e\n\t\t\t\t\t\u003cth\u003eCosa serve\u003c/th\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/thead\u003e\n\t\u003ctbody\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e1. Creare un bucket OCI\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eNome bucket, namespace e regione.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e2. Abilitare accesso S3-compatible\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003eCustomer access key e secret key per l\u0026rsquo;utente OCI.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e3. Creare il repository Kopia\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ekopia repository create s3\u003c/code\u003e con endpoint S3 OCI.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e4. Validare il repository\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ekopia repository validate-provider\u003c/code\u003e.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\t\t\u003ctr\u003e\n\t\t\t\t\t\u003ctd\u003e5. Creare snapshot\u003c/td\u003e\n\t\t\t\t\t\u003ctd\u003e\u003ccode\u003ekopia snapshot create \u0026lt;path\u0026gt;\u003c/code\u003e.\u003c/td\u003e\n\t\t\t\u003c/tr\u003e\n\t\u003c/tbody\u003e\n\u003c/table\u003e\n\u003ch2 id=\"perche-kopia-e-oci-object-storage\"\u003ePerche\u0026rsquo; Kopia e OCI Object Storage\u003c/h2\u003e\n\u003cp\u003eOCI Object Storage e\u0026rsquo; utile per un repository Kopia perche\u0026rsquo; offre:\u003c/p\u003e","title":"Backup Kopia OCI: setup S3"},{"content":"Tempo fa ho sviluppato un tool con l\u0026rsquo;obiettivo di valutare il reale miglioramento di performance tra diverse versioni di PHP. Successivamente ho cercato di capire quale tipo di istanza AWS fosse piu\u0026rsquo; performante. Poiche\u0026rsquo; AWS non permette una personalizzazione libera di CPU e RAM, volevo esplorare le differenze tra le varie istanze e capire quale fosse piu\u0026rsquo; conveniente.\nDurante le vacanze ho esteso questo progetto e ho svolto la stessa analisi con OCI , Oracle Cloud Infrastructure.\nLa differenza significativa rispetto ad AWS e\u0026rsquo; che con OCI e\u0026rsquo; possibile scegliere la shape, cioe\u0026rsquo; la tecnologia sottostante, e poi selezionare in modo flessibile CPU e RAM. I test sono quindi condotti sulle singole shape, invece che su un numero elevato di tipi di istanza.\nPer approfondire, le shape disponibili sono:\nShape basate su tecnologia AMD VM.Standard.E4.Flex (Processore: AMD EPYC 7J13. Frequenza base 2,55 GHz, boost massimo 3,5 GHz) VM.Standard.E5.Flex (Processore: AMD EPYC 9J14. Frequenza base 2,4 GHz, boost massimo 3,7 GHz) Shape basate su tecnologia Intel VM.Standard3.Flex (Processore: Intel Xeon Platinum 8358. Frequenza base 2,6 GHz, turbo massimo 3,4 GHz) VM.Optimized3.Flex (Processore: Intel Xeon 6354. Frequenza base 3,0 GHz, turbo massimo 3,6 GHz) Shape basate su tecnologia ARM64 Ampere VM.Standard.A1.Flex (ogni OCPU corrisponde a un singolo thread hardware. Processore: Ampere Altra Q80-30. Frequenza massima 3,0 GHz) Per chiarezza, in questo test non sono state selezionate shape bare metal, ma solo macchine virtuali.\nIl test esegue una suite di benchmark open source, la Phoronix Test Suite , usando due test PHP specifici:\nPHP Micro Benchmarks PHPBench Il test e\u0026rsquo; di tipo single-threaded. Non valutiamo quindi quanto un server possa scalare su piu\u0026rsquo; thread o CPU; ci concentriamo invece sulla velocita\u0026rsquo; di esecuzione di uno script PHP nel suo comportamento naturale a singolo thread.\nIn sintesi, il test usa una singola OCPU e 16 GB di RAM. Test con un numero maggiore di OCPU non produrrebbero ottimizzazioni in questo scenario specifico, perche\u0026rsquo; non verrebbero utilizzate.\nAl momento non ho usato le ultime versioni PHP dal noto repository Remi , ma le versioni PHP ufficiali incluse nella distribuzione Oracle Linux . In futuro vorrei testare anche soluzioni esterne piu\u0026rsquo; recenti.\nI risultati per PHP 8.0 sono i seguenti: Possiamo osservare che la nuova shape VM.Standard.E5.Flex risulta leggermente vincente anche rispetto a Intel, affermandosi come la shape piu\u0026rsquo; veloce per eseguire script PHP. Al secondo e terzo posto troviamo VM.Optimized3.Flex e VM.Standard3.Flex, cioe\u0026rsquo; le due shape Intel disponibili.\nIn penultima posizione c\u0026rsquo;e\u0026rsquo; la precedente tecnologia AMD, VM.Standard.E4.Flex, mentre l\u0026rsquo;ultima posizione e\u0026rsquo; di VM.Standard.A1.Flex. In questo caso servirebbe approfondire se il risultato sia influenzato anche da una non perfetta ottimizzazione delle vecchie versioni PHP per tecnologia ARM.\nPossiamo dichiarare la nuova VM.Standard.E5.Flex vincitrice assoluta, non solo in termini di performance ma anche di costo. Sul podio i costi per ogni shape sono:\nB97384 Compute - Standard - E5 - OCPU 20,76 euro al mese B93311 Compute - Optimized - X9 - OCPU 37,36 euro al mese B94176 Compute - Standard - X9 - OCPU 27,68 euro al mese I costi derivano dal cloud cost estimator a gennaio 2024.\nLa tecnologia E5, oltre a essere la piu\u0026rsquo; veloce, e\u0026rsquo; anche la piu\u0026rsquo; economica sul podio.\nVale comunque la pena notare che la shape VM.Standard.A1.Flex, arrivata ultima, e\u0026rsquo; anche la piu\u0026rsquo; economica in assoluto, con un costo stimato di soli 6,70 euro al mese.\nIdee per un futuro articolo includono il test delle ultime versioni PHP dal repository Remi e la verifica di eventuali migliori performance su ARM. Sarebbe interessante anche capire se, in workload multiprocessore, ARM possa superare x86 in termini di performance.\n","permalink":"https://www.enricopesce.it/it/test-di-performance-php-con-istanze-oci-compute/","summary":"\u003cp\u003eTempo fa ho sviluppato un \u003ca href=\"https://github.com/enricopesce/php-performance\" target=\"_blank\" rel=\"noopener noreferrer\"\u003etool\u003c/a\u003e\n con l\u0026rsquo;obiettivo di valutare il reale miglioramento di performance tra diverse versioni di PHP. Successivamente ho cercato di capire quale tipo di istanza AWS fosse piu\u0026rsquo; performante. Poiche\u0026rsquo; AWS non permette una personalizzazione libera di CPU e RAM, volevo esplorare le differenze tra le varie istanze e capire quale fosse piu\u0026rsquo; conveniente.\u003c/p\u003e\n\u003cp\u003eDurante le vacanze ho esteso questo progetto e ho svolto la stessa analisi con \u003ca href=\"https://www.oracle.com/it/cloud/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOCI\u003c/a\u003e\n, Oracle Cloud Infrastructure.\u003c/p\u003e","title":"Test di performance PHP con istanze OCI Compute"},{"content":"In questo articolo sfrutteremo al massimo le capacita\u0026rsquo; di OCI, abbracciando questi principi:\nScalabilita' Resilienza Flessibilita' Sicurezza Automazione Il progetto loadfileintoadw si trova nello stesso repository GitHub usato finora per parlare di OCI Functions: fn-examples .\nQuesto esempio aiuta a capire come integrare piu\u0026rsquo; servizi OCI e sfruttare meglio il cloud provider.\nSimuleremo una serie di stazioni meteo che scrivono un file CSV con dati di campionamento, come temperatura e umidita\u0026rsquo;. Il sensore carica automaticamente il file in un bucket Object Storage.\nL\u0026rsquo;elaborazione viene invocata automaticamente tramite una Function che, in questo caso, converte il formato del file da CSV a JSON e lo salva in modo nativo in un Autonomous Database serverless.\nIl codice IaC e\u0026rsquo; stato sviluppato per eseguire l\u0026rsquo;intero deployment, dall\u0026rsquo;infrastruttura alla funzione. Dentro la cartella del progetto basta eseguire il comando:\nterraform apply Se non hai familiarita\u0026rsquo; con Terraform, ti consiglio di consultare la documentazione ufficiale , il tutorial e il video .\n","permalink":"https://www.enricopesce.it/it/ingestion-dati-scalabile-e-serverless-con-oci-functions/","summary":"\u003cp\u003eIn questo articolo sfrutteremo al massimo le capacita\u0026rsquo; di OCI, abbracciando questi principi:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003eScalabilita'\u003c/li\u003e\n\u003cli\u003eResilienza\u003c/li\u003e\n\u003cli\u003eFlessibilita'\u003c/li\u003e\n\u003cli\u003eSicurezza\u003c/li\u003e\n\u003cli\u003eAutomazione\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003eIl progetto \u003ccode\u003eloadfileintoadw\u003c/code\u003e si trova nello stesso repository GitHub usato finora per parlare di OCI Functions: \u003ca href=\"https://github.com/enricopesce/fn-examples/tree/main/loadfileintoadw\" target=\"_blank\" rel=\"noopener noreferrer\"\u003efn-examples\u003c/a\u003e\n.\u003c/p\u003e\n\u003cp\u003eQuesto esempio aiuta a capire come integrare piu\u0026rsquo; servizi OCI e sfruttare meglio il cloud provider.\u003c/p\u003e\n\u003cp\u003eSimuleremo una serie di stazioni meteo che scrivono un file CSV con dati di campionamento, come temperatura e umidita\u0026rsquo;. Il sensore carica automaticamente il file in un bucket Object Storage.\u003c/p\u003e","title":"Ingestion dati scalabile e serverless con OCI Functions"},{"content":"Introduzione al database cloud piu\u0026rsquo; moderno del mercato Oracle Autonomous Database e\u0026rsquo; un database cloud che usa tecniche di machine learning per automatizzare tuning, sicurezza, backup, aggiornamenti e altre procedure di gestione tradizionalmente svolte da un DBA. A differenza di un database convenzionale, Autonomous svolge queste e altre attivita\u0026rsquo; senza bisogno di intervento umano.\nPerche\u0026rsquo; usare Autonomous? I database contengono dati aziendali critici e sono fondamentali per il funzionamento delle organizzazioni moderne. I DBA sono spesso impegnati in attivita\u0026rsquo; ripetitive e manuali di gestione e manutenzione. Quando le attivita\u0026rsquo; amministrative aumentano, cresce anche il rischio di errore umano, con possibili conseguenze molto gravi.\nLe applicazioni aziendali continuano ad aggiungere record ai database esistenti e usano quei dati per creare report, analizzare trend o rilevare anomalie. Questo puo\u0026rsquo; far crescere i database fino a molti terabyte e renderli sempre piu\u0026rsquo; complessi da gestire, proteggere e ottimizzare. Allo stesso tempo, i vettori di attacco aumentano e la mancanza di aggiornamenti di sicurezza espone i dati a rischi significativi.\nQuesto amplifica la necessita\u0026rsquo; di una gestione efficiente e sicura del database, capace di migliorare la sicurezza dei dati, ridurre i downtime e aumentare le prestazioni diminuendo l\u0026rsquo;esposizione all\u0026rsquo;errore umano. Autonomous Database puo\u0026rsquo; rispondere a queste esigenze.\nBenefici di Autonomous Rispetto alle soluzioni tradizionali ci sono diversi vantaggi:\nAlta disponibilita\u0026rsquo;, massime prestazioni e sicurezza, inclusi aggiornamenti e fix automatici. Eliminazione di attivita\u0026rsquo; manuali soggette a errore tramite automazione. Riduzione dei costi e miglioramento della produttivita\u0026rsquo; automatizzando attivita\u0026rsquo; ripetitive. Possibilita\u0026rsquo; di dedicare il personale di gestione database ad attivita\u0026rsquo; a maggior valore. Funzionalita\u0026rsquo; principali di Autonomous Provisioning automatico Crea automaticamente database mission-critical fault tolerant e altamente affidabili. La soluzione permette scalabilita\u0026rsquo; orizzontale, protezione in caso di guasti hardware e aggiornamenti senza bloccare le applicazioni.\nConfigurazione automatica Il database ottimizza automaticamente la propria configurazione in base al workload. Dalla memoria ai formati dati e alle strutture di accesso, tutto viene ottimizzato per migliorare le prestazioni. I clienti possono caricare i dati e iniziare.\nAuto-indexing Identifica automaticamente gli indici mancanti che potrebbero velocizzare le applicazioni. Valida ogni indice prima di implementarlo e usa tecniche di machine learning per imparare dai propri errori.\nScaling automatico Il database scala automaticamente le risorse di calcolo verso l\u0026rsquo;alto o verso il basso in base al workload. Lo scaling avviene online senza bloccare le applicazioni.\nProtezione automatica dei dati Protegge automaticamente i dati sensibili e regolamentati attraverso una console di gestione unificata. Valuta configurazione, utenti, dati sensibili e attivita\u0026rsquo; anomale del database.\nSicurezza automatizzata Applica automaticamente cifratura per database, backup e connessioni di rete. L\u0026rsquo;assenza di accesso al sistema operativo e di privilegi amministrativi riduce il rischio di attacchi e protegge anche da possibili utenti interni malevoli.\nBackup automatici Esegue backup giornalieri automatici del database. E\u0026rsquo; possibile ripristinare il database a un momento specifico entro gli ultimi 60 giorni.\nPatching automatico Applica patch e aggiornamenti senza downtime. Le applicazioni continuano a funzionare mentre le patch vengono installate in modo progressivo sui nodi o server del cluster.\nRilevamento e risoluzione automatica Usando pattern recognition, i guasti hardware vengono previsti automaticamente senza lunghi timeout. Gli I/O vengono reindirizzati subito verso dispositivi funzionanti per evitare blocchi del database. Il monitoraggio continuo genera service request per eventi imprevisti.\nFailover automatico Failover automatico senza perdita di dati, trasparente per le applicazioni finali. Fornisce SLA del 99,995%.\nPer approfondire, consiglio la pagina ufficiale del prodotto .\n","permalink":"https://www.enricopesce.it/it/oracle-autonomous-database/","summary":"\u003ch2 id=\"introduzione-al-database-cloud-piu-moderno-del-mercato\"\u003eIntroduzione al database cloud piu\u0026rsquo; moderno del mercato\u003c/h2\u003e\n\u003cp\u003eOracle Autonomous Database e\u0026rsquo; un database cloud che usa tecniche di machine learning per automatizzare tuning, sicurezza, backup, aggiornamenti e altre procedure di gestione tradizionalmente svolte da un DBA. A differenza di un database convenzionale, Autonomous svolge queste e altre attivita\u0026rsquo; senza bisogno di intervento umano.\u003c/p\u003e\n\u003ch3 id=\"perche-usare-autonomous\"\u003ePerche\u0026rsquo; usare Autonomous?\u003c/h3\u003e\n\u003cp\u003eI database contengono dati aziendali critici e sono fondamentali per il funzionamento delle organizzazioni moderne. I DBA sono spesso impegnati in attivita\u0026rsquo; ripetitive e manuali di gestione e manutenzione. Quando le attivita\u0026rsquo; amministrative aumentano, cresce anche il rischio di errore umano, con possibili conseguenze molto gravi.\u003c/p\u003e","title":"Oracle Autonomous Database"},{"content":"Dopo aver visto come creare un\u0026rsquo;immagine custom nel caso precedente , dove abbiamo installato il client Oracle, ora proviamo a usare questa immagine custom per connetterci a un database Oracle.\nSfrutteremo al massimo le capacita\u0026rsquo; del cloud. In questo esempio useremo la metodologia Infrastructure as Code (IaC) per fornire un\u0026rsquo;architettura reale, facilmente replicabile da chiunque.\nIl progetto toautonomous si trova nello stesso repository GitHub usato finora per parlare di OCI Functions: fn-examples . Il README del progetto descrive la procedura di configurazione dell\u0026rsquo;infrastruttura.\nSe non hai familiarita\u0026rsquo; con Terraform, ti consiglio di consultare la documentazione ufficiale , il tutorial e il video .\nNel mio caso il file terraform.tfvars sara\u0026rsquo; simile a questo, con valori modificati:\n1 2 3 4 5 6 7 8 tenancy_ocid = \u0026#34;ocid1.tenancy.oc1..aaaaaaaao4a5a\u0026#34; region = \u0026#34;eu-frankfurt—l\u0026#34; compartment_id = \u0026#34;ocid1.compartment.oc1..aaaaaaaawdnpdyjvbala\u0026#34; root_compartment_id = \u0026#34;ocid1.tenancy.oc1..aaaaaaaa2h4xgua7d4a5a\u0026#34; registry = \u0026#34;fra.ocir.io/frddomvd8z4q/functions\u0026#34; application_name = \u0026#34;toautonomous\u0026#34; vault_ocid = \u0026#34;ocid1.vault.oc1.eu-frankfurt-1.dzsgmkchaafmg.abthe2a\u0026#34; vault_key_ocid = \u0026#34;ocid1.key.oc1.eu-frankfurt-1.dzsgmkchaafmga2ra\u0026#34; Il codice IaC e\u0026rsquo; stato sviluppato per gestire l\u0026rsquo;intero deployment: infrastruttura, build del container custom per la funzione e rilascio. Dentro la cartella del progetto e\u0026rsquo; quindi sufficiente eseguire il comando indicato nel README.\nVerranno create diverse risorse, non facilmente rappresentabili da questo grafo di dipendenze generato con Terraform:\nLa situazione e\u0026rsquo; piu\u0026rsquo; semplice di quanto sembri. Le principali risorse OCI usate sono:\nVCN Autonomous DB Function Vault Logging Vale la pena notare che prima della build la funzione attende la creazione del database e include il wallet di autenticazione dentro l\u0026rsquo;immagine della funzione. Allo stesso modo, la password dell\u0026rsquo;utente amministrativo viene salvata e cifrata nel servizio Vault e recuperata a runtime dalla funzione quando necessario, senza salvare credenziali nel codice.\nQueste implementazioni rendono il progetto di esempio molto sicuro.\nQui trovi il file della funzione per comprenderne meglio il funzionamento.\n","permalink":"https://www.enricopesce.it/it/accedere-ad-autonomous-database-da-una-oci-function/","summary":"\u003cp\u003eDopo aver visto come creare un\u0026rsquo;immagine custom nel \u003ca href=\"https://www.enricopesce.it/it/oci-function-con-immagine-custom/\"\u003ecaso precedente\u003c/a\u003e\n, dove abbiamo installato il client Oracle, ora proviamo a usare questa immagine custom per connetterci a un database Oracle.\u003c/p\u003e\n\u003cp\u003eSfrutteremo al massimo le capacita\u0026rsquo; del cloud. In questo esempio useremo la metodologia Infrastructure as Code (IaC) per fornire un\u0026rsquo;architettura reale, facilmente replicabile da chiunque.\u003c/p\u003e\n\u003cp\u003eIl progetto \u003ccode\u003etoautonomous\u003c/code\u003e si trova nello stesso repository GitHub usato finora per parlare di OCI Functions: \u003ca href=\"https://github.com/enricopesce/fn-examples/tree/main/toautonomous\" target=\"_blank\" rel=\"noopener noreferrer\"\u003efn-examples\u003c/a\u003e\n. Il README del progetto descrive la procedura di configurazione dell\u0026rsquo;infrastruttura.\u003c/p\u003e","title":"Accedere ad Autonomous Database da una OCI Function"},{"content":"Come abbiamo visto in altri articoli, e\u0026rsquo; possibile usare il progetto FN con diversi linguaggi di programmazione tramite immagini container predefinite. I linguaggi ufficialmente supportati sono:\ngo java Node.js ruby Python C# Puoi farlo con la direttiva runtime, ad esempio:\nfn init --runtime python test Il comando produce un file func.yaml di questo tipo:\n1 2 3 4 5 6 7 8 schema_version: 20180708 name: hello version: 0.0.1 runtime: python build_image: fnproject/python:3.9-dev run_image: fnproject/python:3.9 entrypoint: /python/bin/fdk /function/func.py handler memory: 256 In alcuni casi, pero\u0026rsquo;, le immagini predefinite non sono sufficienti: puo\u0026rsquo; servire supporto extra per un linguaggio, driver aggiuntivi o strumenti non presenti.\nPer risolvere il problema possiamo usare un Dockerfile e un ambiente custom. Possiamo estendere l\u0026rsquo;immagine FN di base oppure partire da un\u0026rsquo;immagine completamente diversa.\nCome demo ho creato questo esempio . In particolare il file func.yaml e\u0026rsquo; il seguente:\n1schema_version: 20180708 2name: customimage 3version: 0.0.1 4runtime: docker 5memory: 256 In questo modo FN usa un Dockerfile locale, salvato allo stesso livello, per creare l\u0026rsquo;ambiente di esecuzione della funzione. Nell\u0026rsquo;esempio il Dockerfile e\u0026rsquo; questo:\n1FROM fnproject/python:3.9 2WORKDIR /function 3ADD requirements.txt /function/ 4 5RUN pip3 install --target /python/ --no-cache --no-cache-dir -r requirements.txt \u0026amp;\u0026amp;\\ 6 rm -fr ~/.cache/pip /tmp* requirements.txt func.yaml Dockerfile .venv \u0026amp;\u0026amp;\\ 7 chmod -R o+r /python 8 9# install Oracle database client 10RUN microdnf install oracle-instantclient-release-el8 \u0026amp;\u0026amp;\\ 11 microdnf install oracle-instantclient-basic \u0026amp;\u0026amp;\\ 12 microdnf clean all 13 14ADD . /function/ 15 16RUN chmod -R o+r /function 17 18ENV PYTHONPATH=/function:/python 19 20ENTRYPOINT [\u0026#34;/python/bin/fdk\u0026#34;, \u0026#34;/function/func.py\u0026#34;, \u0026#34;handler\u0026#34;] In questo Dockerfile abbiamo personalizzato l\u0026rsquo;immagine ufficiale Python 3.9 con il client database Oracle.\nE\u0026rsquo; possibile fare test locali senza distribuire ogni volta l\u0026rsquo;immagine nel repository remoto usando l\u0026rsquo;opzione --local nella fase di deploy:\nfn deploy --app app --local Eseguendo il server FN in locale sara\u0026rsquo; possibile eseguire il codice della funzione come su OCI, ma localmente.\nAvvia quindi in un terminale separato l\u0026rsquo;istanza del server FN:\nfn start E in un altro terminale il classico comando di invocazione, per esempio:\necho -n \u0026#39;{\u0026#34;name\u0026#34;: \u0026#34;Oracle\u0026#34;}\u0026#39; | fn invoke app hello ","permalink":"https://www.enricopesce.it/it/oci-function-con-immagine-custom/","summary":"\u003cp\u003eCome abbiamo visto in altri articoli, e\u0026rsquo; possibile usare il progetto FN con diversi linguaggi di programmazione tramite immagini container predefinite. I linguaggi ufficialmente supportati sono:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003ego\u003c/li\u003e\n\u003cli\u003ejava\u003c/li\u003e\n\u003cli\u003eNode.js\u003c/li\u003e\n\u003cli\u003eruby\u003c/li\u003e\n\u003cli\u003ePython\u003c/li\u003e\n\u003cli\u003eC#\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp\u003ePuoi farlo con la direttiva runtime, ad esempio:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-console\" data-lang=\"console\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003efn init --runtime python test\n\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\u003cp\u003eIl comando produce un file \u003ccode\u003efunc.yaml\u003c/code\u003e di questo tipo:\u003c/p\u003e\n\u003cdiv class=\"highlight\"\u003e\u003cdiv style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\n\u003ctable style=\"border-spacing:0;padding:0;margin:0;border:0;\"\u003e\u003ctr\u003e\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e1\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e2\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e3\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e4\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e5\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e6\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e7\n\u003c/span\u003e\u003cspan style=\"white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#7f7f7f\"\u003e8\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\n\u003ctd style=\"vertical-align:top;padding:0;margin:0;border:0;;width:100%\"\u003e\n\u003cpre tabindex=\"0\" style=\"color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;\"\u003e\u003ccode class=\"language-yaml\" data-lang=\"yaml\"\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eschema_version\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003e20180708\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003ename\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003ehello\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eversion\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003e0.0.1\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eruntime\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003epython\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003ebuild_image\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003efnproject/python:3.9-dev\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003erun_image\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003efnproject/python:3.9\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003eentrypoint\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003e/python/bin/fdk /function/func.py handler\u003c/span\u003e\n\u003c/span\u003e\u003c/span\u003e\u003cspan style=\"display:flex;\"\u003e\u003cspan\u003e\u003cspan style=\"color:#f92672\"\u003ememory\u003c/span\u003e: \u003cspan style=\"color:#ae81ff\"\u003e256\u003c/span\u003e\u003c/span\u003e\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/td\u003e\u003c/tr\u003e\u003c/table\u003e\n\u003c/div\u003e\n\u003c/div\u003e\n\u003cp\u003eIn alcuni casi, pero\u0026rsquo;, le immagini predefinite non sono sufficienti: puo\u0026rsquo; servire supporto extra per un linguaggio, driver aggiuntivi o strumenti non presenti.\u003c/p\u003e","title":"OCI Function con immagine custom"},{"content":"Il servizio OCI Functions permette di eseguire codice su infrastruttura che non devi gestire. In questo articolo ho presentato un esempio base di OCI Function sviluppata in Python.\nUna funzionalita\u0026rsquo; molto interessante e\u0026rsquo; che le funzioni possono essere invocate automaticamente da altri servizi tramite un evento. Possiamo quindi eseguire codice in risposta a un\u0026rsquo;azione nel cloud OCI oppure usare una function come collegamento tra piu\u0026rsquo; servizi cloud che compongono un workload complesso.\nIn questo caso vediamo come invocare una funzione tramite un evento generato da un altro servizio OCI, nello specifico quando copiamo un file in Object Storage.\nCon l\u0026rsquo;aumento della complessita\u0026rsquo; infrastrutturale introduciamo anche un nuovo concetto chiamato IaC , utile per facilitare il deployment delle configurazioni cloud. In particolare useremo un template Terraform , ampiamente supportato su OCI.\nEseguiamo quindi i due comandi per creare l\u0026rsquo;infrastruttura su OCI:\nterraform init terraform apply Una volta creata l\u0026rsquo;infrastruttura, possiamo testare l\u0026rsquo;esecuzione della funzione func.py inserendo un file nel bucket.\necho \u0026#34;Hello world!\u0026#34; \u0026gt; hello.txt oci os object put --bucket-name test --file hello.txt Dopo la copia del file, la function viene attivata e tramite i log possiamo verificare esecuzione e output.\nQuesto esempio abbastanza semplice aiuta a capire come gli eventi permettano di creare automatismi e, in questo caso, accedere ai file in modo dinamico e scalabile.\nIn scenari piu\u0026rsquo; complessi e\u0026rsquo; possibile integrare altri servizi OCI per elaborare o estrarre dati da documenti salvati in un bucket e salvarli, per esempio, in Autonomous DB.\nTerminati i test, puoi eliminare l\u0026rsquo;infrastruttura con Terraform:\nterraform destroy ","permalink":"https://www.enricopesce.it/it/attivare-una-function-con-object-storage/","summary":"\u003cp\u003eIl servizio OCI Functions permette di eseguire codice su infrastruttura che non devi gestire. In questo \u003ca href=\"/it/oci-functions-un-esempio-python/\"\u003earticolo\u003c/a\u003e\n ho presentato un esempio base di OCI Function sviluppata in Python.\u003c/p\u003e\n\u003cp\u003eUna funzionalita\u0026rsquo; molto interessante e\u0026rsquo; che le funzioni possono essere invocate automaticamente da altri servizi tramite un evento. Possiamo quindi eseguire codice in risposta a un\u0026rsquo;azione nel cloud OCI oppure usare una function come collegamento tra piu\u0026rsquo; servizi cloud che compongono un workload complesso.\u003c/p\u003e","title":"Attivare una function con Object Storage"},{"content":"Il servizio OCI Functions permette di eseguire codice su un\u0026rsquo;infrastruttura che non devi gestire, in modo scalabile e automatizzato.\nQuesto concetto viene chiamato \u0026ldquo;serverless\u0026rdquo; perche\u0026rsquo; l\u0026rsquo;utente finale non deve preoccuparsi di gestire infrastruttura per eseguire il proprio codice.\nOCI implementa il progetto open source FN . Il progetto e\u0026rsquo; integrato con i servizi Oracle Cloud ed e\u0026rsquo; basato sull\u0026rsquo;esecuzione di codice dentro container. Puo\u0026rsquo; quindi supportare potenzialmente qualsiasi linguaggio di programmazione e qualsiasi tipo di container su architettura x86; inoltre non e\u0026rsquo; strettamente legato all\u0026rsquo;infrastruttura Oracle e puo\u0026rsquo; essere usato anche con altri ambienti FN.\nPer creare una funzione ti consiglio di leggere la pagina ufficiale del servizio e seguire la quick start . Nel mio caso ho preferito seguire il deployment dal mio computer, che e\u0026rsquo; anche il mio ambiente di sviluppo abituale, ma e\u0026rsquo; possibile fare lo stesso da OCI Cloud Shell con tempi piu\u0026rsquo; brevi grazie alla rete del data center.\nL\u0026rsquo;esempio di questa funzione e\u0026rsquo; basato su Python. Le credenziali OCI di base sono gia\u0026rsquo; state create; se ti serve una guida specifica puoi consultare la Developer Guide o la guida OCI Getting started .\nI comandi per configurare l\u0026rsquo;ambiente FN locale sono:\nfn create context \u0026lt;my-context\u0026gt; --provider oracle fn use context \u0026lt;my-context\u0026gt; fn update context oracle.profile \u0026lt;profile-name\u0026gt; fn update context oracle.compartment-id \u0026lt;compartment-ocid\u0026gt; fn update context api-url \u0026lt;api-endpoint\u0026gt; fn update context registry \u0026lt;region-key\u0026gt;.ocir.io/\u0026lt;tenancy-namespace\u0026gt;/\u0026lt;repo-name-prefix\u0026gt; docker login -u \u0026#39;\u0026lt;tenancy-namespace\u0026gt;/\u0026lt;user-name\u0026gt;\u0026#39; \u0026lt;region-key\u0026gt;.ocir.io Con questi comandi abbiamo istruito FN a usare il cloud OCI e configurato un repository OCI in cui salvare il container usato da FN per eseguire il nostro codice.\nAllo stesso modo creiamo l\u0026rsquo;applicazione Function sul lato OCI:\nfn create app pythonexamples --annotation oracle.com/oci/subnetIds=\u0026#39;[\u0026#34;\u0026lt;sunbet-ocid\u0026gt;\u0026#34;]\u0026#39; Come puoi vedere, il comando non e\u0026rsquo; dell\u0026rsquo;OCI CLI ma continuiamo a usare FN. Se vogliamo possiamo usare il comando OCI nativo per creare l\u0026rsquo;applicazione, ma vista la compatibilita\u0026rsquo; del progetto open source possiamo usare anche quello FN.\nIl passaggio successivo e\u0026rsquo; creare localmente lo scheletro dei file applicativi per FN specificando il linguaggio, in questo caso Python:\nfn init --runtime python helloworld I file verranno creati in una nuova directory:\nhelloworld ├── func.py ├── func.yaml └── requirements.txt Il file func.py contiene il codice eseguito, requirements.txt le dipendenze e func.yaml la configurazione FN.\nIn particolare, il codice di esempio e\u0026rsquo; un \u0026ldquo;Hello world\u0026rdquo; visibile qui .\nIl passaggio preparatorio all\u0026rsquo;esecuzione della funzione e\u0026rsquo; build e deploy: dal terminale il comando fn orchestra la build del container, il rilascio nel repository OCI e la configurazione su OCI Functions.\nfn -v deploy --app hello Al termine del comando, se tutto e\u0026rsquo; andato bene, e\u0026rsquo; possibile eseguire la funzione da remoto su OCI:\necho -n \u0026#39;{\u0026#34;name\u0026#34;: \u0026#34;Oracle\u0026#34;}\u0026#39; | fn invoke pythonexamples hello In questo esempio passiamo un parametro alla funzione, che verra\u0026rsquo; letto dalla funzione remota. Se abilitato, sara\u0026rsquo; possibile visualizzare l\u0026rsquo;output generato nel servizio OCI Logging.\nIn questo articolo abbiamo visto un esempio semplice di funzione e come usarla. E\u0026rsquo; possibile eseguire una funzione tramite eventi di altri servizi OCI, usarla come API service, usare altri linguaggi o versioni diverse dei container.\nPer altri esempi di funzioni OCI in Python consiglio questo repository oppure il repository di supporto agli articoli a questo link .\n","permalink":"https://www.enricopesce.it/it/oci-functions-un-esempio-python/","summary":"\u003cp\u003eIl servizio \u003ca href=\"https://www.oracle.com/cloud/cloud-native/functions/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eOCI Functions\u003c/a\u003e\n permette di eseguire codice su un\u0026rsquo;infrastruttura che non devi gestire, in modo scalabile e automatizzato.\u003c/p\u003e\n\u003cp\u003eQuesto concetto viene chiamato \u0026ldquo;serverless\u0026rdquo; perche\u0026rsquo; l\u0026rsquo;utente finale non deve preoccuparsi di gestire infrastruttura per eseguire il proprio codice.\u003c/p\u003e\n\u003cp\u003eOCI implementa il progetto open source \u003ca href=\"https://fnproject.io/\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eFN\u003c/a\u003e\n. Il progetto e\u0026rsquo; integrato con i servizi Oracle Cloud ed e\u0026rsquo; basato sull\u0026rsquo;esecuzione di codice dentro container. Puo\u0026rsquo; quindi supportare potenzialmente qualsiasi linguaggio di programmazione e qualsiasi tipo di container su architettura x86; inoltre non e\u0026rsquo; strettamente legato all\u0026rsquo;infrastruttura Oracle e puo\u0026rsquo; essere usato anche con altri ambienti FN.\u003c/p\u003e","title":"OCI Functions: un esempio Python"},{"content":"La gestione di identita\u0026rsquo; e accessi e\u0026rsquo; un obiettivo cruciale in un\u0026rsquo;organizzazione che cresce.\nOltre alla necessita\u0026rsquo; di semplificare la gestione degli utenti e migliorare la sicurezza, l\u0026rsquo;integrazione con servizi esterni diventa sempre piu\u0026rsquo; rilevante.\nOracle OCI offre un servizio completo per gestire identita\u0026rsquo; e accesso chiamato IAM with Identity Domains .\nNel dettaglio:\nUn identity domain e\u0026rsquo; un contenitore per gestire utenti e ruoli, federare e fare provisioning degli utenti, integrare applicazioni tramite Oracle Single Sign-On (SSO) e amministrare provider SAML/OAuth. Rappresenta una popolazione di utenti in Oracle Cloud Infrastructure e le relative impostazioni di sicurezza, come MFA.\nIn questo post vediamo come integrare l\u0026rsquo;autenticazione con MFA di OpenVPN Access Server usando un dominio OCI IAM Identity.\nPer ridurre la complessita\u0026rsquo; dello scenario, utenti e password sono creati direttamente in un nuovo dominio IAM separato, senza integrazione con directory esterne.\nPartiamo da un\u0026rsquo;istanza gia\u0026rsquo; creata per l\u0026rsquo;appliance OpenVPN sul servizio OCI Compute .\nIl primo passaggio e\u0026rsquo; creare il dominio nel servizio IAM dal menu Identity \u0026amp; Security -\u0026gt; Domains.\nIn questo scenario non dobbiamo sincronizzare utenti da una directory esterna, come AD o LDAP, e il tipo gratuito e\u0026rsquo; sufficiente. In un workload aziendale reale e\u0026rsquo; invece consigliato il dominio Oracle App Premium.\nSegui i form e inserisci i dettagli dell\u0026rsquo;account principale. Dopo pochi secondi la directory viene creata con il tuo utente come primo utente.\nOra devi recuperare alcuni dati dalla console amministrativa di OpenVPN e salvarli.\nSalva SP Identity e SP ACS dalla sezione SAML della console web amministrativa di OpenVPN.\nCopia anche il certificato SP in un file locale chiamato certificate.pem dalla stessa pagina.\nPer integrare OpenVPN Access Server dobbiamo aggiungere una nuova applicazione nel dominio.\nScegli l\u0026rsquo;applicazione SAML:\nInserisci il nome e, opzionalmente, un\u0026rsquo;icona personalizzata. Premi Next; le altre opzioni sono facoltative.\nInserisci Entity ID e Assertion Consumer URL, carica il file certificate.pem salvato prima e premi Finish.\nScarica il file dei metadati IdP dal pulsante del dominio IAM Identity.\nCarica il file dei metadati scaricato dal dominio IAM Identity nella sezione IdP della pagina SAML di OpenVPN.\nLa configurazione SAML e\u0026rsquo; completa.\nAttiva l\u0026rsquo;autenticazione SAML nella sezione OpenVPN per abilitarla.\nOra puoi provare l\u0026rsquo;autenticazione SAML dalla pagina web di OpenVPN.\n","permalink":"https://www.enricopesce.it/it/autenticazione-saml-su-openvpn-con-domini-oci-iam-identity/","summary":"\u003cp\u003eLa gestione di identita\u0026rsquo; e accessi e\u0026rsquo; un obiettivo cruciale in un\u0026rsquo;organizzazione che cresce.\u003c/p\u003e\n\u003cp\u003eOltre alla necessita\u0026rsquo; di semplificare la gestione degli utenti e migliorare la sicurezza, l\u0026rsquo;integrazione con servizi esterni diventa sempre piu\u0026rsquo; rilevante.\u003c/p\u003e\n\u003cp\u003eOracle OCI offre un servizio completo per gestire identita\u0026rsquo; e accesso chiamato \u003ca href=\"https://docs.oracle.com/en-us/iaas/Content/Identity/home.htm\" target=\"_blank\" rel=\"noopener noreferrer\"\u003eIAM with Identity Domains\u003c/a\u003e\n.\u003c/p\u003e\n\u003cp\u003eNel dettaglio:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eUn identity domain e\u0026rsquo; un contenitore per gestire utenti e ruoli, federare e fare provisioning degli utenti, integrare applicazioni tramite Oracle Single Sign-On (SSO) e amministrare provider SAML/OAuth. Rappresenta una popolazione di utenti in Oracle Cloud Infrastructure e le relative impostazioni di sicurezza, come MFA.\u003c/p\u003e","title":"Autenticazione SAML su OpenVPN con domini OCI IAM Identity"}]