728x90

*용어 하나 당 3줄이상 적지 않기

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

  • 물리 서버와 논리 서버의 차이
    • 컴퓨터 자체를 가리키는 경우는 물리서버라고 부른다. 컴퓨터 내부에는 여러 소프트웨어, 즉 논리적인 서버가 동작하고 있다. 논리적인 서버(소프트웨어)의 예시는 웹 서버, DB서버 등이 있다.
  • 웹 소켓
    • 기존 웹에서는 브라우저가 웹 서버에 요청을 보내서 그것을 받아처리하는 구조였지만, 이 방식은 요청이 없이도 웹 서버가 브라우저에 데이터를 전달(푸시)할 수 있다.
  • 수평 분할형 아키텍쳐
    • 용도가 같은 서버를 늘려나가는 방식, sharding이나 partitioning이라고도 부른다.
  • 오라클 데이터베이스의 클러스터 기능
    • Real Application Clusters, RAC는 어떤 DB 서버에 접속해도 같은 결과를 얻을 수 있도록 내부적으로 데이터를 교환하는 기능(구성)을 말한다.
  • 가상화
    • 물리 서버를 가상화 기능으로 여러 대의 가상 서버로 분할하는 방식. 복수의 웹 서버와 AP 서버들을 하나의 물리 서버에서 운영할 수 있다.
  • 스탠바이 구성
    • HA(High Availability)구성, 액티브-스탠바이 구성 등으로 불리는 형태. 물리 서버를 최소 2대를 준비하여 한 대가 고장하면 가동중인 소프트웨어를 다른 한 대로 옮겨서 운영하는 방식이다. 이때 소프트웨어 재시작을 자동으로 하는 구조를 Failover라고 한다.
  • CPU
    • Central Processing Unit. 서버 중심에서 연산처리를 한다. 운영체제의 명령을 받아 연산을 실행하고 결과를 반환한다. ‘코어’라고 불린다. 즉, 멀티코어의 코어는 CPU를 뜻한다.
  • 메모리
    • 기억 영역. CPU에 전달하는 내용이나 데이터를 저장하거나 처리 결과를 받는다. 메모리의 데이터는 휘발성이다. 메모리가 빠른 이유는 전기적인 처리만으로 데이터를 저장하기 때문이다. 참고로 CPU 자체도 레지스터나 캐시라고 불리고 불리는 메모리를 가지고 있다.
  • HDD
    • Hard Disk Drive. 장기 저장 목적의 데이터 저장 장소. 자기 원반이 여러 개 들어있고 고속으로 회전하여 읽기/쓰기 처리를 한다. 최근에는 기술이 발달하여 SSD(Solid State Disk)라는 물리적인 회전 요소를 사용하지 않는 디스크가 사용되고 있다. HDD가 많이 탑재되어 있는 하드웨어를 ‘스토리지’라고 부른다.
  • 네트워크 인터페이스
    • 서버와 외부 장비를 연결하기 위한 것. 외부 접속용 인터페이스.
  • 버스
    • 서버 내부에 있는 컴포넌트(CPU, 메모리, HDD 등)들을 서로 연결시키는 회선. 버스가 어느 정도의 데이터 전송능력을 가지고 있는 지는 대역으로 나타낸다.
  • 대역
    • 한 번에 데이터를 보낼 데이터의 폭(전송폭)과 1초에 전송할 수 있는 횟수(전송 횟수)로 대역이 결정된다. throughput이라고도 부른다. CPU에 가까운 쪽이 1초당 전송량이 크다.
  • 프로세스와 스레드
    • 프로세스와 스레드는 프로그램 실행파일 자체가 아니라 OS 상에서 실행돼서 어느 정도 독립성을 가지고 동작하는 것이다.
    • 프로세스, 스레드가 활동하려면 메모리 공간이 필요하다. 이것은 커널에 의해 메모리 상에 확보된다.
    • 프로세스는 전용 메모리 공간을 이용하지만, 스레드는 다른 스레드와 메모리 공간을 공유한다.
  • OS 커널
    • 커널(Kernel)은 운영체제의 핵심이라 할 수 있는 매우 중요한 소프트웨어다.
    • 커널의 역할은 시스템 콜 인터페이스, 프로세스 관리, 메모리 관리, 네트워크 스택, 파일시스템 관리 , 장치 드라이버로 6가지 정도로 정리할 수 있다.
  • http://abc.kr의 의미
    • HTTP를 이용해서 abc.kr에 접속한다라는 의미.
  • 웹 서버
    • 웹 서버의 역할은 HTTP 요청에 대해 적절한 응답을 하는 것이다.
    • 가장 인기 있는 웹 서버는 Apache HTTP Server다.
  • AP 서버
    • 동적 콘텐츠 요청에 대해서 콘텐츠를 만들어 응답하는 서버이다.
  • 드라이버
    • 운영체제나 프로그램이 하드웨어나 외부 시스템과 통신할 수 있도록 도와주는 중간 소프트웨어
    • 운영체제 ↔ 하드웨어 → 디바이스 드라이버
    • 자바 ↔ 데이터베이스 → JDBC 드라이버
  • CDN
    • Content Delivery Network, 데이터 전송 전용 서버.
    • 대량의 데이터 전송에 특화된 것으로 전 세계에 있는 데이터 복사본(캐시)을 배치하는 기술과 병렬 기술을 활용해서 처리를 효율화하고 있다.
  • 인메모리 디비(in-memory)
    • 디스크 자체를 사용하지 않고 모든 처리를 메모리 내에서 완료하는 구조.
  • RDBMS
    • 데이터를 행(Row)과 열(Column)로 이루어진 테이블에 저장하는 데이터베이스 시스템이다.
  • KVS(Key-Value Store)
    • KVS는 데이터를 Key와 Value 쌍으로 저장하는 초간단 구조의 데이터베이스
    • Key로만 접근 가능하고, 빠른 조회 속도가 강점
  • 병렬처리 예시
    • 웹 서버에는 다수의 이용자가 접속하기 때문에 복수의 프로세스가 분담해서 병렬 처리한다.
    • AP 서버에서는 JVM 프로세스가 하나이지만 복수의 스레드가 병렬로 처리한다.
    • 오라클 DB에서는 클라이언트의 요청을 접수하는 서버 프로세스가 여러 개 생성되어 병렬 처리한다.
  • 동기/비동기
    • 동기는 요청한 것이 끝날 때 까지 기다리는 것이고, 끝날 때 까지 다른 일을 하는 것이 비동기이다. 비동기에서는 처리를 병행해서 진행할 수 있다. 대표적으로 Ajax 비동기 통신이 있다.
    • DBMS에서는 I/O 병렬화 수단으로 비동기 I/O를 사용할 수 있다.
  • 메세지 큐(Message Queue)
    • Queue 라는 자료구조를 채택해서 메세지를 전달하는 시스템이며, 메세지 지향 미들웨어(MOM) 을 구현한 시스템. 비동기 처리 방식으로 구현된다.
    • 메시지 큐는 서로 다른 시스템이나 언어, 환경에서 돌아가는 애플리케이션끼리 ‘직접 통신 안 해도’ 메시지를 주고받게 해주니까, 상호 운용성이 향상된다.
  • C10K 문제
    • “동시 사용자 1만명(Concurrent 10K users)”이 접속하는 서버를 구현하는 문제를 말한다
    • 해결 방법 중 하나로 하나의 프로세스가 여러 복수의 접속을 처리하는 방법이 있다. 이 때 논블로킹 I/O를 사용한다.
  • 논블로킹 I/O(non-blocking I/O)
    • I/O 작업이 완료될 때까지 기다리지 않고, 다른 작업을 수행할 수 있도록 하는 I/O 방식
  • Queue
    • 앞에 있는 것부터 차례대로 처리되는 데이터 구조. FIFO(선입선출)의 동작원리를 가진다.
    • CPU 처리를 기다리는 프로세스나 스레드 행렬, 하드 디스크 저장소 읽기 처리를 기다리는 I/O 요구행렬, 네트워크 접속 성립을 기다리는 접속 요구 행렬 등이 그 예이다.
  • Run Queue
    • 런큐(Run Queue)는 운영체제에서 CPU를 실행할 준비가 된 프로세스들을 담아두는 자료구조이다. 보통 런큐에 쌓인 프로세스 수를 코어 수로 나누어서 1이라면 문제 없다고 판단한다. OS 커널에는 프로세스 스케줄러라는 기능이 있어서 런큐 등을 관리한다.
  • 디스크 큐 길이(disk queue length)
    • disk queue length는 하드 디스크에 요청이 쌓여 대기하고 있는 시간의 길이를 보여줍니다. 즉, 디스크가 현재 작업을 처리하는 동안, 다음 작업을 수행할 때까지 기다리고 있는 요청 갯수
    • 유닉스 OS 계열에서 vmstat으로 확인할 수 있다.
728x90

+ Recent posts