본문 바로가기
반응형

개발248

Jenkins를 활용한 SpringBatch 스케줄러 구성 SpringBatch로 작성한 배치 어플리케이션을 주기적으로 실행시키기 위한 스케줄러로 Jenkins를 활용하는 방법을 알아본다. 다른 대안들도 많이 있지만 Jenkins 활용 시 오픈소스 무료로 GUI 기반 대시보드, 이력관리, 권한관리 등이 가능하다는 장점이 있다. 배치 스케줄러 JOB을 생성한다 생성한 JOB에서 좌측 "구성"을 클릭하고 설정을 시작한다. 스케줄러를 설정하는 것임으로 '소스코드 관리'는 None으로 선택하고, 하단에 빌드 유발에 crontab 표현식으로 설정을 한다. 아래 예시는 "월~금요일, 매일 1시, 05~30분 사이 실행"을 의미한다. 분까지 직접 설정하는 방식이 아닌 H 심볼을 사용하여 Jenkins가 내부적으로 범위 내(ex. 05~30분)에서 분을 결정하도록 하면 부하 .. 2023. 10. 18.
SpringBoot3 CircuitBreaker Resilience4j 알아보기 CircuitBreaker Fault Tolerance(=장애 허용 시스템) 에서 사용되는 대표적인 패턴으로 서비스에서 타 서비스 호출 시 에러, 응답지연, 무응답, 일시적인 네트워크 문제 등을 요청이 무작위로 실패하는 경우에 Circuit를 오픈하여 장애가 다른 서비스로 전파되지 못하도록 방지하고 미리 정의해놓은 Fallback Response를 보내어 서비스 장애가 전파되지 않도록 하는 패턴이다. CircuitBreaker를 사용하는 목적은 애플리케이션의 안정성과 장애 저항력을 높이는 데 있다. 상태 정상 Client -> Service A -> Circuit Breaker (정상 상태: Bypass Traffic) -> Service B 장애상황 Client -> Service A Circuit B.. 2023. 10. 8.
React Hook 개념 및 활용 React Hook은 v16.8부터 React 요소로 새로 추가된 기능으로 함수형 컴포넌트에서도 클래스형 컴포넌트의 기능을 사용할 수 있게 하는 여러가지 기술을 Hook 이라고 부른다. 예를들어, 기존 함수형 컴포넌트에서 할 수 없었던 상태값 관리(useState), 생명주기 함수(useEffect) 등을 사용할 수 있게 되었다. 클래스형 컴포넌트의 단점 - 컴포넌트의 상태 로직 재사용의 어려움 - 복잡한 컴포넌트의 이해하기 어려움 - 코드의 재사용성과 구성의 어려움 - 클래스의 문법의 어려움 위와 같은 클래형 컴포넌트의 단점과 함수형 컴포넌트의 간결함과 편리함 때문에 함수형 컴포넌트가 많이 활용되고 있다. 그리고 이 함수형 컴포넌트를 좀 더 효율적으로 잘 활용할 수 있도록 지원해주는 기능이 Hook이라.. 2023. 9. 23.
random secret key 생성(openssl rand) 개발 할때 여러가지 이유로 복잡도 있는 랜덤한 키(ex. JWT secretkey 생성)를 생성해줘야 하는 경우가 있다. 이럴때 적절한 키를 선정하기 애매할 때가 있는데 OpenSSL 명령어 한줄로 간단히 랜덤 키를 생성해서 사용할 수 있다. openssl rand -hex 64 위와 같이 입력하면 아래와 같이 결과가 나오고 복사해서 사용하면 된다. 추가적인 옵션 사용법들은 다음과 같다. 필요에 따라서 사용하면 된다. # Hexadecimal output + 64byte openssl rand -hex 64 # Base64 output + 32byte openssl rand -base64 32 아래는 각 옵션 별 샘플 실행 결과이다 2023. 9. 23.
VSCode Snippet Generator(사용자 정의 스니펫) 활용 Snippet이란 재사용 가능한 소스코드, 텍스트의 일부분을 일컫는 용어이다. 사용자가 루틴 편집 조작 중 반복 타이핑을 회피할 수 있게 도와주는 것이다. 간단히 말해, 매번 동일하게 반복적으로 넣어줘야 하는 코드를 자동화 시키는 개발 편의 기능이라고 볼 수 있다. VSCode에서 사용자 스니펫을 쉽게 직접 생성할 수 있는 방법을 알아본다. 아래 사이트에 접속한다. Snippet 템플릿을 생성해주는 사이트이다. https://snippet-generator.app/ snippet generator Snippet generator for Visual Studio Code, Sublime Text and Atom. Enjoy :-) snippet-generator.app 사이트에서 왼쪽 영역에 생성하고자 하.. 2023. 9. 22.
NodeJS mongoose DB 커넥션 오류 - SyntaxError: Invalid or unexpected token NodeJS mongoose를 활용해서 어플리케이션 올리는 중에 아래와 같은 에러가 발생했다. 개발 환경은 NodeJS 버전은 18.17, mongoose 7 버전으로 개발이중이었다. .../node_modules/mongodb/lib/collection.js:74 pkFactory: db.options?.pkFactory ?? utils_1.DEFAULT_PK_FACTORY, ^ SyntaxError: Invalid or unexpected token at Module._extensions..js (node:internal/modules/cjs/loader:1310:10) Node.js v18.17.1 [nodemon] app crashed - waiting for file changes before .. 2023. 9. 17.
VSCode Auto Import - import문 자동 생성 vscode에서 react나 node.js로 개발 시 import문 작성하는게 많이 귀찮은데 Auto Import 확장프로그램을 설치해서 사용하면 편리하다. vscode 좌측 메뉴 중 확장프로그램에서 "auto import"라고 검색하고 설치해주면 된다. 그리고 vscode를 재기동 한다. 아래 예시와 같이 Router라고 입력하면 하단에 import 대상들이 표시되고 선택만 하면 상단에 import문이 추가 된다. 혹시 잘 안되는 경우 프로젝트 Root에 jsconfig.js 파일을 생성하고, 아래와 같이 넣어준 후 해보자 { "compilerOptions": { "target": "es6", "module": "es2015" } } 연관 글: VSCode Reactjs code snippets(코드 .. 2023. 9. 17.
MongoDB mongo: command not found 오랜만에 MongoDB로 테스트 하기 위해 MongoDB를 설치하고 접속을 확인하는 중에 아래 같은 에러가 떴다. mongo: command not found 처음에는 설치에 문제가 있었나 했는데 찾아보니 MongoDB 6.0부터 "mongo" 라는 명령어는 remove되었다. 대신 "mongosh"라는 명령어를 사용해서 shell에 접속해야 한다. $ mongosh 사용방법은 예전의 mongo와 다른것이 없다. use 데이터베이스명 데이터베이스 사용(없으면 새로 생성) db 현재 사용중인 데이터베이스 확인 show dbs 데이터베이스 리스트 확인(최소 한 개의 Document를 가진 DB만 출력) db.컬렉션명.insertOne({key:value, ...}) 컬렉션 안에 Document 추가 db.데.. 2023. 9. 16.
반응형