{"id":21301829,"url":"https://github.com/marcossic/microservice-example","last_synced_at":"2025-03-15T18:28:05.991Z","repository":{"id":188542128,"uuid":"678783275","full_name":"MarcossIC/Microservice-example","owner":"MarcossIC","description":"This repository contains an API made in Spring boot that follows an architecture based on microservices.","archived":false,"fork":false,"pushed_at":"2023-11-01T06:41:12.000Z","size":197,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T08:15:00.834Z","etag":null,"topics":["java","microservice","spring-boot"],"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/MarcossIC.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":"2023-08-15T11:17:01.000Z","updated_at":"2024-08-10T22:48:12.000Z","dependencies_parsed_at":"2023-08-15T20:41:06.384Z","dependency_job_id":"6041fac1-2fce-4e23-a27a-809172b6c480","html_url":"https://github.com/MarcossIC/Microservice-example","commit_stats":null,"previous_names":["marcossic/microservice-example"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcossIC%2FMicroservice-example","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcossIC%2FMicroservice-example/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcossIC%2FMicroservice-example/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MarcossIC%2FMicroservice-example/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MarcossIC","download_url":"https://codeload.github.com/MarcossIC/Microservice-example/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243773590,"owners_count":20345866,"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":["java","microservice","spring-boot"],"created_at":"2024-11-21T15:52:39.570Z","updated_at":"2025-03-15T18:28:05.969Z","avatar_url":"https://github.com/MarcossIC.png","language":"Java","readme":"# Microservice-example\n\n## :sparkles: Introduction\nThis repository contains an API made in Spring boot that follows an architecture based on microservices.\n\nFor this application we can find 5 microservices\n- Eureka Service: Service that acts as a discovery server for microservices\n- Gategay Service: Service that serves as an entry point to the rest of the microservices for security\n- Config Service: Service that serves as a configuration server, to have a centralized configuration system\n- Bike Service: Functional microservice used as an example for the project\n- Car Service: Functional microservice used as an example for the project\n\n## 🛠 Stack\n\u003cp align=\"left\"\u003e \n   \u003ca href=\"#\" rel=\"noreferrer\"\u003e \u003cimg src=\"https://skillicons.dev/icons?i=java,spring,maven,mysql,kafka\"/\u003e \u003c/a\u003e\n\u003c/p\u003e\n\n## 💪 Project Status\nI plan to make some changes to the project to refine the microservices code.\n\n## ℹ️ Read More\nIn this section you can read more information about the content of the project. I hope you like it and can learn something.\n### API Rest Full\nA RESTful API (Representational State Transfer) is a set of architectural rules and principles used to create web services. These web services follow a specific approach to creating services that are scalable, maintainable, and reliable. Some of the key concepts of a RESTful API include:\n\u003cul\u003e\n   \u003cli\u003e\n      \u003ch3\u003eClient-Server Architecture\u003c/h3\u003e\n      \u003cp\u003eThe RESTful API follows a client-server architecture where the client and server are separated and communicate with each other through the HTTP protocol.   \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eStateless\u003c/h3\u003e\n      \u003cp\u003e\n         Each HTTP request contains all the information necessary to execute and does not store client state information on the server. This allows requests to be processed independently, facilitating scalability.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eDefined HTTP operations\u003c/h3\u003e\n      \u003cp\u003e\n         Uses standard HTTP methods such as GET,HEAD, POST, PUT, DELETE,PATH,TRACE,etc to perform operations on resources. Each method has a specific purpose, such as       obtaining data, adding new data, updating existing data, or deleting data.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eResources as objects\u003c/h3\u003e\n      \u003cp\u003e\n         Data is presented as resources, which can be accessed and manipulated through specific URLs. Each resource must have a unique identification (URI) to be accessible.\n      \u003c/p\u003e\n   \u003c/li\u003e\n      \u003cli\u003e\n      \u003ch3\u003eResource representations\u003c/h3\u003e\n      \u003cp\u003e\n         Resources can have different representations, such as JSON, XML, HTML, among others. The client can request the desired representation of the resource using the 'Accept' HTTP header.\n      \u003c/p\u003e\n   \u003c/li\u003e\n\u003c/ul\u003e\n\n### Monolithic architecture\nAn architecture is the classic and most common way of realizing an API, in this approach the application is built as a single unit, usually as a single operating system and runs as a single process on a single machine. In a monolithic architecture, different application components are designed to work together and are deployed as a single entity.\nSome key features of a monolithic architecture are:\n\u003cul\u003e\n   \u003cli\u003e\n      Tight coupling\n   \u003c/li\u003e\n   \u003cli\u003e\n      Limited scalability\n   \u003c/li\u003e\n   \u003cli\u003e\n      Single deployment\n   \u003c/li\u003e\n   \u003cli\u003e\n      Complex maintenance\n   \u003c/li\u003e\n\u003c/ul\u003e\n\nAlthough monolithic architectures are simpler to design and develop, they can become unwieldy as applications grow in complexity and scale. However, they are still widely used, especially for smaller or less complex applications that do not require massive scale or extreme flexibility.\n\nBut it is for this reason that this architecture also exists:\n### Microservices architecture\nA microservices-based architecture is a software development approach in which an application is built as a set of small, independent services that run individually and communicate with each other through well-defined APIs. Each service in a microservices architecture focuses on completing a specific task and is developed, deployed, and scaled independently.\nSome key features of a microservices-based architecture are:\n\u003cul\u003e\n   \u003cli\u003e\n      \u003ch3\u003eDecentralization\u003c/h3\u003e\n      \u003cp\u003e\n         Services are independent and autonomous, allowing development teams to work independently on each service.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eFlexibility and agility\u003c/h3\u003e\n      \u003cp\u003e\n         Services can be developed, tested and deployed independently, making it easier to implement changes and updates.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eResilience and fault tolerance\u003c/h3\u003e\n      \u003cp\u003e\n         The architecture allows fault management in isolation, which prevents a failure in one service from affecting the application as a whole.\n      \u003c/p\u003e\n   \u003c/li\u003e\n\u003c/ul\u003e\n\nAlthough microservices-based architectures offer greater flexibility and scalability compared to monolithic architectures, they also introduce additional complexity in managing communication between services and monitoring the entire ecosystem of services. This architecture is ideal for complex, large-scale enterprise applications that require rapid innovation and continuous deployment. However, all is not yet rosy either...\n\n### Why not always use microservices-oriented architecture?\nWhile microservices-based architectures offer numerous advantages in terms of flexibility, scalability, and agility, they also present challenges and are not suitable for all use cases. Some of the reasons why it is not recommended to always use microservices-oriented architectures include:\n\n\u003cul\u003e\n   \u003cli\u003e\n      \u003ch3\u003eSystem complexity\u003c/h3\u003e\n      \u003cp\u003e\n         Managing a microservices-based architecture can be more complex compared to monolithic architectures, requiring a higher level of technical knowledge and management skills.\n      \u003c/p\u003e\n   \u003c/li\u003e\n      \u003cli\u003e\n      \u003ch3\u003eOperating costs\u003c/h3\u003e\n      \u003cp\u003e\n         The implementation and maintenance of a microservices architecture can be significantly more expensive than an application built on a normal architecture, due to the additional infrastructure requirements, monitoring tools and management of the complexity of the distributed environment.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eInter-service communication issues\u003c/h3\u003e\n      \u003cp\u003e\n         Communication between different services can be challenging, especially in high-load and high-concurrency environments, which may require careful planning and design to avoid bottlenecks, performance issues, and security flaws.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eNeed for advanced management tools\u003c/h3\u003e\n      \u003cp\u003e\n         Implementing a microservices-based architecture often requires advanced management tools and platforms to facilitate monitoring, management, and coordination of different services, which can increase complexity and costs.\n      \u003c/p\u003e\n   \u003c/li\u003e\n   \u003cli\u003e\n      \u003ch3\u003eData consistency issues\u003c/h3\u003e\n      \u003cp\u003e\n         Maintaining data consistency across multiple services can be challenging, especially in distributed systems, requiring carefully planned data synchronization and transaction management strategies.\n      \u003c/p\u003e\n   \u003c/li\u003e\n\u003c/ul\u003e\n\nIn summary, although microservices-based architectures are beneficial in many scenarios, it is crucial to carefully evaluate the specific needs of the project and weigh the challenges and complexities associated with this architecture before adopting it. Less complex applications or those that do not require extreme scalability may find more benefits in monolithic architectures or other software design approaches.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcossic%2Fmicroservice-example","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmarcossic%2Fmicroservice-example","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmarcossic%2Fmicroservice-example/lists"}