본문 바로가기

전체 글

(54)
대량 트래픽 처리 시스템 설계 전략 명절 기차 예매 트래픽 급증을 처리하는 시스템을 어떻게 설계하면 될까? 목차 고려사항1. 시스템 안정성: 트래픽 폭증 시 시스템이 지속적으로 정상 작동해야 한다.2. 선착순 처리 보장3. 확장성: 이벤트 트래픽 급증을 처리하도록 시스템을 확장 가능하게 설계해야 한다.[ 확장성 ]정의: 시스템이 사용자 수, 데이터 크기, 트래픽이 증가할 때도 성능을 유지하면서 확장될 수 있는 능력특징- 수평적 확장(Scale-Out)- 수직적 확장(Scale-Up)탄력성(Elasticity): 트래픽이 많을 때 자원을 늘리고 트래픽이 줄어들면 자원을 줄요 비용 최적화목표: 트래픽이 아무리 늘어나도 시스템이 버티고, 사용자 경험을 유지 4. 리소스 보호: 시스템의 핵심 자원(서버, 데이터베이스, 네트워크 등)이 과도한 부하..
증분 백업 목차 증분 백업개념: 데이터를 백업하는 방법 중 하나로, 이전 백업 이후에 변경된 데이터만 백업하는 방식 특징백업 속도변경된 데이터만 작업하여 빠르다.첫 번째 백업(전체 백업)이 가장 오래 걸리고, 이후 증분 백업은 상대적으로 빠르다.복구 과정복구 시에는 전체 백업과 모든 증분 백업 데이터를 순서대로 합쳐야 한다.복구 시간이 오래 걸릴 수 있다.저장 공간 효율성변경된 데이터만 저장하여 전체 백업보다 저장 공간을 절약할 수 있다.  전체 백업 vs 증분 백업 vs 차등 백업   증분 백업의 리스크1. 복구 과정이 복잡함복구 시에는 전체 백업(Full backup)과 모든 증분 백업 데이터를 차례로 적용해야 한다.2. 중간 백업 파일 손실 위험증분 백업은 각 파일이 의존적이기 때문에 중간에 하나라도 증분 백..
ORM과 트랜잭션 목차 트랜잭션- 데이터베이스에서의 연속적인 작업 단위를 의미- ACID 특성을 보장해야함원자성 (Atomicity): 트랜잭션은 하나의 작업 단위로 처리되며, 모든 작업이 성공하거나 모두 실패해야 한다일관성 (Consistency): 트랜잭션이 시작되기 전과 종료된 후 데이터베이스는 일관된 상태여야 한다일관된 상태정의: 데이터베이스가 모든 규칙을 지키며 오류 없이 정확한 데이터를 담고 있다ex) - 무결성 제약 조건: PK는 고유한 값이다, 외래키는 반드시 참조되는 테이블의  유효한 값을 가진다       - 비즈니스 규칙: 은행 잔고는 음수일 수 없다격리성 (Isolation): 동시에 여러 트랜잭션이 실행될 때, 각각의 트랜잭션은 다른 트랜잭션의 중간 상태를 볼 수 없다 (트랜잭션 간의 충돌 방지)지..
이벤트 기반 아키텍처(EDA)와 메시지 브로커 목차  이벤트 기반 아키텍처(Event-Driven Architecture, EDA): 시스템의 컴포넌트가 이벤트를 통해 상호 작용하는 소프트웨어 설계 패턴    1) 핵심 개념이벤트상태의 변경. 즉, 데이터의 변경, 생성, 삭제를 통해 발생하는 서비스의 의미있는 변화를 뜻함발행(Publish)과 구독(Subscribe)EDA에서 메시지를 전달하고 수신하는 방식의 핵심 개념 → 느슨한 결합(loose coupling)발행: 특정 이벤트가 발생했음을 알리는 역할 (누가 수신할지 알 필요x)수신: 특정 유형의 이벤트를 수신하고 처리하는 역할, 이벤트가 발행되면 브로커가 이를 구독자에게 전달비동기 처리이벤트는 실시간을 전송되지만, 이를 처리하는 컴포넌트는 독립적으로 실행되므로 느슨한 결합 유지중앙 메시지 브로..
분산 시스템과 CAP 이론 목차 분산 시스템이란?개념: 여러 대의 독립적인 컴퓨터(노드)가 네트워크를 통해 연결되어 하나의 통합된 시스템처럼 동작하는 구조 특징- 각 컴퓨터는 독립적으로 작동하지만, 협력하여 작업을 처리함- 사용자 입장에서는 하나의 시스템처럼 보임- 데이터와 작업이 여러 노드에 분산되어 저장되고 처리됨 목표:성능, 확장성, 신뢰성, 가용성, 유지보수성 등을 향상시키기 위해 여러 개의 독립적인 컴퓨터(노드)가 협력하여 하나의 통합된 시스템처럼 동작하도록 설계됨 성능(Performance)- 네트워크 지연이나 부하 증가에도 효율적으로 요청을 처리할 수 있어야함- 낮은 지연(Latency), 높은 처리량(Throughput) 유지해야함- 로드 밸런싱을 통해 부하를 균등하게 분산 확장성(Scalability)- 수평 확장..
캐시 (Cache Consistency Management VS TTL(Time To Live)) 목차 백엔드에서 캐시 전략의 목표성능 향상리소스 최적화응답 시간 단축부하 분산확장성 개선 ( ex) 분산 캐시 시스템)  캐시 일관성 관리 전략 (Cache Consistency Management)@Cacheable- 주로 읽기 작업에서 사용되며, 메서드 결과를 캐시- 같은 입력값 호출 시, 이미 캐시된 결과를 반환하여 성능을 최적화 @CacheEvict- 쓰기 작업(데이터가 변경되거나 업데이트)에서 사용- 해당 데이터를 삭제하거나 무효화 → 변경된 데이터가 캐시에 남지 않음 적합한 상황① 데이터의 변경 빈도가 높을 때 ② 데이터 일관성이 중요한 경우③ 데이터 변경시 캐시 무효화가 필요한 경우 고려해야할 사항① 데이터 일관성 유지, 데이터 변경 시 캐시를 어떻게 갱신할지 결정 (즉시 갱신 vs 배경 갱..
API Gateway 목차 API Gateway   개념: 클라이언트와 백엔드 서비스 사이에서 요청을 중계하고 관리하는 중앙 관문 역할을 하는 서버나 서비스→ API Gateway를 동록해주면, 모든 클라이언트는 각 서비스의 엔드포인트 대신 API Gateway로 요청을 전달하여 관리가 용이해진다. 사용자가 설정한 라우팅 설정에 따라 각 엔드포인트로 클라이언트를 대리하여 요청하고 응답을 받으면 다시 클라이언트에게 전달하는 프록시(proxy) 역할을 한다.    API Gateway의 역할요청 라우팅: 클라이언트의 요청을 적절한 백엔드 서비스(API)로 전달인증 및 권한 부여: 사용자의 인증 상태와 권한을 확인하여 요청을 필터링부하 분산(Load Balancing): 여러 백엔드 서버에 트래픽을 분산 시켜 성능 최적화 가능요청..
HTTP vs WebSocket 목차 동작 원리HTTP요청-응답(Request-Response)기반 프로토콜, 클라이언트와 서버 간의 단방향 통신① TCP 핸드셰이크② 클라이언트 → 서버: HTTP 요청 전송③ 서버에서 해당 요청 처리④ 서버 → 클라이언트: HTTP 응답 전송⑤ TCP 연결 종료 WebSocket① TCP 핸드셰이크② HTTP 요청을 통한 WebSocket 핸드셰이크Upgrade: websocketConnection: Upgrade  ③ 서버 응답 (Upgrade 승인)④ WebSocket 연결 확립⑤ WebSocket을 통한 양방향 데이터 전송⑥ 클라이언트 또는 서버의 WebSocket 연결 종료  구조적 차이→ HTTP는 요청-응답 기반의 일회성 연결으로 비실시간 통신에 좋다→ WebSocket은 실시간 통신으로 ..