※커피주문 마이크로서비스 구현해보기
-
RESTFull방식
-
큐를 이용해서(메시지를 전달)
넷플릭스는 MSA지만 모놀리식이라고 느껴진다.
devOps팀이 권한을 가지고 설계부터 구현 운영까지 도맡는다.
http://www.yes24.com/Product/Goods/64988508
-책참고
--커피주문 프로젝트 구성
각각 독립된 프로젝트 3개 - 서버주소도 각기 다름
--커피주문 마이크로서비스 패키지 구성
-
서비스의 개발이 기술적인 제약사항에 영향을 받지 않고 도메인에 집중해서 설계될 수 있게 도메인 영역과 기술 영역을 구분한다.
-
도메인 영역에서 정의하고 구현된 업무 로직을 기술 영역인 스프링부트 영역해서 실해하는 관계이다.
inMemory사용 -> 컴퓨터가 켜져있는 동안에만 데이터가 남아있는 DB
--큐잉 시스템 특징
-
마이크로서비스 간에 데이터 연계가 필요할 경우 이를 해결하기 위해 큐잉 시스템인 카프카 시스템을 설치
-
마이크로서비스 간 메시지를 발행하고 구독할 수 있는 매커니즘을 제공
-
마이크로서비스 간 직접적인 호출을 대신할 수 있는 느슨한 관계를 유지
-
카프카 서버를 설치하면 주키퍼(Zookeeper)가 포함되어 있다.
-
주키퍼를 기동한 후에 카프카를 기동한다.
--큐잉 시스템 구성
--스프링 클라우드 기반 마이크로서비스 아키텍처 구성요소
✔설정 서버
✔유레카 서버 : 마이크로서비스를 등록해주는 역할
✔줄 서버 : 라우팅 기능을 수행, url 주소 줄 서버로 접속
✔터빈 서버
✔히스트릭스 대시보드 서버
※환경설정
SpringToolSuite4 스프링부트 실행
https://github.com/architectstory
깃허브에서 소스가져오기(clone repository)
->git의 서버하나씩 -> 프로젝트 import
javaEE -> configure - add gradle nature
카프카 다운
https://kafka.apache.org/downloads
카프카 실행(cd C:\Users\mhee4\Desktop\MSA\kafka_2.12-2.3.0\bin\windows)
zookeeper-server-start.bat ../../config/zookeeper.properties
kafka-server-start.bat ../../config/server.properties
{"id":"","orderNumber":"1","coffeeName":"espresso","coffeeCount":"2","customerName":"kevin"}
http://localhost:7070/hystrix.stream
http://localhost:9999/turbine.stream
member:8081
order:8079
stataus:8082
eureka:9091
zuul:9090 - 서버테스트는 줄서버인 9090으로
server:
port: 9090
coffeeOrder: #routing id
path: /coffeeOrder/** #zuul context root
serviceId: msa-service-coffee-order #spring application name
coffeeMember:
path: /coffeeMember/**
serviceId: msa-service-coffee-member
coffeeStatus:
path: /coffeeStatus/**
serviceId: msa-service-coffee-status
--json으로 전달하고 싶음 -> requestBody로 데이터 전달함
**order
-Rest
orderRestController -kafka로 전달
-messageq
kafkaProducerConfig : 카프카서버설정
KafkaProduce
**status
-messageq
KafkaConsumerConfig : 카프카서버설정
KafkaConsumer
**실행순서(포트번호 먼저확인)
-
confit-server ->run as Spring Boot App
-
eureka-server
-
zuul-server
-
turbine-server
-
dashboard-server
-
coffee-member
-
coffee-order
-
coffee-status
--데이터가 잘 들어가나 PUT방식으로 확인(구글크롬앱 rest client검색 후 YARC설치)
(회원테이블 및 데이터 생성)
http://localhost9090/createMemberTable(PUT)
http://localhost9090/insertMemberData(PUT)
http://localhost8081/console창에서
jdbc:h2:mom:testdb입력 후 접속
select * from member
(주문 처리 상태 테이블 생성)
http://localhost9090/coffeeStatus/createStatusTable(PUT)
select * from coffee_order_status확인
(커피주문)
http://localhost:9090/coffeeOrder/coffeeOrder(POST)
{"id":"","orderNumber":"1","coffeeName":"espresso","coffeeCount":"2","customerName":"kevin"}
select * from order_entityjpo확인
(주문정보구독)
select * from coffee_order_status확인
'FULLSTACK > MSA' 카테고리의 다른 글
12/9 MSA 1차시 (0) | 2020.12.09 |
---|