본문 바로가기

(36)
04. 부호화와 발전 부호화(직렬화, 마샬링) - 인메모리 표현에서 바이트열로의 전환복호화(파싱, 역직렬화, 언마샬링) - 바이트열에서 인메모리 표현으로 전환 많은 서비스가 새로운 버전의 서비스를 동시에 모든 노드에 배포 하는 방식보다 일부 노드부터 서서히 배포하는 순회식 업그레이드가 필요순회식 업그레이드는 무중단으로 새로운 버전의 서비스를 출시 가능하게 함순회식 업그레이드 중이거나 여러 가지 다른 이유로 다양한 노드에서 다른 버전의 여러 애플리케이션 코드가 수행 될 수 있는데 이 때문에 시스템을 흐르는 모든 데이터는 하위 호환성(새로운 코드가 예전 데이터를 읽을 수 있음), 상위 호환성(예전 코드가 새로운 데이터를 읽을 수 있음)을 제공하는 방식으로 부호화 해야함 프로그래밍 언어에 특화된 부호화는 단일 프로그래밍 언어로 제..
03. 저장소와 검색 OLTP - 사용자 대면이기 때문에 대량의 요청을 받을 수 있음 - 각 질의마다 작은 수의 레코드만 다룸 - 병목은 대개 디스크 탐색 - 관점 1. 로그 구조화 관점 - 파일에 추가와 오래된 파일의 삭제만 허용하고 한 번 쓰여진 파일은 절대 갱신하지 않는다. - 비트캐스크, SS 테이블, LSM 트리, 레벨 DB, 카산드라, HBase, 루씬 등 2. 제자리 갱신 관점 - 덮어쓰기 할 수 있는 고정 크기 페이지의 셋으로 디스크를 다룸 - B트리(관계형 데이터베이스, 비정형 데이터베이스) OLAP - 적은 수의 질의를 다루지만 각 질의는 다루기 어렵고 짧은 시간에 수백만개의 레코드를 스캔해야 함 - 병목은 디스크 대역폭 - 컬럼 지향 저장소는 이런 종류의 작업 부하를 처리할 때 사용 가능함(인기가 높아지고..
02. 데이터 모델과 질의 언어 계층 모델(트리 구조) : 다대다 관계를 표현하기 적절하지 않음관계형 모델 : RDBMS와 SQL은 정규화 된 구조로 데이터를 저장하고 질의함비관계형 모델(NoSQL) 1. 문서 데이터베이스 : 데이터가 문서 자체에 포함 되어 있으면서 하나의 문서와 다른 문서 간 관계가 거의 없는 사용 사례를 대상으로 함 - 대규모 데이터셋이나 매우 높은 쓰기 처리량 달성을 관계형 데이터베이스보다 쉽게 할 수 있는 뛰어난 확장성 - 오픈 소스 프레임워크 - 관계형 모델에서 지원하지 않는 특수 질의 동작 - 관계형 스키마의 제한에 대한 불만과 더욱 동적이고 표현력이 풍부한 데이터 모델에 대한 바람 2. 그래프 데이터베이스 : 모든 것이 잠재적으로 관련 있다는 사용 사례를 대상으로 함 - 소셜 그래프 : 정점은 사람, 간선..
01. 신뢰할 수 있고 확장 가능하면서 유지보수하기 쉬운 애플리케이션 애플리케이션이 유용하려면 다양한 요구사항을 충족시켜야 함 - 기능적 요구 사항 : 여러 방법으로 데이터를 저장하고 조회하고 검색하고 처리하게끔 허용하는 작업 - 비기능적 요구 사항 : 보안, 신뢰성, 법규 준수, 확장성, 호환성, 유지보수성 등 1. 신뢰성 : 결함이 발생해도 시스템이 올바르게 동작하게 만들어야 함 - 하드웨어 결함, 소프트웨어 오류, 인적 오류 2. 확장성 : 부하가 증가해도 좋은 성능을 유지하기 위한 전략 - 부하 기술하기, 성능 기술하기, 부하 대응 접근 방식 3. 유지보수성 : 시스템에서 작업하는 엔지니어와 운영진의 삶을 개선 - 추상화 : 복잡도를 줄이고 쉽게 시스템을 변경할 수 있게 하며 새로운 사용 사례에 적용하는데 도움이 됨 - 운용성 : 시스템의 건강 상태를 잘 관찰할 수..