
Explore serverless computing and Azure storage integration for function development. Configure triggers and bindings, build a function pipeline, and deploy to Azure with hosting and pricing insights.
Access the GitHub project with the main branch containing the solution and per-module branches. Start learning by following along or experimenting with your own code as you explore serverless computing.
Explore the foundations of serverless computing, clarify what it is not, compare event driven architecture and microservices, and weigh the pros and cons for serverless Java applications.
Define serverless computing as an execution model where a cloud provider allocates resources on demand, removing infrastructure management while you still patch dependencies and release code.
Discover how serverless computing with Azure Functions for Java developers deploys code, scales resources automatically, and lets you pay only for what you use, while the cloud vendor manages lifecycle.
Explore common architecture styles and their characteristics, and evaluate how serverless fits as a deployment model alongside styles like microservices and event-driven architectures.
Discover how serverless computing suits architectural styles like microservices, event driven architecture, and pipes and filters, and why these styles are easy to implement with Azure Functions.
Explore microservices architecture as small, loosely coupled services with singular responsibilities, deployable independently, often communicating via RESTful APIs or messaging systems, including serverless functions.
Explore event driven architecture (EDA) that uses events as the central communication mechanism, enabling asynchronous, loosely coupled components, event stores, and patterns like choreography and orchestration.
Explore the pipes and filters architecture, where modular filters transform data through one-way pipes in data integration, data transformation pipelines, and stream processing systems, enabling reusable, loosely coupled, scalable processing.
Explore architectural styles that don't align with serverless computing, highlighting modular monolith and hexagonal architecture, and identify features that hinder effective implementation on serverless platforms.
Explore monolith and modular monolith architectures, including their single-unit deployment, shared resources, and uniform technology stacks, and contrast them with serverless approaches.
Explore hexagonal architecture, also called ports and adapters, featuring a center core that isolates business rules, inbound and outbound adapters, and dependency inversion to improve testability and maintainability.
Assess the trade-offs of going serverless, weighing cold starts, latency, and execution limits like 15 minutes, against automatic provisioning, scaling, cost efficiency, business value, vendor lock-in, and debugging challenges.
Clarify what serverless computing is and isn’t, and outline compatible architecture styles. Weigh benefits like automatic scaling and cost efficiency against challenges such as cold starts and vendor lock-in.
Set up your Java development environment for Azure Functions and learn the basics of triggers and bindings, with hands-on demos of http, timer, and query triggers and storage interactions.
Set up a local development environment for Azure Functions using the Maven archetype, IntelliJ IDEA, and Azure Functions Core Tools to bootstrap and run your first function.
Explore how Azure functions serve as basic serverless computation units, demonstrated with a Java uppercase function triggered by an http post and anonymous access, including function annotations and context.
Implement the first Azure function in Java, an http-based internationalization function that returns localized greetings based on the accept-language header, while configuring the local runtime with local.settings.json and Java home.
Discover how triggers in Azure Functions start execution and bind to external data sources. Examine HTTP, timer, blob, queue, and Event Grid triggers, with the single-trigger rule.
Examine the http trigger definition and its elements, then test the function with a http client. Maven generates the function.json and bindings for the request and response.
Explore how bindings connect data to Azure Functions, enabling input, output, and trigger bindings to integrate with blob storage, Cosmos DB, Event Hubs, and SendGrid.
Install Azurite, a local Azure storage emulator, and use Azure Storage Explorer to develop and debug storage-based functions locally, with Node.js versions 10–18.
Add an output binding to a java function to send messages to azure storage queue named greetings queue, configured by the queue output annotation and function.json, and tested via Maven.
Explore the fundamentals of Azure Functions for Java developers, configure a local development environment with IntelliJ IDEA, Maven, and Azure Functions tools, and implement HTTP and queue triggers with bindings.
Build a three-filter Azure Functions pipeline: http-trigger entry, queue-based validation, and enrich prompt, enabling prompt engineering and AI tool integration in the cloud.
Implement an http trigger function that validates language with a fluent api, exposes an api endpoint, and routes valid questions to a storage queue for Azure functions, with local testing.
Explore Azure Functions hosting plans and pricing, including consumption, Premium, and dedicated options, and how Docker runtimes and container options like Azure Container Apps and Azure Kubernetes Service affect scalability.
Deploy your Java function to Azure with the Azure Functions Maven plugin, using infrastructure as code, Azure CLI, and post deployment testing in the Azure portal.
Connect an Azure function to a storage account and use the storage queue for asynchronous messaging with auto-configured Azure WebJobs storage connection strings.
Recap deploying Azure Functions for an AI chat assistant using a pipe and filter architecture, with three filters, HTTP trigger, queue binding, and hosting plan considerations.
Explore monitoring and debugging for Azure Functions by using Application Insights, built-in and custom logs, and metrics to diagnose issues and improve performance.
Add a prompt engineering function that consumes questions from the questions queue, enriches them with a template, and outputs prompts to the prompt queue, then deploy and test in Azure.
Discover how to use Azure Monitor and Application Insights to debug Azure Functions, collect telemetry, visualize with dashboards, and set alerts for proactive, reliable performance.
Learn to query built-in logs in Azure Functions using Application Insights and the Kusto query language (KQL) to monitor, filter, and extend logging across function pipelines.
Implement custom logging in Azure Functions using the execution context's logger. Log question and prompt queue flow, test deployments, and explore built-in monitoring with Application Insights.
Explore Azure built-in monitoring for functions using application dashboard and application map. Review metrics like requests, failures, response times, and availability, plus percentiles for precise performance.
Visualize dependencies and health using the application map in Application Insights, showing functions, queues, and telemetry on response times and errors.
Recap the module's hands-on debugging of an Azure function, using built-in and custom logs, kql queries, metrics in application dashboard, application map, and run reports to monitor responsiveness and dependencies.
Explore Spring Cloud Function to build serverless Java applications on Azure, covering function catalog, handlers, and adapters, then implement a queue-driven AI processing filter using Azure Functions.
Learn how Spring Cloud Function enables serverless, stateless, single-purpose Java functions with Spring Boot, deployable on AWS Lambda, Azure Functions, Google Cloud Functions, or as a standalone app.
Explore Spring Cloud Functions features that support reactive, imperative, or hybrid styles, function composition, multiple inputs and outputs, automatic type conversion, and serverless packaging with adapters for major platforms.
Implement the third filter in a pipes and filters pipeline with Spring Cloud Function on Azure Functions, wiring a dummy model client and deploying to test prompt and answer queues.
Explore Spring Cloud function to build decoupled serverless apps by implementing business logic as functions, with a uniform model across providers and Azure adapters.
Summarizes serverless concepts, Azure Functions, and architecture styles, then demonstrates debugging, monitoring, and deploying an AI chat assistant with Spring Cloud Function on Azure.
Perform an environment clean up by iteratively decommissioning Azure resource groups, copying names to confirm deletion, and removing all contained resources to cut costs, with tips after the course.
Discover next steps to deepen your Azure Functions expertise with Java, from triggers and bindings to monitoring with Application Insights and Azure Monitor, plus Spring Cloud Functions.
Welcome to this comprehensive course tailored for Java developers, focusing on serverless computing with Azure Functions! Throughout this journey, we'll delve deep into serverless architecture, Azure Functions, Spring Cloud Function, and more, all from a Java-centric perspective.
To kick things off, we'll establish a solid understanding of serverless computing principles, exploring various architectural styles and their relevance in serverless environments, especially in Java-based projects.
Moving forward, we'll immerse ourselves in Azure Functions, emphasising hands-on experience to configure your development environment seamlessly. You'll become proficient in essential concepts like triggers and bindings, laying the groundwork to create and integrate functions effortlessly, with a special focus on Java implementations.
Midway through the course, you'll navigate through Azure Functions App intricacies, gaining insights into hosting options, pricing models, and effective deployment strategies, all with Java at the forefront. Additionally, you'll engineer function pipelines on Azure, leveraging Azure Storage Queue functionalities for streamlined performance.
An integral part of our journey will be mastering monitoring and debugging techniques. You'll learn to troubleshoot with precision, utilising advanced logging features such as Application Insights to optimise function performance effectively, ensuring smooth operations in the cloud environment.
In the final leg of our exploration, we'll introduce Spring Cloud Function, a dynamic addition to the Spring Framework. Discover its potential and harness its programming model to craft vendor-independent function logic, primed for deployment and testing within Azure's ecosystem, all while leveraging the power of Java.
Embark on this exhilarating adventure with me as we unlock the full spectrum of serverless computing possibilities with Azure Functions, tailored specifically for Java enthusiasts!