목록책 정리 (39)
개발일기장
기본적으로 데이터베이스는 데이터를 저장하고, 데이터를 제공하는 작업을 수행한다. 이 방법을 개발자가 주의해야하는 이유는 직접 저장소 엔진을 구현하기 보다는 사용 가능한 여러 저장소 엔진 중에 적합한 엔진을 선택하기 때문이다. 특정 작업부하 유형에서 좋은 성능을 내게끔 저장소 엔진을 조정하려면 내부에서 수행되는 작업에 대해 이해할 필요가 있다. 색인은 기본 데이터에서 파생된 추가적인 구조. 쓰기 속도를 느리게 만든다. 데이터를 쓸 때마다 매번 색인도 갱신해야 하기 때문. 중요한 트레이드 오프이다. 읽기는 빨라지지만 쓰기는 느려진다. 그래서 보통 자동으로 모모든 것 색인하지 않고, 관리자가 수동으로 색인을 선택하거나 만든다. 해시 색인 키-값 데이터의 경우 사전 타입과 매우 유사하다. 보통 해시 맵으로 구현..
관계형 모델과 문서 모델 데이터는 테이블이라 불리는 관계로 구성되고 각 관계는 순서 없는 튜플(row)의 모음이다. 비즈니스 데이터 철, 트랜잭션 처리, 일괄처리로 일상적에서 수행되는 일. 관계형 모델의 목표는 정리된 인터페이스 뒤로 구현 세부 사항을 숨기는 것이다. 오늘날 웹에서 볼 수 있는 대부분의 서비스는 여전히 관계형 데이터베이스를 통해 제공된다. NoSQL의 탄생 애플리케이션은 저마다 요구사항이 다르고, 사용사례에 맞는 최적의 선택을 한다. 관계형 데이터베이스가 폭넓은 다양함을 가진 비관계형 데이터스토어와 함께 사용될 것이다. 다중 저장소 지속성(polyglot persistence) 객체 관계형 불일치: 객체지향 프로그래밍 언어로 개발을 할 때 애플리케이션 코드와 데이터베이스 모델 객체 사이에..
오늘날 많은 애플리케이션은 계산 중심이 아니고 데이터 중심적이다. 문제는 데이터의 양, 데이터의 복잡도, 데이터의 변화 속도이다. 데이터베이스(DB), 캐시(cache), 검색 색인(search index), 스트림 처리(stream processing), 일괄 처리(batch processing) 들은 추상화된 개념이다. 1. 데이터의 저장과 처리에 따른 여러 가지 도구들. 분류 간 경계가 흐려지고 있다. Ex) 메시지 큐로 사용하는 데이터 스토어 Redis, 데이터베이스처럼 지속성을 보장하는 메시지 큐 아파치 카프카(Apache Kafka) 2. 단일 도구로는 더 이상 데이터 처리와 저장 모두를 만족시킬 수 없는 과도하고 광범위한 요구사항을 지닌다. 작업은 단일 도구에서 태스크로 나누고 다양한 도구들..
추가강의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를 분산하는 것은 어렵다는 것을 위에서 계속 말했음. (복습) 단순히..