공통/인프라 & 시스템 설계

[그림으로 공부하는 IT인프라 구조] 5장 정리

반응형

1. 캐시


임시 저장소.

어디에 사용되나?

브라우저 캐시

  • 웹 브라우저가 접속한 페이지를 캐시.
  • 웹 서버 접속을 줄이고 브라우저 표시를 고속화할 수 있다.

 

CDN

  • 요즘에는 캐시 서버를 서버 앞에 두는 대신 CDN을 배치하는 구조를 이용.


효과

  • 데이터에 고속으로 액세스 할 수 있다.
  • 실제 데이터에 대한 액세스 부하를 줄일 수 있다.

 

적합한 시스템

참조 빈도가 높은 데이터

  • 몇 번이고 같은 데이터를 참조한다면 캐시에 배치해서 고속으로 데이터에 액세스 할 수 있다.


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

  • 스트리밍 데이터 등은 갱신이 없기 때문에 캐시에 장애가 발생해도 원 데이터를 다시 캐시에 배치하기만 하면 복원이 가능하다. 이런 읽기 전용 데이터에 적합

 

부적합한 시스템

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

  • 갱신 시마다 캐시 해야 해서 바로 액세스 하는 경우와 차이가 없다.
  • 따라서 캐시에 의한 성능 향상을 기대할 수 없다. 또한 데이터 변경이 발생하면 그 변경을 유지하기 위해 디스크 등의 영구 기록 장치에 기록할 필요가 있다.


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

  • 데이터 액세스 시에 수백 GB 이상의 큰 데이터를 참조하는 경우는 캐시 크기도 커지며, 캐시에 배치하기까지도 많은 시간이 걸린다. 예를 들어, 분석 시스템에서는 캐시 데이터를 두는 것은 적합하지 않다.

 

2. 끼어들기


  • 어떤 원인으로 인해 지금 하고 있는 일을 중단하고 급히 다른 일을 하는 것을 끼어들기라고 한다.
  • 급한 일을 먼저 하도록 CPU에 알리는 중요한 역할을 한다.
  • 키보드 입력 등의 특정 이벤트가 발생했을 때 CPU에 이것을 알려서 해당 이벤트에 대응하는 처리를 끝낸 후 원래 하던 처리를 계속하는 것이다.


정리

  • 어떤 일이 발생하면 연락하는 이벤트 주도 구조이다.
  • 반면에 CPU가 정기적으로 폴링을 해서 입출력 장치 상태를 확인하는 방법도 있지만, 폴링 간격이 길면 디스크 I/O가 완료됐더라도 금방 알아차리지 못한다. 반대로 간격을 짧게 하면 폴링을 자주 하기 때문에 CPU를 쓸데없이 많이 사용하게 된다.

 

3. 폴링


  • 정기적으로 질의하는 것.
  • 정기적으로 질의함으로써 상대가 어떤 상태인지, 어떤 요구를 가지고 있는지 등을 알 수 있다.

 

특징

  • 질의 방향이 단방향이다.
  • 질의는 일정 간격을 따라 정기적으로 발생한다.

 

적합한 처리

  • 일정 간격으로 처리를 실행하면 좋은 처리
  • 감시

 

부적합한 처리

  • 상태가 아닌 입력 내용에 따라 실행 내용을 처리하는 처리
  • 처리 우선순위를 정해야 하는 처리.

 

4. I/O 크기


  • 1회의 I/O에 필요한 사이즈, 즉 데이터를 주고받을 때 사용되는 I/O 크기를 의미.
  • I/O 크기는 인프라 설계나 성능 튜닝에 있어 중요한 개념이다.

 

특징

  • 물건을 운반할 때는 상자에 넣으면 효율적으로 관리할 수 있다.
  • 운반하는 양에 따라 상자 크기를 선택하면 효율적으로 관리할 수 있다.

 

5. 저널링


  • 저널이란 트랜잭션이나 매일 갱신되는 데이터의 변경 이력.
  • 저널을 남겨 두는 것을 저널링이라고 한다.

 

특징

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

 

어디에 사용되나?

리눅스 ext3 파일 시스템

  • ex3 파일 시스템은 저널링 기능을 갖추고 있으며, 파일 I/O도 트랜잭션으로 간주된다.
  • 단 트랜잭션 시에 버퍼 정보를 디스크에 기록하지 않기 때문에 버퍼에 있는 최신 데이터를 잃을 수도 있다.


오라클 DB

  • 오라클 DB의 저널은 REDO 로그라고 불린다.
  • 트랜잭션 종료(커밋 시)에 버퍼가 디스크로 기록되지만, 기록 중인 REDO 로그가 파손된 경우에는 데이터를 최신 상태로 복원할 수 없다. 이 때문에 오라클 DB에서는 Redo 로그를 이중화해서 보호한다.

 

장점

  • 시스템 장애 시 복구가 빠르다
  • 데이터 복제보다도 적은 리소스를 소비해서 데이터를 보호할 수 있다.

 

적합한 시스템

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

  • 데이터를 갱신하는 시스템에서는 트랜잭션 내용을 기록해 둠으로써 데이터 안정성을 높일 수 있다.

 

부적합한 시스템

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

  • 저널링을 하면 기록 처리 시 오버헤드가 발생하기 때문에 성능을 중시하는 시스템이라면 이 오버헤드를 줄일 방법을 검토해야 한다.
  • 예를 들어 캐시 서버 등 실제 데이터가 다른 장소에 있는 서버에서는 부적합하다.

 

저널을 사용한 복구 방식

롤백

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


롤 포워드

  • 저널을 읽어서 실제 데이터 정보를 앞으로 진행시키는 처리.


주의사항

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

 

6. 복제


  • DB나 저장소 등에서 자주 사용되는 기술로, 복사본을 만드는 것을 의미한다.


특징

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


어디에 사용되나

MySQL 복제

  • MySQL 복제는 데이터 추가, 갱신, 삭제 등의 변경 처리를 복제 측으로 보낸다.
  • 마스터 DB, 슬레이브 (워커) DB 참고 (바이너리 로그에 기록한 로그를 워커 DB에서 받아와서 릴레이 로그에 저장 후, SQL 스레드가 릴레이 로그를 참조해서 DB에 변경 SQL을 반영하는 방식)


적합한 시스템

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


부적합한 시스템

데이터 갱신이 많은 시스템

  • 데이터 갱신이 많은 시스템에 적용하면 복제 대상 데이터가 많아지기 때문에 오버헤드가 높아진다.

 

7. 마스터-워커


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

 

8. 압축


특징

  • 압축의 기본은 중복 패턴 인식과 그것을 변경하는 것
  • 압축의 장점은 크기를 줄이는 것, 단점은 처리 시간이 걸리는 것

 

가역 압축과 비가역 압축

가역 압축

  • 원래 상태로 복구할 수 있는


비가역 압축

  • 원래 상태로 복구할 수 없는 대신에 압축률이 높은 방식

 

9. 오류 검출


  • 컴퓨터 세계에서 데이터가 의도하지 않을 때에 데이터가 망가질 수 있다.
  • 이것을 방지하기 위해 오류 검출이라 불리는 구조가 있다.

 

원인

통신 중에 데이터 파손

  • 대부분의 통신 방식에는 전기 신호를 이용해서 데이터를 교환하고 있다.
  • 경로 도중에 낙뢰로 전기적인 잡음 등이 발생하면 데이터가 파손될 수 있다.


칩에서의 데이터 파손

  • 메모리의 데이터도 전기적으로 전달된다.
  • 이 때문에 통신 중인 데이터 파손처럼 전기적인 영향으로 값이 바뀌는 경우가 있다.

 

오류를 검출하려면

패리티 검출

  • 간단한 방법으로, 이중화 비트를 부여하는 방식
  • 비트에서는 반드시 1이라는 수가 짝수개 또는 홀수 개가 되도록 1비트만 추가한다.
  • 패리티 비트를 설정한 단위의 1비트까지 데이터가 바뀌어도 1이 짝수 개인지 홀수 개인지 확인해서 오류를 검출할 수 있다.
  • 단 동시에 2비트를 바꿔버리면 짝수가 반환되기 때문에 오류를 인지할 수 없다.


체크섬

  • 생략


CRC

  • 생략

어디에 사용되나

CPU나 메모리

  • CPU나 메모리 내부에서는 오류 검출 및 수정 기능을 가지고 있다.
  • 특히 메모리는 여러 개가 있어서 컴퓨터 내부에서도 비교적 에너지 입자의 영향을 받기 쉬운 하드웨어다.
  • 개인용 컴퓨터 메모리에는 없지만, 서버용 메모리에는 오류 수정 기능이 있는 ECC 메모리라는 것이 있다.
  • 이 메모리에서는 쓰기 처리 시에 패리티 비트 계산을 해서 패리티 정보도 함께 기록한다. 그리고 읽을 때는 다시 패리티 계산을 해서 오류가 없는지 검사 후, 만약 오류가 있다면 수정 가능한 경우는 수정을, 불가능한 경우에는 오류만 검출해서 반환한다.


네트워크 통신

  • TCP/IP 및 이더넷은 계층별로 체크섬이나 CRC 오류를 검출하는 구조를 도입하고 있다.

 

반응형