Database/Server 3

Database - 샤딩이란 무엇인가?! (+ 샤딩의 다양한 기법, 각 기법 비교)

서비스 오픈전에 J곡선 그래프를 타면서 성장하길 바라는 마음은 모두 같을 것이다. 그런 중요한 순간에 서버가 바틀넥이 되어 발목을 잡으면 안된다. 그래서 예측 가능한 서버 확장 방안에 대해서 사전에 준비를 해둬야 한다. DB 샤딩은 데이터가 급격히 증가하게 되거나 트래픽이 특정 DB로 몰리는 상황을 대비해서 빠르고 유연하고 안전하게 DB를 증설할 수 있게 한다. 샤딩에 대해 알아보자. 샤딩 샤딩(Sharding)은 DB 트래픽을 분산할 수 있는 중요한 수단이다. 추가적으로 특정 DB의 장애가 전면 장애로 이어지지 않게 하는 역할도 한다. 샤딩은 각 DB 서버에서 데이터를 분할하여 저장하는 방식이다. 해당 데이터에 접근할 때는 샤딩키를 사용하여 동적으로 DB 서버를 매핑하는 과정이 필요하다. 샤딩과 수평적..

Database/Server 2022.07.09

Database의 책임 - DB는 어디까지 해줘야 하는가? (+ 데이터 가공, 비즈니스 로직, 계산 등)

Database의 책임 이전부터 비즈니스 로직이 어디에 있어야 하는지는 큰 관심사였다고 한다. 나는 Controller, Service, Repository, Dto 등의 책임에 대해서 자료를 많이 봤지만 "DB는 어떤 작업까지 처리하는 것이 바람직한가?" 그러한 생각을 해본적이 없었다. 우리 회사의 서비스들을 보면 DB에서 SELECT절에서 CONCAT()이나 IF()를 통해 가공해서 내려주는 경우가 많다. 그래서 그것을 프론트단에서 아주 손쉽게 사용할 수 있다. 추가적으로 복잡한 비즈니스 로직을 DB Layer에서 태우는 경우도 있다. 뭔가 Application Layer에서 로직을 태우면 선형으로 순회하면서 레코드 하나씩 가공을 해줘야 한다는 부담감 때문이었다. 데이터베이스(Database)의 책임..

Database/Server 2022.05.06

Master-Slave를 사용하는 이유 (Replication 장단점)

데이터베이스 다중화 많은 DBMS가 데이터베이스 다중화를 지원합니다. 보통은 Master-Slave 패턴을 자주 사용하는데, 데이터 원본은 주(Master)서버에, 사본은 부(Slave)서버에 저장하는 방식입니다. Master-Slave 쓰기(Write)는 마스터에서만 지원하고, 부(Slave)서버는 DB사본을 갱신하면서, 읽기만을 지원합니다. 통상 애플리케이션은 읽기 연산 비중이 훨씬 크기 때문에 아래와 같은 구성으로 많이 사용합니다. 즉, 설계안은 다음과 같이 동작합니다. 동작 원리 사용자는 URL로 사이트에 접속하면 로드밸런서 IP 주소를 받습니다. 사용자는 로드밸런서에 접속합니다. 사용자의 요청은 웹 서버1 또는 웹 서버2로 전달됩니다. 웹서버는 쓰기(Write)라면 MasterDB, 읽기(Rea..

Database/Server 2022.02.25