본문 바로가기

Development

Data 설계와 처리방법의 중요성.

 

예전에 제품 퍼포먼스에 문제가 심각했었는데 서버쪽에서라도 문제의 일부를 해결해보자고 판단해서 서버를 새로 만들기로 결정했다.

퍼포먼스가 문제라면 차라리 c++ 로 구현할까 아니면 netty 로 구현할까 한참을 고민하다가 netty 의 성능이 꽤 좋다는 의견들이 많고 개발기간이 촉박해서 netty 로 구현했는데 중간중간 테스트에서도 만족할만한 성능을 보여줬다.

 

하지만 문제의 가장 근본이었던 database 구조를 수정하지 않았고 제품에서는 그 구조의 data 를 그대로 사용하다보니 data 가 커지기 시작하면서 다시 예전의 퍼포먼스 문제가 동일하게 발생했다.

 

 

 

database 모델링을 다시하고 구조를 수정하기 위해서는 제품의 컨셉을 재점검 해야할 필요도 있고 이런것들이 사상 자체를 뒤흔들수도 있다.

한마디로 처음으로 돌아가서 다시 시작하는것과 마찬가지일수도 있다는 의미이다.

 

이때는 응급처방식으로 때우면서 갈건지 아니면 잠시 멈추고 근본적인 문제를 해결하고 갈건지 경영진에서 결정을 해야 한다.

만약 회사의 메인 솔루션이고 차후도 계속 들고 가야한다면 두번째 결정이 맞다.

 

하지만 경영진은 첫번째 결정을 했고 그 결과로 web application 서버를 netty 기반의 application 으로 만들고 그에 맞게 제품도 수정을 했으나 얼마 지나지 않아서 다시 근본적인 문제가 발생했고 결국 2개월의 수정기간만 의미없이 소비한 셈이 되었다.

 

data 를 설계하고 처리하는 방법에 대한 충분한 고민이 없으면 멀지않은 시일안에 반드시 문제가 발생하며 이때 요구되는 resource 는 상상을 초월할수도 있다.

server 와 client 는 그저 data 를 처리하고 보여주기 위한 수단과 방법에 불과할 뿐이고 가치를 지니는 것은 data 라는 사실을 정확하게 인지하고 있어야 한다.

 

 

 

 

 

개인적인 입장에서는, 

netty 를 구석구석 들여다 보면서 구현 해볼 수 있는 좋은 기회가 되었고 

구조적인 문제를 넘어서기 위해서 온갖 방법들을 궁리하느라 행복한 시간이었다.