{"id":15159284,"url":"https://github.com/cse0518/spring-eureka","last_synced_at":"2026-01-20T21:33:59.691Z","repository":{"id":164237229,"uuid":"639320697","full_name":"cse0518/Spring-Eureka","owner":"cse0518","description":"MSA 서버 구조에 Spring Cloud Gateway와 Spring Eureka를 적용해봅니다","archived":false,"fork":false,"pushed_at":"2023-05-22T00:43:23.000Z","size":103,"stargazers_count":0,"open_issues_count":0,"forks_count":2,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-07T16:19:55.000Z","etag":null,"topics":["kafka-producer","netty","spring-cloud-gateway","spring-eureka","webflux"],"latest_commit_sha":null,"homepage":"https://github.com/cse0518/MSA-practice","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/cse0518.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-05-11T08:24:44.000Z","updated_at":"2023-09-06T08:22:34.000Z","dependencies_parsed_at":null,"dependency_job_id":"26df6450-3989-436f-b3c7-acfef666ed10","html_url":"https://github.com/cse0518/Spring-Eureka","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cse0518%2FSpring-Eureka","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cse0518%2FSpring-Eureka/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cse0518%2FSpring-Eureka/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cse0518%2FSpring-Eureka/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cse0518","download_url":"https://codeload.github.com/cse0518/Spring-Eureka/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247685634,"owners_count":20979085,"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":["kafka-producer","netty","spring-cloud-gateway","spring-eureka","webflux"],"created_at":"2024-09-26T21:02:33.619Z","updated_at":"2026-01-20T21:33:59.665Z","avatar_url":"https://github.com/cse0518.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Index\n\n- [MSA 환경 구현](#msa-환경-구현)\n- [Spring Cloud Gateway](#spring-cloud-gateway)\n- [Spring Eureka](#spring-eureka)\n  - [Eureka Server](#eureka-server)\n  - [Eureka Client](#eureka-client)\n\n\u003cbr/\u003e\n\n## MSA 환경 구현\n\n![image](https://user-images.githubusercontent.com/60170616/232970280-115d2eb9-b1af-4fea-9c11-95817cca5a6c.png)\n\nClient에서 보낸 요청을 Gateway에서 수신하고, 해당하는 서비스로 라우팅해줍니다.\n\n\u003cbr/\u003e\n\n## Spring Cloud Gateway\n\n클라이언트와 백엔드 서비스 사이에서 리버스 프록시 역할을 해줍니다.  \n그리고 MSA 전체 서비스에 대한 인증, 모니터링 등 관리 포인트를 추가하여 모든 API의 관문 역할을 해줍니다.\n\nSpring Cloud Gateway는 Spring MVC(Tomcat)가 아닌 Netty를 사용하여 구현했습니다.  \n모든 요청이 Gateway를 통과하기 때문에 빠른 처리가 중요합니다.  \nNetty는 비동기 WAS이고 1THREAD / MANY REQUESTS 방식이기 때문에 기존 방식보다 더 많은 요청을 처리할 수 있습니다.\n\n\u003cbr/\u003e\n\n## Spring Eureka\n\nMSA 기반의 api 서버를 구축하기 위해 spring eureka 기술을 사용했습니다.  \nSpring Cloud Gateway - Eureka Server, Client를 구현했습니다.\n\nEureka는 클라우드 환경에서 다수의 서비스들의 로드 밸런싱 및 장애 조치 목적을 가진 미들웨어 서버입니다.  \nMSA 환경에서 수많은 api 서버들로 구성이 될 것이고, 이 서버들을 하나의 게이트웨이를 통해서 관리합니다.\n\n하나의 Eureka Server에서 여러개의 Eureka Client들을 관리합니다.  \nEureka Server는 Eureka Client들을 관리하고,  \nEureka Client들은 다른 Client들의 정보를 확인해 통신할 수 있습니다.\n\n\u003cbr/\u003e\n\n### Eureka Server\n\n- discovery server\n- eureka client들을 등록\n- client들로부터 일정 시간마다 heartbeat를 수신,  \n  heartbeat가 오지 않는 경우 client가 죽었다고 판단,  \n  일정 시간안에 registry에서 client 정보 삭제\n- 유지된 registry 정보를 client들에게 전달\n\n### Eureka Client\n\n- MSA 환경에서 각각의 서비스들은 eureka client가 된다.\n- 스스로 자신의 meta 정보를 eureka server에 등록\n- 서버로부터 registry 정보를 가져와 캐싱하고 주기적으로 변경사항을 확인한다.  \n  이를 통해 다른 client들의 정보를 알 수 있음\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcse0518%2Fspring-eureka","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcse0518%2Fspring-eureka","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcse0518%2Fspring-eureka/lists"}