스프링개발자/301 - 아키텍처
-
6. 그레이들 멀티프로젝트 - 데이터베이스 셋업 및 활용(2) - Functional Interface, dynamic bean selector스프링개발자/301 - 아키텍처 2020. 10. 7. 05:51
[배경] 세 가지 탈것의 종류가 있다; 자동차, 트럭, 자전거 각각의 고객은 이 세가지의 탈 것 중에 하나를 고를 수 있다. 자동차를 고른 고객은 car instance가 생성되어 프로그램에 사용되게 되고 트럭을 고른 고객은 truck instance가 생성되어 프로그램이 진행된다. 각각의 탈 것 instance에 따라서 속도, 무게, 부피 등등을 다르게 할 수 있다. 이렇게 하면, code base change없이 데이터베이스 값 변경만으로 dynamic한 request call이 가능하다. 1. 모델 클래스 준비 2. 탈것들의 Bean Config 만들기 3. 프로그램 시작시에 설정 불러오기 4. 테스트 1. 모델 클래스 준비 자동차, 트럭, 자전거의 세 가지 탈것 모두 공통점이 있으니 탈 것이라는 ..
-
5. 그레이들 멀티프로젝트 - 데이터베이스 셋업 및 활용(1) - Entity, CollectionTable, 데이터베이스값 불러오기스프링개발자/301 - 아키텍처 2020. 10. 5. 12:20
[배경] 도커로 데이터베이스를 구동한 후, 데이터 값을 불러와서 어플리케이션에서 사용해보자. 숫자, 문자 값을 불러와서 활용 할 수 있다. 이외에도, 데이터 값에따라 runtime의 특정 bean의 타입이 달라지는 configurable bean또한 만들어보자. 1. 도커 셋업 및 인텔리제이 연동 이전 글을 참고하자. docker images docker ps docker run -d -p 3306:3306 -e MYSQL_ROOT_PASSWORD=password --name mysql_latest mysql docker ps 다운받은 도커 이미지를 확인하고, 현재 구동중인 container가 있는지 확인한다. 다운 받은 이미지중의 하나(IMAGE ID)를 선택해서 이미지를 실행시킨다. 실행되었는지 확인..
-
4. 그레이들 멀티프로젝트 - 유레카서버와 페인클라이언트 Eureka FeignClient스프링개발자/301 - 아키텍처 2020. 8. 31. 03:31
[배경] 여러 어플리케이션간의 호출을 하는 방법은 여러가지가 있다. 가장 기본은 RestTemplate를 이용하는 방법이지만, 단점이 있다. 그에 해결책으로 쓸 수 있는 Eureka Server와 FeignClient의 조합에 대해 알아보자. 다음은 유레카 서버에 대한 설명 Eureka Server is an application that holds the information about all client-service applications. Every Micro service will register into the Eureka server and Eureka server knows all the client applications running on each port and IP address. ..
-
3. 그레이들 멀티프로젝트 - RestTemplate스프링개발자/301 - 아키텍처 2020. 8. 30. 04:29
[배경] 앞서 구현한 두개의 어플리케이션 간의 호출이 일어나게 하자. 1. RestController 만들기 weather-application내에 비가 오는 확율을 계산해주는 ForecastController를 만든다. package com.example.monorepo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; @RestController @RequestMapping(value = "/weather") public class ForecastController { @Autowired ForecastSer..
-
2. 그레이들 멀티프로젝트 - 공통자원 활용(compile project)스프링개발자/301 - 아키텍처 2020. 8. 30. 04:04
[배경] 지난시간에 mono repo를 셋업했다. 이번에는 그 장점을 살려서 여러 application의 공유자원이 있는 resources 모듈을 만들어본다. 1. 부모Module과 자식Module Intellij에서 우리의 root directory인 monorepo를 우클릭하여 자바 모쥴을 만든다. spring-applications라고 이름지어주고, 지난 시간에 만든 어플리케이션 2개를 하위경로에 넣어둔다. spring-resources라는 모듈을 만들고, shared-entities라는 sub모듈을 하나 만든다. 이후에 root경로에 있는 settings.gradle을 다음과 같이 바꾼다 rootProject.name = 'monorepo' include 'spring-resources:share..
-
1. 그레이들 멀티프로젝트 - 셋업하기스프링개발자/301 - 아키텍처 2020. 8. 30. 02:11
[배경] 반복되는 코드 줄이기 쉽다. 여러 어플리케이션을 하나의 git repo에서 관리하기 쉽다. 참고: https://docs.gradle.org/current/userguide/multi_project_builds.html 1. Intellij IDEA 프로젝트 생성 Spring Initializr를 쓴다. 특별한 것은 없고 대략의 설정은 다음과 같다; group: com.example Type: Gradle Config (Generate a Gradle build file.) Artifact: monorepo Packaging: Jar 프로젝트를 처음 설정하면 나오는 다음의 tip들을 yes 한다; configure automatically auto import 다음의 오류가 떴다. 나의 현재 g..
-
스프링개발자 301 - 프로젝트 아키텍처스프링개발자/301 - 아키텍처 2020. 8. 13. 12:53
크게 다음의 주제들을 다룰 예정 1) MonoRepo with multiple microservice applications 하나의 git repo인데, 여러 port를 가진 app을 쓴다 app간의 dependency가 zero이다 2) Shared Components app간의 dependency를 관리하는 component가 따로 있다 3) RestTemplate to communicate between apps app간의 communicate하는 가장 간단한 방법 4) EurekaServerApplication 5) FeignClient 6) Remote Database 7) OAuth 2.0 8) PCF Service Registry 9) PCF Config Server