본문 바로가기

분류

(1202)
메모리 캐싱 (Memory Caching) 메모리 캐싱은 자주 사용되는 데이터나 계산 결과를 메모리에 저장하여, 이후 동일한 데이터나 계산이 필요할 때 빠르게 접근할 수 있도록 하는 기술이다. 이를 통해 성능을 향상시키고 응답 시간을 줄일 수 있다. 메모리 캐싱은 다양한 방식으로 구현될 수 있으며, 대표적인 예로는 다음과 같은 것들이 있다:LRU (Least Recently Used) 캐싱: 가장 오랫동안 사용되지 않은 데이터를 제거하는 방식.LFU (Least Frequently Used) 캐싱: 가장 적게 사용된 데이터를 제거하는 방식.TTL (Time To Live) 캐싱: 일정 시간이 지나면 데이터를 자동으로 제거하는 방식.다음은 Python에서 functools.lru_cache를 사용하여 메모리 캐싱을 구현하는 예제이다:from fun..
SAN의 고속 네트워크 기술 (Fibre Channel, iSCSI) 이란? SAN의 고속 네트워크 기술에는 주로 Fibre Channel과 iSCSI가 있다.Fibre Channel (FC):고대역폭: 16Gbps, 32Gbps, 64Gbps 등의 고속 데이터 전송 속도를 지원한다.낮은 지연 시간: 매우 낮은 지연 시간으로 빠른 데이터 전송을 제공한다.전용 네트워크: 전용 스토리지 네트워크로 다른 네트워크 트래픽과 분리되어 성능 저하가 없다.고가용성: 이중화된 경로와 고가용성 아키텍처를 통해 데이터 접근의 신뢰성을 높다.확장성: 필요에 따라 쉽게 확장할 수 있다.iSCSI (Internet Small Computer Systems Interface):TCP/IP 기반: 기존의 이더넷 네트워크를 사용하여 데이터 전송을 수행한다.비용 효율성: 기존 네트워크 인프라를 활용할 수 있어..
MSA에서 서비스 간 통신 오버헤드를 해결하기 위한 방법 서비스 간 통신 오버헤드를 해결하기 위한 방법은 다음과 같다:동기 통신 최소화:REST API 대신 비동기 메시징 시스템 (예: RabbitMQ, Kafka) 사용.비동기 통신을 통해 서비스 간의 의존성을 줄이고 성능을 향상.데이터 직렬화 최적화:JSON 대신 Protobuf, Avro와 같은 더 효율적인 직렬화 포맷 사용.직렬화/역직렬화 과정에서의 오버헤드 감소.네트워크 지연 최소화:서비스 간의 물리적 거리를 최소화.네트워크 인프라 최적화 및 고성능 네트워크 장비 사용.캐싱:자주 사용되는 데이터를 캐싱하여 통신 횟수 감소.Redis와 같은 인메모리 데이터 저장소 사용.API 게이트웨이 최적화:API 게이트웨이를 통해 공통 기능 처리 및 통신 최적화.로드 밸런싱, 라우팅 최적화.서비스 병합:너무 세분화된..
3-Tier Architecture를 Micro Service Architecture로 전환할 때 서비스 분할 전략 3-Tier Architecture를 Microservice Architecture로 전환할 때 서비스 분할 전략은 다음과 같다:도메인 주도 설계 (DDD) 적용:도메인 모델을 기반으로 서비스 경계를 정의한다.Bounded Context를 식별하여 각 컨텍스트를 독립적인 마이크로서비스로 분리한다.기능별 분할:각 기능을 독립적인 서비스로 분리한다.예를 들어, 사용자 관리, 주문 처리, 결제 등을 각각의 마이크로서비스로 분리한다.데이터 분할:각 마이크로서비스가 자체 데이터베이스를 가지도록 한다.데이터베이스를 공유하지 않도록 하여 서비스 간 결합도를 낮춘다.API 게이트웨이 도입:클라이언트 요청을 각 마이크로서비스로 라우팅하는 API 게이트웨이를 도입한다.인증, 로깅, 모니터링 등의 공통 기능을 API 게이트..
NOSQL에서 문서 = RDB의 ROW(행) NOSQL에서 문서란, 데이터를 JSON, BSON, XML 등의 형식으로 저장하는 데이터 구조를 의미한다. 문서형 데이터베이스는 이러한 문서를 기본 단위로 사용하여 데이터를 저장하고 관리한다. 각 문서는 필드와 값의 쌍으로 구성되며, 필드는 문자열, 숫자, 배열, 객체 등 다양한 데이터 타입을 가질 수 있다.RDB(Relational Database)에서 문서에 해당하는 개념은 레코드(Record) 또는 행(Row)이다. RDB에서는 데이터를 테이블의 행으로 저장하며, 각 행은 여러 열(Column)로 구성된다. 문서형 데이터베이스의 문서와 RDB의 레코드는 데이터 저장의 기본 단위라는 점에서 유사하다.예를 들어, RDB에서 다음과 같은 테이블이 있다고 가정하면 아래와 같다.:idnameageemail..
RDB 정규화 정규화(Normalization)는 관계형 데이터베이스에서 데이터를 구조화하는 과정으로, 데이터 중복을 최소화하고 데이터 무결성을 유지하는 데 목적이 있다. 정규화는 여러 단계로 나뉘며, 각 단계는 특정 규칙을 따른다. 주요 정규형(Normal Form)은 다음과 같다:제1정규형(1NF): 모든 열이 원자값(Atomic Value)을 가져야 한다.제2정규형(2NF): 제1정규형을 만족하고, 기본키가 아닌 모든 속성이 기본키에 완전 함수 종속(Full Functional Dependency)이어야 한다.제3정규형(3NF): 제2정규형을 만족하고, 기본키가 아닌 모든 속성이 기본키에 이행적 함수 종속(Transitive Dependency)이 없어야 한다.BCNF(Boyce-Codd Normal Form):..
샤딩에서의 SAGA 패턴 SAGA 패턴과 샤딩은 분산 시스템에서 데이터 일관성과 확장성을 관리하는 데 사용되는 두 가지 개념이다. 이 두 가지는 서로 다른 문제를 해결하지만, 함께 사용될 때 상호 보완적인 역할을 할 수 있다.SAGA 패턴SAGA 패턴은 분산 트랜잭션을 관리하기 위한 패턴이다. 여러 서비스에 걸쳐 있는 트랜잭션을 작은 단위의 로컬 트랜잭션으로 나누고, 각 트랜잭션이 성공적으로 완료되면 다음 트랜잭션을 실행한다. 만약 어떤 트랜잭션이 실패하면, 이전에 완료된 트랜잭션을 취소(보상)하는 방식으로 전체 트랜잭션의 일관성을 유지한다.샤딩샤딩은 데이터베이스의 데이터를 여러 개의 작은 단위(샤드)로 나누어 저장하는 방법이다. 이를 통해 데이터베이스의 확장성을 높이고, 읽기 및 쓰기 성능을 개선할 수 있다. 각 샤드는 독립적..
샤딩을 구현할 때 고려해야할 사항 정리 분산 트랜잭션분산 트랜잭션은 여러 샤드에 걸쳐 있는 데이터베이스 트랜잭션을 일관성 있게 처리하는 방법입니다. 이는 트랜잭션이 여러 데이터베이스 노드에 걸쳐 있을 때, 모든 노드에서 트랜잭션이 성공적으로 완료되거나 모두 실패하도록 보장합니다. 이를 통해 데이터 일관성을 유지할 수 있습니다.샤딩 키 선택균등 분배: 샤딩 키는 데이터가 균등하게 분배되도록 선택해야 한다.쿼리 패턴: 자주 사용되는 쿼리 패턴을 고려하여 샤딩 키를 선택 한다.변경 가능성: 샤딩 키는 자주 변경되지 않는 값이어야 한다.데이터 분배 전략범위 기반 샤딩: 특정 범위의 데이터를 각 샤드에 할당 한다.해시 기반 샤딩: 해시 함수를 사용하여 데이터를 샤드에 분배 한다.지리적 샤딩: 지리적 위치에 따라 데이터를 분배 한다.데이터 일관성 유지강..