ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 그림으로 공부하는 IT 인프라 구조, 야마자키 야스시
    공부 기록/IT 기술 2019. 9. 18. 08:48
    728x90


    IT의 기초 개념을 잡기 위해 책을 찾던 중 나에게 딱 적합한 책을 찾았다.
    그림으로 이해하기 쉽도록 풀어쓴 책.

    그림으로 공부하는 IT 인프라 구조
    국내도서
    저자 : 야마자키 야스시,미나와 요시코,아제카츠 요헤이,사토 타카히코 / 김완섭역
    출판 : 제이펍 2015.07.20
    상세보기
    종이 한장에 요약할 수 없는 것은 충분히 수록된 것도 아니고 결정을 내릴 때가 된 것도 아니다.
                                                         – 드와이트 아이젠하워

    짧게 써라. 그러면 익힐 것이다. 
    명료하게 써라. 그러면 이해될 것이다.
    그림 같이 써라. 그러면 기억 속에 머물 것이다.
                                                              – 퓰리쳐


    이 두 명언에 부합하는, 한 장에 그림과 설명으로 독자들의 이해를 돕는 책이다.
    도서대출기간이 지나 다 보진 못했지만 일단 메모해두고, 이 서적은 소장해서 두고두고 봐야겠다.







    Chapter 1. 인프라 아키텍쳐

    인프라(infra), 우리말로 ‘기반’ + 구조(architecture)à IT 인프라: IT의 기반이 되는 것
    인프라 아키텍쳐란 IT 인프라의 구조를 의미.
     
     

    Chapter 2: 서버

    대역: 원래는 주파수 대역. IT 인프라에서는 데이터 전송 능력을 의미. 한 번에 데이터를 보낼 수 있는 데이터의 폭(전송폭), 1초에 전송할 수 있는 횟수(전송 횟수). 전송 횟수는 1초/1 처리당 소요 시간(응답시간)으로도 표현. Throughput(처리량)이라고도 부름. 성능과 관련.
    -       OS는 하드웨어를 움직이기 위한 프로그램의 집합.
     

    Chapter 3. 3 계층형 시스템

    기본 구성 방식은 집약형과 분할형이 있는데
    집약형은 대형 컴퓨터(범용 장비, 호스트, 메인 프레임) 에서 모두 처리하는 것으로, 구성이 간단하고안정성이 높으며 고성능이라는 점이 장점이나 대형 컴퓨터의 도임 비용과 유지 비용이 크며 확장성에 한계가 있다는 것이 단점이다.  은행의 계정시스템이나 기업에서 사용하고 있는 기간 시스템이 예이다.
    분할형은 여러 대의 컴퓨터를 조합해서 하나의 시스템을 구축하는 구조로, 낮은 비용으로 시스템을 구축하고, 서버 대수를 늘릴 수 있어 확장성이 높은 것이 장점이나 대수가 늘어나면 관리 구조가 복잡해지고 한 대가 망가지면 영향 범위를 최소화하기 위한 구조를 검토해야 한다는 점이 단점이다.  분할형 아키텍쳐에서 이용되는 컴퓨터가 ‘서버’ – 컴퓨터 자체(하드웨어)일 수도 있고 소프트웨어를 가리키는 경우도 있다.
    웹서버: 인터넷 접속햇을 때 사용자 입력, HTML 생성을 담당하는, 서버에서 동작하는 소프트웨어

     
    수직 분할형 아키텍쳐
    -       클라이언트-서버형 아키텍쳐: 클라이언트 측에 전용 소프트웨어를 설치하고 클라이언트 측에서 많으느 처리 실행. 서버측은 데이터 입출력만 담당. 소수의 서버로 다수의 클라이언트 처리 가능하다는 것이 장점. 단점은 클라이언트의 소프트웨어 정기 업데이트. 서버에 처리가 집중되면 서버 확장성에 한계 발생할 수 있음.
    -       3계층형 아키텍쳐: 프레젠테이션 계층에서 사용자 입력을 받고, 웹 브라우저 화면 표시 / 애플리케이션 계층에서 사용자 요청(REQUEST)에 따라 업무 처리 / 데이터 계층에서 애플리케이션 계층의 요청에 따라 데이터 입출력함.
    수평 분할형 아키텍쳐
     
    네트워크 인터페이스: 서버와 외부 장비를 연결하기 위한 외부 접속용 인터페이스. (이더넷)


    -    프로세스와 스레드. 프로그램 실행 파일 자체가 아니라 OS 상에서 실행돼서 어느 정도 독립성을 가지고 동작하는 것. 프로그램 설치 창/과정과 같이. 활동하려면 메모리 공간이 필요. 커널에 의해 메모리 상에 확보됨. 프로세스/스레드가 활동하는 개인 공간. 데이터를 주고 받기 위해 사용. 
    프로세스는 전용 메모리 공간을 이용하여 동작하는 반면, 스레드는 다른 스레드와 메모리 공간을 공유한다. 둘 중 어느 것을 이용할지는 개발자 몫.
    이름 해석(name resoulution):
    -    http 프로토콜: http가 텍스트를 송수신하기 위한 약속
    -    Apach HTTP Server: 웹 서버에는 다양한 소프트웨어가 있는 데 그 중에서 인기 있는 s/w재단이 제공하는 서버.
    -    정적 콘텐츠: 실시간으로 변경할 필요가 없는 데이터. Like company logo. 디스크에 저장해서 요청이 있으면 저장해둔 내용을 HTTP를 통해 사용자 웹 브라우저로 반환
    -    동적 콘텐츠: 높으느 빈도로 변경되는 데이터. (날씨 정보, 으느행 잔고, 쇼핑 장바구니) 디스크 성능의 병목 현상의 원인이 될 수 있음. 파일로 저장하는 것 자체가 비효율적일 수 있음. 서버가 HTML파일을 동적으로 생성한다. 웹 서버는 동적 컨텐츠에 대한 요청을 AP에게 던지고 결과를 기다린다. 
    데이터가 필요하면 DB 서버에 접속(대량의 데이터 관리)하여 질의하고 그 결과를 HTML 등으로 정리해서 반환. AP 서버가 DB 서버에 접속하려면 드라이버 필요. (커널의 장치드라이브와 비슷.) (*AP 서버: 동적 콘텐츠를 처리하는 서버.)
    변동이 적은 데이터를 매번 데이터베이스에 질의할 필요는 없으니, 규모가 작고 갱신 빈도가 낮은 정보는 JVM(Java Virtual Machine)*내부에 캐시로 저장해두었다가 반환.
    반대로 규모가 큰 정적 데이터 전송 시에는 DB서버 외에 CDM(Content Delivery Network)라 불리는 데이터 전송 전용 서버를 이용하는 경우도 있음.
    *JVM: 자바를 이용한 AP서버에서 JV이라는 가상 머신이 동작하고 있음. 하나의 거대한 프로셋로 하나의OS로서 다양한 기능을 수행. 그 중 하나가 스레드가 요청을 접수하는 것
    -    CDN: 대부분의 웹 시스템에서 이용하고 있음.대량 데이터 전송에 특화된 것. 하나의 시스템을 수 많은 사람들이 이용한다는 웹 시스템의 특징에서 기인.
     
     

    Chapter 4. 동기/비동기

    Asynchronous  비동기. 처리를 병렬로 진행 가능(but 처리가 끝났는지 별도의 확인이 필요)
    구글에서 Ajax (Asynchronous JavaScript + XML )을 사용한 웹서비스 다수 공개.
    e.g.  구글에서 키워드 입력하면 Ajax가 입력 도중에 키워드를 구글검색엔진서버에 전송해서 키워드 후보 데이터를 얻어 브라우저에 표시.

     

    chapter 5. 인프라를 지탱하는 응용 이론

    -    캐시(Cashe): 임시 저장소. ‘바로 사용할 테니까 일단 여기에 두자’ 일부 데이터를 데이터 출력 위치와 가까운 지점에 일시적으로 저장. 데이터 재사용을 전제로 한다. 웹 서버 자체 부하를 줄이는 방법으로 웹 서버와 클라이언트 사이에 캐시 서버를 배치하는 방법이 있으나 요즘에는 대신에 CDN이라는 웹 서버나 다른 네트워크에 웹 콘텐츠 캐시를 배치하는 구조를 이용하기도 한다. 데이터에 고속으로 액세스할 수 있고, 데이터에 대한 액세스 부하를 줄일 수 있다.
    -    끼어들기(Interupt): 지금 하고 있는 일을 중단하고 급히 다른 일을 하는 것. 키보드 입력 등의 특정 이벤트가 발생했을 때 CPU에 이것을 알려 해당 이벤트에 대응하는 처리를 끝낸 후 하던 처리를 계속 하는 것. 네트워크 통신으로 데이터가 도착하면 끼어들기로 처리된다.
    -    폴링(Polling): 정기적으로 질의함으로써 상대가 어떤 상태인지, 어떤 요구를 가지고 있는지 등을 알 수 있다. 질의 방향이 단방향, 일정간격을 따라 정기적으로 발생. 반복(루프)만 하면 되기에 프로그래밍이 쉽다, 상대가 응답하는지 확인할 수 있다, 모아서 일괄적으로 처리할 수 있다. E.g. NCP(시간동기) –정기적으로 실시해서 자신의 시간이 맞는지 확인하는 구조.
    -    핑퐁(Pingpong):

     


     

    To be continued..

    댓글

Designed by Tistory.