Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,6 @@

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

# Maven target directories
target/
34 changes: 34 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
## Property Management System (PMS)

## Post-Implementation Support Phase

**Phase Duration**: 3 months (2026-10-01 to 2026-12-31)
**Key Deliverables**: Stabilization, Optimization, Knowledge Transfer

### Enhanced Features for Production Support
- βœ… Comprehensive health monitoring and observability
- βœ… Performance optimization configurations
- βœ… Centralized logging with rotation
- βœ… Prometheus metrics integration
- βœ… Automated startup and health check scripts
- βœ… Operational documentation and troubleshooting guides

### Quick Start (Post-Implementation)
```bash
# Start all services in proper order
./scripts/startup_order.sh

# Check system health
./scripts/health_check.sh

# View monitoring endpoints
curl http://localhost:8888/actuator/health # Configuration Service
curl http://localhost:8761/actuator/health # Discovery Service
curl http://localhost:9000/actuator/health # Gateway Service
curl http://localhost:8070/actuator/health # User Management Service
```

### Documentation
- [Operations Guide](docs/OPERATIONS_GUIDE.md) - Comprehensive operational procedures
- [Monitoring Guide](docs/MONITORING_GUIDE.md) - Monitoring and troubleshooting procedures
- [Knowledge Transfer](docs/KNOWLEDGE_TRANSFER.md) - Complete system knowledge transfer
- [Performance Optimization](docs/PERFORMANCE_OPTIMIZATION.md) - Performance tuning guide

## 1. System Architecture Overview
1. System Architecture Overview
Based on the UML model we've developed, I propose a modern, cloud-native, microservices-based architecture for the PMS. This approach will allow for better scalability, maintainability, and the ability to deploy updates to individual components without affecting the entire system.
Expand Down
7 changes: 7 additions & 0 deletions configuration/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,13 @@
<groupId>org.springframework.kafka</groupId>
<artifactId>spring-kafka</artifactId>
</dependency>

<!-- Post-Implementation Support: Enhanced monitoring -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

<!-- <dependency>-->
<!-- <groupId>org.springframework.boot</groupId>-->
<!-- <artifactId>spring-boot-starter-test</artifactId>-->
Expand Down
50 changes: 50 additions & 0 deletions configuration/src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,53 @@ spring:
server:
native:
search-locations: classpath:/configurations

# Post-Implementation Support: Enhanced monitoring and observability
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,loggers,configprops,env,beans,configserver
endpoint:
health:
show-details: always
show-components: always
metrics:
enabled: true
prometheus:
enabled: true
configserver:
enabled: true
info:
env:
enabled: true
java:
enabled: true
os:
enabled: true
metrics:
export:
prometheus:
enabled: true
distribution:
percentiles-histogram:
http.server.requests: true
percentiles:
http.server.requests: 0.5, 0.9, 0.95, 0.99
health:
diskspace:
enabled: true
ping:
enabled: true

logging:
level:
org.springframework.cloud.config: INFO
org.springframework.boot.actuator: INFO
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: logs/configuration.log
max-size: 10MB
max-history: 30
48 changes: 48 additions & 0 deletions configuration/src/main/resources/configurations/discovery.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,3 +8,51 @@ eureka:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
server:
port: 8761

# Post-Implementation Support: Enhanced monitoring and observability
management:
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,loggers,configprops,env,beans
endpoint:
health:
show-details: always
show-components: always
metrics:
enabled: true
prometheus:
enabled: true
info:
env:
enabled: true
java:
enabled: true
os:
enabled: true
metrics:
export:
prometheus:
enabled: true
distribution:
percentiles-histogram:
http.server.requests: true
percentiles:
http.server.requests: 0.5, 0.9, 0.95, 0.99
health:
diskspace:
enabled: true
ping:
enabled: true

logging:
level:
com.netflix.eureka: INFO
com.netflix.discovery: INFO
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: logs/discovery.log
max-size: 10MB
max-history: 30
51 changes: 51 additions & 0 deletions configuration/src/main/resources/configurations/gateway.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,58 @@ spring:
predicates:
- Path=/api/v1/access/**

# Post-Implementation Support: Enhanced monitoring and observability
management:
tracing:
sampling:
probability: 1.0
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,loggers,configprops,env,gateway,beans
endpoint:
health:
show-details: always
show-components: always
metrics:
enabled: true
prometheus:
enabled: true
gateway:
enabled: true
info:
env:
enabled: true
java:
enabled: true
os:
enabled: true
metrics:
export:
prometheus:
enabled: true
distribution:
percentiles-histogram:
http.server.requests: true
gateway.requests: true
percentiles:
http.server.requests: 0.5, 0.9, 0.95, 0.99
gateway.requests: 0.5, 0.9, 0.95, 0.99
health:
diskspace:
enabled: true
ping:
enabled: true

logging:
level:
org.springframework.cloud.gateway: INFO
org.springframework.web.reactive: INFO
reactor.netty: INFO
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: logs/gateway.log
max-size: 10MB
max-history: 30
54 changes: 54 additions & 0 deletions configuration/src/main/resources/configurations/usermanagement.yml
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,61 @@ spring:
database: postgresql
database-platform: org.hibernate.dialect.PostgreSQLDialect

# Post-Implementation Support: Enhanced monitoring and observability
management:
tracing:
sampling:
probability: 1.0
endpoints:
web:
exposure:
include: health,info,metrics,prometheus,loggers,configprops,env,beans,liquibase,flyway
endpoint:
health:
show-details: always
show-components: always
metrics:
enabled: true
prometheus:
enabled: true
info:
env:
enabled: true
java:
enabled: true
os:
enabled: true
metrics:
export:
prometheus:
enabled: true
distribution:
percentiles-histogram:
http.server.requests: true
jvm.memory.used: true
jvm.gc.pause: true
percentiles:
http.server.requests: 0.5, 0.9, 0.95, 0.99
tags:
application: ${spring.application.name}
health:
diskspace:
enabled: true
ping:
enabled: true
db:
enabled: true

logging:
level:
org.hibernate.SQL: INFO
org.hibernate.type.descriptor.sql.BasicBinder: INFO
org.springframework.web: INFO
org.springframework.data.jpa: INFO
pattern:
console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"
file:
name: logs/usermanagement.log
max-size: 10MB
max-history: 30
6 changes: 6 additions & 0 deletions discovery/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,12 @@
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

<!-- Post-Implementation Support: Enhanced monitoring -->
<dependency>
<groupId>io.micrometer</groupId>
<artifactId>micrometer-registry-prometheus</artifactId>
</dependency>

<dependency>
<groupId>org.springframework.boot</groupId>
Expand Down
Loading