[가상 면접 사례로 배우는 대규모 시스템 설계 기초] 1장 ~ 6장
·
📚
1장 사용자 수에 따른 규모 확장성단일 서버 | 데이터베이스 | 수직적 vs 수평적 규모 확장 | 캐시 | CDN | 무상태 웹 계층| 데이터 센터 | 메시지 큐 | 로그, 메트릭, 자동화 | 데이터베이스 규모 확장 1장 사용자 수에 따른 규모 확장성 | Notion단일 서버0123suh.notion.site2장 계략적인 규모 추정2의 제곱수 | 응답지연 값 | 가용성 관계된 수치 | 예제: 트위터 QPS와 저장소 요구량 추정 2장 계략적인 규모 추정 | Notion2의 제곱수0123suh.notion.site3장 시스템 설계 면접 공략법효과적 면접을 위한 4단계 접근법 3장 시스템 설계 면접 공략법 | Notion효과적인 면접을 위한 4단계 접근법0123suh.notion.site4장 처리율 제한..
Redis - 동시성 / 아키텍처
·
📓/데이터베이스
Redis 동시성 처리동시성 이슈데이터 불일치여러 스레드가 동시에 동일한 데이터를 수정데드락 (Deadlock)두 개 이상의 스레드가 서로의 자원을 기다리다가 멈추는 상태라이브락 (Livelock)스레드가 락을 반복적으로 획득하려다 아무런 진전이 없는 상태경쟁 조건동시에 자원에 접근하여 예상하지 못한 결과가 발생하는 상태=> 동시성 제어(: 멀티스레드 환경에서 일관된 데이터 처리를 보장하는 방법) 필요동시성 제어 기법락(Lock)한 스레드가 자원을 사용하는 동안 다른 스레드가 해당 자원에 접근하지 못하도록 막는 기법Mutex (Mutual Exclusion): 가장 기본적인 락/ 하나의 스레드만 자원에 접근할 수 있도록 보장Reentrant Lock: 동일한 스레드가 여러 번 락을 획득할 수 있는 락세마..
Memcached(멤캐시드) vs. Redis(레디스)
·
📓/데이터베이스
Memcached(멤캐시드)사용이 간편한 고성능 인 메모리 데이터 스토어 장점1밀리 초 미만의 응답 시간서버의 주 메모리에 모든 데이터를 유지PostgreSQL, Cassandra 및 MongoDB와 같은 데이터베이스: 데이터 대부분 디스크/SSD 저장인 메모리 데이터 스토어: 반복해서 디스크 왕복할 필요 X → 더 ↑ 작업 처리 + 더 빠른 응답 지원 단순성 및 사용 편의성간단하고 일반적이 되도록 설계 -> 애플리케이션 개발에 사용하기에 쉬우면서 강력다수의 오픈 소스 클라이언트 사용지원되는 언어: Java, Python, PHP, C, C++, C#, JavaScript, Node.js, Ruby, Go 등 확장성분산 및 다중 스레드 아키텍처를 사용하면 손쉽게 확장여러 노드 간에 데이터를 나눌 수 있음..
Kubernetes/ Helm
·
☁️
Kubernetes(쿠버네티스)구글이 컨테이너 운영을 위해 출시한 오픈소스 라이브러리컨테이너 오케스트레이션 플랫폼 여러 IT 자동화 태스크 또는 프로세스를 조정하여 실행하는 것다수의 Docker 컨테이너 관리, 자동으로 배포 및 스케일링, 장애 복구 기능 제공여러 대의 서버(노드)에서 컨테이너 → 클러스터로 묶어 애플리케이션 분산, 필요할 때마다 리소스 할당 → 자동으로 확장 or 축소⇒ Docker: 컨테이너 하나하나 관리/ Kubernetes: 그 컨테이너들 효율적으로 배치하고 관리순서코드 푸시 → CI/CD 파이프라인 트리거(Github Actions)Docker 이미지 빌드 → 이미지 레지스트리에 업로드(Docekr Hub, ECR 등)Kubernetes 클러스터에 배포(kubectl, Helm ..
Docker
·
☁️
서버 단위의 배포전통적인 방식서버(인스턴스) 내에서 동작, 새로운 배포를 위해 인스턴스 전체에 대해 배포 작업 이뤄짐하나의 서버 인스턴스(물리 서버 or VM)에 애플리케이션 직접 설치되고 실행됨이 서버는 OS, 네트워크 설정, 의존성, 런타임 환경 모두 포함/ 애플리케이션 이 환경 위에서 동작단점복잡한 관리: 업데이트나 설정 변경 복잡확장성 제한: 새로운 서버 인스턴스 준비, 동일한 환경 복제 ⇒ 시간 많이 걸리고 리소스 낭비될 수 있음유연성 부족: 하나의 서버에 여러 애플리케이션 설치 ⇒ 충돌 발생할 수 있음/ 환경 분리 어려움컨테이너 단위의 배포Traditional Deployment: 온프레미스 환경Virtualized Deployment: 온프레미스 환경에서 발전 But, 하드웨어를 가상화 → ..
[PlantiFy] 숲 꾸미기 서비스(Item Service) - 서비스 개요 / JPA N+1 문제 및 해결
·
💻/프로젝트
숲 꾸미기 서비스 개요아이템을 캐시로 구매 -> 보유 -> 실제 공간에 배치ex. 싸이월드 미니룸ERD 설계Item (상점 아이템) └─ MyItem (사용자가 보유한 아이템) └─ UsingItem (공간에 배치된 아이템)Item - 상점에 존재하는 아이템상점에서 판매되는 원본 아이템가격, 이미지, 카테고리 등 변하지 않는 정보 관리주요 필드Item- itemId (PK)- name- price- imageUri- category- createdAt- updatedAt 특징사용자와 직접적인 관계 X여러 사용자가 동일한 Item을 여러 개 구매 가능읽기 중심(Read-heavy) 엔티티MyItem - 사용자가 소유한 아이템특정 사용자가 얼마나 많은 아이템을 보유하고 있는지 표현Item과 User..
kimmeoww
빙글빙글 돌아가는 Debug 하루