우당탕탕

백엔드 개발에서의 성능 최적화 및 스케일링 전략 본문

Tech

백엔드 개발에서의 성능 최적화 및 스케일링 전략

모찌모찝 2023. 6. 15. 22:00

 

오늘은 최근 지인들에게 많은 질문을 받고 있는 성능 최적화스케일링 전략에 대해 적어보려고 한다.

성능 최적화와 스케일링은 백엔드 개발에서 핵심적인 요소이다. 서비스의 성공 여부와 직결되는 이슈이기 때문에 꾸준한 최적화와 효율적인 스케일링 전략은 선택이 아닌 필수이다.

성능 최적화 전략

1. 캐싱
캐싱이란 반복적으로 사용되는 데이터나 계산 결과를 메모리에 저장하여 빠르게 액세스 할 수 있도록 하는 기법이다.

데이터베이스에 접근하는 데 시간이 많이 걸리는 작업일 경우, 캐싱을 사용하여 빈번하게 사용되는 데이터를 빠르게 가져올 수 있다. 예시로 Redis와 같은 인메모리 캐시 솔루션을 활용하여 조회 속도를 크게 향상 시킬 수 있다.
캐싱의 종류로는 아래와 같다.

1-1. 지역캐싱 (Local Caching)
 지역 캐싱은 서버 내부의 메모리에 캐시 데이터를 저장하는 방식이다. LRU 캐시 등의 알고리즘을 사용하여 메모리 내부에서 캐시 데이터를 관리할 수 있다. 지역 캐싱은 간단하게 구현할 수 있지만, 여러 서버 간의 캐시 데이터 동기화와 관리가 어려운 문제를 가지고 있다.

1-2. 분산캐싱 (Distributed Caching)
 분산 캐싱은 여러 서버에 걸쳐 캐시 데이터를 저장하고 관리하는 방식이다. Memcached나 Redis와 같은 인메모리 데이터 저장소를 사용하여 분산 캐싱을 구현할 수 있다. 분산 캐싱은 확장성이 좋고 여러 서버 간의 캐시 동기화가 용이하지만, 설치 및 운영에 추가적인 비용과 복잡성이 발생할 수 있다는 단점이 있다.


2. 데이터베이스 쿼리 최적화
데이터베이스 쿼리를 최적화하면 응답 시간을 단축 할 수 있다. 인덱스를 적절하게 추가하거나, 비효율적인 쿼리를 수정하여 성능을 개선해 나갈 수 있다

3. 비동기 처리와 메시징 큐의 사용
긴 작업 시간이 필요한 처리를 비동기 방식으로 변경하거나, 메시징 큐를 활용하여 병목현상을 줄이고 성능을 개선할 수 있다. RabbitMQ, Kafka 등의 메시징 큐 시스템을 사용하여 서버 간 데이터 전송과 처리를 효율적으로 처리할 수 있다.

스케일링 전략

1. 수평적 스케일링 (Horizontal Scaling)
수평적 스케일링이란 서버 수를 늘리거나 줄이는 방식으로 시스템을 확장하는 것을 말한다. 로드 밸런싱을 사용하여 작업 부하를 여러 서버로 분산시키는 것이다. 이 방식은 리소스 사용률을 높이고, 서버 간의 작업 부하를 고르게 나누어 진행함으로써 성능을 개선할 수 있다.

2. 수직적 스케일링 (Vertical Scaling)
하나의 서버의 자원(메모리, CPU 등)을 증가시키는 방식으로 시스템을 확장하는 것이다. 수직적 스케일링은 간단하고 명확한 방법이지만, 하드웨어의 한계 존재와 비용적인 측면에 단점이 있다.

 

 

'Tech' 카테고리의 다른 글

[GIT] Git 및 Github 사용가이드  (0) 2023.06.16
[MSA] 마이크로서비스 아키텍처(MSA)란 뭘까?  (0) 2023.06.15
Comments