프록시 객체와 지연 로딩으로 DataSource 분기 처리 실패 해결하기 Overview 저번 글에서는 부하 분산을 위해 MySQL Replication 구성을 사용했고, 어플리케이션에서는 쿼리 요청에 따라 마스터 서버와 슬레이브 서버로 분기하도록 코드를 작성했습니다. 그러나 작성한 코드를 실행해보면 AbstractRoutindDataSource 에서 올바른 DataSource 와 Connection 객체를 얻어오지 못합니다. 이번 글에서는 DataSource 의 분기 처리가 실패하는 이유에 대해서 알아보고 이를 해결할 수 있는 방법을 살펴봅니다. 왜 분기 처리가 실패하는 걸까? 분기 처리가 실패하는 이유를 알아보려면 먼저 스프링의 트랜잭션 동기화에 대해서 알아야 합니다. 트랜잭션 동기화란 트랜잭션을 시..
부하 분산을 위한 MySQL Replication 구성 및 쿼리 요청 분기 Overview 내가 진행하고 있는 SNS 프로젝트를 보면 Service Layer에 속해있는 거의 모든 메소드가 데이터베이스에 쿼리 요청을 보낸다. 나의 프로젝트 뿐 아니라 대부분 웹 서비스 프로젝트를 보면 사용자 데이터를 처리하기 위해 혹은 이를 기반으로 다양한 서비스를 제공하기 위해 데이터베이스에 무수히 많은 요청을 보낸다. 현재 사용하고 있는 MySQL 서버가 고사양이더라도 서버 한 대가 웹 서버로부터 오는 모든 트래픽을 견뎌내기에는 분명히 한계점이 드러나기 마련이다. 그로 인해 데이터베이스에 장애가 발생한다면 운영 중인 서비스에 바로 큰 타격을 줄 것이다. 따라서, Replication을 사용하여 MySQL의 환경을 구축..
Redis 성능 향상을 위한 Redis 세션 저장소와 캐시 저장소의 분리 Overview 현재까지 진행된 프로젝트 상황을 살펴보면 세션과 캐시를 Redis에서 관리하고 있다. 세션을 Redis에서 관리하는 이유 캐시를 Redis에서 관리하는 이유 지금은 세션과 캐시 구분없이 하나의 Redis 서버에서 관리가 되고 있다. 그러나 앞으로 프로젝트 규모가 커지고 캐싱되는 데이터가 많아질수록 서버 한 대가 많은 요청을 처리해야 할 것이다. 이에 따라 응답 속도가 저하될 것으로 예상이 되기 때문에 부하 분산의 필요성을 느끼게 되어 용도에 따라 Redis 서버를 분리하기로 했다. 세션 저장소와 캐시 저장소를 분리하면 어떤 점이 좋을까? 위에서 언급한 것처럼 세션 저장소와 캐시 저장소를 분리하면 서버 한 대에 집중되..
- Total
- Today
- Yesterday
- Django 해시태그
- Django 검색
- Django 어플리케이션
- Django application
- Redis Cache
- Django 북마크
- Redis
- Django 회원 정보 수정
- Django 프로젝트 생성
- Django Instagram
- Django 댓글
- java
- MySQL
- Django 로그아웃
- Django 인스타그램
- Django 팔로우
- Django 좋아요
- 파이썬
- Django 업로드
- query parameter
- 장고
- Django
- 북마크 어플리케이션
- Django 컬렉션
- 서점 어플리케이션
- Django 비밀번호 수정
- python
- Django 로그인
- Django User
- Django 회원가입
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |