Angular 2로 몇 달간 프로젝트를 진행하며 Angular 2를 프로덕션에 사용할 때에 주의할 점에 대해 정리해보고자 한다.

먼저 Angular 2는… 개인적인 생각으로 프로덕션에 적합하지 않다!… (라고 생각했었다)

그 이유를 몇 가지 대 보면…

  1. Angular2 자체의 미칠 듯한 버전 업
  2. TypeScript 의 미칠 듯한 버전 업
  3. CLI 도구가 아직 베타 버전임 (현재 시점으로 beta.24)
  4. 서버 사이드 렌더링을 도와주는 Universal 이 아직 RC 버전임 (현재 시점으로 rc.1)
  5. 그 외에 쓸만한 많은 모듈이 버전이 달라서 AoT(Ahead of Time) 컴파일이 안되는 경우가 있음
  6. (위의 5번에 이어) AoT 컴파일을 안하면 모바일에서 꽤나 많이 느림…

사실 CLI를 사용하기 전부터 TypeScript로 깔끔하게 작성할 수 있다는 이유 때문에 마음에 들어서 이것 저것 SystemJS로 시도를 해왔고, 그러다가 CLI와 함께 Webpack의 아름다움에 빠져 더욱 이 프레임워크를 좋아하게 되었는데, 막상 프로젝트를 하다 보니 Angular의 버전이 계속 버전 업이 되서, 아주 당연하게 ‘Backward Compatible 하겠지’ 하고 저장도 안해놓고 버전 업을 했는데… 재앙이 시작되었다. 동작하던 코드가 동작을 안하기 시작하는 것이다. ;;; …… 상상도 못했다.

그러던 도중 우연히 Angular 2의 Change Log를 보는데, 갑자기 난데 없는 Angular 4. ㅋㅋㅋㅋ 그래서 문득 보니 Angular 공식 블로그에서 다음과 같은 글 이 있었다. 요약한 즉슨,

결론 : 버전은 신경쓰지 마세요.


버전 문제로부터 조금 자유로워졌다면, Angular (앞으로는 Angular 2를 Angular 라고 칭하겠다) 를 프로덕션에서 사용하기 위해 신경써야 할 것들을 정리해보자.

  1. Angular 버전 Freezing (관리를 잘 해야 한다…) i.e. 2.4.0
  2. CLI 버전 Freezing (관리를 잘 해야 한다…) i.e. beta-24
  3. TypeScript 컴파일러 버전 Freezing (관리를 잘 해야 한다…) i.e. 2.1
  4. 외부 모듈을 사용할 때에는 AoT를 고려하기.
  5. 경우에 따라서는 서버 사이드 렌더링도 고려하기. (비즈니스 로직, 서버 상황에 맞게 유연하게!)

홀로 개발하면 전혀 문제가 될 것 없는 일이다. 특별하게 갑자기 업데이트를 하고 싶은 마음이 들어서 버전 업데이트를 하지 않는다면. 문제는 팀으로 개발을 하거나, 개발 환경이 바뀌는 경우인데, 이런 경우에는 리더가 꼼꼼하게 신경을 써 주어야 한다.

특히 주의를 해야 하는 부분이 4번, AoT를 고려하는 부분인데, 이건 해당 모듈을 사용하기에 앞서 Angular 자체의 버전들도 같이 고려를 해 주어야 할 것 같다(사실 그 연장선으로 생각해보면 Angular 버전은 낮은 것을 쓰는게 좋을 것 같다). 다음의 링크 는 AoT를 위해 고려해야 할 것들을 정리해놓은 글이다.