본문 바로가기
반응형

분류 전체보기296

AWS ALB 도메인(호스트) 기반 라우팅 규칙 설정 AWS ALB사용 시 하나의 ALB로 여러 개의 도메인(서브도메인)을 처리해야 할 경우가 있다. 이럴 때 ALB의 Rule(규칙)에서 설정하는 방법을 알아본다. 먼저 ALB의 타켓이 되는 대상그룹과 ALB를 생성해둔다. 그리고 해당 ALB의 Listeners 탭에서 설정을 원하는 포트를 클릭한다. 다음 화면에서 ALB생성 시 기본으로 설정한 규칙이 나오는데 여기서 Rules탭의 Manage rules버튼을 클릭한다. 아래와 같이 '+'탭을 클릭하면 규칙을 정의하고 추가할 수 있다. IF에서는 호스트 헤더의 원하는 도메인을 입력하고, THEN에는 라우팅할 대상 그룹을 선택한다. 규칙을 저장하고 도메인으로 테스트 하면 완료된다. 기존의 규칙들을 수정 및 삭제는 '+' 옆의 편집 및 '-' 탭을 클릭하면 된다. 2023. 6. 7.
SpringBoot3(SpringBatch5) 동일(or 이전) 파라미터 재사용 해결 SpringBatch에서 파라미터 처리에 대한 부분이 지속적으로 문제가 있는것 같다. 최근에 SpringBoot3에 SpringBatch5를 적용하면서 파라미터가 있으면 파라미터 값을 적용하고 파라미터가 없는 경우 소스 내부의 디폴트 값을 적용하는 로직을 처리하는 중에 문제를 발견하고 해결한 방법을 정리해본다. 먼저 동일한 파라미터라도 배치가 실행되도록 job에 RunIdIncrementer()를 적용한 상황이었다. public Job job() { return jobBuilderFactory.get("myJob") .incrementer(new RunIdIncrementer()) .start(step(null)) .build(); } 그리고 파라미터를 변경하면서 테스트를 했을 때 잘 동작하는 것을 확인.. 2023. 6. 5.
SpringBoot AWS S3 파일 업로드 SpringBoot 백엔드에서 AWS S3로 파일 업로드 하는 방법을 알아본다. 1. AWS 설정(S3버킷 생성 및 IAM 설정) 테스트용 S3 버킷을 간단히 생성한다. IAM에서 S3 접근을 위한 계정 및 AccessKey 설정을 한다. 먼저 계정의 권한은 AmazonS3FullAccess를 부여한다. 다음으로 S3업로드 시 사용할 AccessKey를 생성한다. 2. SpringBoot 어플리케이션 설정 'spring-cloud-starter-aws' gradle 의존성을 추가한다. implementation org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE application.yml에서 S3관련 설정 정보를 추가한다. cloud: a.. 2023. 6. 4.
SpringBoot OpenFeign(FeignClient) 사용하기 Spring5.0 버전부터 그동안 Spring에서 HTTP Client로 많이 사용되면 RestTemplate이 유지 모드로 변경이 되었다고 한다. 이에 WebClient 사용을 Spring에서 권고하고 있지만 대안으로 간단하게 적용 가능한 OpenFeign 사용법을 알아본다. OpenFeign은 Spring Cloud 처음에는 Spring Cloud Netflix Feign 였으나 Spring Cloud OpenFeign에 통합되면서 SpringMVC 어노테이션 및 HttpMessageConverters를 사용할 수 있게 되었다. OpenFeign은 HTTP API 클라이언트를 단순화하는 것을 목표로 하고 있고 실제 RestTemplate와 비교해봤을 때도 사용하기 간편하다. 먼저 OpenFeign G.. 2023. 5. 31.
Docker 리소스 일괄 삭제(docker system prune)-미사용 Docker 리소스 모두 삭제 Docker를 사용하다보면 한번씩 사용되고 미사용되는 여러 Container, Image, Network, Volume 등 리소스들이 계속 쌓이게 되고, 이는 호스트 환경의 성능에 안좋은 영향을 미치게 된다. 개별적인 리소스들을 정리하는 방법들이 있지만 docker system prune 명령을 사용하여 일괄적으로 삭제가 가능하다. 먼저 개별적인 리소스 삭제 명령을 정리해보자 docker container prune 미사용 컨테이너 일괄 삭제 docker image prune 미사용 이미지 일괄 삭제 docker volume prune 미사용 볼륨 일괄 삭제 docker network prune 미사용 네트워크 일괄 삭제 docker system prune 명령은 위의 명령들을 모두 실행한다고 볼 수 있.. 2023. 5. 29.
PostgreSQL 문자열 합치기 PostgreSQL에서 문자열을 합치는 방법을 알아보자. PostgreSQL은 기본적으로 Oracle과 문법이 많이 비슷하다. 1. '||' 사용 // 문법 STR1 || STR2 || ... // 예시 'Hello' || 'World' // HelloWorld 한가지 주의할 부분은 합치려는 문자열 중에 NULL이 있는 경우 NULL이 리턴된다는 것이다. 'Hello' || NULL || 'World' // NULL 2. CONCAT 사용 // 문법 CONCAT(STR1, STR2,...) // 예시 CONCAT('Hello', 'World') // HelloWorld CONCAT을 사용할 때는 NULL이 포함이 되어도 NULL을 무시한다. 'Hello' || NULL || 'World' // Hello.. 2023. 5. 29.
PostgreSQL Upsert(Update&Insert) 사용 PostgreSQL를 사용해서 upsert를 실행하는 문법을 알아보자. upsert는 Insert 시 pk가 중복 등으로 Insert 하려는 값이 존재하는 경우 해당 row를 update하는 쿼리이다. 먼저 문법을 보면 아래와 같다. INSERT INTO // insert문 ON CONFLICT // 충돌 체크 DO UPDATE // update문 문법을 기준으로 쿼리를 작성해보면 아래와 같은 예시가 된다. USER테이블에 insert문을 실행하는데 'id' 컬럼에 해당하는 row가 없으면 insert, 이미 존재하면 age에 +1을 한 값으로 update한다. INSERT INTO USER (id, name , age) VALUES('user1', 'Hong', 1) ON CONFLICT (id) DO.. 2023. 5. 29.
SpringBoot cannot deserialize from Object value 에러 SpringBoot로 백엔드를 구현하고 테스트 중에 아래와 같은 에러가 발생하는 경우가 있다. cannot deserialize from object value (no delegate- or property-based creator) API 요청 시 Request Body의 JSON 데이터를 DTO(Java Object)로 변환을 해주는 이때 DTO의 기본 생성자를 찾을 수 없어서 나는 에러이다. 일반적으로 Java 클래스를 생성하면 기본 생성자는 아무런 설정없이 사용할 수 있다. public class UserDto{ private String userId; .... } .... UserDto userDto = new UserDto(); // 기본생성자 사용 하지만 가끔 Lombok을 활용하여 아래와 .. 2023. 5. 27.
반응형