Skip to content

Commit

Permalink
new ADR for AWS; start of raft of deployment view
Browse files Browse the repository at this point in the history
  • Loading branch information
miyagis-forests committed Nov 23, 2020
1 parent 83e0980 commit a4a2572
Show file tree
Hide file tree
Showing 9 changed files with 65 additions and 5 deletions.
2 changes: 1 addition & 1 deletion ADRs/ADR002-payment-gateway.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ADR 001: Use Payment Gateway in self-hosted mode
# ADR 002: Use Payment Gateway in self-hosted mode
There are different versions of the Farmacy Food app (web version, iOS native app, Android native app).
The app can take orders and give customers flexible yet secure payment options.
The payment solution should be simple and easy to use, provide scalability, and work on native mobile apps.
Expand Down
2 changes: 1 addition & 1 deletion ADRs/ADR003-bff-pattern.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ADR 002: Use the BFF pattern
# ADR 003: Use the BFF pattern
We have a microservice architecture with several REST services and different types of frontends: Web application,
iOS application, Android application, public API clients (for the future), chatbot (also for the future). Different
frontends may require slightly different message formats, message structures, headers, etc.
Expand Down
2 changes: 1 addition & 1 deletion ADRs/ADR004-wrapper-pattern.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ADR 003: Use the Wrapper pattern
# ADR 004: Use the Wrapper pattern
Farmacy Food interacts with many third-party partner systems. The interfaces of these external systems are bound to
differ greatly. Such variety emerges both from a standards and a technology point of view.

Expand Down
2 changes: 1 addition & 1 deletion ADRs/ADR005-cqrs-pattern.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# ADR 004: Use a CQRS Pattern
# ADR 005: Use a CQRS Pattern
We have a microservice architecture with several REST services that would need to read and write data.
Sometimes it's difficult to design those services to do both tasks efficiently.
In the Farmacy Food system, the design of writes (commands) is primarily concerned with the integrity of data and business rules,
Expand Down
33 changes: 33 additions & 0 deletions ADRs/ADR006-aws-as-cloud-provider.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# ADR 006: Use AWS as cloud provider
Farmacy Food is not an IT enterprise, and has limited work force to manage the IT infrastructure.
The organization wants to see quick growth in the number of customers and orders placed. This growth requires scalability
of the running platform.

## Decision
The Farmacy Food server-side system will be run on a public cloud. We will use Amazon AWS as the cloud provider.

## Rationale
First off, there are good reasons to deploy on the cloud:
- In the first Kata session, Kwaku himself said he expects to use the cloud.
- These days, virtually all startups that rely on a software solution on the Web use a public cloud infrastructure. Startups don't
have the people and the money to install and manage physical server machines and VMs on top of those.
- On premises infrastructure do not give the elasticity (horizontal scalability) [required by Farmacy Food](../requirements/quality-attribute-rqmts.md).
(Twenty years ago, if your website/service went "viral" you would run to Radio Shack to buy more CPUs and call your ISP
to increase the link bandwidth. Today, we simply deploy the solution in the cloud.)

The other aspect, is the choice of AWS:
- The truth is... other cloud providers, such as Microsoft Azure and Google Cloud would provide the variety
of services that Farmacy Food requires, with equivalent quality and cost.
- For the sake of the Kata, we picked AWS to be able to illustrate this important architecture perspective: *how your system is
deployed*. The choice of AWS over others is based on our own team familiarity with the platform--one of us is a Certified AWS Developer
and our organization has a contract with AWS (via a cloud broker).
- Moving forward our suggestion to Farmacy Food is to pick one of the big cloud providers based on the tech skills of your IT team (if you
have an expert in Azure and you are a startup, you just go with Azure, for example).


## Status
Proposed

## Consequences
- Farmacy Food needs to create an AWS account and hire or train an engineer that is familiar with AWS services.
- The CI/CD jobs/pipelines shall include integration with AWS.
2 changes: 2 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ into five views, which correspond to the main capabilities or subdomains in scop
- [Customer at pick-up location - microservice and EDA view](architecture/customer-pickup-microservice-eda-view.md)
- [Replenisher - microservice and EDA view](architecture/replenish-microservice-eda-view.md)
- [Hexagonal reference architeture view](architecture/hexagonal-reference-architecture.md)
- [AWS deployment view](architecture/aws-deployment-view.md)

### ADRs

Expand All @@ -32,6 +33,7 @@ The linked ADRs recording the main architecture decisions regarding the proposed
- ADR 003 - [BFF pattern](ADRs/ADR003-bff-pattern.md)
- ADR 004 - [Wrapper pattern](ADRs/ADR004-wrapper-pattern.md)
- ADR 005 - [CQRS pattern](ADRs/ADR005-cqrs-pattern.md)
- ADR 006 - [AWS as the cloud provider](ADRs/ADR006-aws-as-cloud-provider.md)

<sub>***Note***: *we used [this ADR template](https://github.com/pmerson/ADR-template/blob/master/ADR-template.md). It is slightly
different from the template presented by Neal during the first Kata session.
Expand Down
24 changes: 24 additions & 0 deletions architecture/aws-deployment-view.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# AWS Deployment View
This view shows how the server-side components of the Farmacy Food system can be deployed on the AWS platform.

![AWS deployment view](../images/aws-deployment-view-primary.png)


## Element Catalog

#### EKS
- [Elastic Kubernetes Service](https://aws.amazon.com/eks/features/) makes it easy to run your system to run on a Kubernetes (K8S)
cluster in the cloud. Many of the tasks related to creating, configuring, and monitoring K8S nodes and clusters is done for you.
- EKS runs on EC2 instances inside a private network (VPC) that you define within AWS.


## Related ADRs
- [AWS as the cloud provider](../ADRs/ADR006-aws-as-cloud-provider.md)

## Related Views
- [Customer Account Management - microservice view](user-account-mgmt-microservice-view.md)
- [Catalog - microservice view](catalog-microservice-view.md)
- [Order - microservice and EDA view](order-microservice-eda-view.md)
- [Catalog - microservice view](catalog-microservice-view.md)
- [Replenisher - microservice and EDA view](replenish-microservice-eda-view.md)
- [Hexagonal reference architeture view](hexagonal-reference-architecture.md)
2 changes: 1 addition & 1 deletion architecture/context-diagram.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Context diagram
# Context Diagram
The goal of the context diagram is to show the **scope** of your software system (shown in the middle) and indicate what
**external entities** your system interacts with. In the architecture views we find a description of the
external entities in the diagram, along with an explanation of the interaction with the system.
Expand Down
1 change: 1 addition & 0 deletions architecture/customer-pickup-microservice-eda-view.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,3 +71,4 @@ posted to the Inventory and Order topics for later handling by the `Inventory co

## Related Views
- [Order - microservice and EDA view](order-microservice-eda-view.md)
- [Replenisher - microservice and EDA view](replenish-microservice-eda-view.md)

0 comments on commit a4a2572

Please sign in to comment.