분류 전체보기 793

Eureka Server 관련 ,@SpringBootTest 구동 실패

Eureka Client 의존 추가 시 @SpringBootTest 구동, -> 유레카 서버 안켜져있음! 이라는 메세지가 뜬다. properties 에 eureka.client.enabled=false 걸어서 꺼놓자. @SpringBootTest(properties = "eureka.client.enabled=false",webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) class PostRepositoryTest { private static final Logger LOGGER = LoggerFactory.getLogger(PostRepositoryTest.class); @Autowired private PostRepository postRepo..

Exception 2020.12.11

java.lang.IllegalStateException: Cannot call sendError() after the response has been committed

JPA 방향 맵핑 중 Response 보낼 때에 발생. N으로 맵핑되는 필드에 @JsonIgnore . implementation "com.fasterxml.jackson.core:jackson-databind" @Entity public class Account implements Serializable { @Id @GeneratedValue private Long id; private String username; @Transient private String password; private String email; @OneToMany(mappedBy = "account", fetch = FetchType.LAZY ,cascade = CascadeType.ALL) @JsonIgnore private ..

Exception 2020.12.11

java.lang.IllegalArgumentException: No converter found for return value of type

SpringBoot 사용시 ResponseEnitty 를 넘겨줄때 생겨났다. Getter 만들자.. public class Message implements Serializable { private String msg; public String getMsg() { return msg; } public Message(MessageBuilder builder) { this.msg = builder.msg; } public static MessageBuilder builder(){ return new MessageBuilder(); } public static class MessageBuilder { private String msg; private MessageBuilder() {} public Messag..

Exception 2020.12.09

Hystrix

MS 와 같은 분산환경에서는 에러가 발생하거나 실패할 시점이 다양하다. MSA 에서는 빠른 실패와 장애 적응, 회복력을 중점으로 바라보며 실패를 수용하는 태도를 보인다. 치명적인 부분은 장애 전파 시의 경우이며, 이는 대부분 의존성 발생 지점에서 나타나는 일이다. Hystrix 가 하는 일은 회로 차단기와 같다. 의존성이 발생하는 포인트를 분리하고, 장애 발생시 끊음으로서 장애 전파가 일어나지 않게한다. FallBack 기능으로 미리 정의된 값을 Return 시킨다. 특정 서비스나 REST API 호출 결과가 비정상일 경우, 장애 전이 방지를 위해 Zuul 같은 Gateway API , 각 서비스에 있는 Hystrix 에서 호출을 자동으로 차단합니다. 기능 장애 전파 방지 빠른 실패와 빠른 복구 실시간 ..

Cloud 2020.12.08

Feign

REST API 기반 Eureka client 서비스를 쉽게 호출하기 위해 구성 다른 Eureka Service 의 REST API 호출을 간단하게 진행 에러처리 간단 Eureka에 등록된 Service를 바로 사용함 Ribbon을 통한 LoadBalancing 가능 API Unit TEST 구현 용이 형태 필요의존 org.springframework.cloud:spring-cloud-starter-openfeign 리포지토리 url https://repo.spring.io/milestone springCloudVersion 에 변수 대입 의존 관리 : org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion} plugins { i..

Cloud 2020.12.08

Ribbon

MS 구성에서 서로 다른 서비스를 쉽게 호출할 수 있게 함. 기능 LoadBalancing 해당 Service 의 instance가 여럿 실행 중인 경우, Ribbon 의 LoadBalancing 기능을 사용함 LoadBalancer 의 구성요소 Rule : Round Robin 방식이 Default, Instance 마다 가중치를 줄 수도 있음 Ping : 서버 리스트의 서비스 상태를 주기적으로 확인 Server List : 정적으로 대상 서비스를 지정, Eureka 를 통해 동적으로도 지정 가능. Service Discovery 자체 Discovery 기능으로 Eureka Registry 에 등록된 서비스 탐색 가능 Eureka Server Registry 정보를 local에 Cache 한다. Fau..

Cloud 2020.12.08

Zuul

일체형이 아닌 마이크로 서비스 환경에서 많은 API 들이 연계되어 Client의 요청을 처리한다. 발생하는 이슈는 이와 같다. UI에서 여러가지 서비스를 직접 호출 Auto scaling 으로 host, port 동적변화 API 서비스 들이 각자 인증 CORS 이슈에 엮임 API 프로토콜이 일치하지 않을 수 있음 API 들이 언제든 합쳐지거나 쪼개질 수 있음. Zuul Filter, Zuul Routing Service 를 이용하면 해당 이슈들을 해결할 수 있게 된다. Zuul 은 API GateWay 또는 Edge Service 이다. Front End 로 부터 모든 Request 를 받아 내부 Ms 에게 전달하게 되어 똑같은 종단 점을 가지게 한다. CORS , 인증, 보안 등의 공통 설정은 Zuul..

Cloud 2020.12.07

Eureka

정의 Middle-tier load balancer 목적 로드밸런싱과 장애복구(failover)가 가능한 Middle-tier 서비스 환경을 구성 했을 때 클라이언트(API Gateway 또는 다른 서비스)에게 가용한 서비스 인스턴스들의 위치 정보를 동적으로 제공할 수 있어야 한다. 용어 Service Registration : 서비스가 자신을 Eureka 에 등록 Service Registry : 등록된 서비스 목록 , 서비스 위치정보로 갱신 Service Discovery : 클라이언트가 요청을 보내고자 하는 서비스를 Service Registry 에서 찾아오는 것 구성요소 Eureka Client : 서비스의 위치정보를 얻고자 Eureka Server에 질의하는 서비스 Eureka Service :..

Cloud 2020.12.07

Netflix Component 설명

Eureka Server 와 Java 기반 클라이언트 구성요소인 Eureka Client로 제공 됨 Eureka Client 에는 로드 밸런서 내장 Eureka 를 감싸는 로드밸런서는 트래픽,리소스,오류조건 과 같은 요소를 기반으로 로드밸런싱을 제공 클라우드의 본질적 문제인 포트 및 주소 동적할당으로 클라이언트가 호출할 서비스 주소를 알수가 없음 이를 해결하고 로드밸런싱을 하기위해서는 서비스 정보를 가진 Registry 가 필요했고 그 것이 Eureka 통신 Eureka Client 를 내장한 ApplicationService 와 Client 가 Eureka Service 에 등록을 요청 30 초 마다 HeartBeat 를 보냄 Eureka Client 의 등록정보, 갱신정보는 클러스터의 모든 유레카 노..

Cloud 2020.12.07