Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fixes #79: Write an ADR about development environments #80

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

vivalareda
Copy link
Contributor

@vivalareda vivalareda commented Nov 28, 2023

#79
also closes #56 I didn't realise I already had a issue open about this my mistake

@vivalareda vivalareda requested a review from rngadam November 28, 2023 13:11
@vivalareda vivalareda linked an issue Nov 28, 2023 that may be closed by this pull request
- **User Acceptance Testing (uat) Environment**: A stable space where end users can try out new features before they are made live. During the testing phase, it is frozen to keep it consistent. This is the prototyping phase.
- **Production (prd) Environment**: The final phase released to the users.

We host our website with **Vercel**, which offers a unique way to handle these situations:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

specific details of implementation should not be included in an ADR, except when we are really, really sure we won't ever change which is not the case for Vercel. Go back to what Vercel is, which is a web hosting service for static files and describe that.

- Using Vercel makes our CI/CD pipeline better because it automates the deployment process and gives us feedback on changes right away through preview URLs.

## Consequences
- The team must follow the rules for using these environments in a structured way to avoid problems and make sure that the change from development to production goes smoothly.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

a lot of this implies manual steps when in fact we are automating these.

When documentation is required, handwaving documentation is not sufficient; there needs to be clear where this doc is, how it is written and how it is used.

- **Single Environment Approach**: putting development, testing, and production all in the same environment (not chosen because of risk and lack of control).

## Outcome of the Decision
We are going to put our production-level apps in three different environments:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Don't use "We are going to" implying future state. ADR is to document how we do things now and in the future and especially why we do them.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

systems, not apps
there are more than three

Our systems are deployed in these environments:


## Outcome of the Decision
We are going to put our production-level apps in three different environments:
- **Development (dev) Environment**: Shows the most recent changes to the any branch. This will allow developers to preview their work before it's sent to real user for testing
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

since there can be multiple concurrent branches on the same repository, better to create one deployment per branch and have dev be an alias to the latest branch deployment.


## Outcome of the Decision
We are going to put our production-level apps in three different environments:
- **Development (dev) Environment**: Shows the most recent changes to the any branch. This will allow developers to preview their work before it's sent to real user for testing
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

also consider the local developer environment (or the cloud-hosted development environment)

# ADR-009: Development environments

## Summary
This Architectural Decision Record (ADR) describes how we plan to handle various development environments for testing, prototyping and releasing the different products
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should probably start with a diagram first to come to a common understanding.

don't forget that you need to think about our common three tier architecture as well as deployment during development vs deployment of the final product in our Agency protected environment.

@rngadam rngadam requested a review from ThomasCardin November 29, 2023 14:34
@rngadam
Copy link
Contributor

rngadam commented Nov 29, 2023

From now on, please also put @ThomasCardin as reviewer on any DevSecOps PR

@vivalareda
Copy link
Contributor Author

vivalareda commented Nov 29, 2023

From now on, please also put @ThomasCardin as reviewer on any DevSecOps PR

I use to do that but the thing was a lot of PRs were getting approved even when he didn't review them yet since he's working only 2 days I'll add him from now on just wanted to give my opinion

and true on ADR I should always add him my mistake

@rngadam
Copy link
Contributor

rngadam commented Nov 29, 2023

I use to do that but the thing was a lot of PRs were getting approved even when he didn't review them yet since he's working only 2 days I'll add him from now on just wanted to give my opinion

the rule, if the person is absent (vacation, not working, etc), you consider their approval optional; at least they'll be able to comment when they are back with the PR. Also a reason why we shoudn't delete branches as soon as a PR is merged.

@vivalareda
Copy link
Contributor Author

I use to do that but the thing was a lot of PRs were getting approved even when he didn't review them yet since he's working only 2 days I'll add him from now on just wanted to give my opinion

the rule, if the person is absent (vacation, not working, etc), you consider their approval optional; at least they'll be able to comment when they are back with the PR. Also a reason why we shoudn't delete branches as soon as a PR is merged.

I was not aware about that rule will do

@rngadam
Copy link
Contributor

rngadam commented Jan 17, 2024

@ThomasCardin this is an important ADR that we need to expand on to explain how we will maintain and deploy our development environments. I've added it back to the DevSecOps backlog.

@rngadam
Copy link
Contributor

rngadam commented Feb 15, 2024

@ThomasCardin can you follow up on this one? I do want us to clarify what our different environments (branch, staging, prod) are in order to explain the differences to incoming developers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Write an ADR about development environments Write an ADR about development process
2 participants