패스트캠퍼스 강의 - Part 10. Redis, Kafka를 활용한 대용량 데이터 처리 프로젝트
<명확한 요구사항을 위해 실무 중 확인해야하는 정보들>
- 이 서비스가 왜 개발되는 것인가?
- 영향 범위 파악, 확장성 고려
- 이 서비스 런칭 시점이 어떻게 되는가?
- 개발 우선순위와 완성도에 영향
- 이 서비스를 개발하기 위한 자원은 어떻게 확보되는가? (투자, 예산, 유휴 서버, 인력)
- 일을 하기 위한 도구가 준비되어 있지 않으면 기간에 영향을 줌
- 이 서비스의 주요 client가 어떻게 되는가?
- 요구사항 합의, 개발 현황 공유, client test, 런칭 후 모니터링, 장애 공유
<품질요건>
1. 가용성
- RTO, RPO, 장애, uptime
2. 성능
- ops/sec, TPS, DataIn/s, DataOut/s
3. 비용
- 얼마만큼의 자원을 사용하여 해당 기능을 구축할 것인가?
4. 보안
- 정보의 탈취가능 여부, 노출방지, 보안 위협으로부터 자유로운지?
5. 효율성
- 해당 서비스를 사용, 유지보수, 수정, 배포, 폐기 등의 작업을 하는데에 대한 업무 효율성
ex) 가격 비교 서비스 품질요건
1. 가용성 - down이 발생되지 않게 하는 것도 중요하지만 발생시 정상화 방안과 그에 따른 목표시간 수립
ex) 가용성: 99.95% (4.38시간)
ex) RTO 10분 (다운이 되면 10분 내 복구할 것이다)
ex) RPO 120초 (다운이 되면 2분 전 데이터까지 복구할 것이다)
2. 성능
ex) 200 Ops/sec, 200 TPS (Read 100, Write 100)
3. 용량 - 얼마만큼 데이터를 저장할 수 있는가?
ex) Data-out/s : 한번 Return 시 Out 하는 Byte * ReadTPS = 300 Byte * 100 * 10 = 300kb
- (key:value) = (ProdGrpId: [{ProdId:Price}, {},{},{} ...) = GP001001A:[{P1A01:100000}, {}, {}, {} ...] * 10
-> 2000만건 까지 데이터 저장 가능
4. 비용 - 얼마만큼의 자원을 사용하여 해당 기능을 구축할 것인가?
ex) H/W : 8Core/32Gb VM * 2 (Redis) + 2Core/8Gb VM * 1(Service)
ex) S/W : 오픈소스
ex) 인력 : 자체 개발
5. 보안
ex) 내부망에서 사용되므로 관계 없음
6. 효율성
ex) API REST 기준, Swagger 제공, API gateway 등록여부는 추후 결정
<러프한 논리적 흐름>
1. 타 서비스에서 최저가 서비스 호출 (keyword)
2. keyword:{prodGrpId, ,,,} 조회
3. Redis에 없다면 ES에서조회하여 prodGrpId 조회 (상위 10건) 후 Redis에 저장
4. prodGrpId:[{prodId,price},{}...] 조회
5. 없다면 Elasticsearch에서 ProdId별 가격조회 후 반환
6. 반환 후 Redis에 ProdId:Price 정보 저장
'DATA' 카테고리의 다른 글
분산시스템 이해 (0) | 2023.03.18 |
---|---|
분산 시스템의 특징 (0) | 2023.02.18 |
로그란? & 로그 수집 아키텍처 (0) | 2023.01.11 |
MongoDB 기본 개념 (0) | 2022.12.26 |
NoSQL 종류 - MongoDB, Redis, Hbase, Druid (0) | 2022.12.25 |
댓글