회사에서 외부 CRM 툴을 사용하고 있다. 사용하면서 뭔가 기능이 아쉬운 부분이 있고, 오늘 같은 경우 버그를 발견했다. 외국 회사라 보니 버그 수정이 생각했던 것에 비해 너무 느리다. 그래도 한달에 한 번씩 버그를 단계적으로 수정해줬으면 좋겠는데. 그리고 결정적인 버그도 너무 많다. 

이러다보니 내가 이 툴을 설계하면 어떨까 하는 생각을 하게 되었다. 그래서 개발은 생각하지 않고 머릿속으로 툴을 설계 해볼려고 한다. 개발을 생각하면 뭔가 생각하는게 느리고 뭔가 일을  저지르는 맛이 없다. 개발을 생각하면서 설계를 하면 개발편위성 때문에 설계를 이상적이기 보다는 현실적으로 하는 현상도 있다. 그래서 설계만 해보려고 한다. 그래도 내가 개발자이기 때문에 대충 개발 방향성은 생각 할 것 같다. 

 덧글 : 내가 원하는 CRM 툴을 더 찾아보니 Sales CRM 이라는 용어가 있었다. 내가 생각하는 툴은 Pipedriv, Hubspot, salesforce 같은 시스템이다. 

 요즘 사용하는 stack 은 Python Flask + SQLAlsqlalchemy + Postgresql(+postgis) 이다. 기존 구현이 RubyOnRails + Mysql + elasticsearch 였다. 내가 지금 회사로 와서 Python 기반으로 변경 했다. (솔직히 내 처음 생각은 내가 그냥 Ruby 를 배우는 것이었다. ). 기존 구현들이 yaml 을 사용해서 Text Column 에 값을 저장한 경우가 많았다. 내가 이 것을 Postgresql 에서 지원하는 Jsonb 데이터 형으로 변경했다.  Yaml 내부 값 검색과 GIS 좌표의 거리 계산을 위해 elasticsearch  를 사용했는데, Jsonb 와 postgis 때문에 elasticsearch  를 사용할 필요가 없어졌다.

 이 이후 꽤 많은 구현이 Jsonb 를 이용했다. 뭔가 복잡한 데이터가 있을 때는 json 의 dictionary 형태를 그리고 array 형태가 필요할 때는 json 의 list 형태를 사용했다. 

그리고 오늘 Many to Many relationship 을 표시하기 위해 foreign key 형태의 Jsonb 를 사용했다. 그리고 깨달았다. 이건 좀 위험한 구현인 것 같다고. relationship  구현에는 기존 처럼 associative table 을 이용하는 형태로 구현해야 안전할 것 같다. 

 예전 부터 엑셀 같은 프로그램을 만들고 싶었다. 그래서 https://yiunsr.tistory.com/660  이런 프로그램을 만든 후 잘 변형해서 엑셀처럼 만들어 보려고 했었다. (저 프로젝트가 8년전이라니.) 

 얼마전부터 electronjs 를 가지고 만들어 보고 있다. 프로젝트 명은 lightsheet (https://github.com/yiunsr/lightsheet ) 이다. 

 

약간의 목표도 정하려고 하는데 개발할 때마다 한계에 부딪힐 때마다 목표가 바뀌고 있다. 현재 목표는 엄청난게 큰 최대 4GB CSV 파일 편집과 약간의 엑셀 함수지원이다. 아무래도 개발의 편의성을 위해 embedded db 를 사용하려고 하는데 sqlite3 를 생각 중이다. 그래서 현재 가장 많은 공을 들이고 있는 부분은 CSV 파일을 sqlite3 에 저장하는 방법에 대해 많은 고민 중이다.  하다보니 CSV 파일을 분석하는 것도 만만찮다. 파일 크기가 클 경우 CSV 파일을 array 로 만드는 것도  시간이 너무 걸려서 C를 이용해서 array 로 만드는 nodejs addon 을 만들고 있다. 뭔가 메인 일을 하는게 아니라 사이드 일을 더 많이 하는 것 같은 느낌이 있다.


이번 프로젝트는 좀 오래 해야 하는데.