{"id":5944,"date":"2022-08-11T13:27:36","date_gmt":"2022-08-11T04:27:36","guid":{"rendered":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5944"},"modified":"2022-08-11T22:25:52","modified_gmt":"2022-08-11T13:25:52","slug":"eureka-server-client-%ec%84%a4%ec%b9%98%ed%95%98%ea%b8%b0","status":"publish","type":"post","link":"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5944","title":{"rendered":"Eureka Server \/ Client \uc124\uce58\ud558\uae30"},"content":{"rendered":"<h1>Eureka Server \/ Client \uc124\uce58\ud558\uae30<\/h1>\n<p><a href=\"https:\/\/dlibs.tistory.com\/20\">\ucc38\uc870<\/a><\/p>\n<h2>Eureka<\/h2>\n<p>Eureka \ub294 Netflix \uc5d0\uc11c \uacf5\uac1c\ud55c OSS Service Registry \uc774\ub2e4.<\/p>\n<p>\ubcc4\ub3c4\uc758 \ud504\ub85c\uadf8\ub7a8\uc774 \uc544\ub2c8\ub77c,<br \/>\nSpring Boot \uc0c1\uc5d0\uc11c \uc791\ub3d9\ud558\ubbc0\ub85c \uc124\uce58\uac00 \uac04\ud3b8\ud558\ub2e4.<\/p>\n<h2>Eureka Server \uc124\uce58<\/h2>\n<p>\uc2e0\uaddc Spring Boot \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>\uc758\uc874\uc131\uc744 \ucd94\uac00\ud574 \uc900\ub2e4.<\/p>\n<pre><code class=\"language-gradle\">dependencies {\n    implementation &#039;org.springframework.boot:spring-boot-starter&#039;\n    implementation &#039;org.springframework.cloud:spring-cloud-starter-netflix-eureka-server&#039;\n    testImplementation &#039;org.springframework.boot:spring-boot-starter-test&#039;\n}<\/code><\/pre>\n<p><code>@EnableEurekaServer<\/code> \ub97c \ucd94\uac00\ud558\ub294 \uac83\ub9cc\uc73c\ub85c \uc11c\ubc84\uad6c\uc131\uc774 \ub05d\ub09c\ub2e4.<\/p>\n<pre><code class=\"language-java\">@EnableEurekaServer\n@SpringBootApplication\npublic class EurecaServerTestApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(EurecaServerTestApplication.class, args);\n    }\n\n}<\/code><\/pre>\n<pre><code class=\"language-yml\">eureka:\n  client:\n    register-with-eureka: false\n    fetch-registry: false\n\nserver:\n  port: 8761<\/code><\/pre>\n<p>\uc77c\ubc18\uc801\uc778 Spring Boot \uc571\uc744 \uc2e4\ud589\ud558\ub294 \uac83\uacfc \ub3d9\uc77c\ud558\uac8c \uc2e4\ud589\ud55c\ub2e4.<\/p>\n<p><a href=\"http:\/\/localhost:8761\/\">http:\/\/localhost:8761\/<\/a> \uc5d0 \uc811\uc18d\ud558\uba74 Eureca \uac00 \uc815\uc0c1\uc801\uc73c\ub85c \uc2e4\ud589\ub418\ub294 \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<h2>Spring Security \ud65c\uc131\ud654<\/h2>\n<p>\uc758\uc874\uc131\uc744 \ucd94\uac00\ud55c\ub2e4.<\/p>\n<pre><code class=\"language-gradle\">dependencies {\n    implementation &#039;org.springframework.boot:spring-boot-starter&#039;\n    implementation &#039;org.springframework.boot:spring-boot-starter-security&#039;\n    implementation &#039;org.springframework.cloud:spring-cloud-starter-netflix-eureka-server&#039;\n    testImplementation &#039;org.springframework.boot:spring-boot-starter-test&#039;\n    testImplementation &#039;org.springframework.security:spring-security-test&#039;\n}<\/code><\/pre>\n<p><code>WebSecurityConfigurerAdapter<\/code> \uac00 Deprecated \ub418\uc5c8\uc9c0\ub9cc,<br \/>\n\uc18c\uc2a4\ub97c \uac04\ub2e8\ud788 \ud558\uae30\uc704\ud574 \uadf8\ub0e5 \uc0ac\uc6a9\ud55c\ub2e4.<\/p>\n<pre><code class=\"language-java\">@EnableWebSecurity\nclass WebSecurityConfig extends WebSecurityConfigurerAdapter {\n\n    \/\/ WebSecurityConfigurerAdapter Deprecated\n\n    @Override\n    protected void configure(HttpSecurity http) throws Exception {\n        http\n                .csrf()\n                .disable()\n                .authorizeRequests()\n                .anyRequest().authenticated()\n                .and()\n                .httpBasic();\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-yaml\">spring:\n  security:\n    user:\n      name: admin\n      password: admin<\/code><\/pre>\n<h2>Eureka Client \uc124\uce58<\/h2>\n<p>\uc2e0\uaddc Spring Boot \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud55c\ub2e4.<\/p>\n<p>\uc758\uc874\uc131\uc744 \ucd94\uac00\ud574 \uc900\ub2e4.<br \/>\n\ud14c\uc2a4\ud2b8\ub97c \uc704\ud574 feign \ub3c4 \uac19\uc774 \uc124\uce58\ud55c\ub2e4.<\/p>\n<pre><code class=\"language-gradle\">dependencies {\n    implementation &#039;org.springframework.boot:spring-boot-starter-web&#039;\n    implementation &#039;org.springframework.cloud:spring-cloud-starter-netflix-eureka-client&#039;\n    implementation &#039;org.springframework.cloud:spring-cloud-starter-openfeign&#039;\n    compileOnly &#039;org.projectlombok:lombok&#039;\n    annotationProcessor &#039;org.projectlombok:lombok&#039;\n    testImplementation &#039;org.springframework.boot:spring-boot-starter-test&#039;\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@EnableEurekaClient\n@EnableFeignClients\n@SpringBootApplication\npublic class EurecaClientTestApplication {\n\n    public static void main(String[] args) {\n        SpringApplication.run(EurecaClientTestApplication.class, args);\n    }\n\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@Getter\n@Setter\n@NoArgsConstructor\npublic class StatusResponse {\n\n    private String status;\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@RestController\n@RequestMapping(&quot;\/actuator&quot;)\npublic class ActuatorController {\n\n    @GetMapping(&quot;\/info&quot;)\n    public StatusResponse info() {\n        StatusResponse response = new StatusResponse();\n        response.setStatus(&quot;OK&quot;);\n\n        return response;\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-yaml\">server:\n  port: 8888\n\nspring:\n  application:\n    name: eureka-client\n\neureka:\n  client:\n    fetch-registry: true\n    register-with-eureka: true\n    service-url:\n      defaultZone : http:\/\/admin:admin@localhost:8761\/eureka\/\n  instance:\n    hostname: localhost<\/code><\/pre>\n<p>\uc571\uc744 \uc2e4\ud589\uc2dc\ud0a8\ub2e4.<\/p>\n<p><a href=\"http:\/\/localhost:8761\/\">http:\/\/localhost:8761\/<\/a> \uc5d0 \uc811\uc18d\ud558\uba74 Eureca Client \uac00 \uc815\uc0c1\uc801\uc73c\ub85c \ub4f1\ub85d\ub41c \uac83\uc744 \ubcfc \uc218 \uc788\ub2e4.<\/p>\n<h2>feign \ud14c\uc2a4\ud2b8<\/h2>\n<pre><code class=\"language-java\">@FeignClient(name = &quot;EUREKA-CLIENT&quot;)\npublic interface FeignTestService {\n\n    @GetMapping(&quot;\/actuator\/info&quot;)\n    StatusResponse feignTest();\n}<\/code><\/pre>\n<pre><code class=\"language-java\">@RestController\n@RequiredArgsConstructor\n@RequestMapping(&quot;\/test&quot;)\npublic class FeignTestController {\n\n    private final FeignTestService service;\n\n    @GetMapping(&quot;\/feign&quot;)\n    public String feignTest() {\n\n        StatusResponse response = service.feignTest();\n        return response.getStatus();\n    }\n}<\/code><\/pre>\n<p><a href=\"http:\/\/localhost:8888\/test\/feign\">http:\/\/localhost:8888\/test\/feign<\/a> \uc5d0 \uc811\uc18d\ud574 \ubcf4\uba74,<br \/>\nfeign \uc774 \uc11c\ube44\uc2a4\uba85\ub9cc\uc73c\ub85c eureca \uc5d0\uc11c,<br \/>\nurl \uacfc \ud3ec\ud2b8\ub97c \ubc1b\uc544\uc640 API \ub97c \ud638\ucd9c\ud558\ub294 \uac83\uc744 \ubcfc\uc218 \uc788\ub2e4.<\/p>\n<p>\ud558\ub098\uc758 \uc571\uc5d0 Eureka Client \uc640 Feign Client \ub97c \ubaa8\ub450 \uc0dd\uc131\ud55c \uacbd\uc6b0,<br \/>\n5\ucd08 \uc815\ub3c4 \uc9c0\ub098\uc57c Eureka Server \uac00 Eureka Client \ub97c \uc815\uc0c1\uc801\uc73c\ub85c \uc11c\ube44\uc2a4\ud558\ubbc0\ub85c,<br \/>\n5\ucd08 \uc9c0\ub09c \uc774\ud6c4 \ud638\ucd9c\ud574\uc57c \uc815\uc0c1 \uc791\ub3d9\ud55c\ub2e4.<\/p>\n<h2>\ud558\uc9c0\ub9cc nomad \uac00 \ub4f1\uc7a5\ud55c\ub2e4\uba74?<\/h2>\n<p><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3192\">https:\/\/www.skyer9.pe.kr\/wordpress\/?p=3192<\/a><\/p>\n<p>Eureka Server \uac00 \uc5ec\ub7ec\ub300 \uc778\uac83\uc5d0 \ub300\uc751\ud558\ub294\uc9c0 \uc758\ubb38\uc774\uace0,<br \/>\nEureka Client \uac00 \uc8fd\uc5c8\uc744 \ub54c \uc790\ub3d9\ubcf5\uad6c\uac00 \ub418\ub294\uc9c0 \uc758\ubb38\uc774\uace0,<br \/>\nauto-scaling \uc774 \ub418\ub294\uc9c0\ub3c4 \uc758\ubb38\uc774\uace0 &#8230;<\/p>\n<p>\uc18c\uaddc\ubaa8 \ud074\ub7ec\uc2a4\ud130\uc5d0 \uc801\ub2f9\ud574 \ubcf4\uc774\ub294\ub370,<br \/>\n\uadf8\uac83\ub3c4 \uc11c\ubc84 \uc7a5\uc560\uc2dc \uc0ac\ub78c\uc774 \uc190\ub300\uc57c \ud558\ub294 \uac83\uc73c\ub85c \ubcf4\uc778\ub2e4.<\/p>\n<p>\ubc18\uba74\uc5d0,<br \/>\nnomad + consul \uc740 100\ub9cc\ub300\uc758 \uc11c\ubc84\uc5d0\uc11c\ub3c4 \uc791\ub3d9\ud558\ub294\uac83\uc774 \ud655\uc778\ub418\uc5c8\ub2e4.<br \/>\n\uac1c\uc778\uc801\uc73c\ub85c\ub3c4 N\uac1c\uc758 consul \uc11c\ubc84(dns), M\uac1c\uc758 \ud074\ub77c\uc774\uc5b8\ud2b8,<br \/>\n\uc790\ub3d9\ubcf5\uad6c, auto-scaling \ub4f1\uc744 \ud655\uc778\ud588\ub2e4.<\/p>\n<p>\ubb50&#8230;<br \/>\n\uac04\ud3b8\ud55c \uac83\uc740 eureca.<br \/>\n\uc548\uc815\uc801\uc778 \uac83\uc740 nomad \ub97c \uc0dd\uac01\ud55c\ub2e4.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eureka Server \/ Client \uc124\uce58\ud558\uae30 \ucc38\uc870 Eureka Eureka \ub294 Netflix \uc5d0\uc11c \uacf5\uac1c\ud55c OSS Service Registry \uc774\ub2e4. \ubcc4\ub3c4\uc758 \ud504\ub85c\uadf8\ub7a8\uc774 \uc544\ub2c8\ub77c, Spring Boot \uc0c1\uc5d0\uc11c \uc791\ub3d9\ud558\ubbc0\ub85c \uc124\uce58\uac00 \uac04\ud3b8\ud558\ub2e4. Eureka Server \uc124\uce58 \uc2e0\uaddc Spring Boot \ud504\ub85c\uc81d\ud2b8\ub97c \uc0dd\uc131\ud55c\ub2e4. \uc758\uc874\uc131\uc744 \ucd94\uac00\ud574 \uc900\ub2e4. dependencies { implementation &#039;org.springframework.boot:spring-boot-starter&#039; implementation &#039;org.springframework.cloud:spring-cloud-starter-netflix-eureka-server&#039; testImplementation &#039;org.springframework.boot:spring-boot-starter-test&#039; } @EnableEurekaServer \ub97c \ucd94\uac00\ud558\ub294 \uac83\ub9cc\uc73c\ub85c \uc11c\ubc84\uad6c\uc131\uc774 \ub05d\ub09c\ub2e4. @EnableEurekaServer @SpringBootApplication public class\u2026 <span class=\"read-more\"><a href=\"https:\/\/www.skyer9.pe.kr\/wordpress\/?p=5944\">Read More &raquo;<\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-5944","post","type-post","status-publish","format-standard","hentry","category-devops"],"_links":{"self":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5944","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5944"}],"version-history":[{"count":10,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5944\/revisions"}],"predecessor-version":[{"id":5956,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=\/wp\/v2\/posts\/5944\/revisions\/5956"}],"wp:attachment":[{"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5944"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5944"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.skyer9.pe.kr\/wordpress\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5944"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}