Skip to content

assu10/msa-springcloud

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

97 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

MSA using SpringCloud

Development Environment

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

Table of Contents

  • 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 ๋ฅผ ์ฐธ๊ณ 

Messaging with RabbitMQ
AMQP doc
JCE jar download

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 ํ•œ๋ฒˆ์— ๋ชจ๋‹ˆํ„ฐ๋ง)


Server Diagram

TO-DO...


How to run

-- ํ˜„์žฌ ํ”„๋กœ์ ํŠธ ๋ฐ”๋กœ ์‹คํ–‰ํ•˜๊ธฐ
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





star--v1 thanks!

Releases

No releases published

Packages

 
 
 

Contributors

Languages