본문 바로가기

전체 글

(124)
[Spring Boot] Quartz 배치 DisallowConcurrentExecution 설정 Spring boot에서 Quartz를 활용하여 배치를 수행시킬때 예기치 못하게 처리 데이터가 많아져서 배치 주기 안에 Job을 못끝내는 경우가 발생할 수 있다. 수행중인 Batch job이 끝나지 않았다면 다음 Trigger 주기때 Job은 실행이 되는 것일까? 그렇다면 실행중에 또 실행이 되어서 결과값에 영향을 주지 않을까? 배치 주기 5초인 Job이 10초간 실행될때 테스트 아래와 같이 5초 간격으로 도는 Test Job을 등록을 해두었다 해당 잡은 5초마다 log 테이블에 start시간과 end time을 저장한다. Job의 내용은 아래와 같이 간단하다. 수행되자마자 DB에 start 시간을 기록하고 10초간의 Sleep 시간을 갖고 마지막에 end 시간을 저장하고 종료된다. 즉 주기 5초보다 J..
[Synology Docker] Oracle 12c password expired 처리 Sysnology Docker 상에서 Oracle 12c를 구동중에 DB접속 시 password expired 에러 메세지가 발생할 수 있다. 기본 패스워드 유지기간이 지나면 만료되 버리는 것이다. Synology docker를 사용할 경우 docker 웹앱 상에서 console로 접근하여 간단히 패스워드 초기화를 할 수 있다. Docker Oracle Console로 패스워드 초기화 하기 Synology -> Docker 앱에 진입하여 Container 리스트에 진입한다. 12.2.0.1-slim 이미지로 도커 컨테이터가 실행되고 있음을 볼 수 있다. 상단의 Datails를 선택해서 컨테이터 상세정보 창으로 이동한다. 컨테이터 상세 정보 창 상단에 Terminal메뉴로 진입한다. Terminal메뉴에서..
[Maven] Maven 디펜던시 Tree, 디펜던시 라이브러리 Copy 하기 Spring boot 및 Maven으로 백엔드 개발을 진행하다보면 현재 사용하고 있는 전체 라이브러리를 모아서 보거나 전체 리스트 및 라이브러리 간의 dependency를 알고 싶을 때가 있다. IntelliJ Tool 등에서 수동으로 UI를 통해 전체 라이브러리를 살펴볼수도 있으나 마우스로 하나씩 클릭해 보면서 확인하는것에는 한계가 있을 수 있다. 이번 Article에서는 Terminal에서 간단히 사용중인 전체 라이브러리 리스트 및 라이브러리간 디펜던시를 Linux console tree 형식으로 살펴보는 방법, 사용중인 전체 라이브러리를 특정 위치로 Copy해오는 방법을 알아보고자 한다. 전체 라이브러리 리스트 및 라이브러리간 디펜던시 Tree 출력 Terminal에서 아래와 같이 명령어를 입력하면..
DBeaver Heap memory 늘리기 Database client tool로 DBeaver를 많이 사용하고 있는데 용량큰 Script 실행을 하거나 여러 작업을 많이 할 경우 java heap space 부족 메세지를 종종 보게 된다. 이럴 경우에는 Tool 실행시 vmarg를 넘겨주면 실행시 heap memory를 정해준 size만큼 설정하게 할 수 있다. 실행시 인자는 아래와 같이 줄 수 있다. -vmargs -Xms4096m (구동시 확보되는 최소 메모리) -vmargs -Xmx8192m (최대 사용 메모리) 아래는 윈도우 바로가기 아이콘에서 실행 명령어에 최소 구동 메모리 4096m을 설정한 모습이다. 현재 할당된 Heap memory 를 확인하려면 DBeaver -> window -> Preferences -> Genaral 에서 ..
[Devops] Git stash 명령 사용하기 Git은 형상 관리 툴로서 가볍고 사용하기 편하고 빠르고 간단하다. 따라서 많은 Tools들이 있지만 Git이 많이 사랑 받는 이유가 될 것이다. Git 사용중에 수정한 내용에 대해서는 브랜치를 생성해서 commit, push를 대부분 때로는 실제 push 하기 전에 다른 브랜치나 코드를 확인해보고 현재 작업중인 부분을 이어가고 싶은 경우가 있다. 이럴때 stash 기능으로 임시로 변경분들을 넣고 뺄 수가 있다. Git status로 현재 변경 사항들을 우선 확인 한다. $ git status On branch implement-quartz-batch-20220924 Your branch is up to date with 'origin/implement-quartz-batch-20220924'. Chan..
[Postgresql] Synology Docker Postgresql 설치하기 시놀로지 720+ 도커 상에서 Postgresql 을 설치해보고 간단하게 데이터베이스, 스키마, 테이블을 만들어본다. 우선 시놀로지 도커 -> Registry 로 들어가서 postgres 로 검색하고 아래 이미지를 다운로드 받는다. 다운로드를 실행하고 완료되면 도커 -> Image 항목에 다운로드 목록에 보이게 된다. 이미지를 선택한 후 Launch를 수행해서 Container 를 만들어 본다. Network설정은 기본 bridge로 선택된 것 확인하고 다음으로 진행한다. 일반 설정은 그대로 가고 하단 Advanced Settings으로 들어간다. 초기 Launch 시 사용할 root 계정을 아래와 같이 입력해준다. 로컬 네트웍에서 시놀로지 도커 컨테이너에 접속할 Port를 지정해준다. 최종 설정 Sum..
[Linux] scp 명령으로 서버파일 업로드 다운로드 개발을 진행할 때 종종 배포 인스턴스에 들어가서 로그 파일 등을 다운로드 받거나 외부에서 파일을 올려야 하는 경우가 종종 있다. 물론 여러가지 서버 관리 Tool 을 사용해서 편하게 해당 동작을 할수도 있지만 간단한 Bash shell 만을 이용해서 linux scp 명령으로 서버 파일을 로컬 pc로 다운 또는 업로드를 할 수 있다. scp 기본 옵션 간단하게 bach shell에서 scp 옵션을 살펴보면 몇가지가 있다. $ scp /? usage: scp [-346BCpqrTv] [-c cipher] [-F ssh_config] [-i identity_file] [-J destination] [-l limit] [-o ssh_option] [-P port] [-S program] source ... t..
[Spring boot] Spring Redis Session Clustering 설정하기 Backend 개발 시 HA 구성이나 여러 유관 시스템 연동 시 세션 Clustering을 통해 정보를 공유해야할 경우가 생긴다. 이럴 경우에 Tomcat, Nginx, Jboss 등의 웹 서버 단에서 Sticky Session 설정을 할수도 있으나 Spring framework에서 제공하는 session redis 기능을 활용하면 수월하게 Session Clustering 환경을 구축 할 수 있다. Spring Session 기능은 아래 공식 문서에서 찾아볼 수 있다. https://docs.spring.io/spring-session/reference/index.html 중요한 부분은 언급되어 있는 아래 최소 사항 항목이다. Java 17+ 및 Spring 6.0.x 사항이 언급되어 있다. 나름 최신..