1. 캐시(cashe)
- 사용 빈도가 높지만 손실되어도 문제없는 데이터를 고속으로 액세스 할 수 있는 위치에 두는 것.
- 임시 저장소.
- 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장함.
- 데이터 재사용을 전제로 함.
- 데이터에 고속으로 액세스할 수 있음.
- 실제 데이터에 대한 액세스 부하를 줄일 수 있음.
* 활용
- 브라우저 캐시 : 웹서버 접속을 줄이고 브라우저 표시를 고속화함.
-> 캐시한 데이터는 예를 들어 C:\Users\[사용자명]\AppData\Local\Microsoft\Windows\Temporary Internet Files에 저장됨.
- 캐시 서버 : 웹 서버 자체 부하를 줄이는 법. 웹 서버와 클라이언트 사이에 캐시 서버를 배치. 요즘에는 캐시서버를 서버 앞에 두는 대신에 CDN이라는 웹서버나 다른 네트워크에 웹 콘텐츠를 배치하는 구조를 이용하기도함.
2. 끼어들기
- 요구가 있을 때만 처리하는 구조로 폴링(polling)과 반대됨.
- 어떤 원인으로 인해 지금 하고 있는 일을 중단하고 급히 다른 일을 하는 것.
- 키보드 입력 등의 특정 이벤트가 발생했을 때, CPU에 이것을 알려 해당 이벤트에 대응하는 처리를 끝낸 후 원래 하던 처리를 계속하는 것.
- 예외.
3. 폴링(polling) <-> 이벤트 주도, 끼어들기
- 정기적으로 질의하는 것. 상대가 어떤 상태인지, 어떤 요구를 가지고 있는지 알 수 있음.
- 질의 방향이 단방향임.
- 질의는 일정 간격을 따라 정기적으로 발생함.
- 반복(루프)만 하면 되기에 프로그래밍이 쉬움.
- 상대가 응답하는지 확인할 수 있음.
- 모아서 일괄처리가 가능함.
* 활용
- 웹 로직 서버의 접속 감시접속 : AP서버와 DB서버간의 미리 생성된 연결이 정상인지 웹로직이 정기적으로 감시.
- NTP(시간 동기)처리 : 정기적으로 식시하여 자신의 시간이 맞는지 확인하는 구조.
4. 핑퐁(pingpong)
- 인프라 설계나 성능 튜닝에 있어 중요한 개념.
- 물건을 운반할 때는 상자에 넣으면 효율적으로 관리할 수 있음.
- 운반하는 양에 따라 상자 크기를 선택하면 효율적으로 운반할 수 있음.
- 큰 상자는 대량의 데이터를 빠르게 운반할 수 있음(처리량 중시)
- 작은 상자는 소량의 데이터를 빠르게 운반할 수 있음(지연 시간 중시)
5. 저널링(journaling)
- 저널(트랜잭션이나 매일 갱신되는 데이터의 변경 이력)을 남겨두는것.
- 언제, 어디서, 무엇을 했는지 상세하게 기록해서 시스템 장애가 발생했을 때 어디까지 정상 처리됐는지, 어디서부터 재실행하면 좋을지 알수 있게 하는 기능.
- 데이터 자체가 아닌 처리(트랜잭션) 내용을 기록함.
- 데이터 일관성이나 일치성이 확보되면 필요없어짐.
- 데이터 복구 시 롤백(rollback), 롤포워드(rollforward)에 이용됨.
- 시스템 장애 시 복구가 빠름
- 데이터 복제보다도 적은 리소스를 소비해서 데이터를 보호할 수 있음.
- 저널링을 하면 기록처리시 오버헤드가 발생하므로 데이터 안정성보다 성능을 중요시 하는 경우 부적합함.
-> 캐시서버 등 실제 데이터가 다른 장소에 있는 서버에는 부적합.
- 저널 데이터는 메모리의 버퍼에 일단 저장됨. 이 정보가 디스크에 기록되지 않으면 장애 시에 잃을 수 있음. 이 때문에 시스템 요건에 따라 버퍼의 디스크 기록 시점을 검토, 조정해야함. 기록 빈도가 많으면 오버헤드가 높아지므로 절출해야함.
- 저널은 트랜잭션 단위로 일치성을 보증하기 때문에 트랜잭션 도중에 장애가 발생하면 종료되지 않은 트랜잭션은 파괴됨. 하나의 트랜잭션 단위가 크면 트랜잭션 도중에 장애가 발생할 가능성이 높아지므로 트랜잭션이 길어지지 않도록 설계해야함.
* 활용
- 오라클DB의 저널은 Redo로그라 부름. 트랜잭션 종료 시(커밋시) 버퍼가 디스크에 기록되지만, 기록 중인 Redo 로그가 파손되면 데이터를 최신 상태로 복원할 수 없음. 이 때문에 오라클DB는 Redo 로그를 이중화해서 보호함.
6. 복제(replication)
- IT시스템에서는 화재에 대비하여 멀리 떨어진 장소에 데이터 센터를 구축해서 예비 시스템에 데이터를 복제하는 경우가 있음.
- 대규모 웹 서비스에서는 대량의 사용자 접속에 대비하여 동일 데이터를 여러 서버에 복제해서 부하분산을 하기도함.
- 장애 시 데이터 손실을 예방할 수 있음.
- 복제를 이용해 부하분산이 가능함.
- 백업과 달리 실제 데이터가 복제 데이터와 실시간으로 동기화됨.
-> 데이터 보호를 최우선으로 하는 경우, 복제 서버 측 데이터가 갱신된 후에야 서버(실제)기록 처리가 끝났다고 통지하는 경우도 있음. 이 경우 시스템 응답이 악화될 수 있음.
- 복제 위치가 많으면 갱신이 많은 시스템과 같이 복제 오버헤드가 높아짐.
- 시스템 유지관리나 장애 시에는 복제 데이터도 고려해야하기 때문에 설계나 운용 난이도가 높아질 수 있음.
- 복제 데이터와 실제 데이터의 차이가 커지면 그 차이를 채우기 위한 시간이나 성능도 고려해야함.
7. 마스터-슬레이브(master-slave)
- 상호 접속 관계의 일종.
- 한명이 관리자가 되어 다른 모든 것을 제어함.
- 반대가 피어 투 피어(peer-to-peer) : 상호 관리
* 장점
- 관리자가 한명이기 때문에 구현이 쉬움.
- 슬레이브 간 처리를 동기화 할 필요가 없기 때문에 통신량이 줄어듬.
* 단점
- 마스터가 없어지면 관리를 할 수 없음.
- 마스터의 부하가 높아짐.
8. 압축
- 낭비되는 공간(쓸데 없는 공간)을 줄이기 위해 압축을 사용함.
- 디지털 데이터 압축의 기본은 '중복 패턴 인식'과 그것을 '변경' 하는것.
- 결국 디지털 데이터는 이진수라는 공통 단위로 표현되기 때문에 이미지든 문자열이든 동일한 방법으로 압축가능.
- 같은 패턴이 어느정도 있느냐에 따라 압축률이 달라지므로 같은 zip 압축이더라도 압축률이 달라질수있음.
- JPEG 등의 이미지 파일은 이미 압축되어 있어 중복패턴이 거의 없는 상태로 압축해도 크기에 변화가 없음.
- zip압축: 사전준비를 위한 약간의 처리 시간이 필요함. 빈도가 높은 패턴을 우선적으로 찾아서 변경하는 방식은 데이터 전체를 한번 읽어야함.
- 가역 압축 : 원래 상태로 복구할 수 있는 압축. 이미 알고 있는 정보를 제거하는 압축방식.
- 비가역 압축 : 원래 상태로 복구 할 수 없는 대신에 압축률이 높음. 자신에게 필요없는 정보를 제거하여 최소 필요 정보만 남기는 압축방식.
-> 사람눈으로 식별할 수없는 세밀한 부분의 이미지나 귀로 들을 수 없는 음성 정보 등 용도에 따라 필요하지 않는 정보를 제거하는것.
* jar : 실제로는 zip형식의 압축파일. 압축이라기 보다는 하나의 파일로 모은다는 의미가 강함.
9. 오류 체크 / 오류 수정
(1) 오류 체크
- 디지털 데이터의 오류를 스스로 확인하고, 파손되었을때 이를 감지하는 것.
- 디지털 데이터 오류가 생기는 이유
-> 통신중에 데이터 파손 : 낙뢰나 잡음으로 인한 데이터 파손.
-> 칩에서의 데이터 파손
(2) 오류 수정
- 자동으로 복구하는 것.
- 패리티 비트(parity bit) : 추가 비트를 부여하는 방법.
'Book' 카테고리의 다른 글
[코딩 자율학습] 1. 스프링부트 개요 (0) | 2023.08.15 |
---|---|
[AWS Discovery Book] (1) 클라우드와 아마존 웹 서비스 (0) | 2022.02.12 |
[그림으로 공부하는 IT인프라 구조] (3) 인프라를 지탱하는 기본 이론 (0) | 2022.02.10 |
[그림으로 공부하는 IT인프라 구조 ] (2) 3 계층형 시스템 (0) | 2022.02.10 |
[그림으로 공부하는 IT인프라 구조] (1) 인프라 & 구성방식 (0) | 2022.02.10 |