The eCommerce app is designed using Microservices architecture and API Gateway pattern where each service is responsible for a specific business function.
Elastic's eCommerce Orders Data is added from Kibana Integrations and used for product, category, search and order functionalities.
iyipay-java API client developed by iyzico is integrated and used for the project at the payment service.
Reference: https://github.com/iyzico/iyzipay-java
Architectural Diagram
NOTE: Check docs or diagrams for internal service calls and Kafka events.
Elasticsearch → product index as example
Software architectures and principles:
MicroservicesAPI gatewayDistributed systemsDomain driven designRich domain modelEvent driven architectureCQRS (product, search)Monitoring, observabilityException handling
Technologies:
Java 21Spring Boot 3.3.1Spring Securityiyzipay-java API ClientMavenGitHub ActionsElasticsearchKibanaElastic AgentandFleet ServerElastic APMandOpenTelemetryDockerPostgreSQLMongoDBRedisKafka
NOTE: Check docs or diagrams for asynchronous messaging with Kafka events.
ProductPublishedProductUnpublishedOrderCreatedOrderReceivedPaymentReceived
Refer to the docs section for setup and development of the project. It includes these parts:
- 1. Set Up iyzipay Java Client for Payment service
- 2. Set Up Environment Variables
- 3. Run Docker Containers
- 4. Run Elasticsearch and Kibana
- 5. Use Kibana Observability
- 6. Use Search Functions
- 7. Run Backend Services
- Running the project in
Kubernetesenvironment:minikubekubectlhelmkustomize
This part is under development and will be released with new version of the project.
Contributions are welcome! If you have suggestions or want to improve the code, please check Contributing section.
Released under the MIT License.


