본문 바로가기

전체 글

(215)
[Architecture]뉴스 피드 시스템설계 개요이 시스템의 핵심은 효율적인 데이터 분배 메커니즘인 'Fanout'에 있습니다. Fanout-on-Write와 Fanout-on-Read 전략을 적절히 조합하여, 수백만 명의 사용자에게 실시간으로 관련성 높은 콘텐츠를 제공할 수 있습니다.이 시스템은 크게 피드 발행과 뉴스 피드 생성 두 가지 주요 프로세스로 구성됩니다. 피드 발행 과정에서는 새로운 콘텐츠를 효율적으로 저장하고 배포하며, 뉴스 피드 생성 과정에서는 개별 사용자에 맞춘 최신 콘텐츠를 신속하게 조합합니다.성능 최적화를 위해 캐싱, CDN, 비동기 처리 등의 기술을 활용하며, 이를 통해 대규모 트래픽과 데이터를 효과적으로 관리합니다.시스템 요구사항뉴스 피드 시스템은 다음과 같은 요구사항을 충족해야 합니다.모바일 및 웹 플랫폼 지원사용자가 새..
[Istio]Configuring istio-ingressgateway with AWS NLB AWS Load Balancer Controller AnnotationsAWS EKS Network Load BalancingIstio Ingress Gateway using Network Load Balancer on EKS개요목표: istio-ingressgateway의 로드밸런서를 CLB에서 NLB로 변경배경: Istio Helm Chart 설치 시 기본적으로 istio-ingressgateway는 AWS CLB로 설정됨주의사항교차 영역 로드밸런싱을 활성화해야 함AWS NLB는 Kubernetes에서 Alpha 기능으로, 프로덕션 환경에서 사용 시 주의 필요Kubernetes Bug #69264로 인해, 동일한 영역에서 Istio를 실행하는 두 개 이상의 Kubernetes 클러스터에서 AWS NL..
[Istio]Configuring istio-ingressgateway with AWS ALB 개요이 설정은 AWS EKS(Elastic Kubernetes Service)에서 Istio의 인그레스 게이트웨이를 AWS Application Load Balancer(ALB)와 함께 사용하는 방법을 설명합니다. 이를 통해 AWS WAF 같은 ALB 전용 서비스를 활용할 수 있습니다.전제 조건AWS LoadBalancer Controller가 클러스터에 설치되어 있어야 합니다.설정 단계1. Service Type 변경기본적으로 Istio Ingress Gateway는 LoadBalancer 타입의 서비스로 설정되어 있어 Classic Load Balancer(CLB)가 자동으로 생성됩니다. ALB를 사용하기 위해 서비스 타입을 NodePort로 변경해야 합니다.istio-gateway Helm 차트의 ..
[Istio]Install istio(istio-base, istio-gateway, istiod) with helm charts 💡아래에서는 istio 설치의 기본적인 내용을 다루고 있습니다. values.yaml 내용을 살펴보고 필요한 내용은 수정하여 사용 부탁드립니다.개요istio-base:역할: Istio의 기본 설정과 CRD(Custom Resource Definitions)를 설치합니다.특징:Istio의 핵심 구성요소를 위한 기반을 제공합니다.CRD를 관리하여 Istio의 커스텀 리소스를 Kubernetes에 등록합니다.istio-gateway:역할: Istio의 ingress gateway를 설정하고 배포합니다.특징:외부 트래픽을 Istio 서비스 메시로 라우팅합니다.로드 밸런서 설정, SSL 종료, 프로토콜 변환 등을 처리합니다.istiod:역할: Istio의 컨트롤 플레인을 배포합니다.특징:서비스 디스커버리, 구성..
[Architecture]아키텍처 설계와 검토의 핵심 원칙 개요현대 소프트웨어 시스템의 복잡성이 증가함에 따라 효과적인 아키텍처 설계와 지속적인 검토의 중요성이 더욱 커지고 있습니다. 이 글에서는 아키텍처링의 필요성, 주요 아키텍처 유형, 그리고 클라우드 환경에서의 아키텍처 검토 원칙에 대해 살펴봅니다. 특히 AWS Well-Architected 프레임워크를 참고하여, 클라우드 기반 시스템 설계 시 고려해야 할 핵심 원칙들을 소개합니다.아키텍처링의 필요성아키텍처링은 시스템의 전체적인 구조와 동작 방식을 설계하는 중요한 과정입니다. 이는 시스템의 성능, 확장성, 유지보수성, 그리고 비용 효율성에 직접적인 영향을 미칩니다.주요 아키텍처 유형모놀리식 아키텍처하나의 독립한 애플리케이션에서 비즈니스 로직을 진행하는 시스템 구성장점:배포나 디버깅이 용이개발 초기 단계에서 ..
[Architecture]알림시스템 설계 개요이 글은 푸시 알림, SMS, 이메일을 통합한 확장 가능한 알림 시스템의 설계와 구현 방법을 다룹니다. 연성 실시간 시스템으로 설계되어 높은 부하에도 대응할 수 있으며, 다양한 단말을 지원합니다.요구사항 분석알림 시스템은 다음 요구사항을 충족해야 합니다:지원 알림 유형: 푸시, SMS, 이메일성능 특성: 연성 실시간(soft real-time) 시스템, 높은 부하 시 약간의 지연 허용지원 단말: iOS, Android, 노트북, 데스크톱사용자 설정: opt-out 기능(사용자가 알림을 받지 않도록하는 기능) 지원확장성: 천만 건의 모바일 푸시, 백만 건의 SMS, 5백만 건의 이메일 처리 가능알림 유형별 지원 방안iOS 푸시 알림iOS 푸시 알림 흐름:알림 제공자 → APNS → iOS 단말알림 제공..
[Architecture]분산 키-값 저장소 설계 개요키-값 저장소는 키-값 데이터베이스라고도 불리는 비 관계형 데이터베이스입니다. 이 저장소에 저장되는 값은 고유 식별자를 키로 가져야 하며, 키와 값 사이의 이런 연결 관계를 "키-값" 쌍이라고 합니다. 키는 유일해야 하며 성능상의 이유로 짧을수록 좋습니다.이 글에서는 다음 연산을 지원하는 키-값 저장소를 설계하고 분석합니다.put(key, value): 키-값 쌍을 저장소에 저장한다.get(key): 인자로 주어진 키에 연결된 값을 꺼낸다.문제 이해 및 설계 범위 확정분산 키-값 저장소 설계 시 고려해야 할 주요 요구사항은 다음과 같습니다:키-값 쌍의 크기는 10KB 이하이다.큰 데이터를 저장할 수 있어야 한다.높은 가용성을 제공해야 한다: 시스템 장애가 있더라도 빨리 응답해야 한다.높은 규모 확장성..
[Architecture]개략적인 규모를 추정하는 방법 목차개략적인 규모 추정의 중요성응답 지연 값의 이해가용성에 관한 핵심 지표실제 예제: 트위터 시스템 규모 추정효과적인 규모 추정을 위한 팁개략적인 규모 추정의 중요성개략적인 규모 추정은 시스템 설계의 핵심 단계 중 하나입니다. 이는 제안된 설계가 요구사항을 충족시킬 수 있는지를 판단하는 데 필수적입니다. 효과적인 추정을 위해서는 다음 요소들에 대한 이해가 필요합니다:2의 제곱수응답 지연(latency) 값가용성 관련 수치이러한 요소들을 이해하고 활용함으로써 더 정확하고 신뢰할 수 있는 시스템 설계를 할 수 있습니다.응답 지연 값의 이해2010년 구글의 제프 딘이 발표한 응답 지연 값은 현대 컴퓨터 시스템의 성능을 이해하는 데 중요한 지표가 되었습니다. 이 값들을 바탕으로 몇 가지 핵심 인사이트를 도출할 ..