1. 캐시
사용 빈도가 높은 데이터를 고속으로 액세스할 수 있는 위치에 두는 것을 캐시라 합니다.
특징
· 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장합니다.
· 데이터 재사용을 전제로 합니다.
캐시는 데이터에 고속으로 액세스할 수 있으며 실제 데이터에 대한 액세스 부하를 줄일 수 있습니다.
하지만 이러한 캐시에 주의할 점이 있습니다.
· 데이터가 실제 데이터와 캐시라는 이중 구조로 저장되기 때문에 리소스 소비가 늘어납니다.
· 설계 시에는 어떤 데이터를 캐시하는 것이 효과적인지를 검토해야 합니다.
· 시스템 가동 직후 등에는 캐시에 데이터가 없기 때문에 원하는 성능이 나오지 않을 수 있습니다.
· 캐시의 데이터가 손실되는 경우를 대비해서 복구 순서를 설계 시에 확립해야 합니다.
· 갱신 데이터를 캐시할 때 캐시가 여러 개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생하지 않도록 주의해야 합니다.
적합한 데이터
|
부적합한 데이터
|
참조 빈도가 높은 데이터
|
데이터 갱신 빈도가 높은 시스템
|
캐시의 데이터가 손실돼도 문제가 없는 시스템
|
대량의 데이터에 액세스하는 시스템
|
2. 끼어들기
키보드 입력 등의 특정 이벤트가 발생했을 때 CPU에 이것을 알려서 해당 이벤트에 대응하는 처리를 끝낸 후 원래 하던 처리를 계속하는 것을 끼어들기라 합니다.
끼어들기에는 여러 종류가 있습니다. 정기적으로 해야 할 일을 알려주는 타이머 끼어들기, 데이터를 메모리에 모두 읽었다는 것을 CPU에게 알려주는 끼어들기, 현재 동작 중인 프로그램에 중대한 에러가 발생했을 때 급하게 프로그램 프로세스를 정지시키는 예외 처리 등이 있습니다.
※ 끼어들기 외에 폴링 방법을 사용하면?
CPU가 정기적으로 폴링을 해서 입출력 장치 상태를 확인하는 방법도 있지만, 폴링 간격이 길면 디스크 I/O가 완료되었더라도 금방 알아차리지 못합니다. 반대로, 간격을 짧게 하면 폴링을 자주 하기 때문에 CPU를 쓸데없이 많이 사용하게 됩니다. CPU 동작 속도에 비해 입출력 장치의 상태 갱신 빈도가 높지 않습니다. 따라서 폴링보다 끼어들기를 이용해서 제어하는 것이 효율적이기 때문에 끼어들기를 채택하고 있다.
3. 폴링
정기적으로 질의하는 것을 폴링이라 합니다.
반복(루프)만 하면 되기에 프로그래밍이 쉽습니다. 또한 상대가 응답하는지 확인할 수 있으며, 모아서 일괄적으로 처리할 수 있습니다.
특징
· 질의 방향이 단방향입니다.
· 캐시의 데이터가 손실돼도 문제가 없는 시스템입니다.
해당 폴링을 이용할 때 주의해야 할 점이 있습니다.
네트워크를 경유한 폴링일 때는 처리 지연 시간을 줄이기 위해 폴링 간격을 너무 짧게 잡으면 트래픽 양이 증가하므로 주의가 필요합니다.
또한, 서버의 리소스 소비도 늘어납니다.
적합한 처리
|
부적합한 처리
|
일정 간격으로 처리를 실행하는 좋은 처리
|
상태가 아닌 입력 내용에 따라 실행 내용을 변경하는 처리
|
감시
|
처리 우선순위를 정해야 하는 처리
|
4. 핑퐁
데이터 버퍼라는 큰 상자가 있다고 가정을 해봅시다. 해당 데이터 버퍼의 크기는 제한이 되어있기 때문에 지정된 장소에 모든 데이터를 보내는데 여러번 왕복해야 합니다. 이를 핑퐁이라 합니다.
전송할 때 처리량을 중시한다면 큰 상자에 대량의 데이터를 빠르게 운반할 수 있습니다.
만약 지연 시간을 중시한다면 작은 상자는 소량의 데이터를 빠르게 운반할 수 있습니다.
5. 저널링
저널은 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 말합니다. 이러한 저널을 남겨두는 것을 저널링이라 합니다.
해당 저널링은 아래와 같은 특징을 갖고 있습니다.
· 데이터 자체가 아닌 처리(트랜잭션) 내용을 기록합니다.
· 데이터 일관성이나 일치성이 확보되면 필요 없어집니다.
· 데이터 복구 시 롤백(rollback), 롤포워드(rollforward)에 이용됩니다.
저널링의 주의점은 다음과 같습니다.
저널 데이터는 메모리의 버퍼에 일단 저장됩니다. 이 정보가 디스크에 기록되지 않으면 장애 시에 잃을 수 있습니다. 때문에 시스템 요건에 따라 버퍼의 디스크 기록 시점을 검토 및 조정을 해야합니다. 하지만 기록 빈도가 많으면 오버헤드가 높아지기 때문에 절충해서 검토해야 합니다.
저널은 트랜잭션 단위로 일치성을 보증하기 때문에 트랜잭션 도중에 장애가 발생하면 종료되지 않은 트랜잭션은 파괴됩니다.
하나의 트랜잭션 단위가 크면 트랜잭션 도중에 장애가 발생할 가능성이 높기 때문에 트랜잭션이 길어지지 않도록 설계해야 합니다.
데이터 갱신이 발생하는 시스템에 사용하는데 적합합니다.
|
데이터를 갱신하는 시스템에서는 트랜잭션 내용을 기록해 둠으로써 데이터 안정성을 높일 수 있습니다.
|
데이터 안전성보다 성능을 요구하는 시스템에 사용하기에는 부적합합니다.
|
성능을 요구하는 시스템 저널링을 하면 기록 처리 시 오버헤드가 발생하기 때문에 오버헤드를 줄일 방법을 검토해야 합니다.
|
6. 복제
DB나 저장소 등에서 지주 사용되는 기술로, 복사본을 만드는 것을 복제라합니다.
장애가 발생할 경우 복사본을 이용하여 데이터 손실을 예방할 수 있으며, 동일 데이터를 여러 서버에 복제하기에 부하분산이 가능합니다.
해당 기술로 사용자가 데이터에 액세스할 때 복제한 것이라는 것을 의식할 필요가 없으며, 백업과 달리 실제 데이터가 복제 데이터와 실시간으로 동기화되는 장점을 갖고 있습니다.
복제를 사용할 때 아래와 같은 주의 사항이 있습니다.
· 복제 위치가 많으면 갱신이 많은 시스템과 같이 복제 오버헤드가 높아집니다.
· 실제 데이터와 복제 데이터를 완전히 일치시키고 싶으면 복제 데이터의 쓰기 완료 처리를 보장 해야하지만 시스템 응답이 악화될 수 있습니다.
· 시스템 유지관리나 장애 시에는 복제 데이터도 고려해야 하기 때문에 설계나 운용 난이도가 높아질 수 있습니다.
· 복제 데이터와 실제 데이터의 차이가 커지면 그 차이를 채우기 위한 시간이나 성능도 고려해야 합니다.
적합한 시스템
|
부적합한 시스템
|
데이터 손실을 허용하지 않고 장애 시 복구 속도가 빨라야 하는 시스템
데이터 참조와 갱신 부분이 나뉘어져 있으며 참조가 많은 시스템 |
데이터 갱신이 많은 시스템
|
7. 마스터 - 슬레이브
마스터 - 슬레이브는 주종 관계를 의미합니다.
마스터-슬레이브는 상호 접속 관계의 일종으로, 한 사람이 관리자가 돼서 모든 것을 제어합니다.
장점
|
단점
|
관리자가 한 명이기 때문에 구현이 쉽습니다.
|
마스터가 없어지면 관리를 할 수 없습니다. (작업 인계 구조 필요)
|
슬레이브 간 처리를 동기화할 필요가 없기 때문에 통신량이 줄어듭니다.
|
마스터의 부하가 높아집니다.
|
마스터 - 슬레이브의 반대는 피어 투 피어(pear to pear) 입니다.
마스터 - 슬레이브와 피어 투 피어 장점만을 조합하여 이용한 RAC가 존재합니다.
RAC에서는 여러 대의 물리 서버가 클러스터 구성으로 연결되어 있습니다. 특정 서버가 마스터가 되는 것이 아니라, 모두가 대등한 관계라서 특정 서버가 다운되어도 데이터베이스 전체 가용성에는 영향을 주지 않습니다.
8. 압축
디지털 데이터 압축의 기본은 ‘중복 패턴 인식’ 과 그것을 ‘변경’ 하는 것입니다.
압축한 데이터를 원래대로 복원할 수 있는 가역 압축과 이미지나 음성 데이터 등에 있는 사람이 인식할 수 없는 부분을 생략하는 비가역 압축이 있습니다.
압축의 장점은 크기를 줄이는 있다는 점이지만, 단점으로 처리 시간이 걸린다는 것입니다.
9. 오류 체크 / 오류 수정
데이터 교환이 많이 발생하면서, 의도하지 않을 때에 정보 손실 및 고장이 날 경우가 있습니다. 이를 방지하는데 사용되는 구조입니다.
오류 검출은 패리티 비트라는 추가 비트를 부여하는 방법을 자주 사용합니다.
오류 체크
디지털 데이터의 오류를 스스로 확인하고, 파손되었을 때 이를 감지하는 것을 의미합니다.
오류 수정
자동으로 복구하는 것을 가리킵니다.
장점
|
단점
|
상위 계층에서의 오류 관리 없이 데이터 일치성을 일정 수준 보장할 수 있습니다.
|
체크 기능에 의한 리소스 부하가 상승합니다.
알고리즘이 복잡할 수 있습니다. |
'Develop > Infra' 카테고리의 다른 글
무정지를 위한 인프라 구조 (0) | 2022.05.08 |
---|---|
인프라 네트워크 구조 (0) | 2022.05.08 |
인프라 이론 (0) | 2022.05.08 |
3계층형 시스템 (0) | 2022.05.08 |
인프라 아키텍처 (0) | 2022.05.08 |