본문 바로가기

server

(56)
[25 Computer Papers] 2. Dynamo: Amazon’s Highly Available key-value Store https://www.allthingsdistributed.com/files/amazon-dynamo-sosp2007.pdf  요약key-value 스토어가 필요해서 그냥 구현함 (조인 같은 기능이 필요없었음)시스템은 분산되어야 하며 하드웨어에 제약을 받지 않으면서 영속성은 필요했음해시링에 구현 전략 설명서동시 업데이트시 데이터 충돌을 피하기 위해 낙관적락으로 구현  ABSTRACTAmazon의 핵심 서비스 중 일부가 '상시 가동'을 제공하기 위해 사용하는 고가용성 키-값 스토리지 시스템인 Dynamo의 설계와 구현에 대해 설명한다. 이러한 수준의 가용성을 달성하기 위해 Dynamo는 특정 장애 시나리오에서 일관성을 희생한다.  1 introuductionAmazon은 전 세계 여러 데이터 센터에 위치한..
[25 Computer Papers] 1. The Google File System https://static.googleusercontent.com/media/research.google.com/ko//archive/gfs-sosp2003.pdf요약GFS는 엄청나게 많은 데이터를 보유해야 하는 구글의 핵심 데이터 스토리지와 구글 검색 엔진을 위해 최적화.파일들은 64MB로 고정된 청크로 데이터가 추가되거나 읽기 위주의 작업이며, 데이터 유실에 대한 설계를 중심으로 레이턴시가 길더라도 높은 스루풋에 중점을 두었다.  1. Introduction첫째, 파일 시스템은 저렴한 비용으로 구축된 수백, 수천 대의 스토리지 머신으로 구성되며 비슷한 수의 클라이언트 머신에서 액세스 된다. 일부 구성 요소는 언제든 작동하지 않을 수 있고, 일부는 현재 장애가 발생해도 복구되지 않을 수 있어 지속적인 ..
docker 빌드 실패한 이미지 지우기 (많이!) 어... 빌드 실패 이미지가 이렇게나 쌓여있었다..하나하나 삭제하려 하니 귀찬아서 전체 삭제가 가능한지 찾아보았다 다음 명령어로 none으로 되어 있는 image id만 출력된다.$ docker images -f "dangling=true" -q   $ docker rmi $(docker images -f "dangling=true" -q)  끝
[k8s] nginx pod * 200개를 띄울수 있나요? k8s (minikube) 에서 과연 몇개의 pod까지 띄울수 있을까?나는 순진하게 무한대라고 생각했다. 정확히는 서버의 자원이 허락하는한 무한히 띄울수 있다고 생각했다.일단 테스트 시작 apiVersion: apps/v1kind: Deploymentmetadata: name: smallest-web-serverspec: replicas: 2 # 두 개의 Pod를 생성합니다. selector: matchLabels: app: web-server template: metadata: labels: app: web-server spec: containers: - name: web-server image: nginx:alpin..
rabbitmq 심화 (persistent / cluster) rabbitmq persistentdelivery_mode는 RabbitMQ에서 메시지의 배달 모드를 지정하는 데 사용되는 옵션. 이 옵션은 메시지를 메모리에만 저장할지 아니면 디스크에 영구적으로 저장할지를 결정Transient메시지를 메모리에만 저장. RabbitMQ가 종료되면 메모리에 있는 메시지는 모두 삭제됨메시지는 RabbitMQ 서버의 메모리에서만 보관되므로 메모리가 부족한 경우 메시지 손실이 발생할 수 있음메시지를 가장 빠르게 처리하고자 할 때 사용Persistent메시지를 디스크에 저장. RabbitMQ가 종료되어도 메시지는 디스크에 보존됨.메시지를 디스크에 영구적으로 저장하여 메시지 손실을 방지할 수 있으며 재부팅 후에도 메시지가 유지되므로 안정성을 높일 수 있다.메시지의 지속성이 중요하고..
rabbitmq start docker-compose.yamlversion: "3"services: rabbitmq: image: rabbitmq:3-management-alpine container_name: rabbitmq-stream volumes: - ./etc/:/etc/rabbitmq/ - ./data/:/var/lib/rabbitmq/ - ./logs/:/var/log/rabbitmq/ ports: - "5672:5672" - "15672:15672" environment: RABBITMQ_ERLANG_COOKIE: "RabbitMQ-test" RABBITMQ_DEFAULT_USER: "admin" RABBITMQ_DE..
[k8s] argocd (minikube에 올려보기) 저번 포스팅에 올렸던 간단한 helm을 체험한 후 이번엔 minikube에 argocd를 통해 CI/CD 자동 배포화가 가능하도록 해보았습니다. 이번 포스팅의 배포 아키텍처입니다. 로컬에 docker 이미지를 빌드 후 github에 변경된 코드(helm)를 커밋합니다. Push 함과 동시에 helm chart에 버전 업데이트를 진행한다. 그러면 Argo에 등록된 Helm Chart 저장소에서 yaml resource를 읽게 되고 코드에 맞춰 쿠버네티스에 배포가 진행된다. 1. argocd install $ kubectl create namespace argocd $ kubectl apply -n argocd -f https://raw.githubusercontent.com/argoproj/argo-cd/..
[k8s] fastapi + helm (minikube에 올려보기) helm 공부하기 위해 간단하게 fastapi를 minikube에 올리는 예제를 해보았다. 이번 포스팅에서는 (1)로컬에서 docker를 실행해보고, (2) minikube에서 실행시켜 보고, (3) 마지막으로 helm으로 실행시켜 보았다. 내용이 꽤 길다. 해당 포스팅의 모든 소스는 github에 올려두었다. https://github.com/uiandwe/fastapi_k8s 1. 로컬에서 docker를 실행 k8s에 올리기 위해 위해 docker부터 만들어야 한다. fastapi 서버 부분이다. 간단하게 호출히 리턴하도록만 만들었다. app/main.py from typing import Union from fastapi import FastAPI app = FastAPI() @app.get("/"..