멘토지원
파트너스
현직자 클래스
멘토 찾기
Best 질문답변
개발 실력이 부족한데, DBA가 되려면 어떻게 준비해야 할까요?
야놀자 · Database Engineer
약 4년 전
💬 멘티의 질문

안녕하세요, 멘토님! 개발 분야에 관심이 많아 관련 동아리 활동을 하고 있는 대학생 멘티입니다. 하지만 요즘 개발 실력이 부족한 것 같아 고민입니다.

©️unsplash


저는 기업에서 많이 사용하는 JAVA 같은 언어를 아직 써보지도 못했는데요. 요즘에는 DBA(데이터베이스 관리자)를 채용할 때 개발 실력을 많이 본다는 이야기를 들었습니다. 개발 쪽 역량이 부족한 제가 DBA가 되려면 어떻게 준비해야 할까요?

멘토님의 조언을 받아 지금부터라도 단점을 보완해 꼭 DBA가 되고 싶습니다. 많이 바쁘시겠지만, 답변해주시면 정말 감사하겠습니다. 요즘 날씨가 추운데 감기 조심하세요!


💬 이우석 멘토의 답변


안녕하세요, 멘티님. 질문 잘 읽었습니다. DBA 지망자로서 개발 역량을 어떻게 키우면 좋을지 질문 주셨는데요. 바로 답변 시작하겠습니다.


©️unsplash

DBA가 왜 개발까지 해야하죠?
우선 기업들이 DBA를 채용할 때 왜 개발 역량을 중요하게 보는지 이야기하겠습니다.

요즘
업계에서는 개발 잘하는 DBA가 인정받는 분위기입니다. 오픈 소스가 많다 보니, 개발의 문턱이 낮아져 개발을 할 수 있으면 무조건 플러스알파입니다.

DBA가 왜 개발까지 잘 해야 할까요? 그 이유를 말씀드리자면, 일단 서비스를 한 개만 운영하지 않고 다양한 서비스를 관리해야 합니다. 하나하나 수동으로 처리하려면 양이 너무 많아요.

그래서 자동화가 필요한데, 이는 개발팀에서 지원해주지 않고 DBA가 직접 하는 경우가 대부분입니다. 따라서 업무의 효율성을 위해 DBA의 개발 역량이 중요해진 거죠.


다양한 서비스 관리 → 자동화 필요 → DBA가 직접 개발



©️unsplash

DBA가 개발을 잘해야 하는 두 번째 이유는 앞서 말씀드린 것처럼 오픈 소스 DB가 대세라서, 내부 소스 또한 다 오픈되어 있습니다. 모든 프로그램은 버그가 있기 마련이고, 장애가 발생하면 DBA로서 이 현상을 해석할 수 있어야 하는데요.

장애의 근본적인 원인을 찾다 보면 DB의 소스까지 까보는 일이 생길 수 있습니다. 이때 개발을 잘 모르면 일을 제대로 수행할 수 없겠죠? 그래서 기업들은 DBA를 뽑을 때, 개발 역량까지 요구하게 되는 겁니다.

이런 분위기에서 요즘에는 DBA보다 DB 엔지니어로 부르기도 합니다. 저 또한 주 업무가 DBA이지만, 개발 역량을 갖추고 있었습니다. 학부 시절에 한 거라 깊이는 얕았어도 어느 정도 개발을 자주 접했거든요. 이 정도면 DBA로서 왜 개발 역량이 필요한지 이해가 되셨나요?


장애 발생  → 근본적인 원인 분석  → DBA의 개발 지식 요구



©️unsplash

DB를 향한 관심 & CS 기본기!
그럼 개발 역량이 부족한 상황에서 어떻게 DBA 준비를 하면 좋을까요? 현직자 입장에서 제가 인사 담당자라면 어떤 신입을 뽑고 싶은지, 두 가지 기준을 말씀드리겠습니다.

제가 가장 중요하다고 생각하는 것은
 DB를 향한 지원자의 애정과 관심입니다. 이는 눈에 보이지 않으니 그걸 증명할 수 있는 활동 경험이 필요하죠. 학부생 수준에서 DB를 다뤄봤다고 하면, 대부분 단순 CRUD1)만 해봤을 가능성이 큰데요.

여기서 돋보이려면,
 최소한 모델링이나 인덱스 설계는 해보는 게 좋습니다. 더 나아가 DB의 아키텍처까지 준비한 사람이라면 저는 망설임 없이 뽑을 것 같습니다.

물론 실무에서 SQLD나 SQLP는 거의 필요하지 않지만, 신입이라면 어느 정도 관심을 보여줄 수 있는 지표가 될 수 있습니다.

©️unsplash


두 번째는
 CS 기본기입니다. DB는 운영체제 위에서 돌아가는 프로그램이므로 DB의 구조와는 별개로 운영체제 지식을 갖추는 게 중요합니다.

예를 들어, MySQL은 16KB의 페이지를 사용하는데, 운영체제의 페이지는 어느 정도로 사용하면 좋을지? 또한 Read ahead2)는 어느 정도로 설정하는 게 유리할지? 등을 결정하는 역량을 말하는 건데요.

신입으로서 이러한 역량을 당장 갖출 필요는 없습니다. 하지만 연차가 쌓일수록 언젠가 맡아야 하는 부분인데, CS 기본기가 탄탄하다면 업무가 훨씬 수월해질 거예요.

따라서
 B-tree나 정렬 알고리즘, Context Switching과 같은 전통적인 CS 질문을 공부하시면 충분할 겁니다. 지금 상황에서 응용까지 생각할 여유는 부족할 테니까요.

정리하자면, DB에 관심이 많으면서 기본기가 탄탄한 지원자가 DBA 채용 과정에서 뽑힐 가능성이 큽니다.


©️freepik

현재의 DBA는 끊임없이 자기 계발이 필수
추가로 DBA와 관련해 조언을 드리자면, 요즘 DBA를 준비할 때 흔히 기대하는 전통적인 모습을 생각하면 안 됩니다. 예전에는 은행권에서 DBA가 높은 대우를 받으며 안정적으로 일할 수 있었습니다.

하지만 그건 DB 시장이 오라클 중심일 때의 이야기이고, 현재는 오라클에서 벗어나며 MySQL과 같은 오픈 소스 DB가 주를 이루고 있기에 DBA의 업무 환경도 많이 달라졌습니다.

이제
 전통적인 데이터 모델링, 쿼리 튜닝과 같은 업무보다는 엔지니어링 요소가 많이 강조되고 있어요. 개발 부분에서 DBA가 풀어야 하는 문제들이 생겼으니까요.

따라서 DBA가 되고 난 뒤에도
현실에 안주하지 말고 꾸준히 자기 계발을 해서 역량을 높여야 합니다. 예전처럼 그냥 주어진 업무만 하면 도태되기 쉬워요. 노력하는 사람이 살아남을 수 있습니다.


©️Tatiana Popova

장단점이 확실한 DBA의 삶
마지막으로 DBA로서 제가 일해온 경험을 간략하게 말씀드리고 싶어요. 저는 카카오와 야놀자라는 회사에서 일했었는데, 그곳들은 24시간 서비스가 돌아가야 한다는 특징이 있습니다.

따라서 DB 장애가 발생하면 바로 대응하는 것이 중요하고, 서비스 작업을 하더라도 가장 트래픽이 적은 새벽에 해야 했습니다. 그래서
멘티님도 DBA가 되려면 일반 직장인의 업무 사이클과 굉장히 다른 삶을 각오해야 합니다.

그래도 제가 좋다고 생각하는 건
 노력한 만큼 보상이 따라온다는 점입니다. 이 업계는 굉장히 좁아서 능력 있는 사람은 일부분에 불과합니다. 그래서 쓸만한 사람, 즉 능력을 인정받는 사람이 되면 굉장히 좋은 대우를 받을 수 있어요. 이렇게 보상이 확실하므로 저는 멘티님께 DB 엔지니어의 꿈을 계속 키워보라고 권장하고 싶습니다.

쓰다 보니 글이 많이 길어졌습니다. 도움이 되셨나요? 취업 준비하다가 또 궁금한 것이 생기면 다시 질문해주세요. 그때는 더 알차게 답변을 드리겠습니다.


©️Selenophile

1) CRUD : CRUD는 대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능인 Create(생성), Read(읽기), Update(갱신), Delete(삭제)를 묶어서 일컫는 말이다. 사용자 인터페이스가 갖추어야 할 기능(정보의 참조/검색/갱신)을 가리키는 용어로써도 사용된다.

2) Read ahead : 파일의 내용을 페이지 캐시에 로드하는 Linux 커널의 시스템 호출. 이렇게 하면 파일에 액세스할 때, 하드 디스크 드라이브가 아닌 주 메모리에서 읽으므로 대기 시간이 훨씬 줄어든다.



질문은 간단했지만, 깊은 내공이 돋보이는 답변을 선물 받은 것 같아 기분이 좋습니다. DB에 관심 있는 지원자가 되기 위해 노력해야겠어요. 감사합니다!


이우석 멘토
야놀자 · Database Engineer
IT개발/데이터
안녕하세요.
아무래도 제가 하는 분야가 풀이 좁아 공부 방향 잡기가 쉽지 않은데요,
제가 겪은 시행착오를 공유해드리고자 합니다.
사실 큰 뜻을 품은 건 아니고, 저도 도움을 받아오면서 성장해왔기 때문에, 필요한 부분을 나눠드리려고 해요.
꼭 직무적인 이슈가 아니라도, 도움을 받아 가실 게 있다고 판단되시면 언제든 질문 주셔도 좋습니다 :)
그럼 부디 도움이 되셨으면...!
같은 직무를 다룬 글
인기 있는 글
연구/설계
약 5년 전
잇다의 멤버가 되어주세요 🚀
직무, 취업 콘텐츠를 담은   뉴스레터를 받아볼 수 있어요.
멘토에게 직접   질문할 수 있어요.
현직자 클래스를 무료로 수강할 수 있어요.