2016년 9월 25일 일요일

Start Nodejs product

Start Nodejs Product

아시는 분과 함께 노드를 이용한 프로젝트를 한번 해보기로 했습니다.
노드에 대한 경험이 없는 터라 열심히 검색을 해서 express가 괜찮다는 이야기를 듣고,
프로젝트 구성부터 개발 하는 과정을 공유 하면 좋을 것 같습니다.
글 재주가 별로 없으니 양해 부탁드립니다.

  • Why Node

    • 프로젝트의 특성상 CPU를 많이 쓰지 않고,  I/O 처리가 주로 된 프로젝트라 Node로 해도 무방하다고 생각해서 구성하였습니다.
    • 저희가 사용할 Appium 이란 테스트 툴이 Node로 만들어져 있는 면도 있고, Appium도 결국 API를 통해서 결과 값을 요청하기 때문에, I/O 처리가 많을 것으로 판단하였습니다.
    • 그리고 개인적으로 Node를 해보고 싶었던 부분도 있습니다.
    • Front-End도 개발이 필요하기 때문에 2가지의 언어를 사용하고 싶지 않았습니다.

  • 프로젝트 목표

    • coverage 100%를 만들자.
    • 모든 코드에 대해 test 코드를 진행하자.
    • 코드 리뷰를 적용해서, 잘못된 코드가 올라가는 것을 방지하자.
    • 글로벌한 오픈소스가 되어보자.

  • 프로젝트 구성

    • Tools
      • Slack
      • Travis
      • Github
    • Language
      • Node
      • HTML
      • CSS
      • Sass
    • Database
      • ???
    • Use framework
      • Express
      • Bootstrap - Front-end
      • Sass - CSS
      • Mocha - Test
      • supertest - Test
      • jshint - Lint
      • jscs - Lint

  • Tools 에 대한 회고

    • Slack
      • pros
        • 통합이 제일 잘 되어 있습니다. 웬만한건 다 연동 가능합니다.
        • 개발자들 사이에서 많이 사용하고 있습니다. 
        • API도 많이 지원을 해서 모니터링으로도 사용가능 할 것 같습니다.
      • cons
        • 무료일 경우 저장되는 메세지 히스토리가 제한적입니다.
        • 약간 느린감이 있습니다. (상대적으로)
        • 사람들의 대답이 다른 메신저에 비해 느립니다. ( 알림을 꺼놓는 사람이 많은 듯)
    • Travis
      • pros
        • 무료로 사용할 수 있습니다.
        • 사용법이 쉽습니다.
        • 잘못된 코드가 올라가는걸 사전에 방지할수 있습니다.
      • cons
        • jenkins와 같은 job과 관련된 내용은 쓸 수 없습니다.
        • private repository에 대해서 travis를 이용할 경우 요금이 과금됩니다.
        • task가 완료 되는데, 시간이 많이 걸립니다.
    • Github
      • pros
        • 형상관리로 회사에서 제일 많이 사용하는 툴
        • 개발자 친화적입니다.
      • cons
        • -


  • 해결해야 될 사항

    • 많은 기술들이 있는데, 어떤게 제일 좋을까?
    • Test 코드를 처음 짜보는데, 어떻게 짜야 제일 잘 짠 코드인가?
    • UI단의 테스트도 진행하고 싶은데, 어떻게 진행 하면 좋을까?
    • PR을 만들때 어떤 정책을 가져가면 좋을까??
      • git-flow
    • 우리 프로젝트에 맞는 데이터 베이스 형태는 어떤걸까?
      • nosql을 사용하면 좋은점?
      • rdbms를 사용하면 좋은점?
    • 테스트 할때 Database를 사용하고 싶은데, 어떤 툴을 쓰면 좋을까??
      • mockup을 사용하는 방법
      • Test database를 구성하는 법
        • sqlite vs nedb
    • task management가 필요한가?
      • npm script로 충분하지 않을까?
      • Gulp vs Grunt vs webpack 중에 어떤게 괜찮을까?
    • nodejs로 서비스를 진행 할 경우 어떻게 관리를 할까?
      • pm2 vs forever
        • 들어보니 서버가 죽었을 경우 다시 띄워주는 역할만 한다는데 그게 맞는 flow 인가?
    • CSS framework로 sass를 선택한게 좋은 선택인가?
      • Bootstrap v4부터 less에서 sass로 변경 되었는데, 그 이유를 확인해보자
    • Front-end framework로 어떤게 좋을까?
      • Angular 1.x
      • Angular 2.0
      • React
      • Not use

이상으로 일단 구성이나 회고를 적었고, 다음 번에는 해결해야 될 사항에 대한 우리가 내린 결론을 위주로 포스팅 하도록 하겠습니다.


댓글 없음:

댓글 쓰기