• Skip to primary navigation
  • Skip to main content
  • Skip to footer

Codemotion Magazine

We code the future. Together

  • Discover
    • Events
    • Community
    • Partners
    • Become a partner
    • Hackathons
  • Magazine
    • Backend
    • Dev community
    • Carriere tech
    • Intelligenza artificiale
    • Interviste
    • Frontend
    • DevOps/Cloud
    • Linguaggi di programmazione
    • Soft Skill
  • Talent
    • Discover Talent
    • Jobs
    • Manifesto
  • Companies
  • For Business
    • EN
    • IT
    • ES
  • Sign in
ads

peduz91Giugno 17, 2024

L’Innovazione del modello serverless nel cloud computing

Cloud
Serverless Computing, modello serverless
facebooktwitterlinkedinreddit

Negli ultimi anni, il concetto di “serverless” ha guadagnato notevole popolarità nel campo dello sviluppo software e dell’infrastruttura cloud. Contrariamente a quanto suggerisce il termine, il modello serverless non implica l’assenza di server, ma piuttosto che la gestione e il mantenimento dell’infrastruttura server sono completamente trasparenti agli sviluppatori e quindi il team di sviluppo non deve implementare l’infrastruttura, semmai potrebbe dover configurarla.

La differenza con il modello tradizionale

Nel modello tradizionale di sviluppo, gli sviluppatori devono gestire un’applicazione insieme all’infrastruttura necessaria per eseguirla, inclusi server, reti, bilanciatori di carico e altri componenti, questo comporta una notevole complessità e richiede competenze specifiche per l’amministrazione dei sistemi. Al contrario, con l’approccio serverless, gli sviluppatori possono concentrarsi esclusivamente sulla logica dell’applicazione, delegando la gestione dell’infrastruttura al provider di servizi cloud.

Recommended article
A-landscape-oriented-image-that-embodies-the-concept-of-a-lightweight-proxy-approach-in-a-cloud-native-scenario-with-a-special-focus
Giugno 10, 2025

LimitRange e ResourceQuota: come tenere sotto controllo il tuo cluster Kubernetes

Enrico Candino

Cloud

Funzionamento del modello serverless

Nel modello serverless, il provider di servizi cloud, come Amazon Web Services (AWS), Google Cloud Platform (GCP) o Microsoft Azure, si occupa di gestire le risorse server e i dettagli dell’infrastruttura. Gli sviluppatori creano funzioni o microservizi che vengono eseguiti su richiesta. Questo significa che la scalabilità, l’approvvigionamento delle risorse e l’ottimizzazione delle prestazioni sono gestiti automaticamente dal provider cloud, permettendo una scalabilità quasi infinita in risposta alla domanda degli utenti.

Vantaggi del modello serverless

L’architettura serverless offre numerosi vantaggi, tra cui:

  1. Riduzione dei costi operativi: Con il modello serverless, si paga solo per il tempo effettivo di esecuzione delle funzioni e non è necessario mantenere server dedicati che potrebbero rimanere inattivi per lunghi periodi, riducendo così i costi.
  2. Scalabilità automatica: L’infrastruttura cloud gestisce automaticamente la scalabilità in base alla domanda; le funzioni possono essere replicate e distribuite rapidamente ed efficientemente, consentendo di gestire carichi di lavoro variabili senza interventi manuali.
  3. Flessibilità e semplicità: Gli sviluppatori possono concentrarsi solo sulla logica dell’applicazione, senza preoccuparsi della gestione dell’infrastruttura sottostante e questo consente di ridurre i tempi di sviluppo e di distribuzione.
  4. Maggiore produttività: La riduzione delle attività amministrative permette agli sviluppatori di focalizzarsi sulle funzionalità dell’applicazione, aumentando la produttività e accelerando il rilascio di nuove funzionalità.
  5. Riduzione della complessità operativa: Non è necessario preoccuparsi dell’approvvigionamento delle risorse o della gestione dei server, riducendo così la complessità operativa e i potenziali errori.
  6. Affidabilità elevata: I servizi serverless sono gestiti da provider cloud affidabili che garantiscono alta disponibilità e robustezza; inoltre l’esecuzione isolata delle funzioni aumenta l’affidabilità complessiva.
  7. Tempi di risposta rapidi: La distribuzione automatica delle funzioni su server geograficamente distribuiti riduce la latenza e migliora l’esperienza dell’utente.

Esempi di codice java su piattaforme cloud serverless

Per utilizzare le funzionalità serverless con il linguaggio Java, possiamo sfruttare i servizi offerti da piattaforme come AWS Lambda, Google Cloud Functions e Azure Functions. Ecco una guida su come scrivere e distribuire una semplice funzione Java utilizzando AWS Lambda.

Prerequisiti
  • Un account AWS
  • AWS CLI configurato
  • Maven installato
Step 1: creare un progetto maven

Creiamo un nuovo progetto Maven con una struttura di base.

mvn archetype:generate -DgroupId=com.example -DartifactId=lambda-demo -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=falseCode language: JavaScript (javascript)
Step 2: scrivere la funzione lambda

Modifichiamo il file App.java per implementare la nostra funzione Lambda.

package com.example;

import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;

public class App implements RequestHandler<RequestClass, ResponseClass> {
    public ResponseClass handleRequest(RequestClass request, Context context) {
        String greeting = "Hello, " + request.getName();
        return new ResponseClass(greeting);
    }
}
Code language: PHP (php)
Step 3: definire le classi di Request e Response

Creiamo le classi RequestClass e ResponseClass per gestire i dati di input e output.

package com.example;

public class RequestClass {
    private String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package com.example;

public class ResponseClass {
    private String message;

    public ResponseClass(String message) {
        this.message = message;
    }

    public String getMessage() {
        return message;
    }
}
Code language: JavaScript (javascript)
Step 4: configurare il file di deployment

Modifichiamo il file pom.xml per includere le dipendenze necessarie per AWS Lambda.

<dependency>
    <groupId>com.amazonaws</groupId>
    <artifactId>aws-lambda-java-core</artifactId>
    <version>1.2.1</version>
</dependency>
Code language: HTML, XML (xml)
Step 5: creare l’artifact

Compiliamo il progetto e creiamo l’artifact che sarà caricato su AWS Lambda.

mvn package
Step 6: caricare la funzione su aws lambda

Utilizziamo AWS CLI per caricare la funzione Lambda.

aws lambda create-function --function-name HelloWorldFunction --zip-file fileb://target/lambda-demo-1.0-SNAPSHOT.jar --handler com.example.App::handleRequest --runtime java11 --role arn:aws:iam::123456789012:role/lambda-execution-roleCode language: JavaScript (javascript)
Step 7: testare la funzione

Possiamo testare la funzione direttamente dalla console AWS o utilizzando AWS CLI.

aws lambda invoke --function-name HelloWorldFunction --payload '{"name": "World"}' response.jsonCode language: JavaScript (javascript)

Il file response.json conterrà l’output della funzione.

Limiti del modello serverless

Nonostante i numerosi vantaggi, il modello serverless potrebbe non essere adatto a tutte le applicazioni: carichi di lavoro che richiedono elaborazioni costanti o di lunga durata potrebbero non beneficiare del modello serverless e potrebbero necessitare di un’infrastruttura tradizionale per un controllo più granulare e per costi potenzialmente inferiori. È cruciale valutare attentamente le esigenze specifiche dell’applicazione prima di adottare un’architettura serverless.

Conclusioni

L’adozione di nuove forme di sviluppo, come il modello serverless, rappresenta un’opportunità significativa per migliorare l’efficienza e la scalabilità delle applicazioni. Tuttavia, è fondamentale comprendere che ogni esigenza ha il suo strumento dedicato e non bisogna adottare tecnologie solo perché vanno di moda, ma la scelta va fatta sulla base di motivazioni tecniche e di progetto per quanto possibile.
Imparare a valutare e selezionare gli strumenti più appropriati per ogni situazione è una competenza essenziale per sviluppatori e architetti del software, garantendo così soluzioni ottimali e sostenibili nel tempo.

Codemotion Collection Background
cloud computing
Selezionati per te

Vuoi scoprire più articoli come questo? Dai un’occhiata alla collection cloud computing dove troverai sempre nuovi contenuti selezionati dal nostro team.

Share on:facebooktwitterlinkedinreddit

Tagged as:Serverless

peduz91
Sono uno sviluppatore software con forte passione per lo sviluppo, la tecnologia, il calcio e gli scacchi. Mi piace mettermi sempre in gioco, provo spesso cose nuove. Credo che la cosa più importante sia lavorare bene con il team.
Redis: la lepre diventa tartaruga (quando serve)
Previous Post
Guida per fare un buon networking a un evento tech
Next Post

Footer

Discover

  • Events
  • Community
  • Partners
  • Become a partner
  • Hackathons

Magazine

  • Tech articles

Talent

  • Discover talent
  • Jobs

Companies

  • Discover companies

For Business

  • Codemotion for companies

About

  • About us
  • Become a contributor
  • Work with us
  • Contact us

Follow Us

© Copyright Codemotion srl Via Marsala, 29/H, 00185 Roma P.IVA 12392791005 | Privacy policy | Terms and conditions