[토스트루키] 기술교육-5주차: 리팩토링과 읽기 좋은 코드


Oh, Sharding이여!

Scaling 이 이렇게 머리가 아픈것인줄 처음 느껴보았다.(어쩌면 당연한건가? 샤딩이라는 것을 경험해보지 못한 수많은 시니어 개발자들도 있다고하니…) DB를 스케일 아웃하면서, 프로젝트를 처음부터 다시 시작해야하나?라는 고민까지 할 정도로 샤딩은 내게 난이도가 있었다.

클러스터링과 샤딩, 파티셔닝 등을 공부하면서, 왜 요즘 Database Administer들이 고급의 대우를 받는지를 새삼 깨달았다. 데이터가 쏟아지는 현 시대에, 데이터를 어떻게 관리하고 저장하는 지에 대한 이슈는 아마 끊임없이 중요해지지 않을까한다.


무튼 ! 샤딩을 하기 위해서, 우리는 수많은? 회의를 진행하였다. 어떠한 flag를 중심으로 데이터베이스를 샤딩할 것인지에 대한 질문은 어쩌면 정답없는, 다만 최선의 답을 원하고 있는지도 모른다.

우리는 OneQ라는 프로젝트를 진행하면서 questionId를 중심으로 샤딩을 하기로 하였다. 물론 user나 hash등에 대한 테이블은 모두에 중복적용을 함으로써, 조금의 성능이슈를 발생시키지만, 그것은 어쩔수 없었다(!)라는 변명(?)과 함께 처리하기로…

샤딩을 진행하면서, 우리들이 짰던 쿼리들에 대한 검수요청과 real database를 설정하는 일도 맡아서 처리하였다. 한 서비스가 태어나기 전까지는 무수히 많은 단계를 거치는 것 같아서. 나름 ! 좋았다. 왜냐하면, 단계가 많을 수록, 무언가 완성되어같다는! 많은 사람들의 노력들이 함께 녹아난다는 ! 생각이 들었기 때문이랄까. 남은 일정! 다시 열심히 해보아야겠다 !

끄읏