high-perf-secure-cloud-arch
Science Score: 57.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
✓DOI references
Found 2 DOI reference(s) in README -
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (11.2%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: oleksiijko
- License: mit
- Language: JavaScript
- Default Branch: main
- Size: 242 KB
Statistics
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
high-perf-secure-cloud-arch
Current version: v1.0.1
This repository accompanies the article "Architectural Solutions for High-Performance Secure Cloud Applications". It demonstrates a simple microservices stack with infrastructure-as-code and load testing tools.
Requirements
- Docker 20.x
- Kubernetes 1.24+
- Terraform 1.4+
- Istio 1.15+
- Node.js 18.x
- AWS CLI v2 configured with a free-tier account
AWS_ACCESS_KEY_IDandAWS_SECRET_ACCESS_KEYmust be set for Terraform
Quick Start
Generate self-signed certificates
bash
openssl req -x509 -newkey rsa:2048 -days 365 -nodes \
-keyout certs/server.key -out certs/server.crt -subj "/CN=localhost"
cp certs/server.crt certs/ca.crt
Start microservices over HTTPS
bash
docker compose up -d
Each service uses mTLS with the certificates from certs/.
Build custom images
bash
docker compose build
Run Tests
bash
npm ci
npm test
GitHub Actions executes the same commands in .github/workflows/ci.yml. Metrics can be aggregated locally with:
bash
python3 scripts/aggregate_metrics.py
python3 scripts/plot_metrics.py
Run Load Tests
```bash
run-tests
jmeter -n -t jmeter/microservices-test-plan.jmx ```
Tear Down Infrastructure
```bash
teardown
terraform -chdir=terraform destroy ```
Architecture Diagram

Terraform Usage
bash
terraform -chdir=terraform init
terraform -chdir=terraform apply
This configuration provisions an EKS cluster with an Istio service mesh. mTLS is enabled between pods by default.
Generate Metrics and Graphs
After running load tests, aggregate logs and create graphs:
bash
python3 scripts/aggregate_metrics.py
python3 scripts/plot_metrics.py
JMeter Example
Install JMeter via brew install jmeter or download it from the official archive.
bash
jmeter -n -t jmeter/microservices-test-plan.jmx
Kubernetes Manifests
Manifests for running the microservices on Kubernetes live in k8s/. They
include Deployments, Services and an Ingress resource. Istio configuration
under k8s/istio/ enables mutual TLS between the services. Network policies
restrict traffic so only the frontend or other backends can reach the
microservices.
To apply everything:
bash
kubectl apply -f k8s/
kubectl apply -f k8s/istio/
Troubleshooting
For debugging failed deployments in the kind cluster see docs/k8s-debugging.md.
Logs
Sample run data lives in logs/sample_run.csv for reference. Running
python metrics.py generates reports/metrics_report.pdf.
Security
All API calls require a JWT via the Authorization header:
http
Authorization: Bearer <token>
Tokens are verified with the dummy secret demo-secret. Payloads must contain a role claim used by the ABAC middleware. Example token payload:
json
{
"sub": "123",
"role": "admin"
}
IDS alerts are written to the service logs whenever a pattern like ' OR 1=1 appears in a request. Check logs/ for details.
Supplementary Material
Supplementary_S1.zip contains additional datasets.
Changelog
- v1.0.1: removed inline code comments for clarity
License
Content is licensed under the MIT license.
DOI: https://doi.org/10.5281/zenodo.15746968
Owner
- Name: Oleksii Bondar
- Login: oleksiijko
- Kind: user
- Location: Miami, FL
- Company: Cisco
- Repositories: 5
- Profile: https://github.com/oleksiijko
Software Engineer with over 5 years of experience
Citation (CITATION.cff)
cff-version: 1.2.0
title: high-perf-secure-cloud-arch
version: 1.0.0
doi: 10.5281/zenodo.xxxxxxx
authors:
- family-names: Bondar
given-names: Oleksii
year: 2025
GitHub Events
Total
- Watch event: 1
- Push event: 219
- Pull request event: 81
- Create event: 48
Last Year
- Watch event: 1
- Push event: 219
- Pull request event: 81
- Create event: 48
Dependencies
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- engineerd/setup-kind v0.5.0 composite
- actions/checkout v4 composite
- actions/upload-artifact v4 composite
- azure/setup-kubectl v3 composite
- engineerd/setup-kind v0.5.0 composite
- gcr.io/distroless/nodejs18 latest build
- node 18-bullseye-slim build
- gcr.io/distroless/nodejs18 latest build
- node 18-bullseye-slim build
- gcr.io/distroless/nodejs18 latest build
- node 18-bullseye-slim build
- gcr.io/distroless/nodejs18 latest build
- node 18-bullseye-slim build
- gcr.io/distroless/nodejs18 latest build
- node 18-bullseye-slim build
- gcr.io/distroless/python3-debian12 latest build
- python 3.12-slim build
- node 20-slim build
- 302 dependencies
- jest 29.7.0 development
- supertest ^7.1.1 development
- 109 dependencies
- express ^4.21.2
- jsonwebtoken ^9.0.2
- winston ^3.13.0
- 440 dependencies
- @ioredis/commands ^1.2.0 development
- jest ^30.0.0 development
- supertest ^7.1.1 development
- cluster-key-slot ^1.1.2
- express ^4.21.2
- ioredis ^5.6.1
- jsonwebtoken ^9.0.2
- lodash.defaults ^4.2.0
- redis-errors ^1.2.0
- standard-as-callback ^2.1.0
- winston ^3.17.0
- accepts 1.3.8
- array-flatten 1.1.1
- body-parser 1.20.3
- buffer-equal-constant-time 1.0.1
- bytes 3.1.2
- call-bind-apply-helpers 1.0.2
- call-bound 1.0.4
- content-disposition 0.5.4
- content-type 1.0.5
- cookie 0.7.1
- cookie-signature 1.0.6
- debug 2.6.9
- depd 2.0.0
- destroy 1.2.0
- dunder-proto 1.0.1
- ecdsa-sig-formatter 1.0.11
- ee-first 1.1.1
- encodeurl 2.0.0
- encodeurl 1.0.2
- es-define-property 1.0.1
- es-errors 1.3.0
- es-object-atoms 1.1.1
- escape-html 1.0.3
- etag 1.8.1
- express 4.21.2
- finalhandler 1.3.1
- forwarded 0.2.0
- fresh 0.5.2
- function-bind 1.1.2
- get-intrinsic 1.3.0
- get-proto 1.0.1
- gopd 1.2.0
- has-symbols 1.1.0
- hasown 2.0.2
- http-errors 2.0.0
- iconv-lite 0.4.24
- inherits 2.0.4
- ipaddr.js 1.9.1
- jsonwebtoken 9.0.2
- jwa 1.4.2
- jws 3.2.2
- lodash.includes 4.3.0
- lodash.isboolean 3.0.3
- lodash.isinteger 4.0.4
- lodash.isnumber 3.0.3
- lodash.isplainobject 4.0.6
- lodash.isstring 4.0.1
- lodash.once 4.1.1
- math-intrinsics 1.1.0
- media-typer 0.3.0
- merge-descriptors 1.0.3
- methods 1.1.2
- mime 1.6.0
- mime-db 1.52.0
- mime-types 2.1.35
- ms 2.1.3
- ms 2.0.0
- negotiator 0.6.3
- object-inspect 1.13.4
- on-finished 2.4.1
- parseurl 1.3.3
- path-to-regexp 0.1.12
- proxy-addr 2.0.7
- qs 6.13.0
- range-parser 1.2.1
- raw-body 2.5.2
- safe-buffer 5.2.1
- safer-buffer 2.1.2
- semver 7.7.2
- send 0.19.0
- serve-static 1.16.2
- setprototypeof 1.2.0
- side-channel 1.1.0
- side-channel-list 1.0.0
- side-channel-map 1.0.1
- side-channel-weakmap 1.0.2
- statuses 2.0.1
- toidentifier 1.0.1
- type-is 1.6.18
- unpipe 1.0.0
- utils-merge 1.0.1
- vary 1.1.2
- express ^4.21.2
- jsonwebtoken ^9.0.2
- 109 dependencies
- express ^4.21.2
- jsonwebtoken ^9.0.2
- winston ^3.13.0
- 109 dependencies
- express ^4.21.2
- jsonwebtoken ^9.0.2
- winston ^3.13.0
- accepts 1.3.8
- array-flatten 1.1.1
- basic-auth 2.0.1
- body-parser 1.20.3
- bytes 3.1.2
- call-bind-apply-helpers 1.0.2
- call-bound 1.0.4
- content-disposition 0.5.4
- content-type 1.0.5
- cookie 0.7.1
- cookie-signature 1.0.6
- debug 2.6.9
- depd 2.0.0
- destroy 1.2.0
- dunder-proto 1.0.1
- ee-first 1.1.1
- encodeurl 1.0.2
- encodeurl 2.0.0
- es-define-property 1.0.1
- es-errors 1.3.0
- es-object-atoms 1.1.1
- escape-html 1.0.3
- etag 1.8.1
- express 4.21.2
- finalhandler 1.3.1
- forwarded 0.2.0
- fresh 0.5.2
- function-bind 1.1.2
- get-intrinsic 1.3.0
- get-proto 1.0.1
- gopd 1.2.0
- has-symbols 1.1.0
- hasown 2.0.2
- http-errors 2.0.0
- iconv-lite 0.4.24
- inherits 2.0.4
- ipaddr.js 1.9.1
- math-intrinsics 1.1.0
- media-typer 0.3.0
- merge-descriptors 1.0.3
- methods 1.1.2
- mime 1.6.0
- mime-db 1.52.0
- mime-types 2.1.35
- morgan 1.10.0
- ms 2.1.3
- ms 2.0.0
- negotiator 0.6.3
- object-inspect 1.13.4
- on-finished 2.3.0
- on-finished 2.4.1
- on-headers 1.0.2
- parseurl 1.3.3
- path-to-regexp 0.1.12
- proxy-addr 2.0.7
- qs 6.13.0
- range-parser 1.2.1
- raw-body 2.5.2
- safe-buffer 5.1.2
- safe-buffer 5.2.1
- safer-buffer 2.1.2
- send 0.19.0
- serve-static 1.16.2
- setprototypeof 1.2.0
- side-channel 1.1.0
- side-channel-list 1.0.0
- side-channel-map 1.0.1
- side-channel-weakmap 1.0.2
- statuses 2.0.1
- toidentifier 1.0.1
- type-is 1.6.18
- unpipe 1.0.0
- utils-merge 1.0.1
- vary 1.1.2
- express ^4.21.2
- morgan ^1.10.0
- psutil ==5.9.8
- requests ==2.32.2