목록프로그래밍👩🏻💻/기타 (11)
suyeonme
ArgoCD란?GitOps 방식으로 어플리케이션의 상태를 관리하고 배포하는 도구로, 코드 변환에 따라 자동으로 쿠버네티스 리소스를 관리한다.예를 들어, git commit hash 또는 git tag가 변경된 경우 자동(또는 수동)으로 이를 감지하고 배포하게 된다.Kustomize란? Kubernetes 리소스를 템플릿 없이 선언적으로 관리할 수 있게 해주는 도구이다. ArgoCD와 Kustomize를 함께 사용해서 쿠버네티스 리소스 정의 파일을 렌더링하고 손쉽게 클러스터에 배포할 수 있다. 1) Application 리소스 정의ArgoCD가 어떤 Git 레포지토리와 브랜치를 추적하고, 어떤 Kustomize를 사용하고 어플리케이션을 어떤 네임스페이스에 배포할지 정의해야한다.apiVersion: argo..
gRPC란?gRPC (gRPC Remote Procedure Call)는 Google에서 개발한 언어에 상관없이 사용할 수 있는 고성능 PRC 프레임워크이다. 특히 마이크로서비스 아키텍처에서 많이 사용된다.gRPC 특징HTTP/2 기반으로 동작한다. HTTP/2의 멀티플렉싱 기능을 통해 하나의 커넥션에서 동시에 여러 요청과 응답을 처리할 수 있다. 따라서 네트워크 성능이 향상되고, 지연 시간이 줄어든다.Protocol Buffer(Protobuf)를 데이터 직렬화 포맷으로 사용한다. Protobuf는 데이터 구조를 컴팩트하게 직렬화하며, JSON보다 더 빠르고 효율적인 직렬화와 역직렬화를 제공한다. (전송속도 향상 및 대역폭 절약)다양한 언어 지원클라이언트와 서버 간의 양방향 스트리밍을 지원한다. 따라서..
데이터 파이프라인Raw 데이터를 정보(information)로 변환하기 위해 데이터 처리 단계를 거치는 시스템을 의미한다. 일반적으로 아래의 과정으로 나타낼 수 있다.데이터 수집(Ingestion): 다양한 형식의 raw 데이터를 수집하고 파이프라인으로 가져오는 단계데이터 처리(Processing): 수집된 데이터를 정제, 변환, 집계, 필터링등 필요한 형태로 가공하는 단계로, ETL(Extract, Transform, Load) 또는 ELT(Extract, Load, Transform)등의 과정을 포함한다.데이터 저장(Storage): 처리된 데이터를 저장하는 단계로, 데이터베이스, 데이터 웨어하우스, 데이터 레이크등의 저장소에 저장한다.데이터 분석(Analysis): 저장된 데이터를 분석하여 인사이트..
Makefile이란?Makefile은 make라는 빌드 자동화 도구에서 사용하는 파일로, 프로젝트를 빌드, 테스트, 배포하는 작업을 자동화하는 데 사용되는 파일이다. Python, C언어, Java등 다양한 언어에서 사용한다. 최근에 프론트엔드는 Next.js, 서버는 Python으로 구성된 모노레포 프로젝트를 보다가 Makefile을 발견했다.Makefile은 Java에서는 Maven이나 Gradle, Javascript에서는 NPM script등의 빌드 도구로 대체할 수 있다.Makefile 구성Target: 빌드할 파일 또는 수행할 작업의 이름Dependency: 타겟이 의존하는 파일이나 타겟, 종속성이 변경되면 타겟을 다시 빌드함Command: 타겟을 빌드하기 위해 수행할 명령.PHONY: ma..
.envrc 파일이란?.envrc 파일은 direnv와 함께 사용되며, 특정 디렉터리에 진입할 때 자동으로 환경 변수를 설정할 수 있도록 한다. 사용예시.env.sample프로젝트에 필요한 환경변수를 .env.sample 파일에 작성해서 예시 코드를 제공한다.SENTRY_DNS=http://sentry.dom/your-urlSLACK_BOT_TOKEN=your-slack-url.envrc루트에 .envrc 파일을 만들고, .env.sample 파일을 참고해서 환경변수를 정의한다.direnvvscode를 사용중이라면, direnv 플러그인을 설치한다.플러그인 설치 후, 환경변수를 로딩할 프로젝트에서 아래 명령어를 입력하면, 해당 프로젝트 진입시 자동으로 프로젝트의 환경변수를 불러와서 설정해준다!direnv..
인증 과정서버: 로그인 성공시, 서버에서 refresh token은 httpOnly 헤더에, access token은 클라이언트에 전송합니다.클라이언트: access token을 로컬스토리지에 저장합니다. 이후 요청시 헤더에 access token을 추가해서 요청을 보냅니다.클라이언트: access token의 기간이 만료되었다면(서버의 응답이 401인 경우) refresh token 갱신 요청을 보냅니다.서버: refresh token을 검증한 뒤, access token, refresh token을 갱신합니다. 갱신된 access token을 클라이언트에 전송합니다.클라이언트: 갱신된 access token을 로컬스토리지에 저장합니다.유효기간 및 저장 위치 Access Token: 30분~1시간, 클..
문제 상황토이프로젝트를 진행하면서 pnpm으로 프로젝트의 구조를 모노레포로 변경을 하였다. 하지만 모노레포로 변경한 이후, 설정한 eslint가 vscode 에디터에서 eslint가 정상적으로 동작하지 않았다.모노레포로 구성한 디렉터리 구조.├── packages/│ ├── frontend│ └── backend/│ ├── src│ ├── .eslintrc.js│ ├── .prettierrc│ └── package.json├── package.json├── pnpm-workspace.yaml└── pnpm-workspace.lock.yaml트러블슈팅(1) vscode에서 린트에러가 뜨지 않아도 eslint가 정상적으로 동작하는지 확인// eslint 에러..
Session 기반 인증 기존의 시스템에서는 Session 기반의 인증 방식을 사용했습니다. 사용자가 로그인을 하면, 이에 대한 인증 정보를 서버에 저장하게되는데 이 것을 Session이라고 부릅니다. 인증 정보를 서버에 저장하기때문에 stateful한 인증 방식이라고 합니다. Session의 제약 서버 기반의 인증은, 사용자로부터 요청을 받으면 사용자의 인증 정보를 유지하기 위해 세션을 유지해야합니다. 일반적으로 세션은 메모리에 저장하거나, 서버의 부하를 방지하기 위해서 데이터베이스에 저장하기도 합니다. 트래픽이 많은 경우, 서버 또는 데이터베이스에 부하를 줄 수 있으며, 이를 해결하기 위해 서버를 확장하거나 세션을 분산할 수 있는 시스템을 구축해야합니다. 예를 들어, 인증을 처리하는 서버가 분산되어있..