그림으로 공부하는 IT인프라 구조 - 4

2021. 9. 29. 10:25이론 공부

이번에도 책 "그림으로 공부하는 IT인프라 구조" 를 이어서 정리 해보도록 하겠습니다.

 

캐시 ( cache )

- 캐시는 임시 저장소를 의미한다.

- 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다

- 데이터 재사용을 전제로 한다

 

- 사용자가 특정한 요청을 했을 때, 해당 데이터가 캐시에 있는지 먼저 확인을 한다. 있다면 캐시에 있는 데이터를 반환하고, 없다면 서버에 요청을 하게 된다. 그렇기 때문에 데이터에 고속으로 액세스할 수 있다

- 실제 데이터에 대한 액세스 부하를 줄일 수 있다

 

캐시에 적합한 시스템

1. 참조 빈도가 높은 데이터

2. 캐시의 데이터가 손실돼도 문제가 없는 시스템

 

캐시에 부적합한 시스템

1. 데이터 갱신 빈도가 높은 시스템

2. 대량의 데이터에 액세스하는 시스템

 

주의할 점

- 설계 시 어떤 데이터를 캐시하는 것이 효과적인지를 검토해야 한다.

- 시스템 가동 직후 등에는 캐시에 데이터가 없기 떄문에, 원하는 성능이 나오지 않을 수 있다

- 캐시 계층이 늘어나기 때문에, 시스템 성능 문제나 데이터 불일치 문제가 발생한 경우는 문제 발생을 야기한 용의자가 늘어난다

- 캐시의 데이터가 손실되는 경우를 대비해서 복구 순서를 설계 시에 확립해야 한다

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

 

끼어들기

- 어떤 원인으로 인해 지금 하고 있는 일을 중단하고 급히 다른 일을 하는 것을 의미한다.

- 급한 일을 먼저 하도록 CPU에 알리는 중요한 역할

- 끼어들기는 급한 일이 생겨서 지금 진행 중인 일을 중단하고 급한 일을 끝낸 후에 다시 원래 일을 진행하는 것이다. 일하는 동안에 전화가 와서 일을 중단하고 전화를 받은 후 다시 하던 일을 진행하는 것과 같다

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

 

폴링

- 폴링은 정기적으로 질의하는 것을 가리킨다.

- 질의 방향이 단방향 이다

- 질의는 일정 간격을 따라 정기적으로 발생한다.

 

장점

- 반복(루프)만 하면 되기에 프로그래밍이 쉽다

- 상대가 응답하는지 확인할 수 있다

- 모아서 일괄적으로 처리할 수 있다

 

적합한 처리

1. 일정 간격으로 처리를 실행하면 좋은 처리

2. 감시

 

부적합한 처리

1. 상태가 아닌 입력 내용에 따라 실행 내용을 변경하는 처리

ex) 키보드는 키를 누른 '상태' 가 아닌 입력한 '내용' 에 따라 처리해야 하기 때문에 끼어들기가 더 적합하다

2. 처리 우선순위를 정해야 하는 처리

- 일정 간격으로 처리가 실행되기 때문에 우선순위를 정할 수 없음

 

핑퐁

- 몇 번이고 왕복해야 하는 상황을 '핑퐁' 이라고 부른다.

- 물건(데이터)를 운반할 때는 상자에 넣으면 효울적으로 관리할 수 있다.

- 운반하는 양에 따라 상자 크기를 선택하면 효율적으로 운반할 수 있다.

- 운반하고자 하는 데이터의 크기(양) 에 따라 적합한 상자를 선택하여야 한다.

ex) OS 블록 크기와 데이터베이스 블록 크기가 다를 경우, 최소 공배수를 통해서 빈 공간이 없도록 데이터를 운반하는 것이 효율적이다.

 

저널링

- 트랜잭션이나 매일 갱신되는 데이터의 변경 이력을 '저널' 이라고 한다.

- 이러한 '저널' 을 남겨 두는 것을 '저널링' 이라고 한다.

ex) 언제, 어디서, 무엇을 했는지 기록하는 것.

 

특징

- 데이터 자체가 아닌 처리(트랜잭션) 내용을 기록한다

- 데이터 일관성이나 일치성이 확보되면 필요 없어진다

- 데이터 복구 시 롤백(rollback), 롤포워드(rollforward) 에 이용된다

 

장점

- 시스템 장애 시 복구가 빠르다

- 데이터 복제보다도 적은 리소스를 소비해서 데이터를 보호할 수 있다

 

적합한 시스템

- 데이터 갱신이 발생하는 시스템

 

부적합한 시스템

- 데이터 안정성보다 성능을 요구하는 시스템

 

- 롤백은 저널을 읽어서 실제 데이터 정보를 과거로 되돌리는 처리

- 롤포워드는 저널을 읽어서 실제 데이터 정보를 앞으로 진행시키는 처리

※ 롤백과 롤포워드는 트랜잭션 단위로 실행된다.

 

복제

- 복사본을 만드는 것을 의미

 

특징

- 장애 시 데이터 손실을 예방할 수 있다

- 복제를 이용한 부하분산이 가능하다

 

장점
- 사용자가 데이터에 액세스할 때 복제한 것이라는 것을 의식할 필요가 없다

- 백업과 달리 실제 데이터가 복제 데이터와 실시간을 동기화된다

 

적합한 시스템

- 데이터 손실을 허용하지 않고 장애 시 복구 속도가 빨라야 하는 시스템

- 데이터 참조와 갱신 부분이 나뉘어져 있으며 참조가 많은 시스템

 

부적합한 시스템

- 데이터 갱신이 많은 시스템

 

주의사항

- 복제 위치가 많으면 갱신이 많은 시스템과 같이 복제 오버헤드가 높아진다

- 실제 데이터와 복제 데이터를 완전히 일치시키고 싶으면 복제 데이터의 쓰기 완료처리를 보장해야 한다. 이 경우 시스템 응답이 악화될 수 있다

- 시스템 유지관리나 장애 시에는 복제 데이터도 고려해야 하기 때문에 설계나 운용 난이도가 높아질 수 있다

- 복제 데이터와 실제 데이터의 차이가 커지면 그 차이를 채우기 위한 시간이나 성능도 고려해야 한다

 

마스터-슬레이브

- 주종 관계를 카리킨다. 명령하는 쪽과 명령을 받는 쪽의 관계라고 할 수 있다.

- 이와 반대되는 개념은 "피어 투 피어" 이다

 

특징

- 상호 접속 관계의 일종으로, 한 사람이 관리자가 돼서 모든 것을 제어한다

 

장점

- 관리자가 한 명이기 때문에 구현이 쉽다

- 슬레이브 간 처리를 동기화할 필요가 없기 때문에 통신량이 줄어든다

 

 단점

- 마스터가 없어지면 관리를 할 수 없다 ( 작업 인계 구조가 필요 )

- 마스터의 부하가 높아진다

 

압축

- 쓸데없는 공간을 줄이는 것. ( 이미 'zip 파일' 로 익숙하게 사용중 )

ex) 이불을 장농에 넣을 때 이불에 있는 공기를 없애는 것.

 

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

- 같은 패턴이 어느 정도 있느냐에 따라 압축률이 달라진다.

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

 

장점

- 데이터 크기를 줄이는 것

- 네트워크 경유의 데이터 전송 등 I/O 속도가 느린 환경에서 미리 압축해서 전송할 경우 전체적인 처리 시간을 줄일 수 있다.

 

단점
- 처리 시간이 걸린다는 것

디지털 데이터의 '낭비' 는 어떤 것일까?

- 디지털 데이터에서 교환하는 것은 '정보' 다.

- '정보' 의 낭비를 막으면 압축을 할 수 있다.

 

- '자신에게 필요없는 정보' or '이미 알고 있는 정보' 를 의미 없는 정보라고 한다.

ex) Central Processing Unit 이 정식 명칭이지만, 이를 줄여서 CPU 라고 부른다. 이러한 것도 정보의 압축이라고 볼 수 있다.

 

오류 체크 / 오류 수정

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

- '오류 수정' 은 자동으로 복구하는 것을 가리킴

 

장점

- 상위 계층에서의 오류 관리 없이 데이터 일치성을 일정 수준 보장할 수 있다

 

단점

- 체크 기능에 의한 리소스 부하 상승, 알고리즘 복잡화 등