반응형 개발/기타49 GitHub Actions를 활용한 AWS S3 CICD 구성(React 어플리케이션) GitHub Actions는 GitHub에서 제공하는 CICD를 제공하는 서비스이다. 다른 CICD 툴 처럼 GitHub 소스에 Push가 되거나 Pull Request 등 이벤트 발생 시 자동 실행도 제공해주고 있다. GitHub Actions를 활용해서 React 프론트 소스를 AWS S3에 호스팅하는 CICD 샘플 구성을 진행한다. 1. GitHub Actions workflow 생성 React 소스가 있는 GitHub 리파지토리에서 Actions을 클릭하고 Node.js를 기본 workflow로 선택(Configure 클릭)한다. 아래와 같이 기본 설정 yml파일(node.js.yml 파일)에서 필요한 부분을 먼저 수정한다. 필자는 node-version을 나머지는 지우고 18버전만 남겼고, ru.. 2023. 11. 19. Jenkins를 활용한 SpringBatch 스케줄러 구성 SpringBatch로 작성한 배치 어플리케이션을 주기적으로 실행시키기 위한 스케줄러로 Jenkins를 활용하는 방법을 알아본다. 다른 대안들도 많이 있지만 Jenkins 활용 시 오픈소스 무료로 GUI 기반 대시보드, 이력관리, 권한관리 등이 가능하다는 장점이 있다. 배치 스케줄러 JOB을 생성한다 생성한 JOB에서 좌측 "구성"을 클릭하고 설정을 시작한다. 스케줄러를 설정하는 것임으로 '소스코드 관리'는 None으로 선택하고, 하단에 빌드 유발에 crontab 표현식으로 설정을 한다. 아래 예시는 "월~금요일, 매일 1시, 05~30분 사이 실행"을 의미한다. 분까지 직접 설정하는 방식이 아닌 H 심볼을 사용하여 Jenkins가 내부적으로 범위 내(ex. 05~30분)에서 분을 결정하도록 하면 부하 .. 2023. 10. 18. 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. 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. 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. 웹사이트 성능 최적화 방법 웹사이트 최적화 방법론을 정리해본다. 어떤 항목들은 여러 라이브러리나 툴 등을 통해서 쉽게 해결 할 수 있는 부분도 있지만 개발시 신경써서 구현을 해줘야 하는 부분도 많이 있다. 1. HTTP 요청을 최소화 - 페이지를 구성하고 있는 각 요소(이미지, 스타일시트, 스크립드 등)들을 줄이기 - 방법 : 디자인을 단순화. 스크립트, 스타일시트 등 파일을 결합, 배경이미지들을 하나로 결합 2. CDN(Content Delivery Network) 사용 - 사용자 응답시간의 80%이상은 페이지의 구성요소(이미지, 스타일시트, 스크립트 등) 다운로딩에 소요 됨. - 사용자에게 효율적인 Content 제공을 위해 여러 지역에 분산된 웹서버의 집합체(응용프로그램 아니라 정적 컨텐츠에 대한 응답을 빠르게 함) - 사용.. 2023. 8. 26. Java 디자인 패턴 정리 객체지향 디자인을 위해서는 재사용성, 확장성. 관리 용이성 등을 갖춰야 한다고 얘기를 하고 있다. 이런 것들을 갖추기 위해서 Java에서는 유명한 여러가지 디자인 패턴이 있는데 이를 한번 정리해본다. 1. Iterator 패턴 - 반복작업에 대한 캡슐화 : Iterator를 사용하면 클라이언트에서는 처리할 컬렉션 객체가 List인지 Array인지 신경쓰지 않아도됨. - Enumeration과의 차이점은 Iterator은 remove() 를 지원. 2. Adapter 패턴 - 캐스팅 등이 불가능한 경우 클래스의 인터페이스를 클라이언트가 원하는 인터페이스로 변환하는 역할(Adapter) - 인터페이스 간의 호환성 문제를 해결할 수 있음. 3. Factory Method 패턴 - 객체 생성을 다른 클래스(주로.. 2023. 8. 26. 프로그래밍 관련 법칙(파레토, 디미터, 콘웨이 법칙) 1. 파레토 법칙 (Pareto principle) 80 대 20 법칙, 전체 결과의 80%가 전체 원인의 20%에서 일어나는 현상 소프트웨어의 개발 80%를 20%의 기능을 개발하는데 소비한다. 프로그램 사용자의 20%가 80%의 부하를 발생시킨다. 등으로 사용이 된다. 프로젝트를 설계할 때 이 법칙을 감안해서 설계를 하면 프로젝트를 위험에 빠트리게 하는 위험요소들을 사전에 파악하고 관리가 가능할 것이다. (예를 들어서 중요한 기능을 먼저 구현하던지 특정 사용자들에게서 집중적으로 자원이 소모되는 것을 감안해서 설계 하고 테스팅한다.) 2. 디미터 법칙 (The Law of Demeter) :디미터 법칙은 객체 O의 메소드 m은 다음의 객체들의 타입의 메소드만 호출해야 한다는 법칙이다. 1. O 객체 자.. 2023. 8. 26. 이전 1 2 3 4 5 ··· 7 다음 반응형