|
2 | 2 |
|
3 | 3 | # NGINX Modern Reference Architectures
|
4 | 4 |
|
5 |
| -This repository has the basics for a common way to deploy and manage modern apps. |
6 |
| -Over time, we'll build more example architectures using different deployment |
7 |
| -models and options – including other clouds – and you’ll be able to find those here. |
| 5 | +This repository has the basics for a common way to deploy and manage modern apps. Over time, we'll build more example |
| 6 | +architectures using different deployment models and options – including other clouds – and you’ll be able to find those |
| 7 | +here. |
8 | 8 |
|
9 | 9 | ## Nomenclature
|
10 | 10 |
|
11 |
| -Internally, we refer to this project as MARA for Modern Application Reference |
12 |
| -Architecture. The current repository name reflects the humble origins of this |
13 |
| -project, as it was started with the purpose of allowing users to build custom |
14 |
| -versions of the NGINX Ingress Controller in Kubernetes. This went so well that |
15 |
| -we expanded it to the project you're currently viewing. |
| 11 | +Internally, we refer to this project as MARA for Modern Application Reference Architecture. The current repository name |
| 12 | +reflects the humble origins of this project, as it was started with the purpose of allowing users to build custom |
| 13 | +versions of the NGINX Ingress Controller in Kubernetes. This went so well that we expanded it to the project you're |
| 14 | +currently viewing. |
16 | 15 |
|
17 | 16 | ## Modern App Architectures
|
18 | 17 |
|
19 |
| -We define modern app architectures as those driven by four characteristics: |
20 |
| -*scalability*, *portability*, *resiliency*, and *agility*. While many different |
21 |
| -aspects of a modern architecture exist, these are fundamental. |
| 18 | +We define modern app architectures as those driven by four characteristics: |
| 19 | +*scalability*, *portability*, *resiliency*, and *agility*. While many different aspects of a modern architecture exist, |
| 20 | +these are fundamental. |
22 | 21 |
|
23 |
| -* **Scalability** – Quickly and seamlessly scale up or down to accommodate |
24 |
| -spikes or reductions in demand, anywhere in the world. |
| 22 | +* **Scalability** – Quickly and seamlessly scale up or down to accommodate spikes or reductions in demand, anywhere in |
| 23 | + the world. |
25 | 24 |
|
26 |
| -* **Portability** – Easy to deploy on multiple types of devices and |
27 |
| -infrastructures, on public clouds, and on premises. |
| 25 | +* **Portability** – Easy to deploy on multiple types of devices and infrastructures, on public clouds, and on premises. |
28 | 26 |
|
29 |
| -* **Resiliency** – Can fail over to newly spun‑up clusters or virtual |
30 |
| -environments in different availability regions, clouds, or data centers. |
| 27 | +* **Resiliency** – Can fail over to newly spun‑up clusters or virtual environments in different availability regions, |
| 28 | + clouds, or data centers. |
31 | 29 |
|
32 |
| -* **Agility** – Ability to update through automated CI/CD pipelines |
33 |
| -with higher code velocity and more frequent code pushes. |
| 30 | +* **Agility** – Ability to update through automated CI/CD pipelines with higher code velocity and more frequent code |
| 31 | + pushes. |
34 | 32 |
|
35 | 33 | This diagram is an example of what we mean by a **modern app architecture**:
|
36 |
| - |
| 34 | + |
37 | 35 |
|
38 | 36 | To satisfy the four key characteristics, many modern app architectures employ:
|
39 | 37 |
|
40 |
| -* Platform agnosticism |
41 |
| -* Prioritization of OSS |
42 |
| -* Everything defined by code |
43 |
| -* CI/CD automation |
44 |
| -* Security-minded development |
45 |
| -* Containerized builds |
46 |
| -* Distributed storage |
| 38 | +* Platform agnosticism |
| 39 | +* Prioritization of OSS |
| 40 | +* Everything defined by code |
| 41 | +* CI/CD automation |
| 42 | +* Security-minded development |
| 43 | +* Containerized builds |
| 44 | +* Distributed storage |
47 | 45 |
|
48 | 46 | ## What's Being Built
|
49 | 47 |
|
50 | 48 | For details on the current state of this project, please see the
|
51 |
| -[readme](./pulumi/python/README.md) in the [`pulumi/python`](./pulumi/python) |
52 |
| -subdirectory. This project is under active development, and the current work |
53 |
| -is using [Pulumi](https://www.pulumi.com/) with Python. Additionally, please see |
54 |
| -[Status and Issues](./docs/status-and-issues.md) for the project's up-to-date |
55 |
| -build status and known issues. |
56 |
| - |
57 |
| -Subdirectories contained within the root directory separate reference architectures |
58 |
| -by infrastructure deployment tooling with additional subdirectories as needed. |
59 |
| -For example, Pulumi allows the use of multiple languages for deployment. As we |
60 |
| -decided to use Python in our first build, there is a `python` subdirectory |
61 |
| -under the `pulumi` directory. |
62 |
| - |
63 |
| -This project was started to provide a complete, stealable, easy to deploy, and |
64 |
| -standalone example of how a modern app architecture can be built. It was driven by |
65 |
| -the necessity to be flexible and not require a long list of dependencies to get started. |
66 |
| -It needs to provide examples of tooling used to build this sort of architecture in |
67 |
| -the real world. Most importantly, it needs to work. Hopefully this provides a |
68 |
| -‘jumping off’ point for someone to build their own infrastructure. |
| 49 | +[readme](pulumi/python/README.md) in the [`pulumi/python`](pulumi/python) |
| 50 | +subdirectory. This project is under active development, and the current work is using [Pulumi](https://www.pulumi.com/) |
| 51 | +with Python. Additionally, please see |
| 52 | +[Status and Issues](docs/status-and-issues.md) for the project's up-to-date build status and known issues. |
69 | 53 |
|
| 54 | +Subdirectories contained within the root directory separate reference architectures by infrastructure deployment tooling |
| 55 | +with additional subdirectories as needed. For example, Pulumi allows the use of multiple languages for deployment. As we |
| 56 | +decided to use Python in our first build, there is a `python` subdirectory under the `pulumi` directory. |
| 57 | + |
| 58 | +This project was started to provide a complete, stealable, easy to deploy, and standalone example of how a modern app |
| 59 | +architecture can be built. It was driven by the necessity to be flexible and not require a long list of dependencies to |
| 60 | +get started. It needs to provide examples of tooling used to build this sort of architecture in the real world. Most |
| 61 | +importantly, it needs to work. Hopefully this provides a ‘jumping off’ point for someone to build their own |
| 62 | +infrastructure. |
70 | 63 |
|
71 | 64 | ## Deployment Tools
|
72 | 65 |
|
73 | 66 | ### Pulumi
|
74 | 67 |
|
75 |
| -[Pulumi](https://www.pulumi.com/) is a modern Infrastructure as Code (IaC) tool |
76 |
| -that allows you to write code (node, Python, Go, etc.) that defines cloud infrastructure. |
77 |
| -Within the [`pulumi`](./pulumi) folder are examples of the pulumi being used to stand up MARA. |
| 68 | +[Pulumi](https://www.pulumi.com/) is a modern Infrastructure as Code (IaC) tool that allows you to write code (node, |
| 69 | +Python, Go, etc.) that defines cloud infrastructure. Within the [`pulumi`](pulumi) folder are examples of the pulumi |
| 70 | +being used to stand up MARA. |
78 | 71 |
|
79 | 72 | ## Contribution
|
80 | 73 |
|
81 | 74 | We welcome pull requests and issues!
|
82 | 75 |
|
83 |
| -Please refer to the [Contributing Guidelines](CONTRIBUTING.md) when doing a PR. |
84 |
| - |
| 76 | +Please refer to the [Contributing Guidelines](CONTRIBUTING.md) when doing a PR. |
85 | 77 |
|
86 | 78 | ## License
|
87 | 79 |
|
88 | 80 | All code in this repository is licensed under the
|
89 |
| -[Apache License v2 license](./LICENSE). |
| 81 | +[Apache License v2 license](LICENSE). |
90 | 82 |
|
91 | 83 | Open source license notices for all projects in this repository can be
|
92 | 84 | found [here](https://app.fossa.com/reports/92595e16-c0b8-4c68-8c76-59696b6ac219).
|
|
0 commit comments