개발놀이터

면접 준비 : 클러스터링, 레플리케이션, 샤딩 (안물어볼 가능성이 매우 높습니다) 본문

CS 지식/면접준비

면접 준비 : 클러스터링, 레플리케이션, 샤딩 (안물어볼 가능성이 매우 높습니다)

마늘냄새폴폴 2023. 3. 19. 03:44

Q. 클러스터링, 레플리케이션, 샤딩에 대해서 설명해주세요 (이거 안물어볼 가능성이 매우 높습니다)
A. 클러스터링이란 하나의 DB 스토리지에 여러 DB 서버를 달아서 원래였다면 하나의 서버에서 감당해야할 부하를 여러 서버가 나눠 담당하기 때문에 성능적인 이점을 볼 수 있습니다. 하지만 DB 스토리지가 하나밖에 없기 때문에 DB스토리지에 문제가 생긴다면 전체 애플리케이션이 죽어버릴 수 있다는 단점이 있습니다. 이를 보완하기 위한 방식이 바로 레플리케이션인데, 레플리케이션은 복제된 DB 스토리지를 각각의 DB서버와 묶어서 DB 스토리지가 죽어버릴 경우에 대비할 수 있습니다. 하지만 슬레이어 DB서버가 많이 늘어난다는 단점이 있습니다. 이를 보완하기 위한 방식이 바로 샤딩입니다. 샤딩은 데이터를 특징에 맞춰 나누기 때문에 레플리케이션의 장점을 그대로 계승하지만 굉장히 관리가 힘들다는 단점이 있습니다. 

Q. 샤딩의 종류에 대해서 설명해주세요 (이건 절대 안물어봄)
A. 샤딩의 종류로는 Hash Sharding, Dynamic Sharding, Entity Group Sharding이 있습니다. Hash Sharding은 각각의 레코드를 해싱하여 저장하는 방식입니다. 이 방식은 안전하지만 확장성이 낮다는 단점이 있습니다. DB 서버가 늘어나면 해시 함수를 바꿔야 하는데 이렇게 되면 정합성에 어긋납니다. Dynamic Sharding은 로케이터 서비스를 기반으로 구간마다 샤드 키를 부여하여 데이터베이스를 쪼개는 기술입니다. 하지만 로케이터 서비스가 장애가 나면 전체 샤드에 영향을 줄 수 있습니다. Entity Group Sharding은 관계를 맺고있는 데이터끼리 샤드키로 묶어서 관리하는 샤딩 기술입니다. 이는 관계형 데이터베이스에 어울리는 샤딩 방식입니다. 

 

 

 

참고)

이 포스팅은 면접에서는 절대 안물어볼 것 같은데 제가 공부한 내용을 정리한 쪽에 더 가깝다고 생각해주시면 감사하겠습니다. 이 내용을 면접에서 물어본다면 몰라도 충분히 상관없을 가능성이 높습니다. 애초에 데이터베이스 튜닝같은건 신입에게 요구되지않는 기술이고 개념이기 때문에 대답하지 못해도 상관없을 것 같습니다. 

 

하지만 만약 면접관이 작정하고 DBA를 뽑을 심산이었거나 혹은 면접관의 스타일에 따라 언어, 스프링 이런건 잘 모르더라도 데이터베이스는 기깔나게 아는 사람을 선호한다면 충분히 물어봄직한 질문들입니다. 

 

데이터베이스를 깊게 공부한다면 반드시 거쳐가는 길 중 하나이며 알아둬서 나쁠건 없지만 시간 없으시다면 굳이 몰라도 괜찮습니다.