Ineilés Reyes - Backend Dev Test#56
Open
IneilesReyes wants to merge 11 commits intodalogax:mainfrom
Open
Conversation
…ce and resilience
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Products Service
A high-performance microservice built to manage and serve product information efficiently, utilizing caching strategies and resilient communication patterns with external dependencies.
🛠 Tech Stack
🚀 Getting Started
To launch the complete infrastructure, including the application, database, and monitoring tools, use the following command:
Performance Testing
The k6 performance tests should be executed following the same procedure described in the original project documentation. Ensure the environment is fully up before initiating load tests.
🔍 Validation & Monitoring
Once the containers are running, you can verify the application's health and the status of the integrated resilience patterns through the following Actuator endpoints:
Displays the overall status of the application, including the connection status to the Redis cache and the health of the configured Circuit Breakers.
Shows the current state (
CLOSED,OPEN,HALF_OPEN) of theproductClientcircuit breaker, along with real-time metrics (failure rate, buffered calls, etc.).Provides a chronological log of the latest events, useful for seeing exactly when the circuit opens due to timeouts or 5xx errors from the external mocks.
📝 Architectural Decisions
Error Handling & API Contract
A specific design choice was made regarding error propagation: the application does not return 5xx status codes on its endpoints. This decision is rooted in the established contract between the backend and the frontend. By intercepting internal or downstream failures and mapping them to specific client-side expectations, we ensure the frontend can handle state transitions gracefully without encountering unhandled server-side exceptions. This maintains a robust and predictable user experience even when external dependencies are unavailable.