본문 바로가기
DATA

usecase 에 기반한 서비스 요구사항 정의하는 방법

by bzerome240 2023. 8. 4.

패스트캠퍼스 강의 - 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 정보 저장

728x90
반응형

'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

댓글