데이터 시스템의 기초
01장: 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션
오늘날 소프트웨어는 계산 중심 과는 다르게 데이터 중심적이다
- 데이터 베이스
- 캐시
- 검색 색인
- 스트림 처리
- 일괄 처리
소프트웨어 시스템의 관심사
- 신뢰성
- 확장성
- 유지보수성
신뢰성
- 애플리케이션은 사용자가 기대한 기능을 수행한다
- 시스템은 사용자가 범한 실수나 예상치 못한 소프트웨어 사용법을 허용할수 있다
- 시스템 성능은 예상된 부하와 데이터 망에서 필수적인 사용 사례를 충분히 만족한다
- 시스템은 허가되지 않은 접근과 오남용을 방지한다
잘못될수 있는 일을 결함이라고 부른다 결함을 예측하고 대처할수 있는 시스템을 내결함성 또는 탄력성을 지녔다고 말한다
고의적으로 결함을 유도함 -> 카오스 몽키
- 하드웨어 결함
- 소프트웨어 오류
- 인적 오류
신뢰성은 얼마나 중요할까?
확장성
확장성은 증가한 부하에 대처하는 시스템 능력을 설명하는 데 사용하는 용어
- 부하 기술하기
- 성능 기술하기
- 처리량, 응답시간
- 부하 대응 접근 방식
- 스케일업, 스케일 아웃
- 비공유 아키텍처
유지보수성
- 운용성: 운영의 편리함 만들기
- 단순성: 복잡도 관리
- 우발적 복잡도를 줄인다
- 발전성: 변화를 쉽게 만들기
- 조직 프로세스 애자일
요구사항에는 기능적 요구사항과 비기능적요구사항