Production Architecture: Difference between revisions

Created page with "This page contains notes on the architecture that will one day support hundreds of thousands of users in a wiki community. Register Domain Once we decide on a name. DNS Hosting I will host in my personal AWS account and transfer to the nonprofit once it exists. Database * Platform: AWS RDS * Engine: MariaDB (MySQL) Upload Storage * Platform: AWS S3 Web and Application * Platform: AWS Fargate / ECS * Container image: MediaWiki Docker * Instance class: * Storage..."
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
This page contains notes on the architecture that will one day support hundreds of thousands of users in a wiki community.
This page contains notes on the architecture that will one day support hundreds of thousands of users in a wiki community.


Register Domain
=== Register Domain ===
 
Once we decide on a name.
Once we decide on a name.


DNS Hosting
=== DNS Hosting ===
 
I will host in my personal AWS account and transfer to the nonprofit once it exists.
I will host in my personal AWS account and transfer to the nonprofit once it exists.


Database
=== Database ===
 
* Platform: AWS RDS
* Platform: AWS RDS
* Engine: MariaDB (MySQL)
* Engine: MariaDB (MySQL)
* Storage: xx GB (storage can be increased without any downtime)


Upload Storage
=== Upload Storage ===
 
* Platform: AWS S3
* Platform: AWS S3


Web and Application
=== Web and Application ===
 
* Platform: AWS Fargate / ECS
* Platform: AWS Fargate / ECS
* Container image: MediaWiki Docker
* Container image: MediaWiki Docker
Line 26: Line 22:
* Multi-AZ: not at first
* Multi-AZ: not at first


Load Balancer
=== Load Balancer ===
* AWS


* AWS
=== Secrets Manager ===
 
* Whenever possible, passwords and secret keys will be kept in AWS Secrets Manager.
 
=== Environments ===
The following environments will be built.
 
* Development
** All new enhancements will be added to the development environment
* Testing
** Completed features will be deployed to the test environment
** A series of test scripts and procedures will be developed to be performed following each new deployment
* Production
** Once a release has passed all tests, it will be deployed to production
 
=== CI/CD Pipeline ===
This procedure will allow multiple developers to author and commit code.  Automated procedures will move releases from Dev to Test, and then to Production.
 
=== Email and Productivity Suite ===
We will use Google G-Suite.  Each account will be about $8 per month until the nonprofit has been formed and we can apply for a grant from Google for free accounts.
 
=== Smart Phone Apps ===
The GoalStriving project uses MediaWiki as the application platform.  I intend to do some customizations to the UI and the application, but previously I was thinking that would be done in PHP, but I had not begun planning.  Once the web version is stable, I would like to create an iPhone and Android version.  Would Flutter/Dart be useful on this project?  I want to remain aligned with the MediaWiki community, because I think that community would all be potential users or supporters of the project.  [[Flutter Dart|View Response]]