{"id":51883,"date":"2019-12-19T07:00:29","date_gmt":"2019-12-19T06:00:29","guid":{"rendered":"http:\/\/smeupnew.it\/magazine\/blog\/smeup-webup-cloud-ibrido\/"},"modified":"2025-08-06T18:01:15","modified_gmt":"2025-08-06T16:01:15","slug":"smeup-webup-cloud-ibrido","status":"publish","type":"post","link":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/","title":{"rendered":"Cloud ibrido tra Kubernetes e IBM i"},"content":{"rendered":"<h4><i><span style=\"font-weight: 400\">smeup webup: l\u2019applicazione smeup di cui \u00e8 stato eseguito il porting su cloud<\/span><\/i><\/h4>\n<p><i><span style=\"font-weight: 400\">smeup webup<\/span><\/i><span style=\"font-weight: 400\"> \u00e8 un&#8217;applicazione web che permette ai clienti smeup di comunicare con <\/span><i><span style=\"font-weight: 400\">smeup erp<\/span><\/i><span style=\"font-weight: 400\"> da un qualsiasi browser web e si compone di 3 elementi:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">webup front-end<\/span><\/i><span style=\"font-weight: 400\">, l&#8217;applicazione principale visibile dagli utenti;<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">AS400 Proxy<\/span><\/i><span style=\"font-weight: 400\">: un middleware che permette a <\/span><i><span style=\"font-weight: 400\">webup front-end<\/span><\/i><span style=\"font-weight: 400\"> e <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\"> di comunicare tra loro;<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">H53 service<\/span><\/i><span style=\"font-weight: 400\">: un microservice che, comunicando direttamente con <\/span><i><span style=\"font-weight: 400\">webup front-end<\/span><\/i><span style=\"font-weight: 400\">, offre funzioni di stampa pdf.\u00a0<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Per la parte architetturale dell\u2019installazione che gestisce la struttura dell\u2019applicazione e che mette in comunicazione tra loro i 3 elementi, le tecnologie utilizzate per questo porting sono state:<\/span><i><\/i><\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Cloud Kubernetes<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Helm<\/span><\/i><span style=\"font-weight: 400\"> (il <\/span><i><span style=\"font-weight: 400\">Package Manager di Kubernetes<\/span><\/i><span style=\"font-weight: 400\">)<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Per la parte di monitoraggio dell&#8217;installazione e per i sistemi di allerta del<\/span><i><span style=\"font-weight: 400\"> cluster<\/span><\/i><span style=\"font-weight: 400\">, alla base ci sono invece:<\/span><i><\/i><\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Prometheus<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Grafana<\/span><\/i><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Nel <\/span><i><span style=\"font-weight: 400\">cloud<\/span><\/i><span style=\"font-weight: 400\"> non \u00e8 banale poter essere a conoscenza dello stato dell\u2019applicazione soprattutto quando questa \u00e8 distribuita su pi\u00f9 nodi e su diverse macchine.<\/span><\/p>\n<h2>Cloud Kubernetes: cos&#8217;\u00e8 un cloud pubblico<\/h2>\n<p><i><span style=\"font-weight: 400\">Kubernetes <\/span><\/i><span style=\"font-weight: 400\">\u00e8 un sistema <\/span><i><span style=\"font-weight: 400\">open source <\/span><\/i><span style=\"font-weight: 400\">di orchestrazione e gestione di container<\/span><i><span style=\"font-weight: 400\">.<\/span><\/i> <span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Si basa sul concetto di <\/span><i><span style=\"font-weight: 400\">container<\/span><\/i><span style=\"font-weight: 400\">, ovvero l&#8217;evoluzione di una <\/span><i><span style=\"font-weight: 400\">virtual machine<\/span><\/i><span style=\"font-weight: 400\"> in grado di risolvere i problemi di utilizzo di memoria sfruttando il sistema operativo della macchina sottostante per l\u2019applicazione interna al container stesso.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Kubernetes<\/span><\/i><span style=\"font-weight: 400\"> orchestra e gestisce un numero elevato di container (da 4-5 fino a centinaia) comunicando tramite strumenti e oggetti creati in base al concetto di \u201c<\/span><i><span style=\"font-weight: 400\">codice come infrastruttura<\/span><\/i><span style=\"font-weight: 400\">\u201d e letti da file di configurazione a codice <\/span><i><span style=\"font-weight: 400\">markup YAML, <\/span><\/i><span style=\"font-weight: 400\">che viene scansionato da <\/span><i><span style=\"font-weight: 400\">Kubernetes<\/span><\/i><span style=\"font-weight: 400\"> per la creazione di tali oggetti.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400\">Il <\/span><i><span style=\"font-weight: 400\">Pod<\/span><\/i><span style=\"font-weight: 400\">, una sorta di <\/span><i><span style=\"font-weight: 400\">wrapper <\/span><\/i><span style=\"font-weight: 400\">che racchiude al suo interno un container e altri strumenti aggiuntivi, \u00e8 il concetto alla base di <\/span><i><span style=\"font-weight: 400\">Kubernetes. <\/span><\/i><span style=\"font-weight: 400\">All\u2019interno dei container dei tre Pod di <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\"> si trova <\/span><i><span style=\"font-weight: 400\">Payara<\/span><\/i><span style=\"font-weight: 400\">, un application server utilizzato per eseguire applicazioni <\/span><i><span style=\"font-weight: 400\">java<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<h2>Come \u00e8 possibile che due container diversi comunichino?<\/h2>\n<p><span style=\"font-weight: 400\">Essendo i <\/span><i><span style=\"font-weight: 400\">Pod Kubernetes<\/span><\/i><span style=\"font-weight: 400\"> (e quindi anche i container posti al loro interno) ambienti chiusi, sterili e separati, garantiscono la replicabilit\u00e0 di un certo ambiente per l&#8217;esecuzione delle applicazioni.<\/span><span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Allo stesso modo sono anche strutture effimere spesso avviate, distrutte e ricreate pi\u00f9 volte nel ciclo di vita di un\u2019applicazione, rendendo impensabile che i dati all\u2019interno non possano sopravvivere.<\/span><\/p>\n<p><span style=\"font-weight: 400\">La comunicazione avviene tramite i <\/span><i><span style=\"font-weight: 400\">volumi,<\/span><\/i><span style=\"font-weight: 400\"> ossia strumenti <\/span><i><span style=\"font-weight: 400\">Kubernetes<\/span><\/i><span style=\"font-weight: 400\"> che consentono la permanenza e la persistenza dei dati nel tempo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">L\u2019application server &#8211; il container <\/span><i><span style=\"font-weight: 400\">Payara<\/span><\/i><span style=\"font-weight: 400\"> &#8211; esegue automaticamente <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\"> e condivide il file attraverso Il <\/span><i><span style=\"font-weight: 400\">volume<\/span><\/i><span style=\"font-weight: 400\">.\u00a0<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Webup <\/span><\/i><span style=\"font-weight: 400\">a questo punto diventer\u00e0 disponibile per il cliente, garantendo la persistenza di dati di configurazione anche in caso di riavvii di containers, Pods, o addirittura nodi del cluster <\/span><i><span style=\"font-weight: 400\">Kubernetes<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<h2>Obiettivo raggiunto!<\/h2>\n<p><i><span style=\"font-weight: 400\">Ecco il deployment pi\u00f9 avanzato all\u2019interno del progetto di smeup.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Il <\/span><i><span style=\"font-weight: 400\">check up<\/span><\/i><span style=\"font-weight: 400\"> periodico sull\u2019applicazione, chiamato <\/span><i><span style=\"font-weight: 400\">health check<\/span><\/i><span style=\"font-weight: 400\">, <\/span><span style=\"font-weight: 400\">\u00e8 a carico degli oggetti <\/span><i><span style=\"font-weight: 400\">Kubernetes <\/span><\/i><span style=\"font-weight: 400\">detti \u201c<\/span><i><span style=\"font-weight: 400\">probes\u201d, <\/span><\/i><span style=\"font-weight: 400\">che riescono a rilevare guasti in un\u2019applicazione grazie a controlli periodici come <\/span><i><span style=\"font-weight: 400\">chiamate HTTP <\/span><\/i><span style=\"font-weight: 400\">o esecuzione di <\/span><i><span style=\"font-weight: 400\">script<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Nel caso di <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\"> le <\/span><i><span style=\"font-weight: 400\">probes<\/span><\/i><span style=\"font-weight: 400\"> eseguono chiamate HTTP sugli endpoint dell\u2019applicazione <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\">.<\/span><i><span style=\"font-weight: 400\">\u00a0<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Se le chiamate restituiranno un codice<\/span><i><span style=\"font-weight: 400\"> \u201c200\u201d<\/span><\/i><span style=\"font-weight: 400\"> (OK) , il sistema star\u00e0 funzionando correttamente, mentre con codici di errore 400-500 persistenti per tre controlli consecutivi, le probes scateneranno un riavvio del container per risolvere eventuali problemi.<\/span><\/p>\n<h2>Come avviene la lettura di tutti gli elementi Kubernetes?<\/h2>\n<p><i><span style=\"font-weight: 400\">Helm<\/span><\/i><span style=\"font-weight: 400\"> \u00e8 uno strumento di creazione di package chiamati <\/span><i><span style=\"font-weight: 400\">Charts <\/span><\/i><span style=\"font-weight: 400\">rappresentanti un semplice microservice o un\u2019intera applicazione (come nel caso di <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\">). Oltre ad occuparsi dell\u2019installazione delle Charts, Helm aiuta anche con <\/span><i><span style=\"font-weight: 400\">upgrade <\/span><\/i><span style=\"font-weight: 400\">e <\/span><i><span style=\"font-weight: 400\">rollback<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Vantaggi:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">permette di installare <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\"> e tutti e tre i suoi componenti con un semplice comando \u201c<\/span><i><span style=\"font-weight: 400\">helm install webup\u201d<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">tramite appositi file di configurazione \u00e8 possibile inserire variabili e <\/span><i><span style=\"font-weight: 400\">flow control<\/span><\/i><span style=\"font-weight: 400\"> all&#8217;interno della <\/span><i><span style=\"font-weight: 400\">chart<\/span><\/i><span style=\"font-weight: 400\"> per cambiare, ad esempio, la versione dell\u2019applicazione. <\/span><span style=\"font-weight: 400\">Se un tecnico avesse necessit\u00e0 di cambiare la versione del <\/span><i><span style=\"font-weight: 400\">front end<\/span><\/i><span style=\"font-weight: 400\"> di <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\">, <\/span><i><span style=\"font-weight: 400\">helm<\/span><\/i><span style=\"font-weight: 400\"> gli permetter\u00e0 di separare dal codice le variabili e le informazioni in un paio di semplici configurazioni chiave-valore.<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">helm<\/span><\/i><span style=\"font-weight: 400\"> permette di eseguire <\/span><i><span style=\"font-weight: 400\">upgrade<\/span><\/i><span style=\"font-weight: 400\"> e <\/span><i><span style=\"font-weight: 400\">rollback <\/span><\/i><span style=\"font-weight: 400\">senza <\/span><i><span style=\"font-weight: 400\">downtime<\/span><\/i><span style=\"font-weight: 400\"> creando una nuova versione dell\u2019applicazione con un <\/span><i><span style=\"font-weight: 400\">upgrade<\/span><\/i><span style=\"font-weight: 400\"> di <\/span><i><span style=\"font-weight: 400\">webup<\/span><\/i><span style=\"font-weight: 400\">, online in pochi minuti e mantenendo a disposizione degli utenti la versione precedente fino a che quella nuova sar\u00e0 disponibile;<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Le installazioni di cui abbiamo parlato finora sono state eseguite in un ambiente <\/span><i><span style=\"font-weight: 400\">Cloud pubblico.\u00a0<\/span><\/i><\/p>\n<h2>Cloud pubblico<\/h2>\n<p><span style=\"font-weight: 400\">Un <\/span><i><span style=\"font-weight: 400\">cloud pubblico<\/span><\/i><span style=\"font-weight: 400\"> \u00e8 una piattaforma che utilizza il modello di <\/span><i><span style=\"font-weight: 400\">cloud computing standard<\/span><\/i><span style=\"font-weight: 400\"> per rendere le risorse, le applicazioni, lo storage o le virtual machine disponibili agli utenti in remoto.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">smeup ha usato tre servizi:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">elastic Kubernetes service<\/span><\/i><span style=\"font-weight: 400\"> (EKS), il servizio completamente gestito e integrato con altri servizi per monitorare, scalare e bilanciare il carico del cluster;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">e<\/span><i><span style=\"font-weight: 400\">lastic file system (EFS) <\/span><\/i><span style=\"font-weight: 400\">che offre un file system interamente gestito e completamente integrato con<\/span><i><span style=\"font-weight: 400\"> EKS<\/span><\/i><span style=\"font-weight: 400\">, tramite il quale \u00e8 possibile garantire la persistenza di file di configurazione e di log, aggregando questi dati e rendendoli disponibili per la visualizzazione su una qualsiasi macchina che monti il file system EFS.<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">Route 53:<\/span><\/i><span style=\"font-weight: 400\"> un semplice servizio di <\/span><i><span style=\"font-weight: 400\">DNS<\/span><\/i><span style=\"font-weight: 400\"> utilizzato per la pubblicazione su webup.smeup.cloud di <\/span><i><span style=\"font-weight: 400\">webup EKS.<\/span><\/i><\/li>\n<\/ul>\n<h2>Prometheus e Grafana<\/h2>\n<p><span style=\"font-weight: 400\">Monitorare un\u2019applicazione o un <\/span><i><span style=\"font-weight: 400\">cluster Kubernetes <\/span><\/i><span style=\"font-weight: 400\">non \u00e8 per nulla semplice: molti <\/span><i><span style=\"font-weight: 400\">nodi,<\/span><\/i><span style=\"font-weight: 400\"> molti pi\u00f9 <\/span><i><span style=\"font-weight: 400\">Pod<\/span><\/i><span style=\"font-weight: 400\"> creati e distrutti alcuni dei quali senza neppure un sistema operativo in cui entrare per eseguire controlli.<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Prometheus <\/span><\/i><span style=\"font-weight: 400\">\u00e8 un\u2019applicazione per il monitoraggio dotata di un sistema di avvertimento ed \u00e8 la soluzione adottata da smeup.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Si tratta di un sistema di monitoraggio che periodicamente rileva lo stato di <\/span><i><span style=\"font-weight: 400\">webup <\/span><\/i><span style=\"font-weight: 400\">e del <\/span><i><span style=\"font-weight: 400\">cluster Kubernetes<\/span><\/i><span style=\"font-weight: 400\"> interrogando diversi <\/span><i><span style=\"font-weight: 400\">endpoint<\/span><\/i><span style=\"font-weight: 400\">, per poi salvare i dati ottenuti su un <\/span><i><span style=\"font-weight: 400\">database time series<\/span><\/i><span style=\"font-weight: 400\"> che mostra l\u2019andamento nel tempo dei dati raccolti.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Di per s\u00e9 questi dati non sono utili se non si trova il modo di trasformarli in informazioni comprensibili.\u00a0<\/span><\/p>\n<p><i><span style=\"font-weight: 400\">Grafana <\/span><\/i><span style=\"font-weight: 400\">\u00e8 invece una soluzione <\/span><i><span style=\"font-weight: 400\">open-source<\/span><\/i><span style=\"font-weight: 400\"> che consente di visualizzare graficamente dati da diverse sorgenti e che ha permesso a smeup di interrogare il <\/span><i><span style=\"font-weight: 400\">database time series<\/span><\/i><span style=\"font-weight: 400\"> e creare <\/span><i><span style=\"font-weight: 400\">dashboard <\/span><\/i><span style=\"font-weight: 400\">con i dati ricavati da <\/span><i><span style=\"font-weight: 400\">Prometheus<\/span><\/i><span style=\"font-weight: 400\"> che indicassero il numero di <\/span><i><span style=\"font-weight: 400\">thread attivi,<\/span><\/i><span style=\"font-weight: 400\"> il <\/span><i><span style=\"font-weight: 400\">carico medio del sistema<\/span><\/i><span style=\"font-weight: 400\">, l\u2019utilizzo di <\/span><i><span style=\"font-weight: 400\">CPU<\/span><\/i><span style=\"font-weight: 400\">, le informazioni su <\/span><i><span style=\"font-weight: 400\">networking<\/span><\/i><span style=\"font-weight: 400\">, l\u2019<\/span><i><span style=\"font-weight: 400\">uptime,&#8230;<\/span><\/i><span style=\"font-weight: 400\">\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400\">Tutte informazioni utili a mostrarci cosa stesse realmente accadendo all\u2019interno del cluster.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Con <\/span><i><span style=\"font-weight: 400\">Grafana<\/span><\/i><span style=\"font-weight: 400\"> \u00e8 stato inoltre possibile creare dei sistemi di allerta che, attraverso un messaggio su telegram, una mail o un sms avvisassero del malfunzionamento di un componente dell\u2019installazione, e permettessero un intervento tempestivo.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Ricapitolando, la struttura<\/span><i><span style=\"font-weight: 400\"> webup <\/span><\/i><span style=\"font-weight: 400\">di puro <\/span><i><span style=\"font-weight: 400\">deployment cloud <\/span><\/i><span style=\"font-weight: 400\">vedr\u00e0 utenti che tramite <\/span><i><span style=\"font-weight: 400\">HTTPs<\/span><\/i><span style=\"font-weight: 400\"> si collegano a<\/span><i><span style=\"font-weight: 400\"> webup front end<\/span><\/i><span style=\"font-weight: 400\"> il quale (su <\/span><i><span style=\"font-weight: 400\">cloud aws)<\/span><\/i><span style=\"font-weight: 400\"> comunicher\u00e0 con i due componenti <\/span><i><span style=\"font-weight: 400\">H53 service <\/span><\/i><span style=\"font-weight: 400\">e <\/span><i><span style=\"font-weight: 400\">AS400 proxy.<\/span><\/i> <span style=\"font-weight: 400\"><br \/>\n<\/span><span style=\"font-weight: 400\">Per accedere al <\/span><i><span style=\"font-weight: 400\">back end, AS400 proxy<\/span><\/i><span style=\"font-weight: 400\"> (anch\u2019esso su cloud aws) comunicher\u00e0 con<\/span><i><span style=\"font-weight: 400\"> IBM i <\/span><\/i><span style=\"font-weight: 400\">tramite <\/span><i><span style=\"font-weight: 400\">TCP<\/span><\/i><span style=\"font-weight: 400\"> su data center .<\/span><\/p>\n<h2>Dal Cloud pubblico al Cloud ibrido<b><i><br \/>\n<\/i><\/b><\/h2>\n<p><i><span style=\"font-weight: 400\">Il porting del deployment dal cloud pubblico al cloud ibrido con IBM i.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Come siamo passati da un\u2019architettura completamente cloud ad un\u2019architettura ibrida?<\/span><\/p>\n<p><span style=\"font-weight: 400\">Installando direttamente su<\/span><i><span style=\"font-weight: 400\"> IBM i <\/span><\/i><span style=\"font-weight: 400\">il microservice <\/span><i><span style=\"font-weight: 400\">AS400 proxy,<\/span><\/i><span style=\"font-weight: 400\"> il <\/span><i><span style=\"font-weight: 400\">middleware <\/span><\/i><span style=\"font-weight: 400\">del nostro sistema distribuito che mette in comunicazione il <\/span><i><span style=\"font-weight: 400\">frontend<\/span><\/i><span style=\"font-weight: 400\"> di <\/span><i><span style=\"font-weight: 400\">webup <\/span><\/i><span style=\"font-weight: 400\">e il <\/span><i><span style=\"font-weight: 400\">backend<\/span><\/i><span style=\"font-weight: 400\"> di <\/span><i><span style=\"font-weight: 400\">IBM i.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Questo microservice comunica con <\/span><i><span style=\"font-weight: 400\">webup <\/span><\/i><span style=\"font-weight: 400\">tramite il protocollo <\/span><i><span style=\"font-weight: 400\">HTTPs,<\/span><\/i><span style=\"font-weight: 400\"> mentre la comunicazione con <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\"> avviene tramite <\/span><i><span style=\"font-weight: 400\">TCP.<\/span><\/i><\/p>\n<p><span style=\"font-weight: 400\">Per lo sviluppo di questo <\/span><i><span style=\"font-weight: 400\">microservice<\/span><\/i><span style=\"font-weight: 400\"> abbiamo utilizzato diverse tecnologie:\u00a0<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">delle <\/span><i><span style=\"font-weight: 400\">API rest,<\/span><\/i><span style=\"font-weight: 400\"> necessarie per interfacciarsi ai servizi esposti da <\/span><i><span style=\"font-weight: 400\">AS400 proxy;<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">la comunicazione HTTPs<\/span><\/i><span style=\"font-weight: 400\"> per il dialogo tra il <\/span><i><span style=\"font-weight: 400\">frontend<\/span><\/i><span style=\"font-weight: 400\"> e il nostro <\/span><i><span style=\"font-weight: 400\">middleware;<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">l\u2019interfaccia <\/span><i><span style=\"font-weight: 400\">swagger<\/span><\/i><span style=\"font-weight: 400\"> per testare gli <\/span><i><span style=\"font-weight: 400\">endpoint<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Per il <\/span><i><span style=\"font-weight: 400\">porting di AS400 proxy<\/span><\/i><span style=\"font-weight: 400\"> in <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\"> abbiamo utilizzato <\/span><i><span style=\"font-weight: 400\">Quarkus,<\/span><\/i><span style=\"font-weight: 400\"> il <\/span><i><span style=\"font-weight: 400\">framework java<\/span><\/i><span style=\"font-weight: 400\"> sviluppato da <\/span><i><span style=\"font-weight: 400\">RedHat<\/span><\/i><span style=\"font-weight: 400\"> e ottimizzato in ottica cloud.<\/span><\/p>\n<h2>Quarkus, un framework di sviluppo Java utilizzato per creare un microservice\u00a0 AS400 su IBM i<span style=\"font-weight: 400\">\u00a0<\/span><\/h2>\n<p><i><span style=\"font-weight: 400\">Quarkus<\/span><\/i><span style=\"font-weight: 400\"> \u00e8 un <\/span><i><span style=\"font-weight: 400\">framework <\/span><\/i><span style=\"font-weight: 400\">per l\u2019ottimizzazione in ottica Cloud che offre <\/span><span style=\"font-weight: 400\">diversi vantaggi:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">\u00e8 sviluppato da<\/span><i><span style=\"font-weight: 400\"> RedHat (IBM);<\/span><\/i><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">le applicazioni <\/span><i><span style=\"font-weight: 400\">Quarkus<\/span><\/i><span style=\"font-weight: 400\"> non richiedono un <\/span><i><span style=\"font-weight: 400\">Application Server, <\/span><\/i><span style=\"font-weight: 400\">come per esempio<\/span><i><span style=\"font-weight: 400\"> Payara, <\/span><\/i><span style=\"font-weight: 400\">visto nel deployment originale;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">riduce i tempi di avvio dell\u2019applicazione avendo eliminato completamente il tempo di start up dell\u2019application server;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">riduce anche i tempi di deploy dell\u2019applicazione, in pochi secondi infatti si ha l\u2019avvio del microservice;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">crea applicazioni che consentono la riduzione del consumo di memoria di un decimo rispetto a java tradizionale.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">La differenza tra i due deployment:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">AS400 proxy<\/span><\/i><span style=\"font-weight: 400\"> su cloud comunica in <\/span><i><span style=\"font-weight: 400\">TCP<\/span><\/i><span style=\"font-weight: 400\"> con l\u2019<\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">AS400 proxy<\/span><\/i><span style=\"font-weight: 400\"> installato direttamente su<\/span><i><span style=\"font-weight: 400\"> IBM i<\/span><\/i><span style=\"font-weight: 400\"> comunica in <\/span><i><span style=\"font-weight: 400\">localhost<\/span><\/i><span style=\"font-weight: 400\"> direttamente sulle data queues.<\/span><\/li>\n<\/ul>\n<h2>smeup webup Cloud Ibrido con IBM i AS400 Proxy<\/h2>\n<p><span style=\"font-weight: 400\">Con questo deployment<\/span> <span style=\"font-weight: 400\">diversi sono i vantaggi sia in termini di performance che di utilizzo delle risorse:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">maggiore sicurezza tramite comunicazione su <\/span><i><span style=\"font-weight: 400\">localhost<\/span><\/i><span style=\"font-weight: 400\">;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">minore <\/span><i><span style=\"font-weight: 400\">overhead<\/span><\/i><span style=\"font-weight: 400\"> avendo eliminato l\u2019application server <\/span><i><span style=\"font-weight: 400\">Payara<\/span><\/i><span style=\"font-weight: 400\">, le macchina extra e <\/span><i><span style=\"font-weight: 400\">VPN<\/span><\/i><span style=\"font-weight: 400\">;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">ottimizzazioni fornite dal <\/span><i><span style=\"font-weight: 400\">toolbox java<\/span><\/i><span style=\"font-weight: 400\"> su trasferimento di grandi quantit\u00e0 di dati specificando l\u2019utente di collegamento con <\/span><i><span style=\"font-weight: 400\">IBM i <\/span><\/i><span style=\"font-weight: 400\">usando la parola chiave\u00a0 <\/span><i><span style=\"font-weight: 400\">*CURRENT<\/span><\/i><span style=\"font-weight: 400\">;<\/span><\/li>\n<li style=\"font-weight: 400\"><i><span style=\"font-weight: 400\">AS400 Proxy <\/span><\/i><span style=\"font-weight: 400\">trasformato in un vero e proprio <\/span><i><span style=\"font-weight: 400\">microservice<\/span><\/i><span style=\"font-weight: 400\"> portandolo su <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Utilizzando i<\/span><span style=\"font-weight: 400\">l <\/span><i><span style=\"font-weight: 400\">toolbox j<\/span><\/i><i><span style=\"font-weight: 400\">ava<\/span><\/i><span style=\"font-weight: 400\">, attraverso la parola chiave <\/span><i><span style=\"font-weight: 400\">*CURRENT<\/span><\/i><span style=\"font-weight: 400\">, si dovr\u00e0 impostare l&#8217;utente di collegamento con il server solo al primo avvio.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Il concetto di utente applicativo, per le diverse funzioni applicative, ci permette poi di astrarsi a un livello superiore.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Questo il procedimento per far partire l\u2019applicazione tramite <\/span><i><span style=\"font-weight: 400\">Qshell<\/span><\/i><span style=\"font-weight: 400\"> e vedere se \u00e8 funzionante:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">creare uno script bash dove si fanno le seguenti operazioni:<\/span>\n<ul>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">settare le variabili d\u2019ambiente, ossia le configurazioni per la nostra applicazione;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">specificare il server, ossia<\/span><i><span style=\"font-weight: 400\"> \u201clocalhost\u201d<\/span><\/i><span style=\"font-weight: 400\"> perch\u00e9 comunica con la stessa macchina su cui viene installato;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">inserire l\u2019utente e la password con <\/span><i><span style=\"font-weight: 400\">*CURRENT<\/span><\/i><span style=\"font-weight: 400\">;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">lanciare il <\/span><i><span style=\"font-weight: 400\">jar<\/span><\/i><span style=\"font-weight: 400\"> dell\u2019applicazione con il comando <\/span><i><span style=\"font-weight: 400\">java -jar<\/span><\/i><span style=\"font-weight: 400\">;<\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">lanciare lo <\/span><i><span style=\"font-weight: 400\">script bash<\/span><\/i><span style=\"font-weight: 400\">;\u00a0<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">un file catturer\u00e0 l\u2019<\/span><i><span style=\"font-weight: 400\">output<\/span><\/i><span style=\"font-weight: 400\">;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">vedremo i <\/span><i><span style=\"font-weight: 400\">log<\/span><\/i><span style=\"font-weight: 400\"> contenuti nel file e se l\u2019applicazione \u00e8 partita correttamente;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">il server <\/span><i><span style=\"font-weight: 400\">Quarkus<\/span><\/i><span style=\"font-weight: 400\"> dovr\u00e0 partire correttamente e trovare le configurazioni precedentemente settate;<\/span><\/li>\n<li style=\"font-weight: 400\"><span style=\"font-weight: 400\">l&#8217;applicazione inizier\u00e0 a girare.<\/span><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400\">Impressionante la velocit\u00e0 di avvio ottenuta con l\u2019utilizzo di<\/span><i><span style=\"font-weight: 400\"> Quarkus<\/span><\/i><span style=\"font-weight: 400\"> e la possibilit\u00e0 di provare gli <\/span><i><span style=\"font-weight: 400\">endpoint<\/span><\/i><span style=\"font-weight: 400\"> con l\u2019interfaccia<\/span><i><span style=\"font-weight: 400\"> swagger<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n<p><span style=\"font-weight: 400\">Portando il<\/span><i><span style=\"font-weight: 400\"> microservice<\/span><\/i><span style=\"font-weight: 400\"> direttamente su <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\"> e lanciando l\u2019applicazione da<\/span><i><span style=\"font-weight: 400\"> Qshell,<\/span><\/i><span style=\"font-weight: 400\"> in pochi istanti questa sar\u00e0 online e pronta per essere utilizzata.<\/span><\/p>\n<h2>In conclusione, qual \u00e8 la principale differenza tra i due deployment?<\/h2>\n<p><i><span style=\"font-weight: 400\">Deployment Cloud:<\/span><\/i><span style=\"font-weight: 400\"> tre<\/span><i><span style=\"font-weight: 400\"> microservice<\/span><\/i><span style=\"font-weight: 400\"> tutti sul cloud pubblico <\/span><i><span style=\"font-weight: 400\">AWS <\/span><\/i><span style=\"font-weight: 400\">e con <\/span><i><span style=\"font-weight: 400\">AS400 Proxy<\/span><\/i><span style=\"font-weight: 400\"> che comunica con <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\"> in <\/span><i><span style=\"font-weight: 400\">data center<\/span><\/i><span style=\"font-weight: 400\"> tramite <\/span><i><span style=\"font-weight: 400\">TCP.<\/span><\/i><\/p>\n<p><i><span style=\"font-weight: 400\">Deployment Ibrido:<\/span><\/i><span style=\"font-weight: 400\"> utilizza un&#8217;architettura ibrida con i due <\/span><i><span style=\"font-weight: 400\">microservice webup <\/span><\/i><span style=\"font-weight: 400\">e <\/span><i><span style=\"font-weight: 400\">H53 <\/span><\/i><span style=\"font-weight: 400\">sul cloud pubblico <\/span><i><span style=\"font-weight: 400\">AWS <\/span><\/i><span style=\"font-weight: 400\">mentre<\/span><i><span style=\"font-weight: 400\"> AS400 proxy Quarkus<\/span><\/i><span style=\"font-weight: 400\"> \u00e8 installato direttamente su <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\"> in <\/span><i><span style=\"font-weight: 400\">data center<\/span><\/i><span style=\"font-weight: 400\"> e i due <\/span><i><span style=\"font-weight: 400\">microservice<\/span><\/i><span style=\"font-weight: 400\"> comunicano in <\/span><i><span style=\"font-weight: 400\">HTTPs <\/span><\/i><span style=\"font-weight: 400\">con l&#8217;<\/span><i><span style=\"font-weight: 400\">AS400 proxy<\/span><\/i><span style=\"font-weight: 400\"> e la <\/span><i><span style=\"font-weight: 400\">AS400 proxy<\/span><\/i><span style=\"font-weight: 400\"> in <\/span><i><span style=\"font-weight: 400\">localhost <\/span><\/i><span style=\"font-weight: 400\">direttamente su <\/span><i><span style=\"font-weight: 400\">IBM i<\/span><\/i><span style=\"font-weight: 400\">.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Sme.UP WebUP \u00e8 stato migrato a un cloud ibrido con Kubernetes e IBM i, ottimizzando comunicazione, prestazioni e utilizzo delle risorse.<\/p>\n","protected":false},"author":1,"featured_media":54011,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[7188],"tags":[5857,3910,5559],"class_list":["post-51883","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cloud","tag-cloud-ibrido","tag-ibm-i","tag-kubernetes"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>smeup webup: Cloud ibrido tra Kubernetes e IBM i<\/title>\n<meta name=\"description\" content=\"smeup webup \u00e8 un&#039;applicazione a cui \u00e8 stato eseguito il porting su cloud. Ci\u00f2 permette ai clienti di comunicare con smeup erp da un qualsiasi browser web.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"smeup webup: Cloud ibrido tra Kubernetes e IBM i\" \/>\n<meta property=\"og:description\" content=\"smeup webup \u00e8 un&#039;applicazione a cui \u00e8 stato eseguito il porting su cloud. Ci\u00f2 permette ai clienti di comunicare con smeup erp da un qualsiasi browser web.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/\" \/>\n<meta property=\"og:site_name\" content=\"Magazine\" \/>\n<meta property=\"article:published_time\" content=\"2019-12-19T06:00:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T16:01:15+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2019\/12\/smeup-webup.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1600\" \/>\n\t<meta property=\"og:image:height\" content=\"840\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"smeup\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"smeup\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"10 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/\"},\"author\":{\"name\":\"smeup\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\"},\"headline\":\"Cloud ibrido tra Kubernetes e IBM i\",\"datePublished\":\"2019-12-19T06:00:29+00:00\",\"dateModified\":\"2025-08-06T16:01:15+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/\"},\"wordCount\":1756,\"commentCount\":0,\"image\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2019\\\/12\\\/smeup-webup.jpg\",\"keywords\":[\"cloud ibrido\",\"ibm i\",\"Kubernetes\"],\"articleSection\":[\"Cloud\"],\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/\",\"name\":\"smeup webup: Cloud ibrido tra Kubernetes e IBM i\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2019\\\/12\\\/smeup-webup.jpg\",\"datePublished\":\"2019-12-19T06:00:29+00:00\",\"dateModified\":\"2025-08-06T16:01:15+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\"},\"description\":\"smeup webup \u00e8 un'applicazione a cui \u00e8 stato eseguito il porting su cloud. Ci\u00f2 permette ai clienti di comunicare con smeup erp da un qualsiasi browser web.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2019\\\/12\\\/smeup-webup.jpg\",\"contentUrl\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/wp-content\\\/uploads\\\/sites\\\/5\\\/2019\\\/12\\\/smeup-webup.jpg\",\"width\":1600,\"height\":840,\"caption\":\"smeup webup\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/smeup-webup-cloud-ibrido\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Cloud ibrido tra Kubernetes e IBM i\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#website\",\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/\",\"name\":\"Magazine\",\"description\":\"smeup\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/#\\\/schema\\\/person\\\/194a55d96e7e52223a84ff78468bf5c7\",\"name\":\"smeup\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g\",\"caption\":\"smeup\"},\"sameAs\":[\"https:\\\/\\\/www.smeup.com\"],\"url\":\"https:\\\/\\\/www.smeup.com\\\/magazine\\\/blog\\\/author\\\/admin\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"smeup webup: Cloud ibrido tra Kubernetes e IBM i","description":"smeup webup \u00e8 un'applicazione a cui \u00e8 stato eseguito il porting su cloud. Ci\u00f2 permette ai clienti di comunicare con smeup erp da un qualsiasi browser web.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/","og_locale":"it_IT","og_type":"article","og_title":"smeup webup: Cloud ibrido tra Kubernetes e IBM i","og_description":"smeup webup \u00e8 un'applicazione a cui \u00e8 stato eseguito il porting su cloud. Ci\u00f2 permette ai clienti di comunicare con smeup erp da un qualsiasi browser web.","og_url":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/","og_site_name":"Magazine","article_published_time":"2019-12-19T06:00:29+00:00","article_modified_time":"2025-08-06T16:01:15+00:00","og_image":[{"width":1600,"height":840,"url":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2019\/12\/smeup-webup.jpg","type":"image\/jpeg"}],"author":"smeup","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"smeup","Tempo di lettura stimato":"10 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#article","isPartOf":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/"},"author":{"name":"smeup","@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7"},"headline":"Cloud ibrido tra Kubernetes e IBM i","datePublished":"2019-12-19T06:00:29+00:00","dateModified":"2025-08-06T16:01:15+00:00","mainEntityOfPage":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/"},"wordCount":1756,"commentCount":0,"image":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#primaryimage"},"thumbnailUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2019\/12\/smeup-webup.jpg","keywords":["cloud ibrido","ibm i","Kubernetes"],"articleSection":["Cloud"],"inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/","url":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/","name":"smeup webup: Cloud ibrido tra Kubernetes e IBM i","isPartOf":{"@id":"https:\/\/www.smeup.com\/magazine\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#primaryimage"},"image":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#primaryimage"},"thumbnailUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2019\/12\/smeup-webup.jpg","datePublished":"2019-12-19T06:00:29+00:00","dateModified":"2025-08-06T16:01:15+00:00","author":{"@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7"},"description":"smeup webup \u00e8 un'applicazione a cui \u00e8 stato eseguito il porting su cloud. Ci\u00f2 permette ai clienti di comunicare con smeup erp da un qualsiasi browser web.","breadcrumb":{"@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#primaryimage","url":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2019\/12\/smeup-webup.jpg","contentUrl":"https:\/\/www.smeup.com\/magazine\/wp-content\/uploads\/sites\/5\/2019\/12\/smeup-webup.jpg","width":1600,"height":840,"caption":"smeup webup"},{"@type":"BreadcrumbList","@id":"https:\/\/www.smeup.com\/magazine\/blog\/smeup-webup-cloud-ibrido\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.smeup.com\/magazine\/"},{"@type":"ListItem","position":2,"name":"Cloud ibrido tra Kubernetes e IBM i"}]},{"@type":"WebSite","@id":"https:\/\/www.smeup.com\/magazine\/#website","url":"https:\/\/www.smeup.com\/magazine\/","name":"Magazine","description":"smeup","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.smeup.com\/magazine\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Person","@id":"https:\/\/www.smeup.com\/magazine\/#\/schema\/person\/194a55d96e7e52223a84ff78468bf5c7","name":"smeup","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a88cc3ad6c0af01768fe2ac47c88a321699d97ced53c173f66ceaa51400f43ca?s=96&d=mm&r=g","caption":"smeup"},"sameAs":["https:\/\/www.smeup.com"],"url":"https:\/\/www.smeup.com\/magazine\/blog\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/51883","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/comments?post=51883"}],"version-history":[{"count":3,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/51883\/revisions"}],"predecessor-version":[{"id":58218,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/posts\/51883\/revisions\/58218"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/media\/54011"}],"wp:attachment":[{"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/media?parent=51883"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/categories?post=51883"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.smeup.com\/magazine\/wp-json\/wp\/v2\/tags?post=51883"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}