This is a demo project for education/training purposes of software development, Cloud Computing and DevOps.
Java JDK 17.x or later- Programming language.gradle 9.x- Automation/Build tool.docker 27.x- Containerization tool.terraform 1.16.x- IaC tool.snyk 1.x- Snyk platform command line tool. Used for SAST.curl 8.12.x- Command line tool used for transfer data using HTTP/HTTPs protocol.jq 1.7.x- Command line tool used for JSON parsing.openssl- Library used to generate/manage TLS certificates.htpasswd- Command line tool to manage HTTP basic authentication.Github account- Git platform used for CI/CD, versionning and packaging.Sonarcloud account- Code quality platform.Snyk account- SAST platform.Cloudflare account- CDN platform (For this project I'm using only the authoritative DNS service).AWS account- Cloud provider. Used to provision the required resources.Slack account- Communication platform. Used to notify the user if the pipeline was executed successfully or not.
To build/test:
- Execute
./build.shor./test.shto start the compile of the source code and execute the unit tests.
To do code/libraries/package analysis:
- Execute
./codeAnalysis.sh,./librariesAnalysis.shor./packageAnalysis.shto start the SAST checks.
To package/publish:
- Execute
./package.shor./publish.shto containerize the built application and publish it to the repository.
To run Locally:
- Execute
./start.shand then open the URL: http://localhost in the browser. Execute./stop.shto shutdown the application
To run in the Cloud:
- Execute
./deploy.shto start the provisioning of the resources. After it completes, open the URL: [http|https]://[frontend-host.frontend-domain] in the browser. Execute./destroy.shto deprovision the resources.
Checkout .github/workflows/*.yml to see the steps above defined in the pipelines.
build.json - Defines the build attributes (name and version).
secrets.json - Defines the secrets used for the above scripts. Create yours using secrets.json.template.
- Frontend: It contains the UI of the application. It runs
NGINX - Backend: It contains the backend with all business logic of the application. It runs
Spring Boot - Database: It contains the database to store the application data. It runs
MongoDB
All components are containerized. (Please check the files docker-compose.tf, Dockerfile and iac/*.tf for more
details).
It's not a good practice to commit any sensitive data in the repository so...
DON'T EXPOSE OR COMMIT ANY SENSITIVE DATA IN THE PROJECT.
LinkedIn:
e-Mail:
and that's all! Have fun!