Open minkukjo opened 7 months ago
9p. 이 같은 소프트웨어 결함을 유발하는 버그는 특정 상황에 의해 발생하기 전까지 오랫동안 나타나지 않는다.
- Old Gen이 서서히 차다가 며칠 지나서야 Minor GC Time을 증가시키는 경험을 했었음
10p. 실제 데이터를 사용해 안전하게 살펴보고 실험할 수 있지만 실제 사용자에게는 영향이 없는 비 프록덕션 샌드박스를 제공하라
- Read Only 서비스에서 사용하기 좋음. Write는 구축하기 어렵고 비쌈.
10p. 단위 테스트부터 전체 시스템 통합 테스트와 수동 테스트까지 모든 수준에서 철저하게 테스트하라
- 전체 시스템 통합 테스트... 너무 비쌈....
10p. 장애 발생의 영향을 최소화하기 위해 인적 오류를 빠르고 쉽게 복구할 수 있게 하라.
- FlagR 같은 오픈소스 이용할 수 있음. Feature On/Off & Slow Rollout & whitelist & blacklist & ....
- 하지만 유지보수성이 많이 저하될 수 있는 위험 존재
14p. "전형적인" 응답 시간을 알고 싶다면 평균은 그다지 좋은 지표가 아니다.
- P50, P95, P99와 같은 백분위값 사용하는 것이 좋음
15p. SLO / SLA
- .
그러면서 시스템에서 어떻게 데이터 시스템 영역을 감추고, 일관된 데이터를 보장하는지에 대해 설명함
데이터 중심 애플리케이션을 디자인한다는 것은 우리는 개발자일 뿐 아니라, 데이터 디자이너 이기도 하다는 말에 공감
결국 이러한 설계에 있어 필요한 부분들은 다양한 요구사항, 다양한 상황에 의존적일 수 밖에 없음
그래서! 가장 중요한 것은 모다?
Reliability!
Scalability!
Maintainability!
If the entire planet Earth (and all servers on it) were swallowed by a black hole, tolerance of that fault would require web hosting in space
The Netflix Chaos Monkey [4] is an example of this approach.
응답시간을 분포로 보여줘야한다까진 이해했는데, SLO SLA라는 내용이 나오는데 잘 이해는 안감.. (왜 굳이? 라는 느낌)
큐잉 딜레이도 고려 사항
“good operations can often work around the limitations of
bad (or incomplete) software, but good software cannot run reliably with bad opera‐tions
느낀점
정리
데이터 시스템에 대한 생각
소프트웨어 시스템에서 중요하게 여기는 세 가지 관심사
신뢰성(Reliability)
결함과 장애
고의적으로 결함을 유도해서 내결함성 시스템을 훈련하고 테스트할 수 있음
하드웨어 결함
소프트웨어 오류
인적 오류(Human Error)
신뢰성이 중요한 이유?
확장성
부하 대응 접근 방식
유지보수성
유지보수성을 위한 소프트웨어 시스템 설계 원칙
운용성
단순성
발전성