주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 부록
10장 11장 작성은 건너뛰었는데, 이 쪽은 세부적으로 포스팅하려고 한다. (DDD, CQRS등)
성능 테스트
부하 테스트 (load)
목적: 예상되는 부하에서 시스템이 요구 성능을 만족하는지 확인하기 위한 테스트
- TPS/RPS
- p95/p99 latency
- 에러율
스트레스 테스트 (stress)
목적: 시스템을 한계 이상으로 내몰아 최대 성능을 확인하기 위한 테스트
- 최대 수용량 확인
- 붕괴 지점 이후에 어떻게 동작하는가?
지속 부하 테스트 (soak)
목적: 일정 부하를 장시간 유지했을 때 버틸 수 있는지 확인하기 위한 테스트
- 커넥션/메모리 누수 확인
- 성능 저하 확인
스파이크 테스트 (spike)
목적: 갑작스런 트래픽 급증에 대해 시스템의 반응성과 안정성 확인하기 위한 테스트
- 회복력 확인
- 오토스케일링/레이트 리밋 등 설계 점검
용어

- 포화점(saturation point): 자원 사용량이 100%에 가까워져, 부하를 증가시켜도 처리량(throughput)이 의미 있게 증가하지 않는 지점 → 성능 한계 지점
- 버클존(buckle zone): 시스템이 한계를 초과했을 때 급격하게 성능이 악화되는 지점
성능 테스트 설계 시 고려 사항
- 시스템 트래픽 패턴
- 동시 요청 사용자 수와 트래픽 규모
- 기능별 요청 비율
- 데이터 크기
- 워밍업(캐시, JVM 등)
- 적절한 목표치 설정
성능 테스트 도구
- nGrinder (Groovy/Jython)
- k6
- Go로 개발됨 → 고루틴 사용
- JavaScript로 테스트 스크립트 작성
- JMeter
- Locust
- Gatling
성능 테스트 시 주의 사항
- 테스트 대상 시스템과 부하기 서버는 분리하기
- 서버 설정에 제한을 걸고 부하 테스트 실행 (예: Nginx의
limit_req_zone설정으로 IP당 초당 요청 개수 제한) - 스레드 풀 / DB 커넥션 풀 크기 설정
- 실제 운영 시스템과 테스트 대상 시스템의 네트워크 영역 고려
- 외부 서비스와 연동된 기능 테스트 시 주의 → 외부 서비스 모킹하기
- 최대한 실제 운영 환경과 동일하게 구성하기
NoSQL
사용 목적
- 수평 확장 / 분산 처리
- 유연한 스키마 / 비정형 데이터 처리
- 빠른 읽기/쓰기 성능
종류
- Key-Value DB
- 단순한 구조로 읽기/쓰기가 매우 빠름
- DynamoDB
- Redis
- Document DB
- JSON/BSON 같은 문서 단위 저장 ⇒ 복잡하고 중첩 구조의 모델 표현 용이
- 어플리케이션 객체와 매핑 쉽다
- MongoDB
- Couchbase
- Column-Family DB
- 하나의 Row 키를 기준으로 여러 개의 Column을 저장할 수 있다. ⇒ 여러 컬럼들을 그룹으로 묶어서 관리한다.
- Cassandra
- HBase
- Graph DB
- 그래프 형태(Node, Edge)로 관리
- 연결 / 추천 / 경로 탐색 등에 용이
- Neo4j
도입 시 고려 사항
- 트랜잭션 지원 여부
- 적합한 데이터 모델인지 확인
- 확장성과 성능
CAP Theorem

- 일관성(Consistency): 모든 클라이언트가 어떤 노드에 접속하든 항상 동일한 데이터를 본다.
- 가용성(Availability): 모든 요청은 성공 또는 실패 결과 응답을 받는다.
- 분할내성(Partition tolerance): 네트워크 장애가 발생해도 시스템은 계속 동작해야 한다.
NoSQL은 분산 시스템을 기반으로 하고 있어 네트워크 분할이 발생한다. ⇒ 분할내성을 기본으로 가져감
따라서 CP나 AP를 우선하는 설계를 한다.
- AP → 장애/분할 시 일관성을 포기하고 기능을 계속한다. 최종 일관성 허용
- CP → 장애/분할 시 일부(혹은 전체) 요청을 거부하고 데이터 정합성을 우선한다.
'CS > 스터디' 카테고리의 다른 글
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 8, 9장 (1) | 2026.01.13 |
|---|---|
| 이것이 자바다 - 5~6장 (0) | 2026.01.08 |
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 6, 7장 (0) | 2026.01.05 |
| 주니어 백엔드 개발자가 반드시 알아야 할 실무 지식 - 5장 (0) | 2025.12.30 |
| 이것이 자바다 - 1~4장 (0) | 2025.12.28 |