Skip to content

Commit

Permalink
Merge pull request #40 from DanielCrouch/azure-lifecycle
Browse files Browse the repository at this point in the history
Azure lifecycle
  • Loading branch information
meslubi2021 authored Dec 20, 2024
2 parents 157827e + 312208f commit ed25503
Show file tree
Hide file tree
Showing 8 changed files with 106 additions and 0 deletions.
43 changes: 43 additions & 0 deletions azure-lifecycle/00-outline.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Azure Developer Lifecycle for .NET Developers

The purpose of this book (or set of docs, or whatever else this project becomes) is to set the minimum bar for a complete .NET development lifecycle on Azure. We shall assume that developers are experienced ASP.NET developers (200-300 level understanding) with no cloud/Azure experience. The emphasis will be on onboarding developers to Azure, not a survey of everything available.

## Working Outline

1. Introduction/Overview
* Purpose of book
* Cloud computing/Azure - High level overview

2. Required Tools and Downloads
* Azure subscription
* Visual Studio (and appropriate workload for VS2017)

3. Deploying an app to App Service
* Downloading the sample
* Right-click > publish scenario.
* Git Push method
* FTP method

4. DevOps and CI/CD toolchain
* Putting the app in a local Git or GitHub repo and tying it to Azure for CI
* Use of staging environments in Web Apps
* Make a change to the app, commit it, watch it show up magically in staging, then promote staging to prod
* VSTS build server

5. Monitoring, Logging, and Debugging
* Monitoring in the Portal
* Logging
* Debugging
* Application Insights

6. Best practices we didn’t cover (learning paths, not content)
* Keeping secrets in Key Vault
* Using Redis for caching and session state
* Using Azure CDN for content distribution

7. Next Steps – Learning paths for additional topics
* Azure storage
* Databases
* Azure functions
* Containers
* Cognitive services
63 changes: 63 additions & 0 deletions azure-lifecycle/01-introduction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
# Introduction

## Welcome

Welcome to Azure Development Lifecycle for .NET! In this guide, we'll introduce you to the basic concepts you'll need to build a development lifecycle around Azure using .NET tools and processes. After finishing this guide, you'll be able to reap the benefits of a mature CI/CD DevOps toolchain.

### Who this guide is for

You should be an experienced ASP.NET developer (200-300 level). You don't need to know anything about Azure, as we'll cover that in this introduction. This guide may also be useful for DevOps engineers who are more focused on operations than development.

### What this guide doesn't cover

This guide is focused on an end-to-end DevOps experience for .NET developers. It will not be an exhaustive guide to all things Azure, nor will it focus extensively on .NET APIs for Azure services. The emphasis is all around continuous integration, deployment, monitoring, and debugging. Near the end of the guide we will make some recommendations for next steps, which will include some suggestions for Azure platform services that will be useful for ASP.NET developers.

## Understanding cloud computing as a developer

In many ways, developing for the cloud is very similar to developing on-premise applications. The most obvious difference is that the application code runs somewhere else. Getting a little deeper, however, things can get very complicated very quickly. For that reason, it's important to understand the different models of cloud computing.

%TODO% IaaS vs PaaS vs SaaS diagram like [this](https://stack247.files.wordpress.com/2015/05/azure-on-premises-vs-iaas-vs-paas-vs-saas.png)

### Infrastructure as a Service

The most familiar model of cloud computing for many developers is **Infrastructure as a Service**, or **IaaS**. In **IaaS** deployments, the customer is simply running a virtual machine on the service provider's hardware. While the cloud service provider is providing the physical infrastructure for network connectivity, physical storage, and a hypervisor to host the VM, the customer is responsible for the configuration and maintenance of the guest operating system within the VM, the virtual network configuration, and all the application code running within the VM.

IaaS is an attractive option for legacy applications, as generally anything that can be run on a VM on-premise can be run in a VM in a cloud data center just as well with few, if any, modifications.

### Platform as a Service

A cloud computing model which might be less familiar is **Platform as a Service**, or **PaaS**. PaaS services are about providing a development platform, with very little concern to the developer with regard to the underlying infrastructure. PaaS services can be as generalized as [Azure App Service](https://docs.microsoft.com/azure/app-service/), which is a robust web hosting platform similar to Microsoft Internet Information Services, or as specialized as [Azure Service Bus Messaging](https://docs.microsoft.com/azure/service-bus-messaging/), a reliable message broker.

Many Azure PaaS offerings are similar to Service Bus Messaging in that they are "building blocks" that can be leveraged by any application, whether they are hosted in the Azure, on-premises, or with another cloud provider. PaaS services like this can be pieced together in various combinations to support virtually any type of application. Outsourcing pieces of your application to the cloud enables you to bootstrap development of your application quickly, since the functionality of things like authentication, message queuing, blob storage, and SQL or NoSQL databases can be integrated into your application as a dependency rather than new development.

Other examples of PaaS offerings in Azure are:

* [Azure Storage](https://docs.microsoft.com/azure/storage/)
* [Azure Search](https://docs.microsoft.com/azure/search/)
* [Notification Hubs](https://docs.microsoft.com/azure/notification-hubs/)
* [Service Fabric](https://docs.microsoft.com/azure/service-fabric/)
* [Azure Container Service](https://docs.microsoft.com/azure/aks/)
* [Azure SQL Database](https://docs.microsoft.com/azure/sql-database/)
* [Redis Cache](https://docs.microsoft.com/azure/redis-cache/)
* [Cosmos DB](https://docs.microsoft.com/azure/cosmos-db/)
* [Azure Active Directory](https://docs.microsoft.com/azure/active-directory/)
* [Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/)

PaaS should be given serious consideration for greenfield development of new applications since there is a considerable value proposition in terms of development time and ongoing maintenance, as well as cost. Additionally, when infrastructure is abstracted behind a platform, well-designed applications can scale on demand or by automated rules.

The processes presented in this guide will assume the application is at least hosted in Azure App Service, but dependencies on "building block" services will be avoided.

### Software as a Service

Virtually everybody uses some type of **Software as a Service** (**SaaS**) application. SaaS is a subscription or ad-based model where software is run from the cloud, usually in a a browser. Office 365, Salesforce, Dropbox, Google Docs, and Gmail are all examples of SaaS. For the purposes of this guide, SaaS is only relevant insofar as Visual Studio Team Services is a SaaS offering we will use extensively.

## Conclusion

This guide will prepare you to build a continuous integration development lifecycle built around ASP.NET and Azure PaaS products.

## Additional reading

* [What is Cloud Computing?](https://azure.microsoft.com/overview/what-is-cloud-computing/)
* [Examples of Cloud Computing](https://azure.microsoft.com/overview/examples-of-cloud-computing/)
* [What is IaaS?](https://azure.microsoft.com/overview/what-is-iaas/)
* [What is PaaS?](https://azure.microsoft.com/overview/what-is-paas/)
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.
Empty file.

0 comments on commit ed25503

Please sign in to comment.