brunch

You can make anything
by writing

C.S.Lewis

by 김명희 Jan 08. 2020

그 정도 데이터로 개발을 했다고?

개발자들이 많이 하는 실수

누군가 개발한 기능이 문제가 생겼다. 특정 업체에 적용하고 보니 데이터가 예상치보다 많았고 개발된 기능은 그 정도 기능을 감당할 수 없었다. 그래서 에러가 발생했다. 소스를 찬찬히 뜯어보니 어떻게 개발했는지 대충 보였다. 데이터베이스에 데이터를 10~100여 건 정도 넣어놓고 테스트를 한 것이다. 하... 당연히 이 정도 데이터는 에러가 안 난다. 워낙 소규모 데이터이니 대충 짜도 잘 돌아간다. 하지만 해당 업체는 몇 백만 건에서 몇 천만 건의 데이터를 사용하는 곳이다. 경차를 준비해놓고 탑승객 10명과 캐리어 10개를 동시에 싣고 가려니 당연히 퍼지지.




소규모 데이터에서 개발을 하고 대규모 데이터에 적용하는, 개발자들이 많이 하는 실수 중 하나다. 

1. 기능 개발 건이 있다.

2. 소규모 데이터를 준비해서 개발을 한다. 잘 된다.

3. 기능을 적용한다.

4. 예상보다 사용량이 많아져서 대규모 데이터가 쌓인다.

5. 소규모 데이터에서 잘 돌아가던 프로그램은 대규모 데이터에서 에러가 난다.

6. 처음부터 다시 개발해야 하지만 그건 어렵다.

7. 어떻게든 꼼수로 돌아가게는 만드는데 그래 봐야 해당 기능은 데이터가 쌓일수록 문제가 점점 커진다.


이런 문제는 왜 발생할까?

1. 기능이 어느 정도 데이터에서 돌아갈지 예측도 하지 않았고 한계도 정하지 않았다.

2. 몇천만 건의 데이터를 다룬다고 해도 개발자가 그 정도의 데이터를 준비하는 게 쉽지 않다. 개발 시간이 촉박하니 그냥 소량의 데이터만 준비해서 개발을 진행한다.

3. 이상하게도 귀찮을 때는 긍정주의자가 되어 이렇게 만들어도 잘 돌아가겠지 하고 넘어간다.


하지만 백건의 데이터와 천만 건의 데이터를 다루는 개발은 다르다. 소량의 데이터는 대충 개발해도 잘 돌아가지만 천만 건이 넘는 데이터는 대용량 시스템 하에서 돌려야 하는 다른 종류의 개발이다. 백건에서 잘 돌아가는 프로그램이 천만 건에서 잘 돌아갈 거라고 생각한다? 이건 개발자의 직무 유기다. 옛날처럼 게시판 위주의 몇천 건 데이터만 다루는 세상이 아니다. 어지간하면 빅데이터다. 빅데이터 시대에는 빅데이터에 맞는 개발을 해야 한다.


이렇게 하자.

1. 어느 정도의 데이터를 다루게 될지 예측하자. 그리고 어느 정도까지 커버할지 데이터의 양에 대한 규격을 정하자.

ex) 이 기능은 초반에 백만 건 정도의 데이터가 쌓일 것 같은데... 몇 년 쓰면 사용량이 많아져서 천만 건은 넘겠구나. 그럼 이천만 건을 기준으로 개발을 하자. 

2. 규격이 정해졌으면 해당 규격의 데이터를 쌓아놓고 테스트를 하자. 천만 건을 커버하는 프로그램을 만든다면 천만 건 + 데이터를 필수적으로 쌓아놓고 테스트 하자.

ex) 기준이 이천만 건이니까 삼천만 건의 데이터는 준비해 놓고 개발하자.

3. 개발 일정에 데이터를 준비하는 시간도 포함시키자. (제일 중요)

ex) 팀장님, 삼천만 건 데이터 준비하는 시간 일주일 포함해서, 개발 완료하는데 한 달 걸립니다. OK?



 

너무도 당연한 건데 나 또한 귀찮다는 이유로 대충 넘어간적이 많다. 좋은 개발자와 보통의 개발자는 이런 요소들이 차이를 만든다고 생각한다. 좋은 개발자라면 아마 대량의 데이터를 쌓는 귀찮은 작업마저도 자동화시켰을 것이다. 


작가의 이전글 2019년, 직장에서 깨달은 사실들
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari