TIL
-
[TIL] Github git clone VS git fork 차이점 알아보기TIL 2024. 12. 2. 16:28
Github git clone VS git fork 차이점 알아보기 문제상황실제 배포 예정중인 서비스를 포트폴리오 제출 목적으로 내 깃허브 계정에서 일시적으로 보여주어야하는 상황이었다.하지만 해당 레포지토리는 organization의 private레포지토리로 되어있었기 때문에 조치가 필요했다.그리고 주기적으로 원본 레포지토리로부터 동기화기능도 필요한 상황이었다. 그래서 비슷한 기능 처럼 여겨졌던 git fork와 git clone의 차이점을 비교하여 내 상황에 더 맞는 걸 사용하기로 하였다. git fork- 다른 사람의 레포지토리를 내 깃허브 계정으로 복제하는 것- 원본 레포지토리와 연결이 유지되어, 최신 코드로 업데이트하거나 원본 레포지토리에 변경사항을 기여할 수 있음.- 깃허브 상에서 관리되고 ..
-
[TIL] 캐싱으로 조회수기능 개선하기TIL 2024. 11. 27. 14:57
캐싱으로 조회수기능 개선하기 기존 조회수기능 방식)DB update 조회수+1 async increaseViewCount(reviewIdx: number): Promise { await this.prismaService.reviewTb.update({ where: { idx: reviewIdx, }, data: { viewCount: { increment: 1, }, }, });} 기존 조회수 기능의 문제점)트래픽이 많아질수록 인덱싱된 데이터의 수정작업이 계속 이루어지게되면서 DB작업에 부담이 늘어난다.DB작업은 컴퓨터작업의 가장 느린부분으로 작업량이 늘어날때 병목현상이 일어나서 시스템 전체의 성능이 ..
-
[TIL] SSE로 알람기능 구현하기 (Polling / Long Polling / Web Socket / SSE (Server Sent Event))TIL 2024. 11. 18. 00:59
SSE를 이용해서 알림기능 구현하기실시간으로 데이터를 업데이트 해야하는 경우에는 서버로부터 데이터를 받아와야한다.이때는 사용할 수 있는 기술로는1.Polling / Long Polling2.WebSocket 3.SSE와 같은 것들이 있다. Polling 기법클라이언트에서 서버로 주기적, 반복적으로 HTTP 요청을 보내는 것.주기적으로 요청을 보내다보면 만약 데이터에 변동사항이 생겼을 때 이를 확인하고 받아올 수 있음.요청하는데 부담이 크지않거나, 요청주기를 길게 잡아도 될만큼 실시간성이 중요하지않거나, 데이터 갱신이 특정 주기를 가질 때 적합하다. 장점:구현이 단순하다단점:Http Overhead 발생(계속 http 요청을 보내야하기 때문에 리소스 낭비가 발생한다. 요청 주기가 짧다면 http요청이 많아..
-
[github-actions] 프라이빗 레포지토리 CI/CD 자동배포 설정하기TIL 2024. 11. 13. 21:42
1. PAT(Personal Access Token) 발급 이때 토큰의 권한은 repo관련 모든 권한과 workflow 권한을 추가해둔다.토큰은 1번만 보여주므로 다른곳에 복사해둔다. 2. Repository 권한 설정workflow permission 섹션에서 read and write permission 활성화 (organization의 레포지토리인 경우 어드민 권한 필요할 수 있음) 3. deploy.yml 작성 1.Checkout repositoryactions/checkout@v3 액션을 사용하여 main 브랜치의 최신 코드를 self-hosted 서버로 가져옵니다. 이 단계에서 GITHUB_TOKEN을 사용해 인증이 이루어지며, 워크플로우가 리포지토리에 접근하여 코드를 복사합니다. ..
-
[TIL] Refresh Token 을 사용하는 이유와 구현 방식TIL 2024. 10. 14. 12:48
Refresh Token이 필요한 이유:JWT로 발급하는 토큰은 서버에 저장되지않고 발급된 토큰만으로 인증하는 방식이다.하지만 이러한 방식은 보안적인 부분에서 한계가 있다. JWT인증 방식의 한계1. 토큰 탈취 위험JWT는 서버에 저장되지 않기 때문에 만약 토큰이 탈취당한다면 대응할 방법이 없. 2. Access Token의 만료 시간 문제만료 시간을 길게 설정하면 탈취 당했을 때 악용될 가능성이 커진다.만료 시간을 짧게 설정하면 사용자가 로그인 요청을 자주 받아야하기 때문에 불편해진다. 이러한 문제들을 해결하고자 Refresh Token을 함께 이용하는 방식이 생겨났다. Refresh Token의 역할1. Access Token 재발급:Refresh Token을 통해 짧은 만료 시간의 Access..
-
[TIL] Error - git 파일명 대소문자 구분TIL 2024. 10. 13. 16:38
문제상황 개발환경에서 배포환경으로 코드를 옮기던 중 기존 파일명 Email.service.ts -> email.service.ts로 변경했다.개발환경에서는 정상적으로 서버가 실행되었으나 배포환경에서는 서버가 실행되지않는 문제가 발생했다. 그 이유를 찾아보니 git은 파일명에서 대소문자 구분을 하지않아서 변경사항이 전달되지 않았던 것이었고 의존성을 import해오는 과정에서 파일명이 달라서 에러가 났던 것이었다. 해결방법 깃의 파일명 대소문자무시하는 설정을 해제해주고, 캐시를 제거해준다. 그리고 다시 git add. -> git commit -m ""을 통해 정상 커밋해준다. 파일명 대소문자 수정한것도 변경사항으로 인식되어 반영된다.git config core.ignorecase false // 깃..
-
[TIL] postgreSQL - postgres 슈퍼계정 권한 부여하기TIL 2024. 10. 11. 17:51
aws ec2에 psql을 설치하고 이용하는 과정에서 postgres의 슈퍼계정권한을 사용해야했다. 하지만 postgres로 로그인해도 superuser의 권한이 없었고 유일하게 superuser의 권한을 갖고있는 계정인 pgg_superadmins로 로그인을 시도해도 비밀번호 입력 요청이 나왔다. 해당 psql 계정의 비밀번호를 설정한 적이 없었기때문에 접속이 불가능했다. postgres계정에 superuser권한을 부여하고 이를 이용하는 방법이 필요했다. 1. pg_hba.conf 파일 수정 pg_hba.conf파일은 postgresql의 Host-Based Authentication (HBA) 설정 파일로, db에 접근하는 사용자와 인증 방식을 지정하는 파일이다. 인증방식(db 접근시)sha:..
-
[TIL] PSQL-DB 데이터 복원하기 (pg_dumpall VS pg_dump 차이)TIL 2024. 10. 11. 01:18
도커 볼륨 postgresDB (개발환경) -> aws ec2 postgresDB(배포환경)으로 db 하나 전체를 옮기고자 하였다. 현재 개발 환경에서 db 서버를 도커 컨테이너로 이용하고 있었는데, 프론트엔드쪽에서 내가 만든 api를 이용하기 위해서는 배포를 해야했다. 기존의 테스트용 더미데이터와 db 테이블, 제약조건등 모두를 포함해서 today_review db를 옮기는 것이 목적이다. 하지만 today_review db 소유주인 kiju 계정으로 uuid 익스텐션을 설치할 권한이 없었기때문에 복원과정에서 일부데이터가 손실되는 문제가 발생했다. 그래서 postgres계정에 superuser 권한을 부여하고 이 계정으로 복원과 백업을 모두 진행해서 권한 문제가 발생하지 않도록 진행했다. 1...