목록책 정리/대규모 서비스를 지탱하는 기술 (12)
개발일기장
추가강의1. 작업 큐 시스템 웹 서비스와 요청 웹 서비스는 기본적으로 요청이 동기적으로 실행된다. 따라서 계속 성장해가는 웹 서비스에서는 데이터가 축적되면서 점점 무거워진다. 성능이 악화되고 서비스 사용자 경험에 영향을 주는 경우가 발생. 이런 경우 작업큐 시스템을 사용함으로써 나중으로 미뤄도 되는 처리를 비동기로 실행하고, 사용자 경험도 개선할 수 있다. 작업큐 시스템 입문 비동기를 원하는 처리를 독립된 스크립트로 해서 해당 스크립트를 애플리케이션 내부에서 호출하는 방법. 이거는 양이 많아지면 문제가 생기므로 성능상 단점. 어느 정도 양이 있는 비동기 처리를 수행하려면 작업 큐 와 워커를 세트로 한 작업큐 시스템을 사용하는 것이 일반적이다. 클라이언트 (웹 애플리케이션)- 작업을 투입하다. 작업을 투입..
강의38. 네트워크 분기점 서비스 성장과 네트워크 분기점 1. 1Gbps이상 -> PC라우터의 한계 (라고 적혀 있는데 요즘 1~10Gps까지 보급되는 마당에) 2. 500호스트 이상 -> 1서브넷의 한계 3. 글로벌화 -> 1데이터 센터의 한계 1Gbps의 한계 PC라우터의 전송능력이 한계 -> 패킷 하나가 300바이트일 경우 300kpps -> PC 라우터를 나열한다, 박스형 라우터를 구입하는 방법으로 해결한다. 500호스트의 한계 - 1서브넷, ARP 테이블에서의 한계 IP주소와 MAC주소 간 관례를 나타내는 ARP 테이블이 있는데, 호스트의 수가 일정 수치를 넘어서면 특정 호스트로만 ping이 가지 않게 되는 등 통신을 할 수 없는 상황이 발생 Subnet 내부에 호스트를 많이 두면 브로드 캐스팅..
강의36. 가상화 기술 가상화 기술의 도입 확장성 -> 오버헤드의 최소화 비용대비 성능 -> 리소스 사용률 향상, 운용의 유연함(환경의 단순화) 고가용성 -> 환경의 격리 시스템의 전체적인 확장성을 높이거나, 비용대비 성능을 올리고, 리소스 사용률을 높이고, 유연하게 운용할 수 있게 하고, 서버환경을 격리해서 고가용성을 실현하는 것을 목표로 한다. 가상화 기술의 효용 ‘하테나’에서는 가상화 기술(Xen)을 사용함으로써 다음과 같은 효용을 얻고 있다. 1. IPMI를 대체하는 하이퍼바이저 2. 하드웨어 간 차이 흡수(->환경 추상화) 3. 준 가상화 사용 4. 리소스 소비 제어 (과부하 경고, 부하 조정) 가상화 서버 구축정책 가상화 기술을 도입하는 가장 기본적인 목적은 하드웨어의 이용효율 향상. 남아있는..
강의33. 다중성 확보 100%가동률에 약간 못 미치지만 100%를 목표로 해야 한다. SPOF(Single Point of Failure)단일 장애점을 제거하는 것이 중요하다. 다중성 확보 - AP서버 AP서버에서의 확장성을 생각하는 방식과 마찬가지로 서버 여러 대를 늘어놓는 게 기본이 된다. 1, 2대 정도 정지하더라도 충분히 처리할 수 있도록 처리능력을 확보해두는 것이다. 서버는 다양한 이유로 멈추는데, 이에 대한 대응으로 로드밸런서로 페일오버(장애극복), 페일백(정상복귀)하여 고장 난 서버를 자동적으로 분리하고, 서버가 복구되면 원상태로 복귀시키는 작업을 수행한다. 로드밸런서는 서버에 대해 주기적으로 헬스체크를 하며, AP서버나 DB서버가 살아있는지 여부를 판정하고 있다. 다중성 확보 - DB서버..
강의31. 계층과 확장성 확장성에 대한 요구 상당수의 서비스가 서버 1대로 동작한다. 한 서비스가 수억 PV/월 정도로 트래픽이 발생하면 어떻게 해서 확장시켜 갈 것인가라는 과제가 되고, 거기에 끊임없는 다양한 기술과 노하우가 파묻혀 있다. 계층별 확장성 AP서버는 기본적으로 간단하게 확장시킬 수 있다. AP서버는 상태를 갖고 있지 않으므로 요청별로 다른 AP서버로 날려보내도 처리상 문제가 발생하지 않고, 로드밸런서에 새로운 서버를 추가해가면 점점 확장되어 간다. 대수만 늘리면 된다. DB나 파일 서버의 경우에는 분산, 확장성 확보가 어렵다. Read, write 두 종류의 요청이 있는데 read는 비교적 확장, 분산이 쉽지만 write를 분산하는 것은 어렵다는 것을 위에서 계속 말했음. (복습) 단순히..
강의29. 엔터프라이즈 vs. 웹서비스 응용범위로 보는 차이(엔터프라이즈[상용 application]) 1. 트래픽의 경우 웹서비스의 경우 특히 글로벌하게 전개되고 있는 서비스에서는 어마어마한 트래픽이 발생할 가능성이 있다. 2. 성장속도도 웹서비스가 압도적이다. 3. 신뢰성에서는 엔터프라이즈는 장애가 발생해서 데이터가 없어지거나 하면 실제로 돈이 사라지기도 하고, 사람의 목숨과도 연관이 있는 경우도 있다. 그런 의미에서 굉장히 높은 신뢰성이 요구되지만, 웹 서비스에서는 신뢰성이 그렇게 높은 레벨이 요구되지 않는다는 특징이 있다. 4. 트랙잭션의 경우(DB) 엔터프라이즈에서는 데이터 간 정합성을 정확히 유지해야한다.(ex 은행 인출, 입금) 트랜잭션 처리를 이용해서 정합성을 명확히 담보하면서 처리해야한다..
강의16. 정수 데이터를 컴팩트하게 가져가기 큰 정수열을 컴팩트하게 만들면 -> 디스크 I/O를 줄일 수 있다. -> 고속처리 가능 -> RDBMS에 저장하면 아무래도 크기가 늘어나는 데이터를 최소한의 크기로 줄여서 다룰 수 있다. 데이터 형의 크기 등에 의식을 갖는다. VB Code(Variable Byte Code, 가변길이 바이트 부호)를 사용한다. 예시) 수치 고정길이 바이너리 부호 VB Code 5 00000000 00000000 00000000 00000101 10000101 130 00000000 00000000 00000000 10000010 00000001 10000010 강의 17~18은 문제 풀어보는 거랑 코드라서 생략 강의20. 하테나 다이어리의 키워드 링크 하테나 다이어리는 블로그..
강의14. 용도특화형 인덱싱 인덱스와 시스템 구성 – RDBMS의 한계 전문 검색이나 유사문서계열 탐색, 데이터 마이닝의 경우에는 RDBMS로는 한계가 있다. 배치처리를 통해 RDBMS에서 데이터를 추출해서 별도의 인덱스 서버와 같은 것을 만들고, 여기서 Remote Procedure Call(API로 불리는 것) 등으로 액세스하는 방법을 사용한다. AP서버에서 직접 관리하지 않는 이유는 커다란 검색 인덱스를 여러 프로세스에서 같이 사용하도록 구성하는 거는 비효율적이기 때문이다.(AP서버는 여러 개 있고 각각의 서버마다 검색 인덱스를 가지고 있을 필요가 없잖아.) 그래서 검색 인덱스를 위한 서버가 있으면 좋다. 용도특화형 인덱싱 – 튜닝한 데이터 구조 사용하기 RDBMS는 범용적인 용도로 만들어져 있다...