-
Notifications
You must be signed in to change notification settings - Fork 1
Description
Repository Setup
Description:
Set up a Git repository for the project.
Acceptance Criteria:
- Repository initialized on platforms like GitHub, GitLab, or Bitbucket.
- Includes a README file with a short project description and installation instructions.
- Version control strategy implemented (e.g., main, dev branches).
Microservices and Cloud-Native Application
Description:
Develop the application using a microservices architecture and deploy it on a Kubernetes cluster. Set up a database for persistent storage.
Acceptance Criteria:
- Project structure follows best practices.
- At least two microservices implemented, each responsible for specific functionality.
- Microservices communicate via HTTP or messaging protocol.
- Kubernetes manifests (YAML) for deployments are provided.
- Database (relational or NoSQL) is configured and accessible to microservices.
- Includes sample tables and data.
Technical Documentation
Description:
Create technical documentation for the project.
Acceptance Criteria:
- Includes clear and well-structured information about the application.
- Documentation uses Markdown or similar tools.
API Documentation
Description:
Document APIs for the project using tools like Swagger/OpenAPI or Postman.
Acceptance Criteria:
- API documentation includes request/response formats, payload examples, and error messages for all endpoints.
CI/CD Pipeline
Description:
Set up a CI/CD pipeline for continuous integration and deployment.
Acceptance Criteria:
- Use a CI/CD tool (e.g., GitHub Actions, GitLab CI, Jenkins).
- Automatically test and deploy code to Kubernetes on changes to the main branch.
Helm Charts
Description:
Use Helm Charts for Kubernetes deployment management.
Acceptance Criteria:
- Create Helm Charts for microservices.
- Parameterize configurations for different environments (development, production).
- Use Helm Charts to deploy and update applications in Kubernetes.
Cloud Deployment
Description:
Deploy the application to a cloud environment.
Acceptance Criteria:
- Deploy to platforms like AWS, Azure, or Google Cloud.
- Kubernetes cluster and application are publicly accessible.
Serverless Function
Description:
Implement a serverless function for part of the application.
Acceptance Criteria:
- Use serverless platforms like AWS Lambda, Azure Functions, or Google Cloud Functions.
- Function triggers based on events (e.g., HTTP request).
- Monitor and adjust performance based on workloads.
External API Integration
Description:
Integrate at least one external API into the application.
Acceptance Criteria:
- Use an external API within one of the microservices.
- Proper authentication for the external API is implemented.
Multitenancy Implementation
Description:
Design and implement multitenancy architecture.
Acceptance Criteria:
- Multitenancy implemented at microservices, Kubernetes, and database levels.
- Demonstrate functionality with multiple tenants.
Health Checks
Description:
Implement health checks for microservices.
Acceptance Criteria:
- Health check endpoints for microservices return their status.
- Kubernetes monitors these endpoints to manage service health.
GraphQL and gRPC
Description:
Use GraphQL and gRPC for service communication.
Acceptance Criteria:
- Implement GraphQL in one microservice for querying data.
- Use gRPC for communication between two services.
Messaging Systems
Description:
Implement a messaging system for inter-service communication.
Acceptance Criteria:
- Use a message broker like RabbitMQ, Kafka, or NATS Jetstream.
- At least two microservices communicate asynchronously via the messaging system.
Event Sourcing and CQRS
Description:
Implement Event Sourcing and CQRS patterns.
Acceptance Criteria:
- Use Event Sourcing for tracking data changes.
- Implement CQRS for separate read/write models.
- Demonstrate replaying events to restore state.
Centralized Logging
Description:
Implement a centralized logging and analysis system.
Acceptance Criteria:
- Use tools like ELK Stack or Fluentd for log collection.
- Centralize logs from all services.
- Set up alerts based on log patterns.
Metrics Collection
Description:
Implement a system for collecting application performance metrics.
Acceptance Criteria:
- Use Prometheus, Grafana, or similar tools for metrics collection and visualization.
- Monitor key metrics such as response time and load.
Fault Isolation and Resilience
Description:
Ensure microservice isolation and fault tolerance.
Acceptance Criteria:
- Implement fault-tolerance mechanisms like Circuit Breaker and Retry.
- Demonstrate system resilience to service failures.
Configuration Management
Description:
Implement configuration management for the application.
Acceptance Criteria:
- Separate configuration from implementation.
- Enable configuration changes without redeployment.
- Use configuration sources like files, environment variables, or config servers.
Graphical User Interface (GUI)
Description:
Develop a graphical user interface (GUI) for the application.
Acceptance Criteria:
- Use a framework like React, Angular, or Vue.js.
- Implement at least two pages.
- Ensure the frontend communicates with microservices via REST APIs.