거의 5년 전

첫 프로젝트

노루는 머신러닝 플랫폼을 대신 호스팅 및 통계 등을 제공하는 서비스인데. 기존에 있는 노루의 프론트엔드는 장고 템플릿을 사용하여 보여주고 있었다. 정말 기능만 중시했기 때문에 UI/UX가 매우 불편하고 유지보수 측면중에서도 어려운게 많았다. 무엇보다 Jquery를 쓰기 싫어서 강력하게 이것은 새로 만들어야한다! 라고 주장하고 프론트엔드 개발자가 나 혼자임에도 불구하고 아무 생각 없이 시작했다. (그것은 틀린 선택이었다.) 1달이면 될 줄 완성할줄 알았던 노루 프로젝트는 무려 3달 반까지 질질 끌었다. 그래서 내가 무엇을 잘못했는지 회고해보려고 한다.

UX/UI 라이브러리를 잘못 선택하였다.

유료 라이브러리면 잘 되어있겠지 하고 guruable이라는 상용 라이브러리를 구입하여 사용하였는데 그야말로 쓰레기 였다. 본적도 없는 패키지의 숫자가 20개가 넘어갔으며 앵귤러로 마이그레이션한 라이브러리가 앵귤러는 쓰지않고 jquery만 잔뜩 써대고 있었다. css 컴포넌트화는 전혀 안되어있었으며 그야말로 jquery 복붙한 코드를 돈주고 산셈이었다. 그래도 돈이 아까워서 2주동안 마이그레이션 하면서 진행하다가 앵귤러 5버전으로 업그레이드 하는 과정에서 버전을 올릴 수가 없어서 버렸다. ngx-admin을 사용하다가 테마가 너무 유치한것 같아서 material2로 갈아탔는데 처음부터 calary로 하면 좋지 않았을까 ..

http를 제대로 알지 못했다.

기존 회사에서는 기본적인 보안도 걸지 않았기 때문에 신경을 안 쓰고 있었는데 CSRF, CORS 등 알 수도 없는 문제들이 터지니 계속해서 늘어졌다. http 서비스를 설계할때 백엔드 rest api의 url을 이해하고 다양한 method를 공통적으로 쓸 수 있는 api를 시작할때부터 만들었어야 했는데 그러질 못했다.

다양한 input format을 대비하여 공통 컴포넌트를 만들었어야 했다.

노루를 하면서 만났던 가장 큰 복병은 FormData이다. JSON 말고는 다뤄본적이 없었기 때문에 Angular의 Reactive Form과 FormData를 조합하는데 어려움이 있었다. 또 백엔드로 보내야할 데이터의 형태가 이상한것들도 부지기수였다.

Rx에 대한 이해도가 부족했다.

부끄럽게도 Angular를 사용하면서 RxJS는 http 모듈로의 용도 외에는 사용하지 않았다. 기존의 자바스크립트 로직을 Rx로직으로 리팩토링 하다보니 Rx는 정말 잘 알고있으면 무적이라는 생각이 들었다.

앵귤러를 고집할 필요가 없었다.

angular는 기본적으로 프로젝트가 클때 진가를 발휘한다. 노루는 양이 많긴 하지만 별 어려운 작업은 없었는데 그냥 preact 또는 vue를 사용하여 장고 템플릿 안에 mba형식으로 만들었으면 훨씬 더 빠른 작업이 가능했을것 같다.