Azure Developer Exam: AZ-200

Microsoft recently released information around the new Azure Developer exams: – https://www.microsoft.com/en-us/learning/exam-AZ-200.aspx

This blog post will cover available learning materials and docs links to information relevant to the exam AZ-200, links to these articles will be updated regularly.

Hopefully this will give you as a developer a head start on what you need to learn in order to pass the AZ-200 exam.

Select the appropriate cloud technology solution (15-20%)
Select an appropriate compute solution
May include but not limited to: Leverage appropriate design patterns; select appropriate network connectivity options; design for hybrid topologies

Overview of Azure compute
https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/compute-overview

Design Patterns
https://azureinteractives.azurewebsites.net/CloudDesignPatterns/default.html
https://docs.microsoft.com/en-us/azure/architecture/

Select appropriate network connectivity options
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-howto-site-to-site-resource-manager-portal
https://docs.microsoft.com/en-us/azure/vpn-gateway/vpn-gateway-plan-design

Hybrid Topologies
https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/hybrid-networking/
https://docs.microsoft.com/en-us/azure/architecture/reference-architectures/dmz/secure-vnet-hybrid

Select an appropriate integration solution
May include but not limited to: Address computational bottlenecks, state management, and OS requirements; provide for web hosting if applicable; evaluate minimum number of nodes

Address computational bottlenecks
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage-performance
https://docs.microsoft.com/en-us/azure/cloud-services/diagnostics-performance-counters

State Management
https://docs.microsoft.com/en-us/azure/redis-cache/cache-aspnet-session-state-provider

OS Requirements
https://azure.microsoft.com/en-gb/services/virtual-machines/

Select an appropriate storage solution
May include but not limited to: Validate data storage technology capacity limitations; address durability of data; provide for appropriate throughput of data access; evaluate structure of data storage; provide for data archiving, retention, and compliance

Validate data storage technology capacity limitations
https://docs.microsoft.com/en-us/azure/storage/common/storage-introduction
https://docs.microsoft.com/en-us/azure/virtual-machines/windows/premium-storage

Durability of Data
https://docs.microsoft.com/en-us/azure/storage/common/storage-redundancy
https://azure.microsoft.com/en-us/features/resiliency/

Evaluate structure of data storage
https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-overview
https://docs.microsoft.com/en-us/azure/architecture/guide/technology-choices/data-store-comparison

Data Archiving
https://azure.microsoft.com/en-gb/solutions/backup-archive/
https://azure.microsoft.com/en-gb/services/storage/archive/


Develop for cloud storage (30-35%)
Develop solutions that use storage tables
May include but not limited to: Connect to storage; design and implement policies to tables; query a table storage by using code

Connect to storage
https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-overview
https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet
https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-design-guide

Policies
https://docs.microsoft.com/en-us/rest/api/storageservices/establishing-a-stored-access-policy

Query table storage by using code
https://docs.microsoft.com/en-us/rest/api/storageservices/querying-tables-and-entities
https://docs.microsoft.com/en-us/azure/cosmos-db/table-storage-how-to-use-dotnet

Develop solutions that use Cosmos DB storage
May include but not limited to: Choose a consistency level; choose appropriate API for Cosmos DB Storage; create, read, update, and delete tables in Cosmos storage by using code; manage documents and collections in Cosmos DB Storage

Choose a consistency level
https://docs.microsoft.com/en-us/azure/cosmos-db/consistency-levels
https://blog.jeremylikness.com/cloud-nosql-azure-cosmosdb-consistency-levels-cfe8348686e6

Choose appropriate API for Cosmos DB Storage
https://docs.microsoft.com/en-us/azure/cosmos-db/

create, read, update, and delete tables in Cosmos storage by using code
https://dontpaniclabs.com/blog/post/2017/08/17/getting-started-azure-cosmos-db-part-1-crud/
https://elegantcode.com/2018/03/06/crud-using-azure-cosmos-db/
https://azure.microsoft.com/en-gb/resources/samples/azure-cosmos-db-table-dotnet-getting-started/

Manage documents and collections in Cosmos DB Storage
https://docs.microsoft.com/en-us/rest/api/cosmos-db/collections
https://docs.microsoft.com/en-us/azure/cosmos-db/storage-explorer

Develop solutions that use file storage
May include but not limited to: Implement quotas for File Shares in storage account; move items in file shares between containers asynchronously; set file storage container properties in metadata

Implement quotas for File Shares in storage account
https://docs.microsoft.com/en-us/azure/azure-subscription-service-limits
https://azure.microsoft.com/en-gb/services/storage/files/
https://docs.microsoft.com/en-us/azure/storage/files/storage-how-to-create-file-share

Move items in file shares between containers asynchronously
https://docs.microsoft.com/en-us/azure/storage/common/storage-use-azcopy

Set file storage container properties in metadata
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata
https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata

Develop solutions that use a relational database
May include but not limited to: Create, read, update, and delete database tables by using code; implement dynamic data masking

Create, read, update, and delete database tables by using code
https://docs.microsoft.com/en-us/azure/app-service/app-service-web-tutorial-dotnet-sqldatabase

Implement dynamic data masking
https://docs.microsoft.com/en-us/azure/sql-database/sql-database-dynamic-data-masking-get-started
https://docs.microsoft.com/en-us/sql/relational-databases/security/dynamic-data-masking?view=sql-server-2017

Develop solutions that use blob storage
May include but not limited to: Create a shared access signature for a blob; move items in blob storage between containers asynchronously; set blob storage container properties in metadata

Create a shared access signature for a blob
https://docs.microsoft.com/en-us/azure/storage/common/storage-dotnet-shared-access-signature-part-1
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-dotnet-shared-access-signature-part-2

Move items in blob storage between containers asynchronously
https://docs.microsoft.com/en-us/azure/storage/common/storage-moving-data

Set blob storage container properties in metadata
https://docs.microsoft.com/en-us/azure/storage/blobs/storage-properties-metadata
https://docs.microsoft.com/en-us/rest/api/storageservices/setting-and-retrieving-properties-and-metadata-for-blob-resources
https://docs.microsoft.com/en-us/rest/api/storageservices/set-blob-metadata

Developing for caching and content delivery solutions
May include but not limited to: Develop for Azure Redis cache, storage on Content Delivery Networks (CDNs); develop code to address session state and cache invalidation

Develop for Azure Redis cache
https://azure.microsoft.com/en-gb/services/cache/
https://docs.microsoft.com/en-us/azure/redis-cache/cache-dotnet-how-to-use-azure-redis-cache

Storage on Content Delivery Networks (CDNs);
https://docs.microsoft.com/en-us/azure/cdn/cdn-overview
https://azure.microsoft.com/en-gb/services/cdn/

Develop code to address session state and cache invalidation
https://docs.microsoft.com/en-us/azure/redis-cache/cache-faq
https://docs.microsoft.com/en-us/azure/architecture/best-practices/caching


Create Platform as a Service (PaaS) Solutions (35-40%)
Create web applications by using PaaS
May include but not limited to: Create an Azure app service web app by using Azure CLI, PowerShell, and other tools; create documentation for the API by using open source and other tools; create an App Service Web App for containers; create an App Service background task by using WebJobs

Create an Azure app service web app by using Azure CLI
https://docs.microsoft.com/en-us/azure/app-service/app-service-cli-samples

Create an Azure app service by using PowerShell
https://docs.microsoft.com/en-us/azure/app-service/app-service-powershell-samples
https://blogs.msdn.microsoft.com/benjaminperkins/2017/10/02/create-an-azure-app-service-web-app-using-powershell/

Create documentation for the API by using open source and other tools
https://blog.kloud.com.au/2017/06/13/azure-functions-with-swagger/

Create an App Service Web App for containers
https://azure.microsoft.com/en-gb/services/app-service/containers/
https://docs.microsoft.com/en-us/azure/app-service/containers/

Create an App Service background task by using WebJobs
https://docs.microsoft.com/en-us/azure/app-service/web-sites-create-web-jobs
https://docs.microsoft.com/en-us/azure/app-service/websites-dotnet-deploy-webjobs

Create mobile apps using PaaS
May include but not limited to: Add push notifications for mobile app; enable offline sync for mobile app; implement a remote instrumentation strategy for mobile devices

Create an app service Logic App
May include but not limited to: Create a custom connector for Logic Apps, a custom template for a Logic App; create a Logic App; package an Azure App Service Logic App

Create app or service that runs on Service Fabric
May include but not limited to: Develop a stateful Reliable Service and a stateless Reliable Service; develop an actor-based Reliable Service; write code to consume Reliable Collections in your service

Create serverless functions
May include but not limited to: Implement the bindings for the function (input and output); implement the function trigger by using a data operation, timer, webhook, or other tools; develop an Azure Function app for containers by using Azure Portal, CLI, and other tools; develop an Azure Service Fabric Mesh App

Schedule bulk operations
May include but not limited to: Define the batch output and conditions by using Batch Service API; write code to run a batch job; run a batch job by using Azure CLI, Azure Portal, and other tools

Create solutions that use Azure Kubernetes Service
May include but not limited to: Configure diagnostic settings on resources; create a container image by using a Docker file; create an Azure Container Service (ACS/AKS) cluster by using the Azure CLI and Azure Portal; publish an image to the Azure Container Registry; implement an application that runs on an Azure Container Instance; implement container instances by using Azure Container Service (ACS/AKS), Azure Service Fabric, and other tools; manage container settings by using code

Design and develop applications that use media services
May include but not limited to: Implement an application using Video Indexer, Video API, Preview, and other media related services; implement file-based encoding and Azure Media Analytics; develop media solutions that use AI services (e.g., content moderation, optical character recognition, video summarization, face detection, etc.)


Secure cloud solutions (15-20%)
Implement authentication
May include but not limited to: Implement authentication by using certificates, forms-based authentication, tokens, Windows-integrated authentication; implement multi-factor authentication by using Azure AD options

Implement access control
May include but not limited to: Implement Claims-Based Access Control (CBAC) and Role-Based Access Control (RBAC) authorization

Implement secure data solutions
May include but not limited to: Encrypt and decrypt data at rest; encrypt data with Always Encrypted; implement Azure Confidential Compute and SSL/TLS communications; manage cryptographic keys in the Azure Key Vault

Ping me if any links are broken please.

How to Monitor changes in your Azure Resources

I was at a recent ThoughtWorks talk in Glasgow about Infrastructure as Code as it was something that was very relevant as to what I was looking into at the time

We wanted to take an Azure Resource Group (dev) and then deploy the entire thing to a new Resource Group (UAT) and use ARM templates and Azure Devops to accomplish this (I’ll cover this in another blog post soon).

But this made me think what happens if there is any drift, i.e. if someone manually changes a setting in the Azure portal then what? – I haven’t yet come to the point where I get alerts on drift but at least I found out where to monitor changes to resources you have within Azure.

So here you can see what was changed and by whom, so if someone was to say change an Azure Function AppSettings it would be shown here with a date and time as well, handy if you need to keep an eye on who changed what and when

 

Azure Devops: Test & Feedback Intro

Microsoft recently changed the name from Visual Studio Team Services (VSTS) and rename it Azure Devops.

They also added some new features one of which I will cover briefly to give you a flavour of what you do with it.

With Azure Devops Microsoft have a suite of tools which combined are very powerful and cover a number of topics which I will in turn cover over the next few weeks and months (there is a lot to cover).

This quick blog post will cover some of the functionality in the newly released Azure Test & Feedback.

So the clue is in the name,  and you can use this Chrome Browser extension tool to do the following and a lot more: –

  • Take Screenshots of bugs and have them added straight into your current sprint in your Azure Board (with browser details etc.)
  • Record videos of how you reproduce a bug and again have that added as a bug in the current sprint.
  • Create Test Cases (not looked into this enough yet), but looks very sweet indeed

The below is a screen shot of the extension and you can even watch the quick demo, you can get the Chrome extension here: –
https://marketplace.visualstudio.com/items?itemName=ms.vss-exploratorytesting-web

 

Download it take it for a test drive, you’ll be pleasantly surprised 🙂

How to debug issues with Azure Web Apps Part 2 – Monitoring your webapp

Just like any application in Production it’s always good to be prepared for issues and with an Azure Web App knowing how to set up logging so that you can find errors and try to diagnose what’s going on is very important.

In this blog post I’ll cover how to go about diagnosing errors and trying to figure out how to resolve issues.

First off if you have a web app created in Azure then under Monitoring look for Diagnostic Logs

By default all of these are off, so in order to capture Application logging and Web Server Logging we need to turn these on like so: –

Now that we have logging turned on its time to view some logs and we can do this by browsing to our site and then also trying to browse to a page that doesn’t exist and then check the log files.

Once I have browsed to the app I can view the log files by clicking Advance tools in the portal and again using Kudu, this time once Kudu loads, select the following: –

  • Select Debug Console and then select CMD
  • Click on Log files and then Application
  • Then click to download the log file by selecting the download icon as shown below

And now we can view the log files generated from the Application Logging change we made to enable this.

In order to see IIS web logs you need to follow these steps if you chose Web Server Logging (FileSystem)

  • Select Debug Console and then select CMD
  • Click on Log files, http and then RawLogs
  • Then click to download the log file by selecting the same icon in the previous step

Ok one last thing to show before I wrap up this blog post is Log Stream within Azure.
Log stream allows you to view either the application logs or web server logs as a stream (in real-time).

So if I have an issue on the website and I wanna quick look at what’s going on here is how to use Log Stream in Azure.

  • Find your web application within the Azure Portal
  • Under Monitoring click on Log Stream
  • Choose Application logs
  • Browse around your app
  • Watch the screen fill up with the logging information in real-time

Hopefully this will be of some use to people, enjoy.

Your Glasgow User Group needs you

Three Glasgow user groups are lining up to provide a joint meetup on Wednesday the 24th October crossing all 3 subject areas:

We need you, yes you, to give a 10 minute lightning talk on a relevant subject covering a subject from the above. We are encouraging people who have always wanted to give a talk but haven’t either the confidence to stand up and give a talk or just haven’t gotten around to it as yet. We’re hoping for a number of first time speakers, people who maybe give internal talks at work but don’t feel they want to take it up a level and speak at a user group.

Some things I would like to say about giving a talk: –

  • We all have to start somewhere and a lightning talk is a great way to start
  • Your 10 minute talk can just be telling us about your experience using one of the products
  • You don’t need to have slides
  • Attending User Groups open doors as networking is always a good thing
  • Were a very friendly and welcoming bunch of techies
  • Newcomers are made very welcome
  • There’s free beer and soft drinks and pizza

To sign up to attend this great event please grab a ticket here: https://www.eventbrite.co.uk/e/glasgow-joint-tech-meetup-tickets-49595077211

If you have any questions feel free to get in touch.

Thanks Gregor

 

VSTS and Git Integration for Deploying to Azure – Part 3

 

In Part 3 I will cover how to create a Release off of a Build we create from Part 2 https://gregorsuttie.com/2018/08/24/vsts-and-git-integration-for-deploying-to-azure-part-2/

So to create a new Release we click the plus icon as shown below – nothing like consistency in the ui 😉

 

So again we get to choose a template this time for our Release Pipeline like so.

After I choose Azure app Service Deployment I get this screen.

Here I get to change the Environment name, so I edited Environment1 to be Development and then I need to select Add next to Artifacts to choose the deployment artifacts (the files i wish to deploy)

 

 

Here I am selecting the artifacts to deploy, I have chosen the Source Type as Build and the Build Pipeline both from part 2 and given the Release pipeline a name and then I click Add.

Now we can choose to setup release based on a number of things, we can make them manual or automated deployments based on triggers etc.

One example is a scheduled trigger and you can set this up by clicking Schedule release trigger as below.

 

With VSTS there are is a tonne of options to try out, its very easy to have either manual builds and manual releases and just as easy to have fully automated build, test deploy pipelines.

VSTS and Git Integration for Deploying to Azure – Part 2

Ok so in this post (part 2) I promised to show you how to use Visual Studio Team Services (VSTS) to build, test and deploy your code to Azure.

Step 1 – Build your code using VSTS

Select Build and Release from inside VSTS like so

On the right hand side click where it says + New and you’ll see the next screen

I have rubbed out the names of the project I the above screen shot in case you’re wondering why it looks weird.

So here I’m saying that I want to use VSTS Git for where my source code belongs, I choose the Team Project, the Repository and which branch I am interested in building, then I select continue.

Now I need to select a template for the type of project I want to build like so.

I have chosen the Azure Web App for ASP.Net and then I click Apply.

On the next screen I need to choose

  • Name for the new Build
  • Which type of pool will I use to build the code
  • Locate the solution file for my project (from a selection)
  • I have chosen my Azure Subscription
  • And I have chosen the App service name from a drop down which comes from my Azure subscription.

 

Above you can see the list of steps which will be preformed

  1. Use Nuget
  2. Restore my Nuget Package(s)
  3. Build the solution
  4. Run any Tests within the solution
  5. Attempt to Deploy the App Service (this step I would normally always remove)
  6. Then VSTS publishes the artifacts to a Drop folder within VSTS which is later used in the Release part of VSTS to deploy the artifacts to Azure in tis case.

I will right click on step 5 and remove the App Service Deploy step as I just want to build my solution and create the deployment artifacts.

 

Ok so now you need to pay attention to this area of the build screen.

The red exclamation mark is showing us we need to fill out some further details before we can proceed, so lets fix this next.

So here we need to add a Branch Filter before it will allow us to Save the new Build.

And now we can either choose Save or Save and queue our new Build, I’ll select Save and queue.

 

And you’ll now see your Build queued.

 

One your build is there you more than likely want to setup continous integration, tick this checkbox inside Trigger.

 

 

 

In the screen above you click Enable Continous Integration and you can fill the screen below out

Join me in Part 3 – And I’ll walk-through deploying the code by creating a Release in VSTS for our new build artifacts.