전체 글

전체 글

    [AWS] EC2 ssh 접속 오류  bad permissions /  Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

    [AWS] EC2 ssh 접속 오류 bad permissions / Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

    다음과 같은 명령어로 접속하면 ssh -i .pem ec2-user@ 아래 이미지 처럼 접속이 안된다. 해결 방법은 파일 권한을 변경해준다. chmod 400 .pem 접속이 되는 것을 확인할 수 있다.

    [Spring] jasypt 사용하기

    [Spring] jasypt 사용하기

    jasypt란 jasypt , 자시프트라고 읽는다고 한다. jasypt 는 자바 라이브러리로 쉽게 암호화 기능을 사용할 수 있도록 한다. DB 계정이나 중요한 키값을 평문으로 올리는 것이 아닌 암호화해서 올릴 수 있게하는 라이브러리로 스프링 프로젝트의 application.yaml 에서 중요 정보를 암호화할 때 많이 사용된다. 의존성 추가하기 mvn repository 에서 원하는 버전을 선택한다. https://mvnrepository.com/artifact/com.github.ulisesbocchio/jasypt-spring-boot-starter implementation 'com.github.ulisesbocchio:jasypt-spring-boot-starter:3.0.4' config 파일 만..

    [Spring] Spring Batch 의 Meta-Data Schema 정보

    [Spring] Spring Batch 의 Meta-Data Schema 정보

    Meta-Data Schema 스프링 배치의 실행, 관리를 위한 목적으로 도메인의 정보를 정할 수 있는 스키마를 제공한다. 스프링 배치 라이브러리에서 DB 스키마를 제공한다. 해당 스키마는 모니터링 용도로만 사용되는 것이 아닌 실제 배치 작업이 실행되는 동안 사용되는 데이터들이 저장되는 장소이기 때문에 각 테이블에 어떤 데이터가 적재되는지 알고 사용하면 좋다. DDL script 는 org.springframework.batch.core 라이브러리에 schema-*.sql 데이터베이스별로 있다. 적재되는 순서는 다음과 같다. BATCH_JOB_INSTANCE BATCH_JOB_EXECUTION BATCH_JOB_EXECUTION_PARAMS BATCH_JOB_EXECUTION_CONTEXT BATCH_S..

    [Spring Batch] Spring Batch 기본 개념 및 용어 정리

    [Spring Batch] Spring Batch 기본 개념 및 용어 정리

    Batch 란 Batch는 일괄처리란 뜻을 가지고 있다. 사용자와 상호작용 없이 여러 개의 작업을 미리 정해진 순서에 따라 중단없이 처리한다. 배치를 사용하기 위해서는 다음과 같은 조건이 만족해야한다. 대용량 데이터 : 대용량의 데이터를 가져오기, 전달하기, 계산하기 등의 처리 자동화 : 사용자 개입없이 자동으로 실행 견고성 : 잘못된 데이터를 충돌/중단 없이 처리하기 신뢰성 : 잘못된 내용을 추적 가능해야함 (로깅, 알림) 성능 : 지정한 시간 안에 처리를 완료하거나 동시에 실행되는 다른 어플리케이션과 방해되지 않게 처리 배치 타입 Spring Batch 용어 Job Job은 배치처리 과정을 하나의 단위로 만들어 놓은 객체입니다. 또한 배치처리 과정에 있어 전체 계층 최상단에 위치하고 있습니다. Job..

    [Spring Batch] @JobScope 와 @StepScope 개념 및 예제

    @JobScope 와 @StepScope @JobScope 와 @StepScope는 스프링의 기본 Scope 인 싱글톤과 대치되는 역할이다. @JobScope 와 @StepScope이 선언되면 Bean의 생성 시점이 애프리케이션이 구동되는 시점이 아닌 Bean의 실행 시점에서 이루어진다. @JobScope, @StepScope이 명시된 메서드가 실행될 때까지 지연시키는 것을 의미한다. 이러한 행위는 Late Binding 이라고 한다. Scope 란 스프링 컨테이너에서 빈이 관리되는 범위를 뜻한다. @JobScope Step 선언시에 사용한다. @Value : JobParameter, jobExecutionContext만 사용이 가능하다. @StepScope Tasklet 이나 ItemReader, It..

    [Spring] Could not resolve placeholder 'datasource.host' in value

    [Spring] Could not resolve placeholder 'datasource.host' in value

    프로젝트를 새로 만들면서 프로젝트 실행을 위해 빌드했는데 Could not resolve placeholder 'datasource.host' in value 해당 오류가 나면서 빌드 에러가 났다. 해결 방법은 생각보다 간단하다. Edit Configuration > Environment variables 에 SPRING_PROFILES_ACTIVE 값을 추가 시켜 주면 된다. application.yaml spring: devtools: livereload: enabled: true restart: enabled: false config: activate: on-profile: local

    [MySQL/Intellij] Public key retrieval is not allowed 에러 해결

    [MySQL/Intellij] Public key retrieval is not allowed 에러 해결

    에러 원인 Mysql DB 에 접속시도를 했는데 Public key retrieval is not allowed 에러가 나면서 DB에 접속이 안되었다. Mysql 8.0 버전 부터 보안적인 이슈로 useSSL 옵션에 대한 추가적인 설정이 필요해졌다. useSSL=false 로 설정되어 있는지, allowPublicKeyRetrieval 설정이 되어 있는지 확인해본다. 해결 만약 다음과 같은 에러가 난다면 두가지 옵션에 대해서 추가 및 변경해준다. 접속하는 datasource URL에 아래와 같이 설정해준다. jdbc:mysql://localhost:port/database?useSSL=false&allowPublicKeyRetrieval=true useSSL : DB에 SSL로 연결 allowPublic..

    [SQL] MySQL 5.7버전과 8.0버전 차이점, 8.0 업그레이드

    5.7버전 8.0버전 차이점 1. 사용자 인증 방식 변경 8.0버전 부터는 별도의옵션없이 Caching SHA-2 Authentication 인증 방식 사용 8.0버전에서 Native Authentication 인증 방식을 사용하려면 --dafault-authentication-plugin=mysql_native_password 파라미터를 활성화 한다. Native Authentication MySQL 서버에 기본적으로 내장되어 있는 인증 방식으로 사용자의 계정 정보와 암호를 MySQL 내부 데이터 딕셔너리에 저장한다. 사용자 계정과 암호가 MySQL 의 'mysql.user' 테이블에 저장된다. 암호는 해시 형태로 저장되며, 암호를 비교할 때 클라이언트에서 전달된 암호를 해시하여 저장된 암호화 비교한다..

    [SQL] IN, EXISTS 비교 및 속도 비교

    [SQL] IN, EXISTS 비교 및 속도 비교

    IN in은 입력된 값들 중 하나라도 일치하는 것이 있으면 조회된다. 쿼리가 실행될 때 내부적으로 or 연산자로 변경되어 실행되는 것이다. select e.emp_no from employees.employees e where emp_no in (SELECT s.emp_no from employees.salaries s); select e.* from employees.employees e where emp_no in (SELECT s.emp_no from employees.salaries s) employees 데이터는 300,024개 salaries 데이터는 2,844,047개이다 시간 초가 계속 변하긴 하지만 select 값 하나를 조회할 때는 3-5ms select 값을 전체 조회할 때는 4-5m..

    Docker를 사용해 mysql 설치하고 원격접속하기

    Docker를 사용해 mysql 설치하고 원격접속하기

    docker 컨테이너 생성하기 docker run -it -d --name mysql -e MYSQL_ROOT_PASSWORD={비밀번호 입력} -p 3306:3306 mysql:{tags} docker 리스트 출력해서 Mysql 설치 되었는지 확인하기 docker 컨텍스트 안에 접속 docker exec -it mysql bash 원격 접속 허용하기 grant all privileges on *.* to 'root'@'%'; root 에 다른 user 이름을 넣고 허용해도 된다. DBeaver 로 접속하기 DBeaver로 데이터베이스 연결할 때 Driver properties에서 다음 옵션의 내용을 변경해주어야 한다. autoReconnect=true useSSL=false allowPublicKeyR..