'ComputerScience' 카테고리의 글 목록
본문 바로가기

ComputerScience

(80)
[Network] 소켓 식별 방식과 레이어 별 데이터 정보 (segment, datagram, packet, frame, payload, multiplexing, demultiplexing) TCP/IP stack의 통신 과정Application 레이어: 데이터의 생성과 헤더 추가브라우저에서 서버로 요청을 보낼 때, 데이터는 Application 레이어에서 생성됩니다. 이 레이어에서는 HTTP와 같은 어플리케이션 프로토콜을 사용하여 서버에 요청을 전달합니다.데이터와 메시지: Application 레이어에서 송수신되는 데이터는 Data 또는 Message라고 부릅니다.페이로드: Application 레이어의 데이터와 어플리케이션 헤더 부분을 합쳐 Payload라고 합니다. 이는 실제 데이터 전송 시 다른 계층에서도 동일하게 사용되는 개념입니다.Transport 레이어: 데이터의 전달과 식별데이터는 Application 레이어를 지나 Transport 레이어로 내려갑니다. 이 레이어는 프로세스 ..
[Network] 프로토콜과 OSI 7 layer, 그리고 네트워크의 기능들이 어떻게 구조화 돼서 동작하는지 네트워크의 개념과 기능네트워크는 컴퓨터나 기타 기기들이 리소스를 공유하거나 데이터를 주고 받기 위해 유선 혹은 무선으로 연결된 통신 체계를 뜻합니다.  이 네트워크는 다양한 기능들이 있습니다.네트워크는 애플리케이션 목적에 맞는 통신 방법을 제공합니다.신뢰할 수 있는 데이터 전송 방법도 제공합니다.네트워크 간의 최적의 통신 경로를 결정합니다.결정된 경로를 바탕으로 목적지로 데이터를 전송합니다.이 때 여러 노드들을 거치게 될텐데, 이 노드들도 네트워크가 결정합니다.프로토콜그런데 이런 네트워크 통신 기능들이 제대로 동작하기 위해서는 참여자들 사이에 약속된 통신 방법이 있어야 합니다. 왜냐하면 상대방과 나 사이에서 이루어지기 때문입니다. 만약 내가 한국어로 말을 하고 상대가 영어로 말한다면, 대화가 되지 않을 ..
[Database] PostgreSQL의 데드 튜플 문제 https://www.cs.cmu.edu/~pavlo/blog/2023/04/the-part-of-postgresql-we-hate-the-most.html The Part of PostgreSQL We Hate the Most // Blog // Andy Pavlo - Carnegie Mellon UniversityThis article was written in collaboration with Bohan Zhang and originally appeared on the OtterTune website. There are a lot of choices in databases (897 as of April 2023). With so many systems, it’s hard to know what to..
[Database] 캐시 압력(Cache Pressure) 캐시 압력(Cache Pressure)캐시 압력이란?캐시 압력은 캐시 메모리가 부족해지면서 발생하는 문제를 말한다.캐시가 가득 차서 더 이상 새로운 데이터를 저장할 수 없고, 이로 인해 기존 데이터를 삭제해야 하는 상황이 발생할 수 있다.캐시 압력이 증가하면, 캐시 항목을 삭제하거나 새 데이터를 캐시에 저장하는 동안 대기 상태가 발생할 수 있다.캐시 압력 예시Spring에서 사용자별 페이징 데이터를 캐시에 저장하는 경우, 특히 대규모 사용자와 많은 데이터를 처리하는 시스템에서는 캐시 메모리가 빠르게 소진될 수 있으며, 이는 “캐시 쓰로틀링(Cache Throttling)” 또는 “캐시 압력(Cache Pressure)” 상황을 초래할 수 있다.이러한 상황은 캐시가 가득 차서 새로운 데이터를 저장할 수 ..
[Database] 분산 트랜잭션과 2PC, SAGA 패턴 분산 트랜잭션분산 트랜잭션은 여러 독립적인 시스템, 데이터베이스, 또는 서비스에 걸쳐 하나의 트랜잭션을 수행해야 할 때 발생한다.트랜잭션은 원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)을 보장한다(ACID 특성). 그러나 MSA 환경에서는 여러 마이크로서비스가 각기 다른 데이터베이스를 사용하거나, 다른 물리적 위치에 있을 수 있기 때문에, 이러한 ACID 특성을 분산 환경에서 보장하는 것은 매우 복잡하다.MSA에서의 분산 트랜잭션MSA에서는 각 마이크로서비스가 독립적으로 배포되고 운영되기 때문에, 여러 서비스 간의 데이터 일관성을 유지해야 하는 상황에서 자연스럽게 분산 트랜잭션의 필요성이 발생할 수 있다. 예를 들어, 한 서비스에서 ..
[Database] CQRS와 분산 읽기/쓰기 DB 구성, 데이터 일관성 모델 (최종 일관성, 강력한 일관성) CQRS (Command and Query Responsibility Segregation)CQRS는 명령(Command)과 조회(Query) 작업의 책임을 분리하는 패턴이다. 이 패턴의 핵심 아이디어는 다음과 같다.명령(Command): 데이터의 상태를 변경하는 작업을 담당한다. 예를 들어, 데이터베이스에 새로운 데이터를 삽입하거나 기존 데이터를 수정하는 작업이다.조회(Query): 데이터를 읽는 작업을 담당한다. 데이터베이스에서 데이터를 조회하여 사용자에게 제공하는 역할을 한다.이 패턴에서 명령과 조회는 서로 다른 모델로 구현될 수 있으며, 심지어 서로 다른 데이터 저장소를 사용할 수도 있다.기존 데이터베이스 모델의 문제점데이터베이스의 쿼리와 업데이트에 동일한 데이터 모델을 사용하는 경우, 아래와 같..
[Network] 웹 서버와, 웹 애플리케이션 서버 (+ Apache, Apache Tomcat, Nginx) 웹 서버와 웹 애플리케이션 서버(WAS)의 개념은 다소 다릅니다. 이 글에서는 웹 서버와 웹 애플리케이션 서버의 차이를 설명하고, 어떤 종류가 있는지 소개하고자 합니다.네트워크와 인터넷네트워크네트워크는 두 개 이상의 컴퓨터나 장치가 서로 데이터를 주고받기 위해 연결된 시스템이다. 네트워크는 다양한 크기와 형태로 존재할 수 있다.LAN (Local Area Network): 제한된 지역 내의 네트워크로, 예를 들어 사무실이나 가정 내의 네트워크가 이에 해당한다.WAN (Wide Area Network): 넓은 지리적 범위를 아우르는 네트워크로, 여러 도시나 국가를 연결할 수 있다.MAN (Metropolitan Area Network): 한 도시나 대도시 지역을 커버하는 네트워크이다.PAN (Persona..
[Database] DBCP (DB connection pool)과 hikariCP, MySQL을 기준으로 백엔드 애플리케이션이 API 요청을 받으면 종종 데이터를 검색하거나 조작하기 위해 데이터베이스와 상호작용해야 합니다. 이 상호작용은 데이터베이스에 쿼리를 보내고 데이터베이스가 쿼리에 응답하는 과정을 포함합니다. 데이터를 처리한 후 애플리케이션은 API 요청자에게 응답을 보냅니다. 백엔드와 데이터베이스 간의 통신은 TCP(Transmission Control Protocol)를 통해 이루어집니다. TCP는 데이터 전송에서 높은 신뢰성을 제공하기 때문에 선택됩니다. TCP 연결을 설정하는 과정에는 연결을 열기 위한 3-way handshake와 연결을 닫기 위한 4-way handshake가 포함됩니다. TCP는 신뢰할 수 있는 통신을 보장하지만, 쿼리를 실행할 때마다 Connection을 열고 닫는 과정은..