DEV
Web Development
-
무정지를 위한 인프라 구조
7.1 안정성 및 이중화 안정성, 고가용성: 시스템 서비스가 가능한 한 멈추지 않도록 하는 것. 이중화: 하나의 기능을 병렬로 여러 개 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속 할 수 있는 것을 가리킨다. 7.2 서버 내 이중화 7.2.1 전원, 장치 등의 이중화 7.2.2 네트워크 인터페이스 이중화 PCI 카드 이중화 및 포트 이중화로 카드 장애 및 포트 장애에 대응. 네트워크 인터페이스 이중화는 하드웨어 또는 OS로 구현한다. 리눅스 OS의 본딩(bonding) 구조. 본딩의 액티브-스탠바이 구성은 ‘액티브-백업’이라고 한다. 본딩이 이중화된 네트워크 인터페이스를 감시하는 방법에는 두 가지가 있다. MII 감시(Media Independent Interface, 대부분 선호) ARP 감시 7.3 저장소 이중화 7.3.1 HDD 이중화 컨트롤러에는 CPU나 캐시가 있어서 HDD I/O 제어를 한다. 최근에는 서버와 저장소 사이를 파이버 채널(FC)로…
-
시스템을 연결하는 네트워크 구조
6.2 계층 구조(계층 모델) 데이터나 기능 호출 흐름에 따라 계층 간 역할이 나누어진다. 계층 모델의 대표적인 예가 ‘OSI 7계층 모델’이다. OSI 자체는 현재 사용되고 있지 않지만, 이 계층 구조 개념은 다양한 분야에서 공통적으로 참조할 수 있는 ‘참조 모델’로 현재도 사용되고 있다. OSI 7계층 모델 애플리케이션 계층(application layer): 애플리케이션 처리 프레젠테이션 계층(presentation layer): 데이터 표현 방법 세션 계층(session layer): 통신 시작과 종료 순서 전송 계층(transport layer): 네트워크의 통신관리 네트워크 계층(network layer): 네트워크 통신 경로 선택 데이터 링크 계층(data link layer): 직접 접속되어 있는 기기 간 처리 물리 계층(physical layer); 전기적인 접속 시스템을 구성하는 서버 역시 계층 구조로 되어 있다. 서버 계층 구조 자바 애플리케이션 애플리케이션 서버 Java VM 커널 하드웨어 …
-
인프라 응용 이론
5.1 캐시(cache) 5.1.1 캐시란? 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다. 데이터 재사용을 전제로 한다. 데이터가 실제 데이터와 캐시라는 이중 구조로 저장되기 때문에 리소스 소비가 늘어난다. 설계 시에는 어떤 데이터를 캐시하는 것이 효과적인지를 검토해야 한다. 시스템 가동 직후 등에는 캐시에 데이터가 없기 때문에 원하는 성능이 나오지 않을 수 있다. 캐시의 데이터가 손실되는 경우를 대비해서 복구 순서를 설계 시에 확립해야 한다. 쓰기 데이터를 캐시할 때 캐시가 여러 개 있으면 갱신된 최신 데이터를 서로 뺏으려는 상태가 발생하지 않도록 주의해야 한다. 적합한 시스템 참조 빈도가 높은 데이터 캐시의 데이터가 손실돼도 문제가 없는 시스템 부적합한 시스템 데이터 갱신 빈도가 높은 시스템 대량의 데이터에 액세스하는 시스템 5.2 끼어들기(interrupt) 키보드 입력 등의 특정 이벤트가…
-
인프라 기본 이론
4.1 직렬/병렬 직렬 처리로 속도를 올리는 데는 한계가 있다. 병렬화를 통해 속도는 빨라지지 않지만, 단위 시간당 처리량을 늘릴 수 있다. 병렬 처리에는 합류점, 직렬화 구간, 분기점이 병목 지점이 되기 쉽다. 병렬화할 때는 일을 분담해서 처리를 한 후 다시 집약할 때 오버헤드가 걸린다. 그러므로 이 오버헤드를 감안하더라도 효과가 있을 경우에 병렬화를 한다. 직렬처리 직렬 장점 구조가 간단해서 설계나 구현 난이도가 낮다. 직렬 단점 복수의 리소스(컴퓨터나 프로세서 등)를 유용하게 이용할 수 없다. 병렬처리 병렬 장점 복수의 리소스를 유용하게 이용할 수 있으며, 직렬에 비해 동일 시간당 처리할 수 있는 양이 증가한다. 또한, 일부가 고장 나더라도 처리를 계속할 수 있다. 병렬 단점 처리 분기나 합류를 위한 오버헤드가 발생한다. 배타 제어 등을 고려해야 하고 구조가…
-
계층형 시스템
3.1 3계층형 시스템의 구성도 3계층 시스템 구성 웹 서버 ↔ AP 서버 ↔ DB 서버 세 대의 서버는 스위치를 경유해서 연결 3.2 주요 개념 설명 3.2.1 프로세스와 스레드 프로세스 및 스레드는 OS 상에서 실행되기 때문에 어느 정도 독립성을 가지고 동작 프로그램 실행 파일 자체가 아님 프로세스 전용 메모리 공간을 이용해서 동작한다. 장점 개별 처리 독립성이 높다. 단점 생성 시 CPU 부하가 높다. 스레드 다른 스레드와 메모리 공간을 공유한다. 장점 생성 시 부하가 낮다. 단점 메모리 공간을 공유하기 때문에, 의도하지 않는 데이터 읽기/쓰기가 발생할 수 있다. 3.2.2 OS 커널 OS의 본질은 커널이다. 커널의 역할 시스템 콜 인터페이스 프로세스 관리 메모리 관리 네트워크 스택 파일 시스템 관리 장치 드라이버 시스템 콜 인터페이스…
-
서버를 열어 보자
2.1 물리 서버 2.1.1 서버 외관과 설치 장소 목표 : 물리서버 내부 구조 파악하기 서버실 랙 2.1.2 서버 내부 구성 버스(Bus) : 컴포넌트를 연결하는 선 CPU와 메모리는 물리적으로 직접 연결 PCI Express 슬롯 : 외부 장치를 연결하는 곳 Xeon 확장 프로세서 아키텍처 : CPU가 PCI를 직접 제어 BMC(Baseboard Management Controller) 서버의 HW 상태를 감시 독립적으로 움직임 서버의 H/W에서 장애가 발생한 경우 BMC 콘솔을 통해 서버 상태를 확인 네트워크로 접속해서 서버를 원격으로 재시작 가능 서버와 PC는 물리적으로 기본 구성이 같음 서버는 전원이 이중화되어 있어 장애에 강함 대용량 CPU나 메모리가 탑재되어 있는 정도가 PC와 다름 2.2 CPU CPU(Central Processing Unit) : 서버 중심에 위치해서 연산 처리를 실시 명령을 받아서 연산을 실행 →…
-
인프라 아키텍처
1.1 개념 인프라(infra)는 말 그대로 ‘기반 시설’을, 아키텍처는 ‘구조’를 의미한다. 즉, IT 인프라 아키텍처는 서버, 네트워크 등 하드웨어부터 소프트웨어까지 IT 운영에 필요한 제반 사항들을 말한다. IT 인프라 구성 요소 IT 인프라 아키텍처 1.2 집약형과 분할형 아키텍처 1.2.1 집약형 아키텍처 하나의 대형 컴퓨터로 모든 처리를 하는 방식. ‘범용 장비’, ‘호스트’, ‘메인 프레임’ 등으로 불린다. 장점 단점 1.2.2 분할형 아키텍처 여러 대의 소형 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조‘오픈 시스템’, ‘분산 시스템’ 등으로 불린다.분할형 아키텍처에서 이용되는 컴퓨터를 ‘서버’라고 한다. 장점 단점 1.3 수직 분할형 아키텍처 분할형에서는 서버 분할 방식으로 고려해야 한다. 서버별로 다른 역할을 담당하는 방식이 ‘수직 분할형 아키텍처’이다. 1.3.1 클라이언트-서버형(C/S) 아키텍처 업무 애플리케이션, 미들웨어, 데이터베이스 등의 소프트웨어를 ‘물리 서버’ 상에서 운영하고,…
-
[javascript] 파라미터로 동적객체 생성하기
-
[CleanCode] 부록A 동시성 II
클라이언트/서버 예제 결론 결론 자습서: 전체 코드 예제 참고 링크
-
[CleanCode] 17장 냄새와 휴리스틱
주석 환경 함수 일반 자바 이름 테스트 참고 링크