Windows 10 JDK 11.0.6 SpringBoot 2.3.2.RELEASE Maven 3.6.3 Git 2.22.0.windows.1 intellij
Spring Cloud Hoxton.SR6 ์์ SR8 ๋ก ์
๊ทธ๋ ์ด๋ RabbitMQ 3.8.6
Erlang/OTP 23.0 kafka_2.13-2.6.0
Config Server (ํ๊ฒฝ์ค์ ์ธ๋ถํ)Feign (REST Client & Circuit Breaker)Eureka (Service Registry & Discovery)Zuul (Proxy & API Gateway)OAuth2, JWT (Security)Spring Cloud Stream (EDA, ๋น๋๊ธฐ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์ฑ)- Sleath, Papertrail, Zipkin (Logging Tracker)
- Hystrix + Turbine (Circuit Breaker & Dashboard, ์ฌ๋ฌ ๋์ WAS ํ๋ฒ์ ๋ชจ๋ํฐ๋ง)
- Config Server (ํ๊ฒฝ์ค์ ์ธ๋ถํ)
์์ธํ ์ค๋ช
์ Spring Cloud - Spring Cloud Config Server ๋ฅผ ์ฐธ๊ณ
HOW TO RUN
-- rabbitMQ ์๋ฒ ์คํ
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat start
-- rabbitMQ ๊ด๋ฆฌ์ UI ํ์ธ
http://localhost:15672/
-- ํ์ฌ ํ๋ก์ ํธ ์คํ
mvn spring-boot:run
-- ์ปจํผ์ค ์๋ฒ ๊ตฌ๋ ํ์ธ
http://localhost:8889/actuator
-- ์ปจํผ๊ทธ ์๋ฒ JSON Payload ํ์ธ
http://localhost:8889/member-service/default/
http://localhost:8889/member-service/dev
-- ํ์ฌ ์คํ์ค์ธ ํ๊ฒฝ์ ๋ณด ํ์ธ
http://localhost:8090/actuator/env
-- port ์ฌ์ค์ ํ์ฌ ์๋น์ค ๋์ฐ๊ธฐ
C:\> mvn clean install
C:\configserver\target>java -jar configserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8090 -jar member-service-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8091 -jar member-service-0.0.1-SNAPSHOT.jar
-- actuator bus ์ข
๋จ์ ํธ์ถํ์ฌ ์ค์ ์ ๋ณด ๋ณ๊ฒฝ ์ ํ
POST http://localhost:8090/actuator/bus-refresh
-- ๋ณ๊ฒฝ๋ ์ค์ ์ ๋ณด ํ์ธ
GET http://localhost:8090/member/name?nick=JU
GET http://localhost:8091/member/name?nick=JU
-- ์ปจํผ๊ทธ ์๋ฒ ์ํธํ ํค๋ก ์ํธํ/๋ณตํธํ๋ ํจ์ค์๋ ํ์ธ
POST http://localhost:8889/encrypt
POST http://localhost:8889/decrypt
- Feign (REST Client & Circuit Breaker)
์์ธํ ์ค๋ช
์ Spring Cloud - Spring Cloud Feign ๋ฅผ ์ฐธ๊ณ
- Eureka (Service Registry & Discovery)
์์ธํ ์ค๋ช
์ Spring Cloud - Spring Cloud Eureka์
Spring Cloud - Spring Cloud Eureka (์์ธ ์ค์ ํธ)๋ฅผ ์ฐธ๊ณ
HOW TO RUN
-- rabbitMQ ์๋ฒ ์คํ
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat start
-- port ์ฌ์ค์ ํ์ฌ ์๋น์ค ๋์ฐ๊ธฐ
C:\> mvn clean install
C:\configserver\target>java -jar configserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8090 -jar member-service-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8091 -jar member-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8070 -jar event-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8071 -jar event-service-0.0.1-SNAPSHOT.jar
-- actuator bus ์ข
๋จ์ ํธ์ถํ์ฌ ์ค์ ์ ๋ณด ๋ณ๊ฒฝ ์ ํ
POST http://localhost:8090/actuator/bus-refresh
-- ๋ณ๊ฒฝ๋ ์ค์ ์ ๋ณด ํ์ธ
GET http://localhost:8090/member/name?nick=JU
GET http://localhost:8071/event/name?nick=JU
-- ์ ๋ ์นด ์๋ฒ ๊ตฌ์ถ ํ ์ฌ๊ธฐ๋
C:\> mvn clean install
C:\configserver\target>java -jar configserver-0.0.1-SNAPSHOT.jar
C:\eurekaserver\target>java -jar eurekaserver-0.0.1-SNAPSHOT.jar
-- ์ ๋ ์นด ์ฝ์ ํ์ธ
http://localhost:8761/
-- ์ ๋ ์นด ์๋น์ค ๋ฑ๋ก ํ ์ฌ๊ธฐ๋
C:\eurekaserver\target>java -jar eurekaserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -jar member-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8071 -jar event-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java -Dserver.port=8070 -jar event-service-0.0.1-SNAPSHOT.jar
-- ์ ๋ ์นด ์๋ฒ์ ๋ฑ๋ก๋ ๋ ์ง์คํธ๋ฆฌ ๋ด์ฉ ํ์ธ
http://localhost:8761/eureka/apps/
-- ํน์ ์๋น์ค ๋ ์ง์คํธ๋ฆฌ ํ์ธ
http://localhost:8761/eureka/apps/event-service
-- RestTemplate ์ ์ฉ ํ API ํธ์ถ
http://localhost:8090/member/gift/flower
-- Feign ์ ์ฉ ํ API ํธ์ถ
C:\> mvn clean install
C:\configserver>java configserver-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8090 -jar member-service-0.0.1-SNAPSHOT.jar
C:\member-service\target>java -Dserver.port=8091 -jar member-service-0.0.1-SNAPSHOT.jar
C:\event-service\target>java event-service-0.0.1-SNAPSHOT.jar
GET http://localhost:8070/event/member/hyori- Zuul (Proxy & API Gateway)
์์ธํ ์ค๋ช
์ Spring Cloud - Netflix Zuul(1/2)์
Spring Cloud - Netflix Zuul(2/2),
Spring Cloud - Netflix Zuul(Ribbon) Retry๋ฅผ ์ฐธ๊ณ
HOW TO RUN
-- ์ ๋ ์นด ์ฝ์ ์ ์ํ์ฌ ์ฃผ์ธ ๋ฑ๋ก๋์๋์ง ํ์ธ
http://localhost:8761/
-- ์ฃผ์ธ์ด ์ ๋ด๋์ง ํ์ธ
http://localhost:5555/actuator/env
-- ์ฃผ์ธ์ด ๋ผ์ฐํ
ํ๊ณ ์๋ ๊ฒฝ๋ก ํ์ธ
http://localhost:5555/actuator/routes
-- ์ฃผ์ธ์ ํตํด ์ด๋ฒคํธ ์๋น์ค์ REST API ํธ์ถ (feign)
http://localhost:5555/event-service/event/member/assu
-- ์ปจํผ๊ทธ ์ ์ฅ์ ์ค์ ๊ฐ ๋ณ๊ฒฝ ํ ๋ด์ฉ ์ ํ
POST http://localhost:5555/actuator/bus-refresh
-- ์ฃผ์ธ ์๋ ๋งคํ๋ ๊ฒฝ๋ก๋ก ๋ผ์ฐํ
๋๋์ง ํ์ธ
http://localhost:5555/evt/event/member/hyori
-- `api` ํ๋ฆฌํฝ์ค ๋ถ์ธ ํ ๋ผ์ฐํ
ํ์ธ
http://localhost:5555/api/evt/event/member/hyori
-- ์ฃผ์ธ์ ํตํด ํ์ ์๋น์ค์ REST API ํธ์ถ (RestTemplate)
http://localhost:5555/api/mb/member/gift/flower
-- ์ฌ์ /์ฌํ ํํฐ ๋์ ํ์ธ (์๊ด๊ด๊ณ ID ์์ฑ ๋ฐ ํ์ ์๋น์ค์ ์ ํ/์๋ต ํค๋์ ์๊ด๊ด๊ณ ID ์ฝ์
)
http://localhost:5555/api/mb/member/name/hyori
- OAuth2, JWT (Security)
์์ธํ ์ค๋ช
์ Spring Cloud - OAuth2, Security(1/2) ์
Spring Cloud - OAuth2, Security(2/2)๋ฅผ ์ฐธ๊ณ
HOW TO RUN
-- ์ก์ธ์ค ํ ํฐ ํ๋
[POST] http://localhost:8901/auth/oauth/token
-- ์ก์ธ์ค ํ ํฐ์ผ๋ก ์ฌ์ฉ์ ์ ๋ณด ์กฐํ
[GET] http://localhost:8901/auth/user
-- OAuth2 ๋ก ํ์ ์๋น์ค ๋ณดํธ ํ API ํธ์ถ
[GET] http://localhost:8090/member/name/rinda
-- ๊ถํ ์๋ ์ฌ์ฉ์(assuAdmin) ์ ์ก์ธ์ค ํ ํฐ๊ณผ ํจ๊ป PUT ๋ฉ์๋ API ํธ์ถ
[PUT] http://localhost:8090/member/rinda
-- oauth2 ์ ํ (์ด๋ฒคํธ ์๋น์ค์์ ํ์์๋น์ค ํธ์ถ)
[GET] http://localhost:5555/api/evt/event/userInfo/rinda
-- JWT ์ธ์ฆ ์๋ฒ ์ค์ ํ ์ก์ธ์ค ํ ํฐ ํ๋
[POST] http://localhost:8901/auth/oauth/token
-- JWT ํ ํฐ ํ๋ ํ ์ธ์ฆ ํ์ธ
[GET] http://localhost:8090/member/gift/manok- Spring Cloud Stream (EDA, ๋น๋๊ธฐ ๋ง์ดํฌ๋ก์๋น์ค ๊ตฌ์ฑ)
์์ธํ ์ค๋ช ์ Spring Cloud Stream, ๋ถ์ฐ ์บ์ฑ (1/2) ์ Spring Cloud Stream, ๋ถ์ฐ ์บ์ฑ (2/2) ๋ฅผ ์ฐธ๊ณ
HOW TO RUN
-- ์ฃผํคํผ ์คํ
C:\kafka_2.13-2.6.0\bin\windows>.\zookeeper-server-start.bat ..\..\config\zookeeper.properties
-- ์นดํ์นด ์คํ
C:\kafka_2.13-2.6.0\bin\windows>.\kafka-server-start.bat ..\..\config\server.properties
-- ์นดํ์นด ํ ํฝ ๋ฆฌ์คํธ ์กฐํ
C:\kafka_2.13-2.6.0\bin\windows>.\kafka-topics.bat --list --zookeeper localhost:2181
__consumer_offsets
mbChangeTopic
springCloudBus
-- ๋ฉ์์ง ๋ฐํ/์์ ํ์ธ
[POST] http://localhost:8090/member/assu
-- ๋ ๋์ค ์ค์นํ์ธ
C:\Users\ju>netstat -an|findstr 6379
TCP 127.0.0.1:6379 0.0.0.0:0 LISTENING
C:\Users\ju>redis-cli
127.0.0.1:6379> ping
PONG
127.0.0.1:6379> set key value
OK
127.0.0.1:6379> get key
"value"
127.0.0.1:6379>
-- ๋ ๋์ค ์คํ
redis-server.bat ์คํ
-- ๋ชจ๋ ํค ํ์ธ
127.0.0.1:6379> keys *
1) "member"
-- key-value ํ์ธ (get ์ String ๋ง ๋ค๋ฃจ๋ฏ๋ก ์ฌ๊ธฐ์ ์๋ฌ๋ก ํ์)
127.0.0.1:6379> get member
(error) WRONGTYPE Operation against a key holding the wrong kind of value
-- ๋ชจ๋ ํค ์ญ์
127.0.0.1:6379> flushall
OK
-- ๋ ๋์ค ์บ์ฑ ๋ฐ์ดํฐ ๋ฌดํจํ
[GET] http://localhost:8070/event/1234
[DELETE] http://localhost:8090/member/userInfo/1234
[GET] http://localhost:8070/event/1234- Sleath, Papertrail, Zipkin (Logging Tracker)
- Hystrix + Turbine (Circuit Breaker & Dashboard, ์ฌ๋ฌ ๋์ WAS ํ๋ฒ์ ๋ชจ๋ํฐ๋ง)
TO-DO...
-- ํ์ฌ ํ๋ก์ ํธ ๋ฐ๋ก ์คํํ๊ธฐ
mvn spring-boot:run
-- parent-pom ์ด ์์นํ ๋๋ ํฐ๋ฆฌ์์ ์๋ ๋ฉ์ด๋ธ pom.xml ํ์ผ์ ์คํ
mvn clean package
-- rabbitMQ ํ๋ฌ๊ทธ์ธ ํ์ฑํ
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-plugins enable rabbitmq_management
-- rabbitMQ ์๋น์ค ์ค์ง
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat stop
-- rabbitMQ ์๋น์ค ์ค์น
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat install
-- rabbitMQ ์๋น์ค ์ฌ๊ธฐ๋
C:\rabbitmq_server-3.8.6\sbin>rabbitmq-service.bat start
-- ๊ฐ๊ฐ ํฐ๋ฏธ๋ ์ฐฝ์์ ์๋น์ค ๋์ฐ๊ธฐ
java -jar /target/fares-1.0.jar
-- ์๋น์ค ํ์ธ
http://localhost:8080/actuator/
http://localhost:8888/licensingservice/default
