용영환 서울옥션블루 CTO
우리 곁에서 묵묵히 일하고 있는 개발자 이야기를 담은 ‘개발자가 만난 사람들’. 수십명의 개발자 이야기를 담은 이 인터뷰를 쓴 사람은 ‘용영환’ 개발자였다. 개발자가 만든 제품이 시장에서 높은 가치를 갖고 있음에도 불구하고 정작 만든 개발자의 가치는 인정받지 못하는 안타까움에 시작된 그의 인터뷰는 한빛미디어의 『개발자, 나를 말하다』(2014년, 한빛미디어)란 전자책으로 출간되기도 했다. 그런 그를 한 무료 세미나에서 만났다. 더 나은 SW 개발을 위해 소프트웨어(Software, 이하 SW) 개발자도 데이터베이스(DB, Database) 모델링을 배워야 한다는 그의 이야기를 더 많은 이에게 들려주고 싶어 글로 정리했다.
용영환 개발자는 행복한 삶을 꿈꾸며 글쓰기를 좋아하는 개발자다. ‘다르다는 것이 틀린 것은 아니다’라는 생각으로 다양한 사람과 관계를 맺으며 많은 것을 보고 듣고 경험하려고 노력한다.
Q1. 왜 DB 모델링인가?
먼저 밝혀두고 싶은 게 있다. 나의 말이 모두 정답은 아니다. 나의 단편적인 경험을 말하는 것이기에 저 사람은 저렇게 일해 왔고, 저렇게 공부를 해 왔구나 정도로 봐줬으면 한다.
모델링을 우리말로는 모각이라고 한다. 사전적 의미로 보면 모델을 보고 닮게 만든 일이다. 이미 있는 조각 작품을 보고 그대로 본떠 새기는 과정이 바로 모델링이다.
SW의 본질은 데이터와 동작이다. SW는 프로그래밍 언어를 이용해서 데이터를 제어하는 수단이라고 할 수 있다. 그렇다면 SW 개발자가 만들고자 하는 SW의 가장 중요한 요소인 데이터를 얼마나 잘 이해하는 지가 매우 중요할 것이다.
허나 현업에서는 일정에 쫒기다 보면 DB 모델링을 하지 못하는 경우가 많고, 대학에서는 학사일정에서 DB 모델링을 건너뛰는 경우가 대부분이다. SW를 만드는 데 있어 매우 중요한 과정임에도 불구하고 우리는 가장 중요한 본질을 놓치고 있었던 건 아니었을까 하는 생각이 든다.
Q2. DB 엔지니어도 아닌데 SW 개발자도 DB 모델링을 알아야 할까
우리가 하려고 하는 DB 모델링은 DB 관점에서 SW의 데이터에 대한 모델을 만드는 것이다. 즉, DB를 그림으로 표현하는 과정을 의미한다. 머릿속에 담겨져 있는 생각을 누구나 볼 수 있게 본을 뜨는 것이라고 할 수 있다. 그렇게 하면 내가 만들고자 하는 게 무엇인지를 보다 명확하게 알 수 있기에 스스로 검증을 하거나 다른 개발자와 협업하는 데 매우 긍정적인 영향을 끼친다.
예를 들어 커뮤니티 사이트 만든다고 치자. 사이트가 커질수록 수십, 수백 개의 DB 테이블이 복잡하게 얽혀있을 것이다. 회사에 새로 동료가 입사했다면 전체 테이블 구조에 대해 설명해야 할 것이다. 말로 몇 시간에 걸쳐 설명할 것인가? 그보다는 ERD(Entity-Relationship Diagram)로 그려서 전달하면 새 동료는 더 빠르고 명확하게 테이블 구조를 이해할 수 있을 것이다.
다른 한편으로는, DB를 설계하는 스스로도 DB 모델링을 통해 시각적으로 검증할 수 있기 때문에 문제의 여지가 있는 부분을 쉽게 찾아낼 수 있다. 중요한 것은 DB 모델링이 우리가 더 좋은 SW를 만드는 데 분명 도움이 된다는 점이다.
Q3. ERD로 DB 모델링을 하면 어떤 점이 좋은가?
ERD를 그리는 것은 DB 모델링을 하는 방법 중 하나다. 아무래도 요소들을 그림으로 표현하기 때문에 DB 테이블간의 관계나 전체 구조를 한눈에 파악할 수 있다는 게 가장 큰 장점이다. 예를 들어 관계형 데이터베이스(이하 RDBMS)는 당연히 테이블 간의 관계가 매우 중요하다. 만약 DB 구조를 파악해야 할 때 SQL 형식의 스키마로 정리한다면 테이블의 칼럼 이름, 형식, 길이 등은 알 수 있지만, 각 테이블 간의 관계는 알기 어렵다. 이런 경우에는 ERD로 표현하는 것이 매우 효과적이다.
Q4. 실제 현업에서 DB 모델링이 얼마나 쓰이고 있나?
RDBMS를 주요 DBMS로 사용하는 대기업, 또는 중견 기업들은 대체로 ERD를 현업에서 적극 활용하고 있는 것으로 알고 있다. 그래서 일부 회사는 신입 입사자 교육에 ERD가 포함되어 있기도 하다. 그러므로 개발자를 자신의 인생 직업으로 생각하고 있다면 ERD를 배우고 충분히 훈련해 두는 것도 좋을 것 같다.
Q5. 개발만으로도 벅찬데, DB 모델링까지 하는 게 시간만 낭비는 아닌가
25살쯤에 ERD를 공부하기 시작했다. ERD를 이용하면 SW를 더 잘 만들 수 있을 거라고 생각했다. 당시 주위에서 ERD를 적극적으로 쓰는 사람은 없었다. 그래서 서점에 가서 눈에 보이는 DB 관련 서적은 대부분 사서 읽었다. 그리고 회사 업무에도 ERD를 썼었다. 만약 게시판을 만드는 업무가 주어지면 내 스스로 훈련 삼아 ERD를 그리고 그걸 토대로 개발을 했다. 이런 과정을 수없이 반복했다.
처음에는 ERD에 익숙하지도 않고 DB 모델링 경험도 없다보니 전체적인 개발 속도가 느렸다. 그런데 하면 할수록 시간은 단축됐고, 나중에는 DB 모델링을 하는 것이 더 빠르게 개발할 수 있는 방법이라는 걸 깨닫게 됐다.
Q6. SW 개발자/기획자가 알면 좋은 DB 모델링 강의에서는 어떤 것을 배울 수 있나
DB 모델링을 위한 대표적인 무료 ERD 도구인 MySQL 워크벤치(Workbench)의 기본 사용법과 개념을 살펴본 후 예제와 함께 직접 ERD를 그리면서 DB 설계하는 시간을 가져볼 생각이다. 짧은 시간동안 DB 모델링의 기초와 활용을 배울 수 있도록 커리큘럼을 구성했다. DB 모델링이 익숙하지 않은 개발자와 기획자가 더 나은 소프트웨어를 개발하는 데 도움이 되었으면 하는 바람이다.
(얼리버드 40%할인) SW 개발자/기획자가 알면 좋은 DB 모델링
이전 글 : 모른다는 말은 적절한 순간에 구체적으로 한다
다음 글 : 크런치 모드 : 개발자들의 돌연사
최신 콘텐츠