공통/인프라 & 시스템 설계

    대규모 서비스를 위한 고려 사항 (2)

    6. 무상태(Stateless) 웹 계층 웹 계층을 수평적으로 확장하기 위해서는 사용자 세션 정보와 같은 상태 정보를 웹 계층에서 제거해야 한다. 바람직한 전략은 상태 정보를 관계형 데이터베이스나 NoSQL과 같은 지속성 저장소에 보관하고, 필요할 때 가져오도록 하는 것이다. 이렇게 구성된 웹 계층을 무상태 웹 계층이라고 한다. 상태 정보 의존적인 아키텍처 예를 들어서 사용자 A의 세션 정보나 프로파일 이미지와 같은 상태 정보는 서버 1에 저장된다. 이때의 문제는 사용자 A를 인증하기 위해서 HTTP 요청은 반드시 서버 1로 전송되어야 한다는 것이다. 만약 서버 2로 요청하면, 서버 2에는 사용자 A에 대한 상태 정보가 저장되어 있지 않아 인증이 실패할 것이다. Sticky Session 이러한 문제를 ..

    대규모 서비스를 위한 고려 사항 (1)

    1. 데이터베이스 RDBMS vs NoSQL RDBMS 관계형 데이터베이스는 자료를 테이블과 열, 칼럼으로 표현하고, SQL을 사용하면 여러 테이블에 있는 데이터를 관계에 따라 조인하여 합칠 수 있다. NoSQL 비 관계형 데이터베이스는 크게 4가지 부류로 나눌 수 있다. Key-Value Store Graph Store Column Store Document Store 이러한 비 관계형 데이터베이스는 일반적으로 조인 연산을 지원하지 않는다. 대부분의 경우에는 관계형 데이터베이스가 좋은 선택지가 될 것인데, 경우에 따라 구축하려는 시스템에 적합하지 않은 경우 관계형 데이터베이스 이외의 저장소도 살펴봐야 한다. NoSQL 데이터베이스를 도입할 상황 아주 낮은 응답 지연시간 (latency)가 요구됨. 데이..

    [대규모 서비스를 지탱하는 기술] 현대 웹 서비스 구축에 필요한 실전 기술

    작업 큐 시스템 웹 서비스와 요청 웹 서비스에서는 기본적으로 요청이 동기적으로 실행된다. 즉 요청에 기인하는 모든 처리가 끝난 다음에 응답이 반환된다. 따라서 계속 성장해가는 웹 서비스에서는 데이터가 서서히 축적되면서 데이터를 추가하고 갱신하는 처리가 점점 무거워진다. 양호했던 성능도 시간이 지남에 따라 악화되고 서비스 사용자 경험에 영향을 주는 경우가 발생한다. 이런 경우에 작업 큐 시스템을 사용함으로써 나중으로 미뤄도 되는 처리를 비동기로 실행할 수 있고 사용자 경험도 개선할 수 있다. 작업 큐 시스템 입문 어느 정도 양이 있는 비동기 처리를 안정적으로 수행하려면 작업 큐와 워커를 세트로 한 작업 큐 시스템을 사용하는 것이 일반적이다. 작업큐 시스템에서는 작업 큐에 실행하고자 하는 처리를 등록하고, ..

    [대규모 서비스를 지탱하는 기술] 가상화 기술 및 CDN

    대규모 서비스를 지탱하는 기술 가상화 기술 가상화 기술의 목적 확장성 오버헤드의 최소화 비용 대비 성능 리소스 사용률 향상 운용의 유연함 고가용성 환경의 격리 가상화 기술의 효용 IPMI를 대체하는 하이퍼바이저 IPMI를 대체해서 하이퍼바이저를 사용할 수 있게 되어 있다. 서버 상에 최초로 기동 하는 OS (호스트 OS)를 하이퍼바이저, 호스트 OS 상에서 기동 하는 OS를 게스트 OS라고 한다. 하드웨어 환경 추상화로 차이 흡수 하드웨어 차이를 흡수해서 환경을 추상화할 수 있다. 준가상화 사용 가상화로 인한 오버헤드를 줄이기 위해 하드웨어를 완전히 에뮬레이팅하지 않은 준 가상화 방식을 사용. 리소스 소비 제어 리소스 소비를 소프트웨어 레벨에서 강력하게 제어할 수 있다. 리소스 소비를 제어함으로써 과부하..

    [대규모 서비스를 지탱하는 기술] 다중성 확보, 시스템 안정화

    대규모 서비스를 지탱하는 기술 다중성 확보 다중화를 위해서 가장 중요시하는 것은 SPOF(Single Point of Failure) 즉, 단일 장애점을 제거하는 것이다. 한 곳에 장애가 나면 시스템이 멈춰버리는 부분을 가능한 한 없앰으로써 가동률을 높이도록 함. AP 서버 다중성 확보 AP 서버에서는 확장성을 생각하는 방식과 마찬가지로 서버 여러 대를 늘어놓는 것이 기본이 된다. 중요한 것은 1대나 2대 정도 정지하더라도 충분히 처리할 수 있도록 처리 능력을 확보해두는 것이다. 서버는 다양한 요인으로 멈춘다. 이에 대한 대응으로 로드밸런서로 페일오버(failover, 장애극복), 페일백(failback, 정상 복귀)하여 고장 난 서버를 자동적으로 분리하고, 서버가 복구되면 원 상태로 복귀시키는 작업을 ..