One of my readings during my summer break!
Introduction
I read a lot of technical books and articles essentially for 2 reasons;
- I love it (reading technical books and articles 🤓),
- To stay tuned.
During myrecent summer break, among other readings, I read the “Azure for Developers” book, a copy of which was kindly provided by Packt Publishing. While my day-to-day work at IBM centers on using our own tools and IBM Cloud ☁️ services to support clients and partners, I believe it’s essential to stay current with the offerings of competing platforms. This continuous learning is a key part of my professional development.
Now that the picture is set, let’s dig into what I learned from the book!
Synthesis of my reading
The author’s aim is to a comprehensive guide to building secure, scalable, and modern applications on the Microsoft Azure platform. This book is meant to be a resource for developers, QA engineers, and solution architects looking to build new applications or modernize existing ones on Azure.
Setting the Stage: Environment and Foundational Tools
The journey begins with providing a practical guide to setting up a local environment, choosing the right Integrated Development Environment (IDE) like IntelliJ or Visual Studio, and understanding the core command-line tools. It covers the Azure CLI and Azure PowerShell, explaining their importance and how to use them for various Azure operations. For those who prefer a web-based environment, the book introduces the Cloud Shell, a dedicated environment for all Azure accounts.
Modern Application Development-Web, Serverless, and Workflows
Exploring how to host applications using;
- Azure App Service, covering deployment, configuration, and scalability. For lightweight, front-end projects, the book delves into
- Azure Static Web Apps ** and **Azure Storage static websites, offering a no-infrastructure approach to hosting.
The concept of serverless computing is a major focus, with an extensive guide to
- Azure Functions, The book teaches developers how to build event-driven services, discussing various hosting plans (Consumption, Premium, and Flex Consumption) and deployment pipelines using Azure DevOps and GitHub Actions. Additionally, it explores advanced workflow scenarios with
- Azure Logic Apps for low-code solutions and Durable Functions for complex, stateful workflows.
Containers and Containerization
Going into Azure Container Registry to manage and publish container images. A comprehensive overview of building and managing containerized workloads using different services:
- Azure Container Instances for ad-hoc, one-time jobs and continuous processes.
- Azure Container Apps for building microservices with features like scalability and revision management.
- Azure App Service for hosting containers, including single and multi-container applications.
Operations and Storage
Secure and Efficient Operations — Storage, Messaging, and Monitoring: nice chapters with good explanation. I would not go into details, but useful information.
AI, ML and MLOps
Essentially the part of the book that really interested me is where the author dives into “AI and ML”. This is where we can read about integrating applications with Azure OpenAI Service, covering fundamental concepts like prompts and tokens, as well as use cases for chatbots, content creation, and product innovation. It also explores how to leverage Azure Machine Learning to automate machine learning tasks and adopt MLOps practices.
DevOps
Finally, the book provides a comprehensive guide on building continuous integration and continuous delivery (CI/CD) pipelines using GitHub Actions, demonstrating how to automate deployments of both infrastructure and applications.
GitHub Repository
The book has also a GitHub repository with examples provided for different chapters. I didn’t try any of the codes provided (in Java, Python or .Net, Go…) so I cannot confirm the code works, but is seems to be well written.
package main
import (
"context"
"encoding/json"
"fmt"
"log"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azcore/to"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/resources/armresources"
)
const (
resourceGroupName = "<resource-group-name>"
deploymentName = "<deployment-name>"
templateFile = "aci.json"
)
var (
ctx = context.Background()
)
func readJSON(path string) (map[string]interface{}, error) {
data, err := os.ReadFile(path)
if err != nil {
log.Fatalf("failed to read file: %v", err)
}
contents := make(map[string]interface{})
_ = json.Unmarshal(data, &contents)
return contents, nil
}
func main() {
subscriptionId := os.Getenv("AZURE_SUBSCRIPTION_ID")
cred, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
log.Fatalf("failed to obtain a credential: %v", err)
}
template, err := readJSON(templateFile)
if err != nil {
return
}
deploymentsClient, err := armresources.NewDeploymentsClient(subscriptionId, cred, nil)
if err != nil {
log.Fatalf("failed to create client: %v", err)
}
deploy, err := deploymentsClient.BeginCreateOrUpdate(
ctx,
resourceGroupName,
deploymentName,
armresources.Deployment{
Properties: &armresources.DeploymentProperties{
Template: template,
Parameters: "{\"parCustomerId\": {\"value\": \"18363875\"}}",
Mode: to.Ptr(armresources.DeploymentModeIncremental),
},
},
nil,
)
if err != nil {
log.Fatalf("failed to deploy template: %v", err)
}
fmt.Println(deploy)
}
Conclusion
Given the content and practical advice within “Azure for Developers,” I can confidently say it’s a worthwhile read. This book provides the comprehensive knowledge needed to build and manage modern applications on the Azure platform (if you’re Azure user). Its blend of foundational concepts and advanced topics makes it a good resource for developers looking to stay competitive in the fast-paced world of cloud computing.
Top comments (1)
Azure mastered! ☁️