Skip to content

Commit 8f5db2d

Browse files
skill-based updates
1 parent d62e727 commit 8f5db2d

7 files changed

Lines changed: 23 additions & 21 deletions

File tree

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/2-environment-setup.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,4 @@ The `docker exec` command should print `CREATE EXTENSION`. If it prints `NOTICE:
7979

8080
You've set up an Arm-based environment by creating a Microsoft Azure VM powered by Cobalt 100 and installing the toolchain necessary for migration.
8181

82-
Next, you'll create a reproducable baseline to use for benchmarking.
82+
Next, you'll create a reproducible baseline to use for benchmarking.

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/3-checkout-build-baseline.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
title: Create an Arm baseline before optimization
2+
title: Create a nopCommerce endpoint benchmark baseline on Arm
33
weight: 3
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
## Build and baseline
9+
## Build nopCommerce and create an endpoint baseline
1010

1111
Create a reproducible Arm baseline before optimization work.
1212

@@ -80,7 +80,7 @@ curl -s -o /dev/null -w 'install=%{http_code}\n' http://127.0.0.1:5000/install
8080

8181
The outputs after a successful install should be: `root=200`, `install=302`.
8282

83-
### Run the baseline
83+
### Run the endpoint baseline benchmark
8484

8585
Don't benchmark `/install`. Baseline stable storefront paths first, then add cart and attribute-change routes only after you know the valid product IDs, attribute IDs, request method, and anti-forgery token behavior for your installed store.
8686

@@ -235,6 +235,6 @@ This baseline process becomes the control for every later tuning or code-change
235235

236236
You've now created a baseline before migrating the application.
237237

238-
Next, you'll make note of dependencies before migration.
238+
Next, you'll audit dependencies before migration.
239239

240240

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/4-dependency-mapping-manifests.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
title: Run dependency discovery before migration
2+
title: Generate an SBOM and run .NET dependency discovery before migration
33
weight: 4
44

55
### FIXED, DO NOT MODIFY
@@ -28,7 +28,7 @@ dotnet list src/Presentation/Nop.Web/Nop.Web.csproj package --include-transitive
2828

2929
### Generate an SBOM
3030

31-
Generate an SBOM so you can track all components, versions, and exposure surface as a first-class migration artifact. While not strictly necessary for migration purposes, this is a best practice that will save your team time down the road. You can also give this SBOM to an LLM to extract insights about your codebase for you.
31+
Generate an SBOM so you can track all components, versions, and exposure surface as a first-class migration artifact. While not strictly necessary for migration purposes, this is a best practice that'll save time. You can also give this SBOM to an LLM to extract insights about your codebase.
3232

3333
The CycloneDX tool is installed as a .NET global tool. Add `~/.dotnet/tools` to `PATH` in the current shell so the `dotnet-CycloneDX` command is available immediately after installation.
3434

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/5-containerization.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
2-
title: Choose between options to containerize the application
2+
title: Choose a containerization path for the nopCommerce application
33
weight: 5
44

55
### FIXED, DO NOT MODIFY
66
layout: learningpathall
77
---
88

9-
## Containerize the application
9+
## Containerize and migrate the application
1010

1111
Containerization should preserve reproducibility across architectures. The following are practical paths for Dockerfile-based builds and .NET SDK container publish, with guardrails for multi-architecture delivery.
1212

@@ -16,7 +16,7 @@ Use the Dockerfile workflow as the default migration path for nopCommerce until
1616

1717
Run a Dockerfile build with `buildx` from the repository root when you want to preserve the upstream nopCommerce Dockerfile behavior. This is the safest first containerization path because the Dockerfile installs runtime packages used by nopCommerce on Linux, including globalization and image-processing dependencies.
1818

19-
Before you push a multi-architecture image, make sure `buildx` is available, you are logged in to your registry, and your builder can build both requested platforms. If `docker buildx version` fails, install the Docker Buildx plugin for your Docker package before continuing. On an Arm-only VM, the `linux/amd64` build requires emulation or an additional x64 builder node.
19+
Before you push a multi-architecture image, make sure `buildx` is available, you're logged in to your registry, and your builder can build both requested platforms. If `docker buildx version` fails, install the Docker Buildx plugin for your Docker package before continuing. On an Arm-only VM, the `linux/amd64` build requires emulation or an additional x64 builder node.
2020

2121
```bash
2222
docker buildx version
@@ -36,9 +36,9 @@ docker buildx imagetools inspect "$IMAGE"
3636

3737
### Single architecture .NET SDK publish path
3838

39-
Use SDK publish when you want tighter integration with .NET build settings and fewer custom Docker steps. For nopCommerce, treat this as a validation path until you have confirmed that the generated image includes the Linux native packages your store needs. SDK publish creates the container image, but it does not run `apk add` or `apt-get install` steps like a Dockerfile does.
39+
Use SDK publish when you want tighter integration with .NET build settings and fewer custom Docker steps. For nopCommerce, treat this as a validation path until you have confirmed that the generated image includes the Linux native packages your store needs. SDK publish creates the container image, but it doesn't run `apk add` or `apt-get install` steps the way a Dockerfile does.
4040

41-
This command publishes an Arm64 image into the local Docker daemon with an explicit repository, tag, and container runtime identifier:
41+
This command publishes an arm64 image into the local Docker daemon with an explicit repository, tag, and container runtime identifier:
4242

4343
```bash
4444
dotnet publish src/Presentation/Nop.Web/Nop.Web.csproj \
@@ -88,13 +88,13 @@ Before choosing the SDK publish path for multi-architecture images, check the SD
8888
dotnet --version
8989
```
9090

91-
If you can't use a .NET SDK version that supports multi-RID container publishing, or if SDK publish does not produce the multi-architecture image index you need, use the `docker buildx build --platform linux/amd64,linux/arm64` workflow instead.
91+
If you can't use a .NET SDK version that supports multi-RID container publishing, or if SDK publish doesn't produce the multi-architecture image index you need, use the `docker buildx build --platform linux/amd64,linux/arm64` workflow instead.
9292

9393
Multi-RID container publishing starts with .NET SDK versions `8.0.405`, `9.0.102`, and `9.0.2xx`. The nopCommerce `release-4.90.3` source pins SDK `9.0.100` in `global.json` with feature-band roll-forward, so confirm the actual SDK selected by CI is new enough before relying on SDK multi-arch publish.
9494

9595

9696
## What you've accomplished and what's next
9797

98-
You've learned about different containerization paths for the .NET application and containerized the app.
98+
You've learned about different containerization paths for the .NET application.
9999

100100
Next, you'll tune application performance.

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/6-deploy-verify-cobalt.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ Treat tuning as an experiment pipeline, not a one-shot tweak. On Arm, apply chan
1414

1515
Start with a conservative runtime profile that is commonly effective for server workloads. Keep these settings outside the application code at first so you can switch profiles without rebuilding.
1616

17-
Runtime environment variables are read when the .NET process starts. Stop the baseline `dotnet run` process, set the variables in the same terminal, and then restart nopCommerce. The thread-pool minimum below matches the 2-vCPU validation VM; treat it as a starting point, not a universal value for every Cobalt size.
17+
Runtime environment variables are read when the .NET process starts. Stop the baseline `dotnet run` process, set the variables in the same terminal, and then restart nopCommerce.
18+
19+
The following thread-pool minimum matches the 2-vCPU validation VM. Treat it as a starting point, not a universal value for every Cobalt size:
1820

1921
```bash
2022
export DOTNET_TieredCompilation=1
@@ -86,7 +88,7 @@ Use these rules before adopting a tuning profile:
8688

8789
### Considerations for interpreting metric improvements
8890

89-
When interpeting metric improvements, consider the following:
91+
When interpreting metric improvements, consider the following:
9092

9193
- If only one metric improves while p95 or error rate regresses, don't treat the change as a win.
9294
- If run-to-run variation is near the observed delta, treat it as noise.

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/7-arm-mcp-server.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,8 @@ Implement the following guardrails when using the Arm MCP Server for optimizatio
8080
- Ask the agent to separate observed facts from inferred explanations.
8181
- Re-run on production-like traffic before release.
8282

83-
## What you've accomplished
83+
## What you've learned
8484

85-
You've used the Arm MCP Server to optimize a .NET nopCommerce application migrated to Arm.
85+
You've learned how to use the Arm MCP Server to optimize a .NET nopCommerce application migrated to Arm.
8686

8787
You can use the workflows in this Learning Path as a template for your own applications, then validate with your production-like traffic profile before rollout.

content/learning-paths/servers-and-cloud-computing/dotnet-migration-nopcommerce/_index.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
---
2-
title: Migrate a .NET nopCommerce application to Azure Cobalt 100
2+
title: Migrate and optimize a .NET nopCommerce application on Microsoft Azure
33

44
minutes_to_complete: 75
55

6-
who_is_this_for: This Learning Path is for .NET and platform engineers migrating a production .NET application to Arm on Azure.
6+
who_is_this_for: This Learning Path is for .NET and platform engineers migrating a production .NET application to Arm-based infrastructure on Azure.
77

88
learning_objectives:
99
- Build a pinned nopCommerce release and baseline on Arm with the same .NET toolchain
@@ -13,7 +13,7 @@ learning_objectives:
1313
- Use the Arm MCP Server to automate endpoint selection, test generation, and optimization planning
1414

1515
prerequisites:
16-
- Azure account with permissions to create VMs
16+
- Azure account with permissions to create virtual machines
1717
- Azure CLI (`az`) installed locally
1818
- Docker and .NET 9 SDK familiarity
1919
- Basic Linux command-line knowledge

0 commit comments

Comments
 (0)