최근 아키텍처에 대한 고민이 끝남과 동시에, 좀 더 짜임새 있는 프론트앤드 개발을 위해 기존에 개발중인 AngularJS 를 AngularJS 2로 바꾸려고 열심히 공부하고 마이그레이션 하던 도중에 구글의 모 형과 얘기하다가 ReactJS가 최근의 대세이고, 페북에서도 적극적으로 밀고 있다는 말에 주저없이 리엑트로 바꾸기 시작했다. 프론트 컴포넌트야 세 개 정도밖에 되지 않으니 가능한 일이긴 한데, 사실 새로운 패턴(Redux)이라던가, 자원관리, 그리고 View의 그 컴파일하는 방식 등 많은 부분이 솔직히 흥미로웠고 동시에 ES2015문법이 생각보다 상당히 FP의 그것과 비슷함에 한번 더 놀라고, 흥미를 가지게 되었고, 기존과는 다른 리엑트의 구조에 한번 더 놀라게 되었다.
거의 이정도면 백엔드 뺨치는 엄청난 구조화가 아닌가 싶다. Flux라는 왠지모르게 프론트엔드에 맞게 설계된 패턴을 배우는 것도 신기한데, Promise등으로 내가 지금 백엔드의 Play! 와 Slick에서 하는 것과도 비슷하게 돌아가면서 구체적으로 보지 않아도, 그냥 생각만 해도 “빠르겠다” 라는 생각이 크게 들더라. 그러면서 Bower/NPM만 놔두고 Grunt도 Gulp로 바꾸고, 생전 처음 보는 Webpack이라는 놈도 사용하고 있다.
그러다보니 사실 개발이 약 한달 가량 지체됬다. 마지막으로 모듈 개발하던 때가 한달 전이던가, SSL추가하고, 아키텍처 싹다 뜯어고치고, 시스템 아키텍처나 비즈니스 아키텍처도 다 만들고, Confluence에 문서화도 다 했다. 아직 C.I. 와 C.D.를 손봐야 하는데 이 부분은 일단 추후로 돌려뒀다.
그런데 이제 프로토타입까지 남은 시간은 3주가량밖에 없다. 아직 ReactJS도 완벽하게 이해한 것이 아니라서 마이그레이션에는 시간이 좀 더 필요하다. 내일쯤에는 그래도 뷰 단의 액션 물리고 Ajax송수신 해서 Redux로 자원관리하는 방향이 가능할까? 글쎄.. 우선 기능적으로 보면 총 5가지의 큰 기능 중에 당장 로그인/로그아웃 방식도 조금 바꿔야 하고, 소셜 로그인도 구글 추가해야 하고, 특히나 D3.js사용한 시각화 부분을 빨리 추가해야 한다. 기존에 만든 체크리스트도 마무리 짓고, 가장 중요한 것은 Planner기능을 하루빨리 만들어야 하는데, 이게 사실 가장 중요한데 전혀 진행되고 있지 않다. (참고로 이 문단은 현재 개발과 관계된 내용이라 혹여나 이 글을 읽는 독자들에게는 크게 와닿지 않을 수도 있다.)
자꾸만, 구조적인 욕심에 스케줄을 딜레이 시키고 있다. 언제는 뭐 Agile적용한다고, 언제는 SSL, 또 언제는 REST구조로 바꾼다고 등등등.. 그러다 지금은 아에 쌩뚱맞은 리엑트까지 가져다 쓰고, 그냥 Ajax송수신 하거나 자원관리 대충 해도 될 것인데 또 대충은 용납 못하니 Flux 패턴 익힌답시고 공부하고, 샘플보고 그러고 있다. 라우팅 방식도 달러져서 이것도 봐야하고, 쿠키나 세션 관리도.. 기존 Angular코드들을 많이 버려야 한다.
참으로, 이런 가치가 있는 마이그레이션일까 라고 생각해봤을때는, 그런 가치는 있겠지만 이제 더 이상의 변화로 가지는 말자는 생각이다. 그러니깐 즉, 개발자적인 입장에서 욕심부리지 말자는 것. 물론 최초 설계야 시간이 많이 드는 것이 사실이지만 당장 개발을 빨리 끝내서 Pitch들 열심히 뛰고 또 투자자 모집도 해야하는데, 제품 공정률이 채 절반밖에 미치지 못했으니 이건 또 언제해서 언제 끝내려고 하는가.
스타트업을 하면 그런 단계가 참으로 중요한 것 같다. 글쎄, 나도 개발에 참여하는 것이 참으로 좋지만 본격적으로 사업을 운영하면 그럴 시간이 있을까, 최소한의 아키텍처나 큰 방향은 가지고 가겠지만 많은 부분에서 손을 놓아야 할지도 모르겠다는 생각이 들었다.
하지만 그래도 내가 뭐 거대한 프로그램을 만들겠다는 것도 아니고, 어떻게 보면 소수로도 운영할 수 있는 개발을 하고있다는 사실에 안심이 된다. 당장에는 두 세 명 정도가 필요하고 운영까지 생각하면 최대 다섯명? 5년 정도의 현 시점에서의 가장 장기적인 플랜에 비춰봐도 약 20~25명 정도가 맥시멈이라고 생각된다. 이곳 인건비를 고려해본다면, 인당 못해도 연 10k정도는 생각해야 하고 그럼 최초 5명기준 50k만 해도 뭐 투자를 50k받으면 그걸로 일년 날라가겠네. 인건비 생각하면 장비나 식대 등은 사실 돈이 드는것도 아니다. 참으로, 여기서 사업하려면 정말로 큰 비전을 가지고 안정적인 수익이 있거나, 혹은 소수정예로 최대한 Automation을 잘해서 운영할 수 밖에.
그래서 결국, 시스템적인 설계와 자원관리가 가장 중요한 요소인 것 같다. 그래서 머릿속에는 항상 시스템적인 생각이 들지 않을 수가 없다. 하지만 사업체를 운영하면 할수록, 나는 조금 더 ‘수익’적인 측면과 제품의 마케팅, 흐름 등에 신경을 써야하지 않을까 라는 생각이다.
결국, 사업의 초기는 제품이 우선되고, 그 다음이 안정화와 신뢰, 그런 요건들이 갖춰져야 비로서 사업이 운영이 될 것이라는 생각이다. 그러니 지금의 투자는 투자할 만 하지만, 이후에는 조금 더 냉정하게, 시스템을 도전적으로 바꾸려면 그만한 충분한 이유가 필요하지 않을까.
그런데 사실.. 지금 시스템 생각을 해보면 RDB를 제외하면 죄다 신기술 뿐이다. 백엔드는 Play!에 스칼라 쓰지, Slick쓰지, SBT쓰지, 프론트는 리엑트에 webpack에, ES2015에 뭐 Gulp, Jasmine, Bower, NPM(이정도는 기본이려나..) 어쨌든 리엑트 쓰니깐 이것도 이리저리 붙는 기술들이 죄다 새롭다. 클라우드도 Kubernetes에 도커 쓰지, 남들 잘 안쓰는 Google Cloud쓰지… 결국 남들과 똑같은 것을 싫어하는, ‘재미’를 더 중시하는 내 성향이 고스란히 담겨있는 개발이 아닐까.. 참으로, 그렇게 내 조직아닌 조직이 만들어 지고 있는 것 같다. 개발을 즐길 수 있는 환경 말이다. 그러니 이제는, 조금의 경영 쪽으로도 공부가 필요하지 않을까.. 그런 약간의 생각정리와 작업 근황에 대한 주저리 주저리였다.