@galaxyops is an architecture aimed to support efficient project management and accelerate domain-driven DevOps teams running workloads on AWS.
Running multiple applications on AWS without a robust architectural framework may lead to chaos. @galaxyops is a comprehensive cloud architecture solution, emphasizing modern DevOps practices on AWS. This repository lays the groundwork for enterprise software landscapes, ensuring scalability and maintainability across projects.
-
Universal Language: Leveraging TypeScript for microservices, enhancing performance, readability, and maintenance.
-
Simple Setup: Turn-key deployment on bare metal systems, designed for MacOS silicon environments without Docker dependency.
-
Monorepo Architecture: Centralizes development, streamlining code sharing, versioning, and dependency management with tools like Nx and PNPM.
-
CI/CD Pipeline: Autonomous pipeline for deploying auditable artifacts to AWS using IaC, ensuring consistency and scalability.
-
Event-Driven Microservices: Fault-tolerant communication via queues, with event data archived in a data lake for analytics.
-
Schema Contracts: Automatic mocking and validation for seamless inter-service communication and data integrity.
-
Ephemeral Environments: Provisioning of TLS certificates and email services using AWS Org Formation.
-
User Authentication: Integration of Cognito for user registration and authentication.
-
SPA Frontend with BFF: Single-page application frontend hosted on S3 and deployed via CloudFront, with middleware for backend operations.
To install and build all packages, follow these steps:
corepack enable pnpm
pnpm install
pnpm nx run-many -t build --all
pnpm nx run hydrate-dotenvs:start hydrate ../../..
Scripts from any project can be ran:
pnpm nx run package-name:script
Install the following
brew install jq # MacOS, used for lambda layer builder
These steps are required once by the platform team to initialize the IaaS.
-
Setup AWS Org Formation.
-
Set an environmental variable in the shell configuration file to establish a default AWS CLI profile for seamless authentication and resource access.
echo 'export AWS_PROFILE=DeveloperSandbox' >> ~/.zshrc
-
Login via SSO and bootstrap deployments. Deploy platform, services, and then clients in that order.
aws configure sso pnpm nx run aws-sso:start DeveloperSandbox pnpm nx run-many -t cdk:bootstrap --all pnpm nx run-many -t cdk:deploy --projects=tag:scope:platform --parallel=false pnpm nx run-many -t cdk:deploy --projects=tag:scope:services --parallel=false pnpm nx run-many -t cdk:deploy --projects=tag:scope:middleware --parallel=false pnpm nx run-many -t cdk:deploy --projects=tag:scope:clients --parallel=false
-
Login via SSO to tools account and then deploy tools.
pnpm nx run aws-sso:start tools pnpm nx run-many -t cdk:bootstrap --all pnpm nx run-many -t cdk:deploy --projects=tag:scope:aws-tools-account --parallel=false
Comprehensive documentation is essential for understanding and maintaining this project. Each project and folder structure should feature a README.md files containing documentation following RFC 2119 standards.
Note Use
./tools/help.sh
for information on builtin commands.
Third Party Documentation
Pull requests and bug reports are welcome on GitHub at https://github.com/hxtree/galaxyops. Please follow the code of conduct when contributing.
All packages available NPM are MIT licensed.