{"id":25424728,"url":"https://github.com/aliabbos-ashurov/spring-multi-cloud-storage-engine","last_synced_at":"2025-05-14T01:32:33.358Z","repository":{"id":276457807,"uuid":"929332526","full_name":"Aliabbos-Ashurov/spring-multi-cloud-storage-engine","owner":"Aliabbos-Ashurov","description":"A clean, scalable, lightweight  and extensible implementation of multi-cloud file storage using Spring Context. Demonstrates advanced engineering practices like async processing, caching, retries, and observability for AWS S3 and Google Cloud Storage.","archived":false,"fork":false,"pushed_at":"2025-02-11T10:36:58.000Z","size":16,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-11T11:33:13.057Z","etag":null,"topics":["asynchronous","aws","framework","gcs","s3","shared-library"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Aliabbos-Ashurov.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-02-08T09:51:32.000Z","updated_at":"2025-02-11T10:37:02.000Z","dependencies_parsed_at":"2025-02-11T11:44:03.365Z","dependency_job_id":null,"html_url":"https://github.com/Aliabbos-Ashurov/spring-multi-cloud-storage-engine","commit_stats":null,"previous_names":["aliabbos-ashurov/multi-cloud-storage-engine","aliabbos-ashurov/spring-multi-cloud-engine","aliabbos-ashurov/spring-multi-cloud-storage-engine"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aliabbos-Ashurov%2Fspring-multi-cloud-storage-engine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aliabbos-Ashurov%2Fspring-multi-cloud-storage-engine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aliabbos-Ashurov%2Fspring-multi-cloud-storage-engine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Aliabbos-Ashurov%2Fspring-multi-cloud-storage-engine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Aliabbos-Ashurov","download_url":"https://codeload.github.com/Aliabbos-Ashurov/spring-multi-cloud-storage-engine/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239207394,"owners_count":19599966,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["asynchronous","aws","framework","gcs","s3","shared-library"],"created_at":"2025-02-16T23:17:27.748Z","updated_at":"2025-05-14T01:32:33.348Z","avatar_url":"https://github.com/Aliabbos-Ashurov.png","language":"Java","readme":"# Spring Multi-Cloud Storage Engine\n\nThe **Spring Multi-Cloud Storage Engine** is a robust, scalable Java-based application built with Spring Boot that\nprovides a unified interface for interacting with multiple cloud storage providers, such as AWS S3, Google Cloud\nStorage, and Azure Blob Storage. This project abstracts the complexities of vendor-specific APIs, enabling developers to\nmanage files across different cloud platforms seamlessly. It is designed for enterprise-grade applications requiring\nflexible, provider-agnostic storage solutions.\n\n## Features\n\n- **Unified API**: Perform file operations (upload, download, delete) across multiple cloud providers using a\n  single interface.\n- **Provider Support**: Integrates with AWS S3, Google Cloud Storage, and Azure Blob Storage (extensible for other\n  providers).\n- **Dynamic Configuration**: Switch between cloud providers at runtime via configuration.\n- **Fault Tolerance**: Handles provider-specific errors and implements retry mechanisms for reliability.\n- **Scalability**: Built with Spring Boot for high performance and scalability in distributed systems.\n- **Extensible Design**: Easily add support for new cloud storage providers through modular adapters.\n\n![archicture-1](statics/mlt-2-architect.png)\n\n![archicture-1](statics/key-dependency.png)\n\n## Setup Instructions\n\n### 1. Clone the Repository\n\n````bash\n   git clone https://github.com/Aliabbos-Ashurov/spring-multi-cloud-storage-engine.git\n   cd spring-multi-cloud-storage-engine\n````\n\n### 2. Configure Cloud Providers\n\n````YAML\nmulti-cloud:\n  storage:\n    aws:\n      enabled: true\n      access-key: ${AWS_ACCESS_KEY}\n      secret-key: ${AWS_SECRET_KEY}\n      bucket-name: ${AWS_BUCKET_NAME}\n      region: ${AWS_REGION}\n    gcs:\n      ...\n    azure-blob:\n      ...\n````\n\n### 3. Implement FileService\n````Java\n@Service\npublic class FileService {\n    public StorageProvider provider;\n\n    public FileService(@Qualifier(\"s3StorageProvider\") StorageProvider provider) {\n        this.provider = provider;\n    }\n\n    public void save(String key, byte[] bytes) {\n        provider.upload(key, bytes, ExecutionContext.ofDefault());\n    }\n}\n````\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliabbos-ashurov%2Fspring-multi-cloud-storage-engine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faliabbos-ashurov%2Fspring-multi-cloud-storage-engine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faliabbos-ashurov%2Fspring-multi-cloud-storage-engine/lists"}