패킷 1. 데이터가 오고 갈때 큰 고민없이 쓰곤 했던 단어인 '패킷'은 엄밀하게는 IP에 한정해서 사용하는 게 좋다. 추가적으로 TCP에는 '세그먼트'가, 이더넷에는 '프레임'이 대응한다. 세그먼트는 말 그대로 분할된 조각을 생각할 수 있는데, 이 때 물리적 통신을 위한 이더넷 프레임의 크기 제한과 각 계층의 헤더(와 푸터)를 고려해야 한다. TCP/IP...
커넥션 풀 1. 실무에서 데이터베이스 커넥션을 생성하고 반환하는 구조가 비효율적이어서 연결이 끊기는 문제가 있었는데, 이 커넥션 풀 또한 이중화에 관점에서 이해할 수 있다는 점이 흥미로웠다. 정확히는 애플리케이션이 DB 서버의 IP나 포트를 알지 못하더라도 (소켓) 연결을 미리, 넉넉히 준비하는 데이터 소스(커넥션 풀) 명만 알면 되므로 속도 관점에서 효율...
서버 1. 기존 한 대로만 운영되는 all-in-one 느낌의 컴퓨터를 호스트, 메인 프레임이라 부른다고 한다. 서버는 상대적으로 '특화된 작업자'로 정의할 수 있을 것 같다. 웹 서버, WAS 서버, DB 서버 모두 '서버'이지만, 각각 정적 파일을 서빙하고/DB에 질의해서 동적 파일을 서빙하고/데이터를 저장 및 서빙하는 데 특화된 요소들인 것이다. 2....
조립 1 .하드웨어의 대역이나 전송 속도 등의 개념이 기술적으로 와닿는 것은 아니어서, 해당 챕터를 읽으면서 몇 달전에 드래곤볼로 컴퓨터를 조립했을 때가 생각났다. 내가 모은 많은 부품들 중에서도 가장 핵심은 CPU와 메모리라고 할 수 있을 것 같다. 지리적으로도 그렇고 데이터 전송 속도 면에서도 그렇다. 2. 메모리 컨트롤러와 각 채널을 생략하자면 둘은 ...
프로세스, 쓰레드 1. 뒷 챕터부터 읽기 시작한 나로써는 OS 공간에 표시한 하얀 박스가 어떤 의미인지 의아했는데, 메모리 공간이었다. 그리고 프로세스를 httpd 프로세스란 것을 보면 기본적으로 JAVA - 아파치를 염두에 둔 구조라고 할 수 있을 것 같다. 2. 이 때 아파치 웹 서버의 httpd는 각각이 프로세스인 반면, AP 서버의 JVM 프로세스 ...
해시 테이블 1. 빽빽한 연결로 탐색이 빠른 대신 데이터 추가/삭제에 불리한 배열(더 정직한 자료 구조로 느껴졌다.)과 탐색은 조금 느리지만 느슨한 연결로 데이터 추가/삭제에 유리한 연결 리스트의 장점을 활용한 것이 해시 테이블이라고 한다. 두 요소 중에서도 연결 리스트의 시작 지점 데이터를 갖고 있는 배열이 더 높은 위상을 갖는 것처럼 보인다. 2. 해시...
저널링 1. 트랜잭션 관련 이력을 저널이라고 할 때 책에서는 커널에서의 저널링과 DB에서의 저널링이 소개되었다. DB 서버 프로세스를 제외하고 두 쓰기 작업자(LGWR/DBWR)는 각각 로그 버퍼/버퍼 캐시를 끼고 일하고 있다. 실질적으로 데이터 변경은 캐시에서 먼저 발생하고 두 쓰기 작업자 중에서는 LGWR가 먼저 일하게 된다.(커밋) DBWR의 경우에는...