본문 바로가기

server

(53)
kafka를 이용한 서버 아키텍처 구현 저번 글에 이어서 kafka를 이용해서 구현해 보겠습니다.  (지난번 포스팅 : https://uiandwe.tistory.com/92183 )큐 역활을 했던 redis 대신 kafka를 사용하는 이유는 대용량 메시지처리와 함께 팬아웃(갑작스런 대규모 요청) 등을 빠르고 안전하게 서비스 하기 위해 kafka를 사용합니다. 단점으로는 kafka를 운영하는 시간과 filaover 지점이 늘어나게 됩니다. 주요 구성 요소FastAPI 웹 서버: 요청을 받아 작업을 kafka 토픽에 넣습니다.kafka: Queue 역할을 합니다.Worker: 토픽에서 작업을 가져와 처리합니다. 처리 완료확인을 위해 redis에 데이터를 넣습니다.redis : 캐시 역활 Kafka는 메시지를 처리한 후 상태를 저장하는 기능이 기..
redis pub/sub을 이용한 서버 아키텍처 구현 Pub/Sub(발행-구독) 아키텍처는 비동기적 데이터 흐름과 확장성이 필요한 상황에서 주로 사용됩니다.일반적으로 다음의 상황들에 적용하게 됩니다.- 이벤트 기반 시스템 ( 이메일/푸시 알림 , 데이터 실시간 업데이트)- 마이크로서비스 간 통신 (주문 처리 시스템, 사용자 인증)- 스트리밍 데이터 처리- 데이터 동기화- 장애 복구 및 재처리 (결제 시스템)- 확장 가능한 비동기 작업 처리 ( 백그라운드 처리 )  이번 예제에서는 Redis와 Python의 FastAPI를 사용하여 비동기 웹 서버를 만들고 관리하는 설정을 구성할 수 있습니다. 아래는 전체적인 구성 예제입니다.주요 구성 요소FastAPI 웹 서버: 요청을 받아 작업을 Queue에 넣습니다.Redis: Queue 역할을 합니다.Worker: R..
[25 Computer Papers] 4. Cassandra - A Decentralized Structured Storage System https://www.cs.cornell.edu/projects/ladis2009/papers/lakshman-ladis2009.pdf  1 introductionCassandra는 확장성과 가용성을 달성하기 위해 잘 알려진 기술을 종합적으로 사용합니다. Cassandra는 페이스북의 편지함 검색 기능의 스토리지 요구 사항을 충족하도록 설계되었습니다.-매우 높은 쓰기 처리량, 하루 수십억 건의 쓰기 작업-사용자 수에 따른 확장성  2 Related Work성능, 가용성, 내구성을 위한 데이터 분산은 파일 시스템과 데이터베이스 커뮤니티에서 널리 연구되어 왔습니다. Cassandra에 영향을 준 기존 시스템에 대해 이야기해 보겠습니다.-Ficus와 Coda는 일관성을 희생하는 대신 고가용성을 위해 파일을 복..
레디스 트러블 슈팅 메모리 문제레디스 명령어 중 메모리 사용량을 확인 할수 있는 memory 명령어가 있다. 기존에도 info 명령어로 확인할수 있지만, memroy 명령어를 통해 더 자세히 확인 할수 있다.https://redis.io/docs/latest/commands/memory-usage/https://redis.io/docs/latest/commands/memory-stats/  127.0.0.1:6379> meory help(error) ERR unknown command 'meory', with args beginning with: 'help'127.0.0.1:6379> memory help 1) MEMORY [ [value] [opt] ...]. Subcommands are: 2) DOCTOR 3) ..
[25 Computer Papers] 3. Bigtable: A Distributed Storage System for Structured Data https://storage.googleapis.com/gweb-research2023-media/pubtools/4443.pdf   IntroductionBigtable은 대규모(페타바이트 단위) 구조화된 데이터를 관리하기 위한 분산형 스토리지 시스템입니다.웹 인덱싱, Google 어스, Google 파이낸스 등 Google의 많은 프로젝트에서 Bigtable에 데이터를 저장하고 있습니다. Bigtable은 광범위한 적용성, 확장성, 고성능, 고가용성 등 여러 가지 목표를 달성했습니다.여러 면에서 Bigtable은 데이터베이스와 유사하지만 완전한 관계형 데이터 모델을 지원하지는 않습니다. 클라이언트에 데이터 레이아웃과 형식에 대한 동적 제어를 지원하는 간단한 데이터 모델을 제공합니다.빅테이블 스키마 매..
[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)  끝