목록분류 전체보기 (114)
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보다 더 빠르고 효율적인 직렬화와 역직렬화를 제공한다. (전송속도 향상 및 대역폭 절약)다양한 언어 지원클라이언트와 서버 간의 양방향 스트리밍을 지원한다. 따라서..
의존성 충돌하나의 컴퓨터에서 Python으로 개발된 여러 개의 프로젝트 돌리는 경우, 의존성이 충돌할 수 있다.프로젝트 1: package v3.x 사용프로젝트 2: Django v4 사용이유두 개의 프로젝트가 동일한 컴퓨터에 설치된 하나의 파이썬 실행 환경(runtime)을 사용하므로, 파이썬 패키지를 서로 공유하게 되기 때문에 의존성이 충돌할 수 있다.pip 패키지 매니저의 동작 방식파이썬은 기본적으로 패키지 설치시 pip을 사용하는데 시스템 전역으로 패키지를 설치한다.pip으로 패키지 설치시, 컴퓨터의 site-packages 디렉터리에 안에 설치된다.npm이나 maven의 경우, 패키지 매니저가 프로젝트별로 패키지 설치를 지원 (의존성이 충돌하지않음)pip 명령어pip -Vpip install [..
데이터 파이프라인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..
수직적 규모 확장(Scale up) vs 수평적 규모 확장(Scale out)수직적 규모 확장(Scale up)의 문제점한대의 서버에 CPU나 메모리를 무한대로 증설할 방법은 없기에 한계가 있다.장애에 대한 자동복구(failover)나 다중화(re-dundancy)방안을 제시하지않는다. 따라서 서버에 장애가 발생하면 어플리케이션은 중단된다.로드 밸런서역할트래픽 분산: 클라이언트 요청을 여러 서버에 분산시켜 각 서버의 부하를 줄인다.고가용성: 서버 장애 시에도 서비스를 지속할 수 있도록 Health Check 및 Fail Over를 수행한다.성능 향상: 서버 간의 트래픽을 균등하게 분배하여 응답 시간을 줄이고 성능을 최적화한다.종류소프트웨어 로드 밸런서: NGINX, Apache Traffic Server..
인증 과정서버: 로그인 성공시, 서버에서 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시간, 클..