Book Study 12

Part 1. 데이터 구조 - 트리 데이터 구조

3. 트리 데이터 구조 생물학적인 의미로 트리(tree)란 말 그대로 뿌리, 줄기, 가지가 있는 거대한 나무를 뜻하며, 컴퓨팅 분야에서의 트리는 이러한 나무를 거꾸로 뒤집은 형태와 비슷하다. 트리 트리 데이터 구조는 데이터를 선형으로 정렬하는 선형 데이터 구조와 달리 데이터를 계층으로 정렬한다. 트리 데이터 구조의 가장 위쪽에는 나무의 뿌리에 해당하는 루트 노드(Root Node)가 있고, 트리의 나머지 요소들은 이 루트 노드를 기준으로 하위계층으로 구성된다. 루트 노드를 기준으로 아랫 방향으로 또 다른 노드가 연결되는 것을 하위 노드 또는 자식 노드(Child Node)라고 부르며, 해당 노드를 기준으로 로 윗 방향으로 노드가 연결된 것을 상위 노드 또는 부모 노드(Parent Node)라 부른다. 트..

Part 1. 데이터 구조 - 선형 데이터 구조(배열, 리스트, 스택, 큐)

2. 선형 데이터 구조 컴퓨터에서 메모리란 컴퓨터가 처리 중이거나 처리를 끝낸 데이터를 저장하는 공간, 즉 컴퓨터의 저장공간을 뜻하며 데이터 구조는 이러한 저장공간을 효과적으로 관리하기 위한 방법이다. 컴퓨터 메모리는 각각 정해진 역할을 하는 유형으로 계층적으로 구성되어 있다. 메모리 계층구조는 메모리 용량과 속도를 기준으로 아래와 같은 그림으로 표현할 수 있다. 컴퓨터 메모리 하드 디스크(Hard Disk)는 디스크 저장장치(Disk Storage)라고도 부르며, SSD(Solid State Drive) 또는 HDD(Hard Disk Drive)와 같은 저장장치로 구분된다. 하드 디스크는 메인 메모리인 RAM(Random Access Memory)에 적재되는 데이터를 저장한다. RAM은 컴퓨터의 메인 ..

Part 1. 데이터 구조 - 데이터 구조와 알고리즘, 자료형, 빅 오 표기법

1. 데이터 구조와 알고리즘, 자료형, 빅 오 표기법 1장에서는 데이터 구조와 알고리즘이 무엇인지 살펴보고 기본 자료형과 빅 오(O) 표기법에 대해 간단히 설명한다. 본 도서의 목적은 프로그래밍 코드 없이 간단한 설명만으로 알고리즘을 이해하는 것이므로 프로그래밍 언어의 문법을 다루지 않고 알고리즘적 사고에 중점을 두고 설명이 진행된다. 해당 알고리즘에 대해 더 깊은 사고를 하기 위해서는 알고리즘을 더 상세하게 소개한 다른 도서를 찾는 것을 추천한다. 1장을 소개하기 전, 간단히 데이터가 무엇인지 짚고 넘어가도록 하겠다. 데이터는 직업이나 관심 분야에 따라 단어가 뜻하는 의미가 다양하지만, 본 도서에서 언급하는 데이터는 컴퓨터에 저장되어 있거나 컴퓨터가 가공 및 처리하는 모든 것을 뜻한다. 여기서 정보는 ..

Chapter 8. 웹 서비스 튜닝 2 : 튜닝 레시피

8.1 포인트별 튜닝 레시피 8.1.1 요청 횟수와 전송량을 줄이는 방법 HTTP 요청은 텍스트 기반의 프로토콜이며, 통신을 하기 위해서는 일련의 절차가 필요하다. 서버와 클라이언트 측 모두 통신을 할 때마다 프로토콜을 해석하는 파서(Parser)가 매번 동작하며, 요청 횟수가 늘어나면 그만큼 오버헤드가 증가한다. 따라서, HTTP의 오버헤드를 줄이기 위해서는 요청 횟수를 줄이거나 전체적인 데이터 전송량을 줄이도록 한다. 요청 횟수나 데이터 전송량을 줄이기 위해 파일 결합, CSS Sprite, CSS나 JavaScript의 minify를 할 때에는 'Grunt'와 같은 툴을 사용하면 좋다. 요청 횟수를 줄이는 방법 구체적인 실행방법 파일 결합에 의한 이미지 수 감소 페이지 내에서 이용하는 CSS나 Ja..

Chapter 7. 웹 서비스 튜닝 1 : 보틀넥을 찾는 방법

7.1 용량의 검토 방법과 용량의 향상 / 7.2 시스템 튜닝의 철칙 웹 시스템의 용량을 향상시키기 위해서는 용량을 고려하는 단위를 먼저 확인하여야 한다. 웹 시스템의 용량에는 단위 시간당 시스템 이용자의 수가 중요한데, 이 "단위 시간당 시스템 이용자 수"는 곧 단위 시간당 소요되는 처리량이라고 볼 수 있다. 즉, 웹 시스템의 용량은 단위 시간당 처리 성능과 단위 시간당 소요되는 처리량 중에서 낮은 쪽으로 결정이 되는 것이라 볼 수 있다. 따라서 용량을 향상시키기 위해서는 ① 단위 시간당 처리 성능을 높이거나 ② 단위 시간당 소요되는 처리량을 낮추는 방법 중 한 가지의 접근을 할 수 있다. 단위 시간당 처리 성능은 하드웨어 성능이나 배치 등의 물리적 제약에 따라 결정된다. 구체적으로는 CPU 성능(클럭..

Chapter 6. 웹 서비스 운용 2 : 상태 모니터링

6.1 상태 모니터링의 기초 지식 상태 모니터링을 할 때에는 각 그래프에서 이상을 알아차리기 위한 공통적인 포인트를 먼저 확인하는 것이 중요하다. ① 없어야 하는 변화가 있는지 먼저 확인하여 평소에는 변화가 없는 타이밍에 평소와는 다른 움직임을 보이는지를 먼저 확인한다. ② 있어야 하는 변화가 없는지 확인하여 부하가 증가해야 하는 타이밍에 증가하지 않는다면 처리해야 하는 일괄처리가 이상 종료되었는지를 확인하고, 파형이 울퉁불퉁해야 하는데 일정한 값을 유지하고 있는 경우에는 데이터를 취득하지 못했는지, 성능이 한계에 다달았는지를 확인한다. 또, ③ 양과 단위가 다른지 확인한다. 그래프의 형태는 같아 보여도 특정 서버만 세로축의 단위가 다른 경우가 있을 수도 있으며, 이 경우 단위가 다른 경우 크게는 1,0..

Chapter 5. 웹 서비스 운용 1 : 시스템 감시의 기본

5.1 시스템 감시의 개론 시스템을 감시하는 것은 단순히 시스템을 보고 있는 것이 아닌, 시스템의 정상 상태는 어떤 상태인지를 파악해 그 상태가 무너질 경우의 대응 방법을 사전에 확실히 결정해 두는 것이다. 웹 서비스가 사회에서 중요한 역할을 담당하기 시작하면서 사용 중인 웹 사이트가 갑자기 정지되어 버리는 경우 사용자에게 크리티컬 한 문제가 생기기 시작하였고, 서비스를 제공하는 쪽에서는 갑자기 문제가 생겨 의도하지 않은 서비스의 정지나 성능 저하가 일어나지 않도록 문제 발생 시 신속하게 복구하여 정상 상태를 유지하는 것이 가장 중요한 운용 포인트가 되었다. 이렇게 정상 상태를 유지하는 것이 시스템 감시의 목적이며, 시스템 감시는 아래 4가지 항목으로 정의한다. '정상 상태'를 감시 항목 + 정상적인 결..

Chapter 4. 인프라 준비의 기초 지식

4.1 인프라를 준비할 때 무엇부터 결정할 것인가? 인프라를 준비하기 위해서는 개발자로부터 기능적 요건, 액세스 수나 사용자 수 등의 목표수치를 전달받아 관련 행정기관이나 법률 등의 대응과 같은 것들을 고려하며 필요한 요구사항을 정리하는 단계가 꼭 필요하다. 이때, 예산이 매우 적은 경우에는 VPS(Virtual Private Server)와 같은 저렴한 서비스를 이용할 수도 있다. 성능과 관련된 수치는 선정 시기에 직접 사용해보지 않으면 알 수 없기 때문에 시작한 후에라도 유연하게 대응할 수 있는 클라우드를 이용하는 것이 좋다. 최근에는 비용 및 성능의 관점에서 물리적인 서버를 고집할 이유가 거의 없기 때문에 각각의 클라우드 서비스를 잘 비교하여 가장 필요한 서비스를 선택하도록 한다. [IaaS형 클라..

Chapter 3. 웹 서비스 서버 구성의 모범 사례

3.1 기본적인 구성 서버의 구성에는 흔히 3가지의 패턴이 있고, 이를 이론상으로 1 tier부터 2,3 tier 구조라고 부른다. 1-tier의 경우 하나의 물리적 서버 안에 웹서비스를 모두 구현하는 것이며 2,3 tier는 이를 WEB, DB, File 형태로 각각을 서버로 분리하여 구현한 것을 말한다. 각 형태의 전형적인 구분 방법은 아래와 같다. 이렇게 역할을 명확히 구분하게 되면, 해당 역할을 하는 솔루션의 버전을 변경하거나 다른 솔루션으로의 전환, 교환이 쉬워진다. 수직적인 스택에 비해 결합도가 강해 역할을 독립적으로 운용하기에는 어렵지만, 이렇게 세분화하여 분리함으로써 성능과 다중성 및 가용성 등의 대책을 조금 더 용이하게 세울 수 있게 된다. 구분 내용 역할 및 대표 제품 WEB 클라이언트..

Chapter 2. 인프라 기술의 기초 지식 -2

2021/03/07 - [Book Study/웹 엔지니어가 알아야 할 인프라의 기본] - Chapter 2. 인프라 기술의 기초 지식 -1 2.5 네트워크 보안 이야기 통신의 보안을 유지하기 위해서는 여러 가지 기술이 쓰이지만, 흔히 방화벽과 SSL을 이용하여 네트워크 보안을 유지한다. 방화벽은 안쪽(조직 내부의 네트워크)에서 바깥쪽(인터넷) 또는 바깥쪽에서 안쪽으로의 통신내용을 제어하고, 의도하지 않은 통신이 발생하지 않도록 접속 요구를 차단함으로써 네트워크의 보안을 향상시키는 방법이다. 방화벽에서는 소스 IP주소, 목적지 IP주소, 포트 그리고 접속량 및 통신량을 제한하여 보안을 유지하며, 경우에 따라서 통신 내용까지 검사하기도 한다. 이러한 것을 일괄적으로 대응하는 기기를 UTM(Unified Th..

반응형