좋은 데이터 베이스 모델은..?

Kangho LEE·2021년 4월 1일
0

그저께 쓴 글을 보면서 많은 생각이 드는 것 같습니다. 정말 읽기 쉬운 글은 쓰기 어렵구나..

어떻게 하면 블로그를 방문하는 사람들이 편하게 볼 수 있을까 고민하는 시간도 많이 걸리지만, 오늘 공부한 내용은 많고 이것을 정리하는 것은 공부한 만큼의 시간이 드는 것 같습니다.. 저도 어떤 공부방법이 좋은지 아직 모르기 때문에 아직은 좀 다양한 형식으로 글을 써보려 합니다.

또 매일하려고 해도 참 이게 어려운 것이구나 라는 생각이 많이 드는 것 같습니다.

그리고 지원했던 서류들이 계속 떨어지고 있습니다.. 아마 제 글이나 경험이 회사랑 잘 맞지 않는다는 생각도 요새 많이 드니 힘이 좀 빠지는 것 같습니다. 그래도 TIL를 보니 제 모습을 다시 객관적으로 보고 열정있던 모습을 다시 되새기며 앞으로 나아갈 힘을 얻는것 같습니다. (비록 하루 했지만 ..ㅋㅋㅋㅋㅋ)

데이터 베이스

데이터 베이스를 구성하는 것에 진지한 고민을 가지던 저는 개발서적을 통해 좀 더 깊은 데이터 베이스 지식을 배우기로 결정했습니다. 제가 선택한 교재는

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=140018308

데이터 중심 애플리케이션 설계란 책입니다. 제가 많이 고민했던 부분들에 대해서 많은 인사이트를 주는 책이라고 생각이 듭니다. 어떻게 하면 좋은 애플리케이션이라고 할 수 있을지, 현재 대규모 트래픽을 관리하는 it회사들이 어떤 데이터베이스를 사용하는지 좋은 예시들이 많아서 좋았습니다.

처음 챕터인 어떻게 하면 데이터베이스을 설계할 수 있을까에 대한 도움을 얻었습니다. 가장 중요한 3가지는

신뢰성, 확장성, 유지보수성

이 세가지를 통해 신뢰할 수 있고 확장이 쉬우며 유지보수가 편한 데이터 베이스 관리를 설명합니다.

먼저 신뢰성, 신뢰성이란 오류들 즉 인적, 시스템, 하드웨어 등 어떤 우발적 사건이나 설계 실패를 통해 일어나는 오류들을 최소화 하는 것을 의미합니다. 하드웨어 오류 같은 것은 가능하다면 복제를 만들어 놓거나, 인적 실수가 없게 교육을 시키거나, 카오스 몽키라는 임의의 오류를 무작위로 만들어내는 방법을 통해 신뢰도를 높히는 것입니다.

확장성이란 현재 시스템이 안정되었으니까 나중에도 안정된다는 보장은 없다는 것에서 출발합니다. 우선적으로 중요한 것이 부하를 파악하는 것입니다. 부하 매개변수란 예를들어 웹서버 초당 요청수, 데이터베이스 읽기 대비 쓰기 비율, 대화방 동시 활성화 사용 자 수, 캐시 적중률 등 다양한 부하 상태를 나타내는 것이라 볼 수 있습니다. 각 부하 매개 변수별로 서버를 확장하는 것이나 수정해야 하는지 알 수 있기 때문입니다. 확장은 용량을 확장하는 용량확장(수직확장)이랑 새로운 장비를 확보하는 규모확장(수평확장)이 있습니다.

마지막으로 유지보수성는 애플리케이션 개발자에게도 많은 생각이 들게 해주는 부분입니다. 유지보수를 위해 세가지 중요한 키워드가 있는데 이것은 각각 운용성, 단순성, 발전성입니다.

운용성은 시스템이 원활하게 운영할 수 잇게 만드는 것인데 주로 모니터링, 플랫폼 최신화, 다양한 사례와 보안과 적절한 자기 회복 시스템과 예기치 못한 상황을 최소화 함으로써 달성할 수 있습니다.

단순성은 복잡한 소프트웨어를 단순화 하는 것인데 이것은 대부분 추상화를 통해 달성할 수 있습니다. 책에서 앞으로 다양한 좋은 추상화 사례를 알려준다고 하는 데 이 부분이 저는 특히 기대가 됩니다. 추상화는 학교에서 배우기 힘든 것으로 다양한 사례와 경험이 없다면 체득하기 정말 어렵다고 생각이 됩니다.

마지막으로 발전성은 변화를 쉽게 만듦으로써 비지니스 우선순위 변경, 또는 예기치 못한 사례를 대비 하고 아키텍처를 이에 맞게 변경하는 것 입니다. 특히 요새 유행처럼 번지고 있는 애자일과 MSA는 이런 배경에서 나왔다고 생각이 듭니다. 수 많은 변화가 빠르게 일어나고 있는 지금 빠르게 변하지 못하는 조직은 점점 배제 되고 있다고 생각이 듭니다. 발전성을 높이기 위한 예시로는 리팩토링이 있습니다.

종합해서 보면 어찌 당연한 얘기를 하고 있다고 느껴질 수 도 있습니다. 하지만 이것들을 제대로 익혀 놓고 어떤 방법을 사용할 지 제대로 숙지하지 않는다면 막상 문제가 발생 했을 때에 당황하고 어떻게 대처해야하는 지 모르게 될 것 같습니다.

profile
우유와 누텔라

0개의 댓글