Infra

인프라 응용 이론

5.1 캐시(cache)

5.1.1 캐시란?

일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다.
데이터 재사용을 전제로 한다.

데이터가 실제 데이터와 캐시라는 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다.
설계 시에는 어떤 데이터를 캐시하는 것이 효과적인지를 검토해야 한다.

시스템 가동 직후 등에는 캐시에 데이터가 없기 때문에 원하는 성능이 나오지 않을 수 있다.
캐시의 데이터가 손실되는 경우를 대비해서 복구 순서를 설계 시에 확립해야 한다.

쓰기 데이터를 캐시할 때 캐시가 여러 개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생하지 않도록 주의해야 한다.

  • 적합한 시스템
    • 참조 빈도가 높은 데이터
    • 캐시의 데이터가 손실돼도 문제가 없는 시스템
  • 부적합한 시스템
    • 데이터 갱신 빈도가 높은 시스템
    • 대량의 데이터에 액세스하는 시스템

5.2 끼어들기(interrupt)

키보드 입력 등의 특정 이벤트가 발생했을 때 CPU에 이것을 알려서 해당 이벤트에 대응하는 처리를 끝낸 후 원래 하던 처리를 계속하는 것.

5.3 폴링(polling)

질의 방향이 단방향이다.
질의는 일정 간격을 따라 정기적으로 발생한다.
반복(루프)만 하면 되기에 프로그래밍이 쉽다.

상대가 응답하는지 확인할 수 있다.
모아서 일괄적으로 처리할 수 있다.
네트워크를 경유한 폴링일 때는 처리 지연 시간을 줄이기 위해 폴링 간격을 너무 짧게 잡으면 트래픽 양이 증가하므로 주의가 필요하다.
또한, 서버의 리소스 소비도 늘어난다.

  • 적합한 처리
    • 일정 간격으로 처리를 실행하는 좋은 처리
    • 감시
  • 부적합한 처리
    • 상태가 아닌 입력 내용에 따라 실행 내용을 변경하는 처리
    • 처리 우선순위를 정해야 하는 처리

5.4 핑퐁(pingpong)

예를 들어, 물건을 상자에 넣어서 나를 때 적절한 크기의 상자를 사용하면 쉽게 나를 수 있다.
그런데 상자가 너무 작아서 짐을 운반하기 위해 몇 번이고 왕복해야 하는 상황을 ‘핑퐁’이라 한다.

  • 처리량 중시
    • 큰 상자는 대량의 데이터를 빠르게 운반할 수 있다.
    • (오라클의 ‘db file scattered read’)
  • 지연 시간 중시
    • 작은 상자는 소량의 데이터를 빠르게 운반할 수 있다.
    • (오라클의 ‘db file sequential read’)

5.5 저널링(journal)

저널은 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 가리킨다.
저널을 남겨두는 것을 저널링이라 한다.
(오라클의 Redo Log Buffer)

데이터 자체가 아닌 처리(트랜잭션) 내용을 기록한다.
데이터 일관성이나 일치성이 확보되면 필요 없어진다.
데이터 복구 시 롤백(rollback), 롤포워드(rollforward)에 이용된다.

저널 데이터는 메모리의 버퍼에 일단 저장된다.
이 정보가 디스크에 기록되지 않으면 장애 시에 잃을 수 있다.
이 때문에 시스템 요건에 따라 버퍼의 디스크 기록 시점을 검토, 조정해야 한다.
하지만 기록 빈도가 많으면 오버헤드가 높아지기 때문에 절충해서 검토해야 한다.

저널은 트랜잭션 단위로 일치성을 보증하기 때문에 트랜잭션 도중에 장애가 발생하면 종료되지 않은 트랜잭션은 파괴된다.
하나의 트랜잭션 단위가 크면 트랜잭션 도중에 장애가 발생할 가능성이 높다.
따라서 트랜잭션이 길어지지 않도록 설계해야 한다.

  • 적합한 시스템
    • 데이터 갱신이 발생하는 시스템
  • 부적합한 시스템
    • 데이터 안정성보다 성능을 요구하는 시스템

5.6 복제(replication)

장애시 데이터 손실을 예방할 수 있다.
복제를 이용한 부하분산이 가능하다.

사용자가 데이터에 액세스할 때 복제한 것이라는 것을 의식할 필요가 없다.
백업과 달리 실제 데이터가 복제 데이터와 실시간으로 동기화된다.

복제 위치가 많으면 갱신이 많은 시스템과 같이 복제 오버헤드가 높아진다.
실제 데이터와 복제 데이터를 완전히 일치시키고 싶으면 복제 데이터의 쓰기 완료 처리를 보장해야 한다.
이 경우 시스템 응답이 악화될 수 있다.

시스템 유지관리나 장애 시에는 복제 데이터도 고려해야 하기 때문에 설계나 운용 난이도가 높아질 수 있다.
복제 데이터와 실제 데이터의 차이가 커지면 그 차이를 채우기 위한 시간이나 성능도 고려해야 한다.

  • 적합한 시스템
    • 데이터 손실을 허용하지 않고 장애 시 복구 속도가 빨라야 하는 시스템.
    • 데이터 참조와 갱신 부분이 나뉘어져 있으며 참조가 많은 시스템.
  • 부적합한 시스템
    • 데이터 갱신이 많은 시스템

5.7 마스터-슬레이브(master-slave)

마스터-슬레이브는 상호 접속 관계의 일종으로, 한 사람이 관리자가 돼서 모든 것을 제어한다.
마스터-슬레이브의 반대가 피어 투 피어(peer-to-peer)
마스터-슬레이브와 피어 투 피어의 장점만 조합해서 이용하는 경우가 오라클의 RAC이다.

  • 장점
    • 관리자가 한 명이기 때문에 구현이 쉽다.
    • 슬레이브 간 처리를 동기화할 필요가 없기 때문에 통신량이 줄어든다.
  • 단점
    • 마스터가 없어지면 관리를 할 수 없다(작업 인계 구조가 필요).
    • 마스터의 부하가 높아진다.

5.8 압축

압축의 기본은 ‘중복 패턴 인식’과 그것을 ‘변경’하는 것

압축의 장점은 크기를 줄이는 것.
단점은 처리 시간이 걸린다는 것.

압축한 데이터를 원래대로 복원할 수 있는 가역 압축과 이미지나 음성 데이터 등에 있는 사람이 인식할 수 없는 부분을 생략하는 비가역 압축이 있다.

5.9 오류 체크/오류 수정

오류 체크: 디지털 데이터의 오류를 스스로 확인하고, 파손되었을 때 이를 감지하는 것을 의미한다.

오류 수정: 자동으로 복구하는 것을 가리킨다.  오류 검출은 주로 패리티 비트(parity bit)를 사용한다.

  • 장점
    • 상위 계층에서의 오류 관리 없이 데이터 일치성을 일정 수준 보장할 수 있다.
  • 단점
    • 체크 기능에 의한 리소스 부하 상승, 알고리즘의 복잡화 등.

Leave a Reply