- 코드에 중복된 부분이 없나(코드 최적화)
- 특히 DB 쿼리나 외부 api 호출 같은 무거운 작업이 중복된다면 줄일 수 없나
- 캐싱 (DB IO는 비싼 작업)
- 데이터 변화가 별로 없는 경우 유리, 데이터가 자주 변한다면 변한 데이터를 캐시로 올려야 하기 때문에 효과가 덜함
- 자주 사용하는 데이터일수록 캐싱을 하는게 유리, 캐싱 안 하면 매번 select 해야하기 떄문임
- DB 쿼리 최적화 되어 있는가? 안 되어 있다면 최적화 필요 (DB 쿼리 최적화)
- 스케일 업/아웃 에 유리한 구조
- 이건 대용량 트래픽과는 크게 관련 없어 보이긴 한데, 기능간의 강한 결합성
- 개발을 할 땐 나 혼자 request 하는 경우만 생각하는데, 여러명이(대용량트래픽) 이 API를 사용해서 이 코드가 동시에 수행될 때 문제점이 발생할 수 있지 않을까 라는걸 계속 고민해보면 조금 더 대규모 트래픽일때 문제점을 찾기가 쉽고 문제점을 찾으면 해결법은 금방금방 찾을 수 있다.
트래픽 고려 외에 프로젝트 문제점 분석 해보고 싶다고 하면 아래 3가지 체크해보라고 한다.
1. 코드의 비 최적화
2. 수많은 DB IO
3. 기능간의 강한 결합성
Redis와 Local Caching 차이
Redis | Local Caching | |
특징 | In-memory 데이터베이스이고, key-value 형태의 데이터베이스이다. 다양한 command를 제공하고 single thread이다. |
서버 내에 caching 하는 방법. 서버와 라이프 사이클을 함께 돈다. |
장점 | 여러 instance가 하나의 데이터를 공유할 수 있다. 다양한 command 지원한다. | 네트워크를 타지 않기 때문에 Redis에 비해 비교적 빠름 |
단점 | Local Caching에 비해서는 느리다. | 여러 instance로 구성된 서버의 경우 캐시를 공유할 수 없다. |
'MSA > MSA관련기술' 카테고리의 다른 글
VPC (0) | 2024.03.22 |
---|---|
kafka(카프카) (0) | 2023.05.31 |
마이크로미터, 프로메테우스와 그라파나 (0) | 2023.04.10 |
테스트 코드 커버리지 측정 (jacoco 활용) (0) | 2022.12.18 |
마이크로미터 (0) | 2022.12.08 |
댓글