2023/12 3

개발자가 반드시 알아야하는 데이터베이스 - Master와 Slave에 쿼리 분산(Feat. MMM 구조)

개요저번 서버 회의시간에, @Transaction(readonly = true) 옵션에 대해 얘기를 하던 중, slave DB의 dataSource 을 따로 생성해서, Select 쿼리는 slave로 그외 나머지 쿼리는 master로 보내는 방법이 나왔었다. 관련해서 현재 게임 DB는 어떻게 구성되어 있고, 위 방법을 사용할 수 있는지, 알아보았다. MMM (Multi-Master Replication Manager) 구조리얼환경에서 사용중인 DB는 Master 1대와 Slave 2대로 구성되어 있다.Slave 중 1대는 Master와 VIP로 묶여있다. 그렇다면, VIP로 묶은 이유가 장애 대응 때 사용되는 것인지, 로드밸런싱 ip인지(부하분산) DBA분께 물어봤다. mmm vip로, 장애대응을 위해서..

가상 면접 사례로 배우는 대규모 시스템 설계 기초 - 4장(처리율 제한 장치의 설계)

처리율 제한 장치 네트워크 시스템에서 처리율 제한 장치는 클라이언트 또는 서비스가 보내는 트래픽의 처리율을 제어하기 위한 장치이다. API 요청 횟수가 제한 장치에 정의된 임계값을 넘어서면 추가 API들은 버려지거나, 중단된다. 아래에는 몇가지 예시이다. 사용자는 초당 2회 이상의 새 글을 올릴 수 없다. 같은 IP 주소로는 하루에 10개 이상의 계정을 생성할 수 없다. 같은 디바이스로는 주당 5회 이상 리워드를 요청 할 수 없다. 처리율 제한 장치를 두면 좋은점은 아래와 같다. DOS 공격에 의한 자원 고갈을 방지할 수 있다. (트위터는 3시간 동안 300개 트윗 제한, 등등) 비용을 절감한다. 추가요청에 대한 처리를 제한하면 서버를 많이 두지 않아도 되고, 우선순위가 더 높은 API에게 자원을 할당할..

JAVA - 리플렉션의 모든 것

아래 코드는 스프링을 사용한 BookService 코드이다. @Service public class BookService { @Autowired BookRepository bookRepository; } 질문 bookRepository 인스턴스는 어떻게 null이 아닌걸까? 스프링은 어떻게 BookService 인스턴스에 BookRepository 인스턴스를 넣어준 것일까? 리플렉션 API - 클래스 정보 조회 리플렉션의 시작은 Class 이다. Class에 접근하는 방법 모든 클래스를 로딩 한 다음 Class의 인스턴스가 생긴다. “타입.class”로 접근할 수 있다. 모든 인스턴스는 getClass() 메소드를 가지고 있다. “인스턴스.getClass()”로 접근할 수 있다. 클래스를 문자열로 읽어오..

728x90