Skip to content

Commit 51c0c20

Browse files
matebarabasAlex Leeeriqua
authored
[Wiki] CARML personas (#1560)
* initial content adding from presentation * add persona text from strategy docx * update personas article * Merge branch 'main' into users/mabara/1460 * update TOC * moved example solutions using carml * udate formatting, move links * resolve conflicts * merge conflicts * rename file * rename file * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * Update docs/wiki/The context - Logical layers and personas.md Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> * update example * small fix activities Co-authored-by: Alex Lee <alexle@microsoft.com> Co-authored-by: Erika Gressi <56914614+eriqua@users.noreply.github.com> Co-authored-by: Erika Gressi <erikag@microsoft.com>
1 parent 7eaa7ed commit 51c0c20

7 files changed

Lines changed: 116 additions & 2 deletions

File tree

docs/wiki/Home.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,15 @@ The objective of this repository is to provide a template library that can accel
44

55
This wiki describes the content of this repository, its modules, pipelines, and possible options on how to use them and how to contribute to this project.
66

7-
If you're unfamiliar with Infrastructure as Code, or wonder how you can use the content of this repository in your deployments, check out [The context](./The%20context) section of this wiki.
7+
If you're unfamiliar with Infrastructure as Code or wonder how you can use the content of this repository in your deployments, check out [The context](./The%20context) section of this wiki.
88

99
### _Navigation_
1010

1111
- [The context](./The%20context)
1212
- [CARML overview](./The%20context%20-%20CARML%20overview)
1313
- [The library](./The%20context%20-%20CARML%20library)
1414
- [The CI environment](./The%20context%20-%20CARML%20CI%20environment)
15+
- [Logical layers and personas](./The%20context%20-%20Logical%20layers%20and%20personas)
1516
- [Getting started](./Getting%20started)
1617
- [**Scenario 1:** Consume module library only](./Getting%20started%20-%20Scenario%201%20Consume%20library)
1718
- [**Scenario 2:** Onboard module library and CI environment](./Getting%20started%20-%20Scenario%202%20Onboard%20module%20library%20and%20CI%20environment)
@@ -37,7 +38,7 @@ If you're unfamiliar with Infrastructure as Code, or wonder how you can use the
3738
- [Get formatted RBAC roles](./Contribution%20guide%20-%20Get%20formatted%20RBAC%20roles)
3839
- [Validate module locally](./Contribution%20guide%20-%20Validate%20module%20locally)
3940
- [Solution creation](./Solution%20creation)
40-
- Upgrade guideline.mds
41+
- Upgrade guideline
4142
- [Upgrade from 0.3.1 to 0.4.0](./Upgrade%20from%200.3.1%20to%200.4.0)
4243
- [Known issues](./Known%20issues)
4344

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
CARML can be represented as a key layer of a logical technology stack. This article provides an overview of the different personas using/interacting with the CARML repository and various layers if its technology stack.
2+
3+
### _Navigation_
4+
5+
- [Logical layers](#logical-layers)
6+
- [Personas](#personas)
7+
- [Solution Consumer](#solution-consumer)
8+
- [Typical activities of a Solution Consumer](#typical-activities-of-a-solution-consumer)
9+
- [How does a Solution Consumer benefit from CARML?](#how-does-a-solution-consumer-benefit-from-carml)
10+
- [Solution Developer](#solution-developer)
11+
- [Typical activities of a Solution Developer](#typical-activities-of-a-solution-developer)
12+
- [How does a Solution Developer benefit from CARML?](#how-does-a-solution-developer-benefit-from-carml)
13+
- [Module Developer](#module-developer)
14+
- [Typical activities of a Module Developer](#typical-activities-of-a-module-developer)
15+
- [How does a Module Developer benefit from CARML?](#how-does-a-module-developer-benefit-from-carml)
16+
17+
# Logical layers
18+
19+
This chapter explains how the different layers of the technology stack (see below) and the solutions developed based on it rely on each other.
20+
21+
![Layers](media/Personas/layers.png)
22+
23+
In bottom-up order, the layers are:
24+
25+
- **Azure Resource Manager**: At the bottom, you can see the engine, powering Azure. This layer takes API level interactions and makes changes to or reads data from Azure's management plane. To directly interact with the ARM, one would need to learn and directly leverage its REST API.
26+
- **Bicep**: Microsoft's new proprietary DSL (domain specific language). To build solutions based on Bicep, one would need to know all the relevant details of the DSL itself as well as all Azure resource types involved in the solution(s) to be developed.
27+
- **CARML**: This module library offers a consistent code base of tested, reliable and ready-to-deploy Bicep modules. To build complex, multi-module solutions based on CARML, one would need to get familiar with the library, have a good understanding of Bicep, but wouldn't need to know all details of all Azure resources, or how to author feature-rich templates for deploying the resources required by the solution.
28+
- **Solutions**: this layer represents a complex solution in Azure, that provides a meaningful functionality for its users. A solution can be something like an Azure Kubernetes Services (AKS) environment, that can host containers to run applications. In this model, to build a custom solution, one would need to be familiar with the modules provided by the CARML library.
29+
- **Applications**: an application/workload run in a cloud environment, such as an AKS platform, etc. In case of application/workload, we can typically differentiate **administrators** and **end users**.
30+
31+
# Personas
32+
33+
In the context of CARML, we differentiate three personas:
34+
35+
- Solution Consumer
36+
- Solution Developer
37+
- Module Developer
38+
39+
## Solution Consumer
40+
41+
![SolutionConsumers](./media/Personas/SolutionConsumers.png)
42+
43+
A **Solution Consumer** is an indirect persona. This person is rather a cloud administrator and not necessarily a developer. The focus of this persona is on **implementing and managing an end-to-end solution** (application/workload), rather than building one. A Solution Consumer can benefit from CARML's modules via a complex, multi-module solution that leverages a Bicep registry, a package, etc.; perhaps even a wizard or a click-to-deploy button.
44+
This persona will need to understand the required and optional configuration data (parameters) and will need to understand the architecture and "opinion" behind the solution.
45+
46+
This persona isn’t consuming CARML directly, but is consuming CARML via a solution that relies on it:
47+
48+
- Examples:
49+
- Existing CARML solutions (These links provide examples of real world solutions using CARML):
50+
- [AKS Landing Zone Accelerator](https://github.com/Azure/AKS-Landing-Zone-Accelerator)
51+
- [AVD Landing Zone Accelerator](https://github.com/Azure/avdaccelerator)
52+
- An internally developed multi-module solution for internal application or workload pattern
53+
54+
> **Note**: Solution Consumers are not to be confused with end users. Solution Consumers are cloud administrators, deploying a complex solution and administering an application installed into such a cloud environment. An end user is someone who will use the application or workload hosted in the cloud for his/her work (ex., information worker or application developer).
55+
56+
### Typical activities of a Solution Consumer
57+
58+
- Clone or reference a multi-module solution (ex., AKS Landing Zone Accelerator).
59+
- Understand the reference architecture, key decisions.
60+
- Update parameters to include organization and environment specific data.
61+
- Deploy the template(s) of the multi-module solution.
62+
63+
### How does a Solution Consumer benefit from CARML?
64+
65+
- Start with known good reference implementations.
66+
- Consume Microsoft and organization-specific guidance.
67+
- Improve time to value for workload administrators and users.
68+
69+
## Solution Developer
70+
71+
![SolutionDevelopers](./media/Personas/SolutionDevelopers.png)
72+
73+
A **Solution Developer** is not a user. Their focus is on using CARML to **build end-to-end solutions** that are opinionated. These solutions will be published (publicly and/or privately) for consumption by others and will be used many times by many organizations/teams, in many environments/subscriptions/landing zones).
74+
A Solution Developer uses the CARML library (its public or organization/customer specific implementation), with a chosen preference for using its modules via Bicep registry (public, private), or template specs, or direct reference, or using Git submodules, etc. Solution Developers might benefit the most from overcoming the learning curve – because of the standardization and scale they can achieve with CARML.
75+
76+
- Modules: Use an existing code base to develop and test multi-module solutions (ex., a Landing Zone Accelerator, or an internal platform/workload team). This might also lead to creating/updating modules.
77+
- Continuous Integration: Use the provided CI environment to improve multi-module development and testing. This might also lead to improving CI.
78+
79+
### Typical activities of a Solution Developer
80+
81+
- Create (develop, run integration tests for and publish) multi-module solutions for specific reference patterns (workloads, applications, environments).
82+
- If necessary, can modify (develop, run unit tests for and publish) existing modules to implement organization-specific standards - however, applying significant modifications or creating new modules, also qualifies this persona as [Module Developer](#module-developer).
83+
84+
### How does a Solution Developer benefit from CARML?
85+
86+
- Codify reference patterns (guidance, decisions, governance).
87+
- Focus on the requirements of the reference patterns.
88+
- Can adopt the toolkit’s infra-as-code guidance.
89+
- Simplify downstream usage for application/workload teams.
90+
91+
## Module Developer
92+
93+
![ModuleDevelopers](./media/Personas/ModuleDevelopers.png)
94+
95+
A **Module Developer** is not a user. Their focus is on CARML itself. A Module Developer is tasked with improving the library – for their organization/customer or the whole world (open source community). They might want to add organization/company specifics to the library (either via conventions, parameters, extensions, or CI-specific changes). They might also implement/improve generic things, in a way that could be contributed back upstream, into the CARML open source repository for the greater public. A Module Developer is tasked with helping the CARML Solution Developer (see previous).
96+
97+
- Modules: Create new. Update existing.
98+
- Continuous Integration: Improve the unit testing in the CI.
99+
- Sample 1: A simple resource, with supported extension resources, deploys fast.
100+
- Sample 2: A complex resource, with supported extension resources and child resources.
101+
102+
### Typical activities of a Module Developer
103+
104+
- Create, update modules for Azure resources.
105+
- Incorporate new resource providers or new capabilities, and extensions to existing resource providers.
106+
- Improve the CARML repository's documentation.
107+
- Improve continuous integration for testing/publishing CARML modules.
108+
- Requires in depth knowledge of CARML, Bicep, ARM, DevOps and infra-as-code.
109+
110+
### How does a Module Developer benefit from CARML?
111+
112+
- Contributes to building and maintaining a common code base. Particularly beneficial to customers that have an Enterprise or Distributed Operating model.

docs/wiki/The context.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,4 @@ This section explains the context of the Common Azure Resource Modules Library (
66
- [CARML overview](./The%20context%20-%20CARML%20overview)
77
- [The library](./The%20context%20-%20CARML%20library)
88
- [The CI environment](./The%20context%20-%20CARML%20CI%20environment)
9+
- [Logical layers and personas](./The%20context%20-%20Logical%20layers%20and%20personas)
14.2 KB
Loading
20 KB
Loading
17.1 KB
Loading
16.6 KB
Loading

0 commit comments

Comments
 (0)