5.1 캐시 (cache)

  • 캐시는 임시 저장소를 의미한다.
  • 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.
  • 데이터 재사용을 전제로 한다.
  • 장점
    • 데이터에 고속으로 액세스 할 수 있다.
    • 실제 데이터에 대한 액세스 부하를 줄일 수 있다.
  • 적합한 시스템
    • 참조 빈도가 높은 데이터
    • 캐시의 데이터가 손실돼도 문제가 없는 시스템 (ex) 스트리밍 데이터)
  • 부적합한 시스템
    • 데이터 갱신 빈도가 높은 시스템
    • 대량의 데이터에 액세스하는 시스템

주의할 점

  • 데이터가 실제 데이터와 캐시라는 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다.
  • 설계 시에는 어떤 데이터를 캐시하는 것이 효과적인지를 검토해야 한다.
  • 시스템 가동 직후 등에는 캐시에 데이터가 없기 때문에 원하는 성능이 나오지 않을 수 있다.
  • 캐시 계층이 늘어나기 때문에 시스템 성능 문제나 데이터 불일치 문제가 발생한 경우는 문제 발생을 야기한 용의자가 늘어난다.
  • 캐시의 데이터가 손실되는 경우를 대비해서 복구 순서를 설계 시에 확립해야 한다.
  • 갱신 데이터를 캐시할 때 캐시가 여러 개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생하지 않도록 주의해야한다.

 

 

5.2 끼어들기 (인터럽트, interrupt)

  • 어떤 원인으로 인해 지금 하고 있는 일을 중단하고 급히 다른일을 하는 것
  • CPU에서 애플리케이션 프로세스나 스레드 처리를 하고 있더라도 키보드로 정보가 입력되면 인터럽트가 발생한다.
    • CPU가 짧은 순간 다른 처리를 한 후 다시 원래 처리를 한다.
  • 인터럽트는 어떤 일이 발생하면 연락하는 '이벤트 주도' 구조이다.

 

 

5.3 폴링 (Polling)

  • 정기적으로 질의하는 것을 가리킨다.
    • 정기적을 질의함으로써 상대가 어떤 상태인지, 어떤 요구를 가지고 있는지 등을 알 수 있다.
    • 과거에는 데이터 전송을 제어하는 것을 의미했지만 요새는 좀더 범용적 의미로 사용된다.
  • 특징
    • 질의 방향이 단방향이다.
    • 질의는 일정 간격을 따라 정기적으로 발생한다.
  • 장점
    • 반복(루프)만 하면 되기에 프로그래밍이 쉽다.
    • 상대가 응답하는지 확인할 수 있다.
    • 모아서 일괄적으로 처리할 수 있다.
  • 적합한 처리
    • 일정 간격으로 처리를 실행하면 좋은 처리
    • 감시
  • 부적합한 처리
    • 상태가 아닌 입력 내용에 따라 실행 내용을 변경하는 처리 (이 경우에는 인터럽트를 사용하자.)
    • 처리 우선순위를 정해야 하는 처리 (일정 간격으로 반복되는 처리이기 때문에 우선순위를 정할 수 없다.)

 

 

5.4 I/O 크기

  • 1회의 I/O에 필요한 사이즈, 즉 데이터를 주고 받을 때 사용되는 I/O의 크기를 의미한다.
  • 특징
    • 물건을 운반할 때는 상자에 넣으면 효율적으로 관리할 수 있다.
    • 운반하는 양에 따라 상자 크기를 선택하면 효율적으로 운반할 수 있다.

 

 

5.5 저널링(Journaling)

  • 저널은 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 가리킨다.
    • 저널을 남겨두는 것을 저널링이라고 한다.
  • 특징
    • 데이터 자체가 아닌 처리(트랜잭션) 내용을 기록한다.
    • 데이터 일관성이나 일치성이 확보되면 필요 없어진다.
    • 데이터 복구 시 롤백, 롤포워드에 이용된다.
  • 사용처
    • 리눅스의 ext3 파일 시스템
    • 오라클 DB (WAL이라고 부르기도 함)
  • 장점
    • 시스템 장애 시 복구가 빠르다.
    • 데이터 복제보다도 적은 리소스를 소비해서 데이터를 보호할 수 있다.
  • 적합한 시스템
    • 데이터 갱신이 발생하는 시스템
  • 부적합한 시스템
    • 데이터 안정성보다 성능을 요구하는 시스템

주의할 점

  • 저널 데이터는 메모리의 버퍼에 일단 저장된다.이 때문에 시스템 요건에 따라 버퍼의 디스크 기록 시점을 검토, 조정해야 한다.
  • 하지만 기록 빈도가 많으면 오버헤드도 높아지기 때문에 정출해서 검토해야 한다.
  • 이 정보가 디스크에 기록되지 않으면 장애 시에 잃을 수 있다.
  • 저널은 트랜잭션 단위로 일치성을 보증하기 때문에 트랜잭션 도중에 장애가 발생하면 종료되지 않은 트랜잭션은 파괴된다.따라서 트랜잭션이 길어지지 않도록 설계해야 한다.
  • 하나의 트랜잭션 단위가 크면 트랜잭션 도중에 장애가 발생할 가능성이 높다.

 

 

5.6 복제 (Replication)

  • 복제는 DB나 저장소 등에서 자주 사용되는 기술이다.
    • 각종 재해를 대비해 예비 시스템에 데이터를 복제하는 경우가 있다.
    • 대규모 웹 서비스에서는 대량의 사용자 접속에 대비해서 동일 데이터를 여러 서버에 복제해서 부하분산을 하기도 한다.
  • 특징
    • 장애 시 데이터 손실을 예방할 수 있다.
    • 복제를 이용한 부하분산이 가능하다.
  • 장점
    • 사용자가 데이터에 액세스할 때 복제한 것이라는 것을 의식할 필요가 없다.
    • 복제 데이터를 캐시처럼 사용할 수 있다.
  • 적합한 시스템
    • 데이터 손실을 허용하지 않고 장애 시 복구 속도가 빨라야 하는 시스템
    • 데이터 참조와 갱신 부분이 나위어져 있으며 참조가 많은 시스템
  • 부적합한 시스템
    • 데이터 갱신이 많은 시스템

주의 사항

  • 복제 위치가 많으면 갱신이 많은 시스템과 같이 복제 오버헤드가 높아진다.
  • 실제 데이터와 복제 데이터를 완전히 일치시키고 싶으면 복제 데이터의 쓰기 완료 처리를 보장해야 한다.
  • 이 경우 시스템 응답이 악화될 수 있다.
  • 시스템 유지관리나 장애 시에는 복제 데이터도 고려해야 하므로 설계나 운용 나이도가 높아질 수 있다.
  • 복제 데이터와 실제 데이터의 차이가 커지면 그 차이를 채우기 위한 시간이나 성능도 고려해야 한다.

 

 

5.7 마스터 - 워커

  • 마스터 워커는 주종관계를 가리킨다.
    • 반대로 상호 관리라는 의미에서는 P2P 관계도 성립한다.
  • 특징
    • 마스터 워커는 상호 접속 관계의 일종으로 한 사람이 관리자가 돼서 모든 것을 제어한다.
    • 마스터 워커의 반대가 피어 투 피어다.
  • 장점
    • 관리자가 한 명이기 때문에 구현이 쉽다.
    • 워커 간 처리를 동기화할 필요가 없기 때문에 통신량이 줄어든다.
  • 단점
    • 마스터가 없어지면 관리를 할 수 없다.
    • 마스터의 부하가 높아진다.

 

 

5.8 압축

  • 디지털 데이터는 '압축'을 할 수 있다.
    • zip 파일 외에도 여러 부분에서 압축은 사용되고 있다.
    • 압축의 목적은 쓸모없는 공간(낭비되는 공간)을 제거하는 것이다.
  • 디지털 데이터 압축의 기본은 '중복 패턴 인식'과 그것을 '변경'하는 것이다.
  • 가역 압축
    • 원래 상태로 복구할 수 있는 압출
  • 비가역 압축
    • 원래 상태로 복구할 수 없는 압축 방식
    • 이미지나 음성 데이터 등에 있는 사람이 인식할 수 없는 부분을 생략하기 위해 사용된다.

5.9 오류 검출

  • 데이터 교환 시 데이터가 망가질 수 있는데 이것을 방지하기 위해 오류 검출이라 불리는 구조가 있다.
  • 데이터가 망가지는 원인
    • 통신 중에 데이터 파손 (전기적인 잡음)
    • 칩에서의 데이터 파손

+ Recent posts