https://github.com/erdemerbaba/general-purpose-inclusive-devops-ecosystem
Inclusive devops ecosystem is general purpose environment for maintain both fullstack and devops projects.
https://github.com/erdemerbaba/general-purpose-inclusive-devops-ecosystem
ansible configurable devops docker elasticsearch flagger fullstack java jenkins kafka keda kubernetes mongodb prometheus react redis sonarcube swagger system terraform
Last synced: 3 months ago
JSON representation
Inclusive devops ecosystem is general purpose environment for maintain both fullstack and devops projects.
- Host: GitHub
- URL: https://github.com/erdemerbaba/general-purpose-inclusive-devops-ecosystem
- Owner: erdemerbaba
- License: apache-2.0
- Created: 2025-08-14T13:15:27.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-09-30T04:11:04.000Z (9 months ago)
- Last Synced: 2025-10-09T04:26:42.902Z (8 months ago)
- Topics: ansible, configurable, devops, docker, elasticsearch, flagger, fullstack, java, jenkins, kafka, keda, kubernetes, mongodb, prometheus, react, redis, sonarcube, swagger, system, terraform
- Language: JavaScript
- Homepage: http://eratechnology.com
- Size: 57.4 MB
- Stars: 9
- Watchers: 7
- Forks: 6
- Open Issues: 12
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Codeowners: .github/CODEOWNERS
- Security: SECURITY.md
- Governance: GOVERNANCE.md
Awesome Lists containing this project
README
# General Purpose Inclusive DevOps Ecosystem
Inclusive Devops Ecosystem is general purpose environment for maintain both fullstack and devops projects. This ecosystem offer configureable management web application with provides a devops environment that can be calibrated and used for other projects such as maintaining, monitoring,infastructure practices of this web application.
# Index
- 1. Ecosystem Summary
- 2. Architecture Overview
- 3. Technology Stacks
- 4. Project Structure
- 5. Information of Services
- 6. Local Setup
- - 6.1. With Container
- - 6.2. With Manual
- 7. Get packages
- - 7.1. With Container
- - 7.2. With Manual
- 8. Deployment Operation
- - 8.1. With Kubernetes
- - 8.2. With Container
- - 8.3. With Manual
- - 8.4. Error Handling
- 9. Database Parameters
- 10. Contributing
- 11. License
- 12. Support
- 13. Donate
# 1 Ecosystem Summary
Configurable web application for a calibratable devops enironment. Devops Ecosystem is general purpose environment for maintain both fullstack and devops projects. This ecosystem offer configureable management web application with provides a devops environment that can be calibrated and used for other projects such as maintaining, monitoring,infastructure practices of this web application.
# 2 Architecture Overview
2.1 General Sections of Ecosystem
- Continuous Development
- Continuous Integration
- Continuous Testing
- Continuous Deployment
- Continuous Delivery
- Continuous Monitoring
- Continuous Feedback
- Continuous Operations
2.2 Sector Summary of Ecosystem
- Frontend
- Backend
- Dataservice
- Gateway
- Docker
- Kubernetes
- Pipeline
- Infrastructure
- Monitoring
- Logging
- Network
- Security
- Traffic Management
- Scalability
- Upgradeability
- Migration
# 3 Technology Stacks
3.1 Backend
- Framework: Spring Boot 2.7.0
- Language: Java 17
- Security: Spring Security + JWT
- Validation: Bean Validation (JSR-303)
- Logging: SLF4J + Logback
- Monitoring: Spring Boot Actuator + Prometheus
3.2 Frontend
- Framework: React 17
- Language: JavaScript/JSX
- Styling: Bootstrap 4.5
- HTTP Client: Axios
- Routing: React Router DOM
- State Management: Context API
3.3 dataservice
- Framework: MongoDB
3.4 Container Tools
- Containerization: Docker-ready
- Monitoring: Health checks, metrics
- Configuration: Environment-based configuration
- Logging: Structured logging with rotation
3.5 Kubernetes Tools
- Infastructure: Terraform
- Configuration: Ansible
- Environment: Istio
- Maintenance: Rancher
3.6 Automation Tools
- Continuous Delivery: Jenkins
# 4 Project Structure
```
general_purpose_inclusive_devops_ecosystem/
├── user-service/ # User management microservice
│ ├── src/main/java/
│ │ ├── controller/ # REST controllers
│ │ ├── service/ # Business logic layer
│ │ ├── repository/ # Data access layer
│ │ ├── dto/ # Data transfer objects
│ │ ├── document/ # MongoDB entities
│ │ ├── config/ # Configuration classes
│ │ └── exception/ # Custom exceptions
│ └── src/main/resources/
│ └── application.yml # Externalized configuration
├── product-service/ # Product management microservice
│ ├── src/main/java/
│ │ ├── controller/ # REST controllers
│ │ ├── service/ # Business logic layer
│ │ ├── repository/ # Data access layer
│ │ ├── dto/ # Data transfer objects
│ │ ├── document/ # MongoDB entities
│ │ ├── config/ # Configuration classes
│ │ └── exception/ # Custom exceptions
│ └── src/main/resources/
│ └── application.yml # Externalized configuration
├── asset-service/ # asset management microservice
│ ├── src/main/java/
│ │ ├── controller/ # REST controllers
│ │ ├── service/ # Business logic layer
│ │ ├── repository/ # Data access layer
│ │ ├── dto/ # Data transfer objects
│ │ ├── document/ # MongoDB entities
│ │ ├── config/ # Configuration classes
│ │ └── exception/ # Custom exceptions
│ └── src/main/resources/
│ └── application.yml # Externalized configuration
├── management-app/ # React frontend application
│ ├── src/
│ │ ├── components/ # Reusable UI components
│ │ ├── services/ # API service layer
│ │ ├── context/ # React context providers
│ │ └── pages/ # Page components
│ └── package.json # Node.js dependencies
├── mongo-init.js # mongodb configurations
├── eureka-server/ # eureka configurations
└── gateway/ # gateway configurations
```
## 4.1 Used Principle, Pattern and Techniques
### 4.1.1 SOLID Principles for maintainable and extensible code
**Single Responsibility Principle (SRP)**: Controllers handle only HTTP requests/responses
**Open/Closed Principle (OCP)**: Service interfaces allow extension without modification
**Liskov Substitution Principle (LSP)**: Service implementations are interchangeable
**Interface Segregation Principle (ISP)**: Focused service interfaces
*Dependency Inversion Principle (DIP)**: Controllers depend on service interfaces
### 4.1.2 12-Factor App methodology for cloud-native applications
**Codebase**: Single repository for all services
**Dependencies**: Maven/Node.js dependency management
**Config**: Externalized configuration via environment variables
**Backing Services**: MongoDB as backing service
**Build, Release, Run**: Maven build process
**Processes**: Stateless services
**Port Binding**: Configurable ports via environment
**Concurrency**: Horizontal scaling support
**Disposability**: Graceful shutdown handling
**Dev/Prod Parity**: Consistent environments
**Logs**: Structured logging with SLF4J
**Admin Processes**: Health check endpoints
### 4.1.3 Service-Oriented Architecture (SOAP) principles for loose coupling
**Service Abstraction**: Clear service boundaries
**Loose Coupling**: Services communicate via well-defined interfaces
**Service Reusability**: Services can be reused across different contexts
**Service Autonomy**: Services operate independently
# 5 Information of Services
5.1 Zookeper
- image: bitnami/zookeeper:latest
- container_name: zookeeper
- ports: "2181"
5.2 kafka
- image: bitnami/kafka:latest
- container_name: kafka
- ports: "9093,9092"
5.3 kafdrop
- image: obsidiandynamics/kafdrop:latest
- container_name: kafdrop
- ports: "9099"
5.4 Mongodb
- image: mongo:latest
- container_name: mongodb
- ports: "27017"
5.5 redis
- image: redis:latest
- container_name: redis
- ports:"6379"
5.6 eureka
- image: local
- container_name: eureka-server
- Eports: "8761"
5.7 gateway
- image: local
- container_name: gateway
- ports: "8080"
5.8 user service
- image: local
- container_name: user-service
- ports: "8081"
5.9 product service
- image: local
- container_name: product-service
- ports: "8082"
5.10 asset service
- image: local
- container_name: asset-service
- ports: "8083"
5.11 management app
- image: local
- container_name: management-app
- ports: "3000"
5.12 sonarqube
- image: sonarqube:latest
- container_name: sonarqube
- ports: "9000"
5.13 jenkins
- mage: jenkins/jenkins:lts
- container_name: jenkins
- ports: "8443,8043,50000"
5.14 elastic search
- image: elasticsearch/elasticsearch:7.17.10
- container_name: elasticsearch
- ports: "9200,9300"
5.15 logstash
- image: logstash/logstash:7.17.10
- container_name: logstash
- ports: "5044,9600"
5.16 filebeat
- mage: beats/filebeat:7.17.10
- container_name: filebeat
5.17 kibana
- image: kibana/kibana:7.17.10
- container_name: kibana
- ports: "5601"
5.18 prometheus
- image: prom/prometheus:latest
- container_name: prometheus
- ports: "9090"
5.19 grafana
- mage: grafana/grafana:latest
- container_name: grafana
- ports: "3001"
5.20 postgre
- image: postgres:13
- container_name: jira_db
5.21 jira
- image: atlassian/jira-software:latest
- container_name: jira
- ports: "8090"
# 6 Local Setup
User can run whole project with docker and kubernetes but if want to run manual please read 6.3 instructions.
## 6.1 Prerequisites
- 16 core 2.5 ghz cpu
- 16 gb ram
- 50 gb disk space
- Docker
- minikube
- terraform
- python pip kubernetes
- ansible
- if do not use docker then:
- Java 17+
- Maven 3.6+
- Node.js 14+
- MongoDB 4.4+
- python 3.12+
- also should download related tools that inside of docker compose
## 6.2 Run Services with container
### 6.2.1 install docker
```bash
https://docs.docker.com/desktop/
```
### 6.2.2 locate to project path
```bash
cd general-purpose-inclusive-devops-ecosystem/
```
### 6.2.3 execute docker compose
```bash
docker compose up -d --build
```
### 6.2.4 take a tea and wait a while after that check statusses with different terminal
```bash
docker images
docker ps
```
### 6.2.5 you are read to go for check services
```bash
curl http://localhost:3000
Website: http://localhost:3000
```
### 6.2.6 if you want to down all the compose
```bash
docker compose down
```
## 6.3 Run Services with old school style (non-container)
### 6.3.1 Configure Environment Variables
```bash
export MONGODB_HOST=localhost
export MONGODB_PORT=27017
export MONGODB_DATABASE=management
export JWT_SECRET=your-secret-key
```
### 6.3.2 Start MongoDB
```bash
mongod --dbpath
```
### 6.3.3 Build and Run eureka server
```bash
cd eureka-server
mvn clean install
mvn spring-boot:run
```
### 6.3.4 Build and Run gateway
```bash
cd gateway
mvn clean install
mvn spring-boot:run
```
### 6.3.5 Build and Run User Service
```bash
cd user-service
mvn clean install
mvn spring-boot:run
```
### 6.3.6 Build and Run Product Service
```bash
cd product-service
mvn clean install
mvn spring-boot:run
```
### 6.3.7 Build and Run asset Service
```bash
cd asset-service
mvn clean install
mvn spring-boot:run
```
### 6.3.8 Install Dependencies
```bash
cd management-app
npm install
npm start
```
### 6.3.9 Enter Web app
```bash
Website: localhost:3000
```
# 7 Get Package
User can run whole project with docker and kubernetes but if want to run manual please read 7.2 instructions.
## 7.1 Get package with container
### 7.1.1 login docker
```bash
docker login
```
### 7.1.2 build compose
```bash
docker compose build
```
### 7.1.3 push to docker hub
```bash
docker compose push
```
#### 7.1.3.1 if you get package with offline environment
```bash
docker compose images --quiet | xargs -n1 docker save -o .tar
```
## 7.2 Get package with old school style (non-container)
### 7.2.1 Database
```bash
mongosh
```
### 7.2.2 Backend
```bash
mvn package
```
### 7.2.3 Frontend
```bash
npm run build
```
# 8 Deployment Operation
User can run whole project with docker and kubernetes but if want to run manuel please read 8.3 instructions. Firstly, Enter related machine to deploy process.
## 8.1 Deploy with kubernetes
### 8.1.1 Install minikube for kubernetes environment
For Linux
```bash
curl -LO https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
sudo install minikube-linux-amd64 /usr/local/bin/minikube
```
For Mac
```bash
brew install minikube
```
For Windows
```bash
choco install minikube -y
```
### 8.1.2 Execute minikube for setup kubernetes and create namespace (terraform trigger to create namespace sometimes)
```bash
minikube start
kubectl create namespace gepide
kubectl create namespace keda
kubectl create namespace flagger
kubectl create namespace istio-system
```
### 8.1.3 Install Terraform
```bash
https://developer.hashicorp.com/terraform/install
```
### 8.1.4 get ready local containers
```bash
docker compose up -d
```
### 8.1.5 transfer local updated images int kubernetes environment
```bash
for image in gepide-eureka:latest gepide-gateway:latest gepide-user-service:latest gepide-product-service:latest gepide-asset-service:latest gepide-management-app:latest; do minikube image load $image; done
or
minikube image load gepide-eureka-server:latest
minikube image load gepide-gateway:latest
minikube image load gepide-user-service:latest
minikube image load gepide-product-service:latest
minikube image load gepide-asset-service:latest
minikube image load gepide-management-app:latest
```
### 8.1.6 locate file and execute init
```bash
cd terraform/
terraform init
(if you do not want to up all the tools, you can just convert main.tf into main.tf.bak then lite version mainlite.tf activated)
```
### 8.1.7 plan teraform environment
```bash
terraform plan
```
### 8.1.8 apply teraform environment
```bash
terraform apply -auto-approve
```
### 8.1.9 now take a time to terraform handle process and you can see the status with paralel terminal
```bash
kubectl get all -A
```
### 8.1.10 Install Ansible
```bash
https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html
```
### 8.1.11 Install python kubernetes lib
```bash
pip install kubernetes
```
### 8.1.12 Change what required in spesific tool yml file
```bash
ansible-playbook -i inventory.ini playbook.yml
```
### 8.1.13 Take a rest and look environment to see configurations done or not
```bash
kubectl describe pod -n
```
### 8.1.14 To down services execute below command in environment
```bash
kubectl delete namespace gepide
or
terraform destroy
```
### 8.1.14 To delete kubernetes environment then execute below command
```bash
minikube delete
```
## 8.2 Deploy with docker
### 8.2.1 send docker compose to related machine
```bash
scp docker-compose.yml root::/home/docker-compose.yml
```
### 8.2.2 enter machine, locate file and execute compose
```bash
docker compose up -d --build
```
#### 8.2.2.1 if environment offline, locate file then enter machine and execute below rpm command
```bash
docker load -i all-images.tar
```
### 8.2.3 stop the services if needed
```bash
docker compose down
```
## 8.3 Deploy with local
### 8.3.1 Database
mongosh
### 8.3.2 Backend
java -jar package.jar
### 8.3.3 Frontend
npm install -g serve
serve -s build
## 8.4 Error Handling
export NODE_OPTIONS=--openssl-legacy-provider
export SKIP_PREFLIGHT_CHECK=true
lsof -i tcp:8080
taskkill /F /PID
# 9 Database Parameters
- Employee
-- ID
-- Name
-- Surname
-- Profession
-- Role
-- Level
-- Team
-- Mentor
-- Join Date
-- Leave Date
-- Location
-- Email
-- Phone Number
-- Birth Date
-- Nationality
-- Address
-- Identity Number
-- Educations
-- Experience
-- Skills
-- Certifications
-- Honors
-- Memberships
-- Projects
-- Links
-- Government Papers
-- Additional Notes
- Products
-- ID
-- Name
-- Category
-- Description
-- Members
-- Customer Segment
-- Revenue Source
-- Cost Source
-- Customer Platforms
-- Developer Platforms
-- Tech Stacks
-- Deployments
-- Sources
-- Historic Dates
-- Performance Indicators
-- Legal Compliance
-- Financial Procedures
-- Additional Notes
- Assets
-- ID
-- Name
-- Type
-- SerialNumber
-- Department
-- AssignedTo
-- TechnicalSpecs
-- PurchaseDate
-- Value
# 10 Contributing
1. Follow the established architecture patterns
2. Maintain SOLID principles
3. Add comprehensive tests
4. Update documentation
5. Follow the coding standards
# 11 License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
# 12 Support
For support and questions:
- Create an issue in the repository
- Review the documentation
- Check the health endpoints
contact me erdemerbaba@gmail.com
# 13 Donate
**Buy me a coffee if you want to donate**
https://www.buymeacoffee.com/erdemerbaba/
---
**Built with ❤️ by Era Technology Co aka Erdem Erbaba**