본문 바로가기

분류

(1202)
샤딩에서 데이터 동기화 메커니즘 및 장애조치 샤딩에서 데이터 동기화 메커니즘은 여러 샤드에 분산된 데이터를 일관성 있게 유지하기 위한 방법입니다. 주요 메커니즘은 다음과 같습니다:리플리케이션:각 샤드의 데이터를 다른 노드에 복제하여 데이터 손실을 방지하고 읽기 성능을 향상시킵니다.주 샤드와 보조 샤드 간의 데이터 동기화를 통해 일관성을 유지합니다.2단계 커밋 (2PC):분산 트랜잭션을 처리할 때 사용되는 프로토콜로, 모든 샤드에서 트랜잭션이 성공적으로 완료되거나 모두 실패하도록 보장합니다.준비 단계와 커밋 단계로 나누어 트랜잭션을 처리합니다.Paxos/Raft:분산 시스템에서 합의를 이루기 위한 알고리즘으로, 여러 샤드 간의 데이터 일관성을 유지합니다.리더 노드가 트랜잭션을 제안하고, 다수의 팔로워 노드가 이를 승인하여 일관성을 보장합니다.이벤트 ..
브라우저 캐싱 (HTTP 헤더 설정) 브라우저 캐싱은 웹 브라우저가 웹 페이지의 리소스(예: HTML, CSS, JavaScript, 이미지 등)를 로컬 디스크에 저장하여, 동일한 리소스에 대한 요청이 있을 때 서버로부터 다시 다운로드하지 않고 로컬에서 빠르게 로드할 수 있도록 하는 기술이다. 이를 통해 페이지 로드 시간을 단축하고 서버 부하를 줄일 수 있다.브라우저 캐싱은 주로 HTTP 헤더를 통해 제어된다. 대표적인 HTTP 캐싱 헤더는 다음과 같다:Cache-Control: 캐싱 동작을 제어하는 가장 중요한 헤더이며, 다양한 디렉티브를 포함할 수 있다.max-age: 리소스가 캐시될 최대 시간(초 단위).no-cache: 리소스를 캐시하지만, 사용하기 전에 항상 서버에 유효성을 확인.no-store: 리소스를 전혀 캐시하지 않음.pub..
Ansible과 Terraform을 활용한 K8S 예제 계획Terraform: 클라우드 제공자 (예: AWS, GCP, Azure)에서 Kubernetes 클러스터를 프로비저닝한다.Ansible: Kubernetes 클러스터에 애플리케이션을 배포합니다.Terraform 단계Kubernetes 클러스터를 프로비저닝하기 위한 Terraform 구성 파일을 생성한다.Terraform 구성을 초기화하고 적용한다.Ansible 단계Kubernetes 마스터 노드가 포함된 인벤토리 파일을 생성한다.Kubernetes 클러스터에 애플리케이션을 배포하기 위한 플레이북을 생성한다.Terraform 구성# main.tfprovider "aws" { region = "us-west-2"}resource "aws_eks_cluster" "k8s_cluster" { name ..
샤딩에서 분산트랙잭션 관리 샤딩에서 분산 트랜잭션을 관리하는 방법은 여러 가지가 있습니다. 대표적인 방법으로는 다음과 같은 것들이 있다:Two-Phase Commit (2PC):Prepare Phase: 모든 샤드에 트랜잭션 준비 요청을 보낸다. 모든 샤드가 준비되었다고 응답하면 다음 단계로 진행한다.Commit Phase: 모든 샤드에 커밋 요청을 보낸다. 만약 어떤 샤드에서라도 실패하면 롤백 요청을 보낸다.Three-Phase Commit (3PC):CanCommit Phase: 모든 샤드에 트랜잭션을 커밋할 수 있는지 물어본다.PreCommit Phase: 모든 샤드가 커밋 가능하다고 응답하면, 프리커밋 요청을 보낸다.DoCommit Phase: 모든 샤드에 커밋 요청을 보낸다.Sagas:트랜잭션을 여러 개의 작은 트랜잭션으..
K8S에서 Service의 주요 역할 Kubernetes에서 Service는 여러 Pod 간의 네트워크 통신을 추상화하여 안정적인 네트워크 엔드포인트를 제공하는 역할을 한다. 이는 다음과 같은 의미를 가진다:추상화된 네트워크 엔드포인트: Service는 Pod의 IP 주소와 포트를 추상화하여 단일 엔드포인트(예: DNS 이름)를 제공한다. 이를 통해 클라이언트는 Pod의 실제 IP 주소를 알 필요 없이 Service의 엔드포인트를 통해 통신할 수 있다.로드 밸런싱: Service는 여러 Pod에 대한 로드 밸런싱을 수행한다. 클라이언트가 Service에 요청을 보내면, Service는 요청을 적절한 Pod로 분배한다. 이를 통해 트래픽이 고르게 분산되고, 특정 Pod에 과부하가 걸리는 것을 방지할 수 있다.Pod의 동적 생성 및 삭제 처리:..
AES (Advanced Encryption Standard), RSA (Rivest-Shamir-Adleman)를 활용한 암호화 AES (고급 암호화 표준)유형: 대칭 키 암호화키 크기: 128, 192, 또는 256 비트블록 크기: 128 비트작동 방식: 동일한 키를 사용하여 고정 크기 블록의 데이터를 암호화 및 복호화사용 사례: 파일 암호화, VPN, SSL/TLS 등 데이터 저장 및 전송 보안에 일반적으로 사용RSA (리베스트-샤미르-애들먼)유형: 비대칭 키 암호화키 크기: 일반적으로 2048 또는 4096 비트블록 크기: 키 크기에 따라 가변적작동 방식: 암호화 및 복호화를 위해 공개 키와 개인 키 쌍을 사용. 공개 키는 데이터를 암호화하고, 개인 키는 데이터를 복호화사용 사례: SSL/TLS와 같은 프로토콜에서 안전한 데이터 전송, 디지털 서명, 키 교환 메커니즘에 일반적으로 사용대칭키 암호화키 사용: 동일한 키를 사용하..
디스크 캐싱 (Disk Caching) 디스크 캐싱은 데이터를 디스크에서 읽거나 디스크에 쓰는 속도를 향상시키기 위해 사용되는 기술이다. 디스크 캐싱은 주로 다음과 같은 방식으로 작동한다:읽기 캐시: 자주 읽히는 데이터를 메모리에 저장하여 디스크 접근을 줄인다. 이를 통해 데이터 접근 속도를 높일 수 있다.쓰기 캐시: 데이터를 디스크에 쓰기 전에 메모리에 임시로 저장한다. 이를 통해 여러 쓰기 작업을 하나로 묶어 디스크에 쓰는 횟수를 줄일 수 있다.디스크 캐싱의 주요 구성 요소는 다음과 같다:캐시 메모리: 자주 사용되는 데이터를 저장하는 고속 메모리이다.캐시 관리자: 어떤 데이터를 캐시에 저장할지, 언제 캐시에서 데이터를 제거할지 결정하는 알고리즘을 관리한다.캐싱 알고리즘의 예로는 LRU(Least Recently Used), LFU(Leas..
Helm 차트를 사용하여 Kubernetes 애플리케이션을 패키징, 구성 및 배포 Helm 차트를 사용하여 Kubernetes 애플리케이션을 패키징, 구성 및 배포하는 방법은 다음과 같다:Helm 설치:curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bashHelm 차트 생성:helm create mychart차트 구성:mychart/values.yaml 파일을 수정하여 애플리케이션의 기본 값을 설정한다.차트 패키징:helm package mychart차트 저장소에 업로드 (선택 사항):helm repo index .차트 배포:helm install myrelease mychart배포된 릴리스 확인:helm list릴리스 업데이트:values.yaml 파일을 수정한 후:helm upgrade myre..