diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/pom.xml b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/pom.xml
new file mode 100644
index 0000000000..60b6eab020
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/pom.xml
@@ -0,0 +1,48 @@
+
+
+ 4.0.0
+ echo-demo
+ echo-demo
+ Demo for echo endpoint
+
+ com.baeldung.cloud
+ spring-cloud-netflix-sidecar
+ 0.0.1-SNAPSHOT
+ ../pom.xml
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.boot
+ spring-boot-starter-web
+
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-zuul
+ 2.2.10.RELEASE
+
+
+ org.springframework.cloud
+ spring-cloud-starter-netflix-eureka-client
+ 2.2.10.RELEASE
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/java/com/baeldung/cloud/echo/EchoApplication.java b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/java/com/baeldung/cloud/echo/EchoApplication.java
new file mode 100644
index 0000000000..d869ba8f65
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/java/com/baeldung/cloud/echo/EchoApplication.java
@@ -0,0 +1,48 @@
+package com.baeldung.cloud.echo;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.client.ServiceInstance;
+import org.springframework.cloud.client.discovery.DiscoveryClient;
+import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
+import org.springframework.cloud.netflix.zuul.EnableZuulProxy;
+import org.springframework.context.annotation.Bean;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.List;
+
+@SpringBootApplication
+@EnableEurekaClient
+@EnableZuulProxy
+@RestController
+public class EchoApplication {
+ @Autowired
+ DiscoveryClient discoveryClient;
+ @Autowired
+ RestTemplate restTemplate;
+
+ @Bean
+ public RestTemplate restTemplate() {
+ return new RestTemplate();
+ }
+
+ @GetMapping("/hello/{me}")
+ public ResponseEntity echo(@PathVariable("me") String me) {
+ List instances = discoveryClient.getInstances("sidecar");
+ if (instances.isEmpty()) {
+ return ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body("hello service is down");
+ }
+ String url = instances.get(0).getUri().toString();
+ return ResponseEntity.ok(restTemplate.getForObject(url + "/hello/" + me, String.class));
+ }
+
+ public static void main(String[] args) {
+ SpringApplication.run(EchoApplication.class, args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/resources/application.yml b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/resources/application.yml
new file mode 100644
index 0000000000..7b13600b73
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/main/resources/application.yml
@@ -0,0 +1,14 @@
+server.port: 8085
+spring:
+ application:
+ name: echo
+eureka:
+ instance:
+ hostname: localhost
+ leaseRenewalIntervalInSeconds: 1
+ leaseExpirationDurationInSeconds: 2
+ client:
+ service-url:
+ defaultZone: http://127.0.0.1:8761/eureka
+ healthcheck:
+ enabled: true
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/test/java/com/baeldung/cloud/echo/SpringContextTest.java b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/test/java/com/baeldung/cloud/echo/SpringContextTest.java
new file mode 100644
index 0000000000..af4ba8c71a
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/echo-demo/src/test/java/com/baeldung/cloud/echo/SpringContextTest.java
@@ -0,0 +1,11 @@
+package com.baeldung.cloud.echo;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class SpringContextTest {
+ @Test
+ void contextLoads() {
+ }
+}
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/pom.xml b/spring-cloud/spring-cloud-netflix-sidecar/pom.xml
new file mode 100644
index 0000000000..254a0376b6
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/pom.xml
@@ -0,0 +1,27 @@
+
+
+ 4.0.0
+ com.baeldung.cloud
+ spring-cloud-netflix-sidecar
+ 0.0.1-SNAPSHOT
+ pom
+ spring-cloud-netflix-sidecar
+ Netflix Sidecar project for Spring Boot
+
+
+ com.baeldung
+ parent-boot-2
+ 0.0.1-SNAPSHOT
+ ../../parent-boot-2
+
+
+ sidecar-demo
+ echo-demo
+
+
+ 2.2.10.RELEASE
+ 2.3.12.RELEASE
+
+
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/nodejs/hello.js b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/nodejs/hello.js
new file mode 100644
index 0000000000..207bd5449b
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/nodejs/hello.js
@@ -0,0 +1,19 @@
+const express = require('express')
+const app = express()
+const port = 3000
+
+app.get('/', (req, res) => {
+ res.send('Hello World!')
+})
+
+app.get('/health', (req, res) => {
+ res.send({ "status":"UP"})
+})
+
+app.get('/hello/:me', (req, res) => {
+ res.send('Hello ' + req.params.me + '!')
+})
+
+app.listen(port, () => {
+ console.log(`Hello app listening on port ${port}`)
+})
\ No newline at end of file
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/pom.xml b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/pom.xml
new file mode 100644
index 0000000000..22032d5081
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/pom.xml
@@ -0,0 +1,52 @@
+
+
+ 4.0.0
+ sidecar-demo
+ sidecar-demo
+ Sidecar demo for hello endpoint
+
+ com.baeldung.cloud
+ spring-cloud-netflix-sidecar
+ 0.0.1-SNAPSHOT
+ ../pom.xml
+
+
+
+ org.springframework.boot
+ spring-boot-starter-actuator
+
+
+ org.springframework.cloud
+ spring-cloud-netflix-sidecar
+ ${netflix.cloud.version}
+
+
+ io.projectreactor
+ reactor-core
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ org.junit.jupiter
+ junit-jupiter
+ test
+
+
+ org.mockito
+ mockito-junit-jupiter
+ test
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/java/com/baeldung/cloud/sidecar/SidecarApplication.java b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/java/com/baeldung/cloud/sidecar/SidecarApplication.java
new file mode 100644
index 0000000000..83508e73d2
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/java/com/baeldung/cloud/sidecar/SidecarApplication.java
@@ -0,0 +1,13 @@
+package com.baeldung.cloud.sidecar;
+
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.cloud.netflix.sidecar.EnableSidecar;
+
+@SpringBootApplication
+@EnableSidecar
+public class SidecarApplication {
+ public static void main(String[] args) {
+ SpringApplication.run(SidecarApplication.class, args);
+ }
+}
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/resources/application.yml b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/resources/application.yml
new file mode 100644
index 0000000000..29e03551c2
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/main/resources/application.yml
@@ -0,0 +1,17 @@
+server.port: 8084
+spring:
+ application:
+ name: sidecar
+eureka:
+ instance:
+ hostname: localhost
+ leaseRenewalIntervalInSeconds: 1
+ leaseExpirationDurationInSeconds: 2
+ client:
+ service-url:
+ defaultZone: http://127.0.0.1:8761/eureka
+ healthcheck:
+ enabled: true
+sidecar:
+ port: 3000
+ health-uri: http://localhost:3000/health
diff --git a/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/test/java/com/baeldung/cloud/sidecar/SpringContextTest.java b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/test/java/com/baeldung/cloud/sidecar/SpringContextTest.java
new file mode 100644
index 0000000000..66f818d9b8
--- /dev/null
+++ b/spring-cloud/spring-cloud-netflix-sidecar/sidecar-demo/src/test/java/com/baeldung/cloud/sidecar/SpringContextTest.java
@@ -0,0 +1,11 @@
+package com.baeldung.cloud.sidecar;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+public class SpringContextTest {
+ @Test
+ void contextLoads() {
+ }
+}