목록분류 전체보기 (316)

이번 포스팅은 CI/CD를 함께 적용한 workflow에 대해 다룬다. 이전 포스팅에서는 CD에 대해 다뤘으니, 필요한 내용은 참고 바람 ^_^ 2023.05.27 - [개발/GCP] - Github-actions 사용기 (with GCP) 내가 CI 과정 중 구현하려고 했던 것은 다음과 같다. push가 진행될 시, 이에 대한 테스트 코드를 실행하여 정상적으로 구동되는지 확인 후, CD과정을 진행하는 것. 작성한 workflows name: githubaction-cd on: push: branches: [ "master" ] jobs: ci :// job에 새로운 요소 추가 name : gitaction-test runs-on : ubuntu-latest // ubuntu 컴퓨터 빌리기 steps :..

github-actions를 통해 GCE 인스턴스를 자동화 배포했던 과정을 포스팅한다. github-actions github-actions(이하 깃허브 액션)은 빌드/테스트/배포를 자동화할 수 있는 CI/CD 플랫폼이다. 구동방식은 다음과 같다. 특정 조건(events)에 따라, 원하는 작업 흐름들(workflows)를 실행시킨다. 이후 workflows내에 존재하는 작업(jobs)을 단계(steps)에 따라 명령어를 수행한다.(actions) event / workflows / jobs / steps / actions 에 대해 events - 특정 이벤트 (push, merge, issue) 발생 시 workflow를 실행시키는 역할 - workflow 실행을 트리거하는 특정 활동이나 규칙을 의미하기..

오늘은 github-actions을 사용하여 무중단 배포를 연습해보기 위해, 인스턴스 그룹에 부하분산기를 부착하는 과정 중 PROVISOINING이 17시간 째 진행되었던 문제를 해결하는 과정에 대해서 다룬다. (캡처본은 5시간이지만, 사실 다음날 아침까지 안돼서 17시간 ㅠ.ㅠ) SSL 부착 전까지 했던 과정은 다음과 같다. - 서버 VM 인스턴스 배포 (도커 설치 & env 설정) - 방화벽 설정 - mySQL 인스턴스와 서버 인스턴스 연결 - VPC 페어링 (가상 네트워크를 구축하여, 외부 IP로 DB에 직접 접속하지 못하게 함) - DNS 연결 - 인스턴스 그룹 설정 (다수의 가상머신 관리와, 안정적 서비스 제공) - 로드 밸런서 설정 (* 문제가 일어난 곳) 관련 DOCS를 살펴본 결과 문제가 ..

coalece / date_format / order by, having 오늘은 프로그래머스 MySQL SQL문 문제를 풀며 알게 된 내용들에 대해 다룬다. 먼저, 문제는 다음과 같다. coalece 다음 문제에서는 이름이 Null 값인 동물의 이름을 "No name"으로 치환하여 보여주는 것을 원한다. SELECT ANIMAL_TYPE, coalesce(NAME,'No name') as NAME, SEX_UPON_INTAKE FROM ANIMAL_INS ORDER BY ANIMAL_ID 이때, coalesce 라는 함수는 처음 사용해보았는데, coalesce는 null이 아닌 첫번째 유효한 표현식을 반환하는 함수이며 이 함수 덕분에 name컬럼 내에 존재하는 Null 값을 "No name"으로 치환하여..

일주일 만에 포스팅이다. 사실 그동안 아무것도 하지 않은 것이 아니라, 삽질을 좀 했다. nest.js에서는 뚝딱 뚝딱 쉽게 구현되는 것들이 node.js에서는 왜 이리 예민하게 반응하는지... ㅠㅠ 아무튼 오늘은 로그아웃 구현을 위해 작성한 미들웨어에 대해 얘기해본다. 예전 부트캠프에서는 Nest.js에서 전략 패턴을 사용해서 토큰 검증을 해본 경험이 있다보니, 이번에는 오로지 별다른 기술 없이 알고리즘 로직만을 활용하여 미들웨어를 구현해보았다. 2023.02.22 - [코딩/nest.js] - NestJs - 로그아웃 프로세스 구현 / docker를 사용한 redis 해당 로직은 세 가지 로직으로 구분할 수 있다. jwtAuth : 로직의 전체 틀이자 미들웨어 자체로 사용하는 함수 jwtValidat..

TCP & UDP TCP와 UDP는 '전송계층'에서 사용하는 프로토콜이다. 여기서 '전송계층'이란, 프로토콜 내에서 송신자 & 수신자를 연결하는 통신 서비스를 제공하는 계층으로, 재전송 요구나 패킷의 오류를 검사한다. TCP TCP는 연결 지향적 프로토콜이라고도 하며, 데이터 전송 전 세션 수립 후, 먼저 통신이 되나 확인하는 과정을 거친다. 통신 후에는 세션이 종료되며, 오류가 났을 경우 재전송을 시도한다. (신뢰성있는 데이터를 전송) 위와 같은 특징 때문에, 웹브라우저 / 이메일 / 파일 전송에서 사용한다. TCP 에서는 3way-handShake 라는 방법으로 연결을 초기화하며 4way-handShake로 통신을 종료하게 되는데, 과정을 그림으로 그리면 다음과 같다. UDP UDP는 비연결형 프로토..

미래의 나에게 // PM2 설치 npm install pm2@latest -g # or yarn global add pm2 // pm2 실행 pm2 start ecosystem.config.js // 실행 중인 Pm2 리스트 조회 pm2 ls // 특정 프로세스 중단 pm2 stop [id] // 특정 프로세스 삭제 pm2 delete [id] // 실행 중인 pm2 종료 pm2 kill // ecosystem.config.js 설치 pm2 init // babel 모듈 yarn add -D @babel/register 먼저 PM2 는 Node.js 애플리케이션의 프로세스 관리자이며, 백그라운드에서 Node.js 애플리케이션을 실행하고 모니터링 하는 도구이다. GCP에서 사용했던 인스턴스와 같은 역할을 ..

미래의 나에게 // 설치 yarn add prisma // 프리즈마 사용 시 필요한 파일 생성, prisma/schema yarn init // schema.prisma 기반의 Prisma client 등의 자원 생성 yarn prisma generate // schema.prisma 기반으로 DB 업데이트 yarn prisma migrate dev // 실제 DB 반영 없이 migration 파일 변경 yarn prisma migrate dev --create -only 먼저 ORM이란, SQL 쿼리문을 작성하지 않고도 데이터베이스와 상호작용할 수 있게 도와주는 도구다. 2023.01.29 - [코딩/node.js] - ORM / Sequelize & typeORM 이전에는 항상 TypeORM을 사용하..