목록IT인프라 (7)
생각해보기

모놀리스(Monolith)와 마이크로서비스 비교 전통적인 모노리스의 구조는 하나의 단위로 개발되는 일체식 애플리케이션입니다. 일반적으로 사용자 인터페이스와 데이터베이스, 서버 쪽 애플리케이션의 3개 부분으로 구성되빈다. 서버 측에서 어플리케이션이 일체가 되어 있기 때문에 작은 변화에도, 새로운 버전으로 전체 빌드해서 배포해야 합니다. 확장이 필요한 경우에는 특정 기능만 확장할 수 없고 전체(서버)를 동시에 확장해야 합니다. 모노리스가 여러 인스턴스로 떠 있는 경우에 변경에 취약해집니다. 여러개의 인스턴스를 모두 재 빌드 배포 과정을 거치기 때문입니다. 또한 확장시에는 어플리케이션 전체가 확장 되어야 하기 때문에 확장 대비 효율성이 떨어집니다. 반면에 마이크로서비스는 서버 측이 여러 개의 조각으로 구성돼 ..

시스템 성능을 가리킬 때 응답과 처리량이라는 지표가 자주 사용된다. 응답은 처리 하나당 소요 시간을 의미하고 처리량은 단위 시간당 처리하는 양을 의미한다. 사용자에게 빠르게 응답하기 위해서는 처리량을 늘려야 한다. 처리량을 늘리기 위해서는 병목현상을 개선해야 한다. 처리량을 높이기 위해 웹 서버와 애플리케이션 서버를 늘리는 경우 최종적으로 데이터베이스 서버가 병목 지점이 되는 경우가 많다 * 병목현상은 시스템 상에서 반드시 존재하며 특정 부분이 처리량이 낮다면 그곳이 병목현상 구간이다. 따라서 병목현상을 없애려고 노력하는 것보다 "몇 퍼센트 개선시킨다"라는 시스템 전체 관점의 목표를 세우는 것이 중요하다. 병목현상 종류 CPU 병목 현상, 메모리 병목 현상, 디스크 I/O 병목 현상, 네트워크 I/O 병..

실무에서 시스템의 안정성과 고가용성을 요구한다. 즉 시스템 서비스가 가능한 멈추지 않도록 하려고 한다. 안정성, 고가용성의 목표를 세분화시킨다면 다음과 같다. 고장, 장애에 의한 정지가 발생하지 않도록 하며 발생한다면 복구할 수 있는 것을 목표로 한다. (컴포넌트를 이중화한다) 고장, 장애가 발생한 것을 검출할 수 있어야 한다(컴포넌트 감시) 고장, 장애가 발생해도 데이터가 보호되어야한다(데이터 백업) 이중화 하나의 기능을 병렬로 나열해서 하나에 장애가 발생해도 다른 것을 이용해서 서비스를 계속할 수 있게 하는 것. 이중화는 고가용성뿐만 아니라 확장성과 부하분산 같은 성능에도 영향을 미친다 이중화를 하기 위한 구조 - 부하를 분산한다, 내부적으로 생존을 감시한다, 마스터를 경정해야한다, 안전하게 교체가 ..
커널은 TCP, IP, 이더넷을 담당하는 기능이 필요한 정보를 데이터에 부여해서 NIC에 전달한다 최종적으로 NIC(Network interface controller)가 데이터를 전송한다 애플리케이션 계층은 필요한 데이터를 소켓에 기록하고 소켓 이하는 커널 공간에서 처리한다 TCP 처리 흐름 커널에 전달된 데이터는 소켓 버퍼라는 메모리 영역에서 처리 애플리케이션 데이터를 TCP 세그먼트로 나눈다. 최대 크기는 MSS, MSS 초과한 데이터는 자동적으로 분할돼서 복수의 TCP 세그먼트가 생성된다. TCP 세그먼트는 TCP헤더가 있고 TCP헤더는 TCP 기능에 필요한 정보가 들어있다 TCP는 ACK를 사용해서 데이터의 순서와 전달을 보증한다. TCP는 흐름제어와 혼잡 제어를 한다. IP 처리 흐름 IP 정..

캐시 캐시는 임시 저장소를 의미한다. 사용 빈도가 높은 데이터를 빠르게 접근할 수 있도록 한다. 다양한 곳에서 사용된다(ex. 브라우저 캐시, 캐시 서버 등) 더보기 캐시 서버가 있을 때 브라우저 통신 1. 웹 서버에 접속하기 위해 DNS 질의 2. DNS는 웹 서버가 아닌 캐시 서버의 IP 주소를 반환 3. 캐시 서버에 콘텐츠가 있으면 캐시 서버에서 콘텐츠 반환 4. 캐시 서버에 콘텐츠 없으면, 웹 서버에서 취득 이러한 과정을 통해 웹 서버의 부하를 줄일 수 있다 특징 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장한다 데이터 재사용을 전제로 한다 장점 데이터에 고속으로 액세스 할 수 있다 실제 데이터에 대한 엑서스 부하를 줄일 수 있다 적합한 시스템 참조 빈도가 높은 데이터 - 몇 번..
효율적인 인프라를 구축/설계하기 위해서는 기본 원리를 이해하고 그것의 장단점을 파악하고 있어야 한다. 따라서 인프라를 이해하기 위한 기본 이론들을 알아보자 1. 웹 데이터 흐름 직렬/병렬 직렬은 하나의 작업을 수행하고 다른 작업을 하는 것이다. 수행 능력을 높이기 위해 CPU의 클럭 주파수를 올려야 한다 병렬은 작업을 동시에 진행하는 것이다. 수행 능력을 높이기 위해 처리할 수 있는 CPU 코어를 늘려야 한다. CPU 클럭 주파수를 올리는 것에 한계가 있기 때문에 코어를 늘리는 병렬 방식이 채택되었다. 병렬 방식으로는 멀티 프로세스 방식, 멀티 스레드 방식 등이 있다. 더보기 1. 멀티 프로세싱 CPU가 1개가 아닌 여러개인 것을 말함 register와 cache를 독립적으로 가진 여러개의 CPU가 1개..