본문 바로가기

전체 글

(55)
개별 마이크로 서비스 Custom Exception 처리 1.개별 마이크로서비스 내에 ErrorDecoder를 구현한 구현체인 클래스 생성 methodKey는 에러를 유발한 메서드의 이름이 저장되는 파라미터 response는 응답 정보를 담고있는 파라미터 public class FeignError implements ErrorDecoder { @Override public Exception decode(String methodKey, Response response) { return null; } } switch~case문을 이용해 먼저 에러코드를 지정해주고 특정 에러코드 내에서는 조건문을 이용해, 어떤 메서드를 통해 에러가 유발되는지 적어주고 마지막으로 발생시킬 예외를 차레로 작성합니다. switch(response.status()) { case 404: i..
개별 마이크로서비스 통신2 요구사항: 관리자 입장에서 해당 상품의 주문내역을 조회하고 싶은 상황! 0단계. 요청하는 쪽:item-service , 요청받는 쪽:order-service // build.gradle 의존성 추가 implementation 'org.springframework.cloud:spring-cloud-starter-openfeign' package com.example.itemservice; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDisc..
개별 마이크로 서비스 간 통신 1. 사전 설정 및 이론 fegin을 사용하도록 요청을 넣는 입장의 마이크로 서비스 애플리케이션 측에 의존성 부여 Eureka를 지나서 fegin 요청을 넣음으로 엔트포인트가 아닌 서비스명으로 넣을 수 있었음 통신용 인터페이스에서 호출 정보를 분리해서 저정하기 때문에 Fegin관련 특정 로직을 실행하는 서비스 클래스 내부에 인터페이스와 구현체를 생성하고 해당 인터페이스 내부의 요청 메서드를 호출하면, 타 마이크로 서비스에 그대로 요청이 전달됨 // 인터페이스 자료형, 인터페이스명, 생성자만 만들면 알아서 구현체를 만들어서 대입함 @Service public class Service { private final Repository repository; private final 인터페이스명 인터페이스명; p..
[스프링부트]query did not return a unique result 이슈 👉 org.springframework.dao.IncorrectResultSizeDataAccessException: query did not return a unique result: 2 jakarta.persistence.NonUniqueResultException: query did not return a unique result: 2 이것은 데이터베이스 쿼리가 예상대로 결과를 반환하지 않고, 유일한 결과가 아닌 둘 이상의 결과를 반환했음을 나타냅니다. 에러 👉 이 오류 메시지는 Spring Data JPA와 Hibernate를 사용하여 데이터베이스 쿼리를 실행하는 과정에서 발생한 예외 메시지입니다. 단일 결과가 예상되는 쿼리에서 둘 이상의 결과가 반환된 경우: 데이터베이스에서 특정 쿼리를 실..
도커 컨테이너를 활용한 서드파티 설치, 가동하기 0. 서드파티란 프로그래밍에서의 서드파티란 프로그래밍을 도와주는 플러그인이나 라이브러리, 프레임워크 등을 만드는 회사를 뜻합니다. 즉, 프로그래밍개발과 개발자 사이에 플러그인,라이브러리,프레임워크는 공통적으로 중간다리 역할로 개발하는 것을 도와주는 서드파티라고 합니다. 1. 도커 이미지, 도커 컨테이너 확인 명령어 도커 이미지 확인 $ docker images 도커 컨테이너 확인 $ docker ps $ docker ps -a 2. 도커 서버 이미지 Redis $ docker pull redis #redis 이미지를 가져옴 $ docker run --name sooredis -d -p 6379:6379 redis # -d는 detach모드 3. 도커 서버 이미지 RabbitMQ https://hub.do..
이미지와 컨테이너 관계성을 살펴보고 포트바인딩 확인하기 1. 도커 컨테이너 라이프사이클 외부에서 가져온 것, 이미 만들어진 것은 Run 생성하는 것은 create 만든 것을 실행, 만들어진 것을 실행하던 실행중인 상태를 Running 상태라고 하고, Running상태는 배포 상태이다. Running에서 Pausede로 일시정지, 재실행으로 컨테이너 자체는 재시작을 하지 않고, 일시적으로 멈추는 상태이다. Stopped는 컨테이너를 중단한 것으로 이때는 재시작이 필요합니다. 도커 역시도 메모리에서 작동하기 때문에 일시정지 Paused로 메모리를 잠시동안 확보하는 경우와 Stopped으로 메모리를 전부 내려버리는 것으로 시작할 때 시작시간이 오래 걸리지만 큰 메모리 확보가 가능합니다. 따라서, Paused상태에서는 삭제 불가능, Stopped 상태에서는 삭제 가..
도커 이미지, 도커 컨테이너란 0. 도커 도커는 운영체제, 개발환경 판 깃허브이다. 깃허브는 작성한 프로그램 코드를 올리고, 클론으로 공유하는데 도커허브에서 운영체제나 개발환경을 세팅하여 올리면 컨테이너 단위로 공유가 가능하다. 1. 도커 이미지 일종의 설치용 파일 포지셔닝으로, 도커 컨테이너를 생성하기 위한 바이너리 파일입니다. 2. 도커 컨테이너 도커 컨테이너란 도커 이미지를 통해 실행되는 하나의 프로세스 Docker File은 빌드 이전 상태인 소스파일로 소스파일을 그대로 배포하지 않는다. Docker Image는 exe 상태의 설치 파일과 유사한 상태이다. Docker Container 내부에서 OS 없이 Docker File이 Run으로 실행됩니다. 원본 저장소에 있는 Docker File로부터 Docker Image를 내려..
컨테이너 기술의 역사 전통방식의 배포 -> 가상화 배포-> 컨테이너 배포-> 쿠버네티스 배포 전통 방식의 배포 전통 방식의 배포형태는 물리적 컴퓨터에 애플리케이션을 배포하는 형태 이 방식은 하나의 하드웨어에 여러 애플리케이션이 관리되는 경우 앱간의 라이브러리 의존성 문제가 발생 예를 들면 게시판 앱에서 스프링 4버전을 사용하고 채팅 앱에서 스프링 5버전을 사용할 경우 하나의 컴퓨터 안에서 라이브러리가 충돌하는 문제가 발생할 수 있음 가상화 배포 내 컴퓨터 내에서 가상 컴퓨터를 여러개 설치하는 개념으로 내부에 있는 가상 머신 하나하나가 격리되고 독립된 컴퓨터 하드웨어 위에 Host OS를 설치하고 가상머신들을 관리하는 Hypervisor라는 컴포넌트를 통해 가상화된 Guest OS를 통제하는 형태 하나의 가상머신 안에 하나의 ..