본문 바로가기

DBA/코멘토-직무부트캠프

코멘토 DBA 직무부트캠프 1주차 과제 및 피드백

코멘토 직무부트캠프를 하면 매주 1개씩 과제를 하고 내가 듣는 강의의 멘토님께서는 선택과제도 내주셨다.

1주차 공식과제는 상황을 보고 적절한 DBMS선택하기였다. 실제로 멘토님께서 신입분들 교육할 때 내주시는 과제라고 들었다. 1주차 강의자료에 과제 예시가 있고 그건 예시일뿐 그대로 안해도 되고 줄글로 작성해도 된다고 하셔서 나는 예시랑 좀 다르게 작성하기 위해 노력했다. 근데 자료조사를 하다보니 내가 찾아보기 어려운 내용들도 있고 해서 예시를 많이 참고해서 내용부분에서는 큰 차이가 없었던 것 같아서 아쉽다.

 

자세한 과제 내용을 언급하는 것은 혹시 몰라서 생략하고 내가 조사한 내용 및 피드백 받은 내용에 대해 정리해보겠다.

 

일단 이 과제의 포인트는 회사의 모든 신규요건은 비용관점과 성능관점이 모두 포함되어야 한다는 것 인것 같다.

 

자료조사과정

1. RDBMS vs NoSQL

일단 정말 많은 DBMS들이 있고 다 조사하기엔 무리가 있기 때문에 순위가 높은 DBMS에는 이유가 있다고 생각함+많이 사용되어야 커뮤니티가 활성화되어서 운영성면에서 이점이 있다고 생각했기 때문에 DB-Engines사이트에서 DBMS 순위를 먼저 확인했다.

db-engines.com/en/ranking

 

DB-Engines Ranking

Popularity ranking of database management systems.

db-engines.com

21년 1월기준으로 DBMS 순위는 위와 같다.

 

아직 NoSQL을 제대로 다뤄본적이 없지만 다음학기에 학교수업에서 배울 예정이라 어느정도 인지를 하고 있었기 때문에 NoSQL도 조사를 해볼까했는데 과제예시에 보니 RDBMS들밖에 없었다. NoSQL에 대해 살짝 검색해보았는데 해당과제에서 사용하면 안되는 이유를 찾지 못해서 멘토님께 예시라서 없는건지 아니면 과제상황이 NoSQL을 사용하기 적절하지 않은 상황인지 질문을 드렸고 과제상황은 데이터를 읽는 트래픽에 변동이 있는 상황이기 때문에 NoSQL을 사용하지 적합하지 않은 상황이라고 답변을 주셨다.

아마 앞으로 계속 말할 것 같지만 멘토님이 질문에 답변을 정말 자세히 친절하게 해주셔서 너무너무 좋다!! 뭔가 5주차까지 하고나서 후기쓸때 말할거 같긴한데 진짜 어제 멘토님께 상담 비슷하게 질문드렸는데 답변보고 울었쟈나...ㅠㅠㅠㅠ 또 생각하니까 울컥함. 딱 힘들었던 부분을 짚어서 너무 잘 말씀해주셨다!

 

 

2. MySQL vs Microsoft SQL Server(MSSQL) vs PostgreSQL

비용과 성능관점에서 비교하는게 중요하다고 하셨기 때문에 두 부분에 집중해서 조사해보고 싶었으나 사실 실패했다..

 

우선 비용관점을 먼저 보자면 PostgreSQL의 경우 오픈소스이기 때문에 비용이 따로 필요하지않은 부분까진 알겠지만 MySQL과 MSSQL이 문제였다. 라이센스 비용은 예측가능했지만 구축비용(서버 운영비)를 알아보는것에 실패했는데 이 부분 관련해서 질문드렸을 때 서버의 종류는 다양하고 스팩도 다양한데 가격정보는 제각각이기 때문에 찾기 쉽지 않고, 실무에서는 기존에 구매한 내용을 바탕으로 비용을 추정하는 정도로 계산해보는 경우가 많다고 답변주셨다. 과제 예시에 구축비용, 월간비용만 적혀있었기 때문에 두가지 비용을 알아보는데만 급급했는데 과제 피드백에서 비용을 풀어내는 방식으로 라이센스비용, 운영 중 사고가 발생했을 때 사용할 업체군 모색 및 평균적인 비용, 기타 긴급 서버 증설 시 필요한 비용으로 나뉠 수 있다고 알려주셨다. 그리고 '비용을 실제로 측정할 수 있는 방법은 충격적이게도 없습니다.' 라고도 해주셨다! 평소에 자료조사를 많이 안해봐서 내가 못하는건가 자괴감 들었는데 그나마 위로가 되었다! 그래도 회사에서는 최대한 꼼꼼하게 조사하고 알아봐서 잘 예측해서 돈을 잘 아끼는 사람을 원하겠지? 그러려면 더 많은 기술에 관심을 가지고 서버를 구출할 때 더 가성비가 좋은 방법이 없는지 생각해볼 수 있는 사람이 되어야겠지?!

 

성능관점에 대해 조사할 때도 과제 예시를 참고했기 때문에 크게 내가 조사한 부분은 없는 것 같다. 다만 조사결과 Hot backup을 MySQL과 MSSQL모두 지원하는데 MSSQL은 백업안정성이 낮다고 예시에 적혀있어서 의문이 들어 또 멘토님께 질문드렸는데 일단 백업안정성은 엔진을 뜯어봐야 알 수 있는 내용이기 때문에 신입사원 수준에서는 불필요하다고 말씀해주셨다. 그리고 MSSQL은 파일구조가 데이터파일, 로그파일로 나뉘어지는데 데이터가 급격히 늘어나면 여러 파일에 나눠서 저장하게 되는데 한 파일에 한 섹터만 깨져도 치명적이기 때문에 핫백업이 다른 디비에 비해 구조적으로 불안정하다는 답변을 주셨다. (진짜 이런거 주변에 누구한테 들을수 있냐구여...이래서 현직자분을 알고 있는게 중요한가 봅니다) 피드백으로 성능은 가용성, 안정성, 커뮤니티, 운영성으로 나뉘게 된다고 피드백 주셨다. 다음에 이러한 과제를 할 일이 있다면 성능면에서 조사하는 내용이 좀 달라지게 될 것 같다.

 

일단 나는 과제를 할 때

'비용적인 측면에서 오픈소스인 PostgreSQL이 가장 우수하나 운영성 측면에서 vacuum 관리가 필요하다는 단점이 있다. MSSQL의 경우 백업안정성이 낮기 때문에 성능면에서 적합하지 않다. MySQL의 경우 비용이 높지만 Cloud에서 지원해주는 MySQL을 사용할 경우 금액 축소가 가능하고 운영성 및 성능이 적합하다. 따라서 비용면에서 우수한 PostgreSQL과 운영성 및 성능면에서 적합한 MySQL을 비교 후보로 두도록 한다.'

라고 결론을 냈었다.

 

3. AWS RDS vs AWS RDS Aurora

요즘 클라우드의 사용이 많아진 만큼 클라우드DB와 전통적인DB의 비교도 해보라고 말씀해주셔서 가장 대표적이라고 생각하는 AWS로 비교해보았다. 이 부분은 그래도 자료가 잘 되어있어서 과제로 제출한 내용을 그대로 적어도 괜찮을 것 같다!

1)    AWS RDSAWS RDS Aurora 차이점

   A.     AWS RDS AuroraMySQLPostgreSQL만 지원하고 있고, AWS RDS의 경우 MySQL, Oracle, SQL Server,         PostgreSQL, MariaDB를 지원하고 있습니다. 그러나 1의 결과로 MySQL 또는 PostgreSQL가 사용 후보이므로 해당 차     이점은 고려사항이 아니라고 생각됩니다.

   B.     RDS의 경우 single A-Z를 사용할 경우 여러 대의 DB를 하나의 클러스터로 묶을 수 없다. Multi A-Z를 사용해서     읽기전용으로 사용하게 할 수 있는 기능이 있지만 가격이 single A-Z의 두배이다. RDS Aurora는 여러 대의 DB를 하       나의 클러스터 형태로 묶어서 사용할 수 있다.

2)    비용 (모두 db.t3.medium 2cpu, 4 memory의 성능으로 비교하였고 초기비용은 없습니다.)

   A.     AWS RDS MySQL single A-Z 월간비용 UDS 60

   B.     AWS RDS MySQL multi A-Z 월간비용 UDS 120

   C.     AWS RDS Aurora MySQL 월간비용 UDS 80

   D.     AWS RDS PostgreSQL single A-Z 월간비용 UDS 63

   E.      AWS RDS PostgreSQL multi A-Z 월간비용 UDS 127

   F.      AWS RDS Aurora PostgreSQL 월간비용 UDS 80

3)    결론

   A.     AWS를 사용할 경우 PostgreSQL의 비용적인 장점이 없어지고, MySQL사용의 금액적인 측면에서의 부담이 줄었     다. DBMS의 운영성 및 성능 측면에서의 특징은 유지되므로 두 부분에서 더 적합한 MySQL을 사용하도록 한다.

   B.     AWS RDS single A-Z의 경우 DB를 하나의 서버에서만 설치할 수 있고 multi A-Z를 사용할 경우 비용적인 측면     에서 부담이 커진다는 단점이 있기 때문에 운영성 면에서 더 편리한 AWS RDS Aurora MySQL을 사용하도록 한다.

 

결론적인 피드백으로는 본 과제에서 가용성에 대한 기준을 잘 세웠다고 해주셨고 multiA-Z에 대한 부가적인 설명을 해주셨다. 

 

 

과제를 통해 얻은 걸 작성해보자면 비용, 성능 관점이 어떻게 나뉘어지는지, 위에서 말했듯이 '회사에서는 최대한 꼼꼼하게 조사하고 알아봐서 잘 예측해서 돈을 잘 아끼는 사람을 원하겠지? 그러려면 더 많은 기술에 관심을 가지고 서버를 구출할 때 더 가성비가 좋은 방법이 없는지 생각해볼 수 있는 사람이 되어야겠지?!' 라는 것? 인 것 같다. 선택과제로 자기소개서 작성을 내주셔서 일단 지금 작성할만한 항목들 작성해서 제출했는데 처음 써본 자소서이기 때문에 얼마나 까일지 두려우면서 멘토님 너무 친절하고 자세하게 알려주시는거 아니까 빨리 피드백 보고싶은 마음! 이번주 선택과제는 너무 개인적이기 때문에 스킵하는걸로!

다음 과제는 AWS RDS MySQL설치와 선택과제로 데이터베이스 설계를 내주셨기 때문에 본과제와 선택과제 모두 포스팅으로 가져올 수 있지 않을까 싶다. 그럼 다음과제에서도 많은 것 얻어와서 포스팅으로 찾아오는걸로오

댓글