지난달에 클라우드 환경과 마이크로 서비스에 대해서 공부했으니,
이제 실습을 하려고 합니다.
#실습은 제이펍출판사의 [자바기반의 마이크로서비스 이해와 아키텍처 구축하기] 입니다.(출처-제이펍출판사: https://jpub.tistory.com/851 )
#실습내용
01.Ubuntu에서 apt-get으로 openjdk 설치하기. (기술참조: http://programmingskills.net/archives/702 )
02.우분투에 아파치 카프카 서비스 설치하기. (기술참조: https://jwon.org/install-kafka-on-ubuntu/ )
03.[Ubuntu 16.04 LTS] STS 설치하기. (기술참조: https://lime-it.tistory.com/30 )
04.[Ubuntu] 깃(Git) 설치하기. (기술참조: https://blog.danggun.net/4105 )
05.[lombok] eclipse(STS)에 lombok(롬복) 설치. (기술참조: https://countryxide.tistory.com/16 )
06.RESTful API 개발시 편리한 Chrome 웹플러그인 POSTMAN 설ㅊ. (기술참조: https://ithub.tistory.com/41 )
#실습결과(아래-윈도8.1, 버추얼박스6.0+확장팩, 우분투16.04)
- 롬복(Lombok) 이라는 자바 Get/Set 함수 자동생성툴(https://projectlombok.org/)이 STS 4.11버전에서 작동하지 않지 않습니다.
STS화면에서 get...()함수부분에 붉은 색으로 표시된 에러 부분(아래)
그래서, STS 3.8.3 을 설치하고(https://spring.io/tools3/sts/all) 롬복은 1.16.20 버전으로 조정 하였습니다. 그래서, 성공.(아래)
그리고, STS는 H2(구 HSQL) 메모리DB 를 기본으로 사용하기 때문에, 설치없이 바로 사용가능합니다.
접속 주소는 아래 화면에서 http://localhost:8080/console/ 로 접속 URI를 지정하였습니다. 크롬에서 접속결과(아래)
책의 실습으로 DB 테이블 생성을 크롬 플러그인 Postman으로 PUT형식으로 마이크로서비스 URI 를 호출한 화면 이후는 다음시간에 계속...
Ps. 자바 기반 마이크로 서비스에 사용되는 에코시스템 요약.(주,아래 모든 프로젝트는 메이븐이 아닌 글래들(Gradle)프로젝트 입니다.)
----- 마이크로 서비스간 메세지 발행과 구독 처리 담당 -----위 카프카 설치 방법대로 하면, 1,2번은 우분투 시작시 항상 자동 실행 됩니다.
1. 주키퍼 서버 실행(위에 카프카서버 설치시 포함됨).
2. 카프카 서버 실행(위에 카프카서버 설치정보 URL 참조).
------ 여기서 부터는 STS에서 실행 -----
3. 스프링부트 설정 서버 가동:STS프로젝트 git clone https://github.com/architectstory/msa-architecture-config-server.git
- 스프링Boot 환경설정정보(dev, prod 환경 구분시 편리하게 수정 후 배포가능).
4. 유레카 서버 가동:STS프로젝트 git clone https://github.com/architectstory/msa-architecture-eureka-server.git
- 마이크로 서비스 등록 및 감지.
5. 줄서버 가동:STS프로젝트 git clone https://github.com/architectstory/msa-architecture-zuul-server.git
- 서비스라우팅 기능담당(클러스터링:부하분산기능등).
6. 터빈서버 가동:STS프로젝트 git clone https://github.com/architectstory/msa-architecture-turbine-server.git
- 여러 마이크로서비스의 스트림 메세지 수집(dB).
7. 히스트릭스서버 가동:STS프로젝트 git clone https://github.com/architectstory/msa-architecture-hystrix-dashboard.git
- 위 터빈서버에서 수집한 스트림 정보를 시각화(웹페이지) 제공.
====== 여기까지가 에코시스템이라고 불림. 이후 부터가 진짜 스프링 Java프로젝트임. =========
8. 스프링Boot실행: STS프로젝트 git clone https://github.com/architectstory/msa-book.git
1) root프로젝트명: msa-book (루트 글래들 프로젝트를 임포트 하면, 아래 3개의 서브프로젝트가 포함되어서 자동으로 나타납니다.
실행은 루트가 아닌 아래 서브 프로젝트별로 STS에서 Run > Spring Boot Run 합니다. 따라서 실행과 배포가 모두 고유의 URI포트를 가집니다.
2) 서브프로젝트명1: msa-service-coffee-member (커피점회원확인용 서비스-회원DB조회).
3) 서브프로젝트명2: msa-service-coffee-order (커피주문용 서비스-회원조회후 주문내역입력,주문 메세지발행).
4) 서브프로젝트명3: msa-service-coffee-status (커피주문상태용 서비스-주문 메세지구독,제조상태입력,조회).
====== 전체 프로젝트는 9개나 됩니다.(아래그램확인) ======
롬복(Lombok)라이브러리를 사용하면, 아래 CVO(Client[멤버] Value Object)파일에서는
클래스 멤버변수만 선언해도, get...()함수가 자동으로 인식됩니다(코드상으로 보이지 않습니다).
보통 예전 자바 프로젝트에서는 클래스멤버변수를 만들때, VO(Value Object)파일로 객체를 만들었습니다. 이러한 방식을 편리하게 확장했다고 생각하시면 됩니다(책에서 사용된 용어:DVO-Data[모델] Value Object, RVO-Rest [API] Value Object).
에코시스템 빼고, 실제 프로그래머가 비니지스를 구현하는 것은 msa-book 루트스프링부트프로젝트에 포함된 아래 3가지입니다.
1. msa-service-coffee-member : 회원확인 서비스 프로젝트
2. msa-service-coffee-order : 커피 주문 서비스 프로젝트
3. msa-service-coffee-status : 주문 처리 상태 확인 서비스 프로젝트
다음 페이지에서는 패키지 구조를 확인 해 보겠습니다.
데브옵스2.0툴킷 실습_1 (0) | 2019.05.06 |
---|---|
자바기반 마이크로 서비스 패키지 구조_스프링클라우드 실습용 (0) | 2019.05.03 |
4월은 교육의 달 (0) | 2019.05.01 |
클라우드 테스트구성을 위한 PC_메모리 (0) | 2019.04.27 |
우분투 후기(Apache2+PHP5서버 설치 및 80포트홈폴더설정과 Sendmail서버설치) (0) | 2016.04.17 |
댓글 영역