개발팀장이 되면서 겪게된 점들 1

이미지
                                                         <팀원을 모집하기 위해 고군분투하는 모습이다. > 첫 한달  개발팀장을 맡다 2021년 5월 , 기존에 있던 CTO분이 휴직(개인사)을 하게 되면서    개발에 대한 모든 권한을 내게 일임하였다.   개발에 대한 모든 의사결정을 전부 내게 맡긴 것으로 ,   어느 정도 규모가 있는 회사의 의사결정권한을 갖게 된 것은 그만큼 내게 큰 신뢰가 있었음을   알수 있게해주는 대목이었다. 그러나 전혀 예측하지 않았던 상황이기에 준비가 되어있지 않았던만큼 처음에는 삐걱거렸다. 가장 첫번째로 어려움을 겪었던 것은 업무의 배분이었다.   관리자가 되니까 해야할일은 업무를 만들고 또 그것을 팀원들에게 분배하고 잘 되고있는지 취합하고 관리감독을 하는것이었다.   군 시절 장교로 복무하면서 겪어봤던 일이긴 했지만, 군복무 당시에도 그닥 잘 하지는 않았던 것 같다.   그럼에도 어쨌든 전반적인 시스템을 이해하고 있었고, 어떻게 구현해야할지에 대해서는 어느정도 경험이 쌓여있었기때문에 큰 문제가 없을 줄 알았다.   실무자로 일을 할 때에도 항상 업무를 받아서 하지는 않았다. 스스로 돌이켜보건대, 나는 주어진 업무가 없으면 스스로 만들어서 제안하고 기획하여 업무를 진행했다.  조그마한 스타트업이었던 첫 회사에서부터  내가 할일은 내가 만들어서 곧 잘했다. 어떤 큰 방향만 정해져있다면 그건 큰 어려움은 아니었다. 나에게 일은 항상 있었다.   매니저가되면서 달라진게있다면 내가 할일만 만드는 것은 아니라는 점이다 . 남이 할 일도 만들어줘야했다.  다행히 팀원들에 대한 면담을 실시한 결과,(팀원을 맡게되자마자 했던 부분)   마이크로 매니징을 원하지는 않았기때문에 큰 그림을 그리는 정도만 준비하면 됐었다.   문제는 내 실무를 동시에 진행하면서 팀원들의 업무 방향도 설정해야했기때문에 시간이 배로 들게 되었다는 점이다. 물론 두배로 일하지는 않았다. 대신에 내 실무시간을 줄였고

Nest js를 소개 합니다.




어흥! 
하품하고 있는 이 고양이 같은 마크를 본 적이 있으신가요?

웹 개발자인데 본 적이 없다면 한 번 읽어보고 가세요! 
(특히 앵귤러 개발자라면 더더욱!!!)

이번에 소개해드릴 프레임워크는 nest js 입니다!


# 1. Express js => Nest js

노드 개발자라면 대다수가 익스프레스를 사용해보셨을거라 조심스레 짐작해봅니다.
그만큼 커뮤니티도 크고 많이 사용하고 있고 레퍼런스도 많으니까요.

저 역시 익스프레스를 통해 개발을 했습니다. 

제가 Node js를 선택한 이유 중 가장 큰 이유는 바로 프론트엔드와 같은 언어를 사용한다는 점이었습니다. 이미 거기서 큰 장점을 얻었기에 요 몇년간은 노드로 개발을 하면서 큰 불편함을 느끼지 못했습니다. 

하지만 인간의 욕심은 끝이 없다고 하죠. 
더 편하고, 더 잘 개발하기 위해서 
익스프레스에 여러가지 짓거리를 하는데요. 
제 블로그를 보시면 아시겠지만 
저는 노드에 타입스크립트를 입히고, 
데코레이터를 이용한 문법으로 의존주입을 관리하는 것까지 확장을 시켰습니다...

제 Node js 컨트롤러 코드 중 일부 입니다. 익스프레스 같나요? ㅋㅋㅋ



Nest js는 익스프레스에 Angular 구조를 입힌 프레임워크로써 기존에 사용하던 익스프레스 미들웨어들을 모두 사용하실 수 있습니다. 









# 2. Angular


잠깐 딴 길로 새서 프론트쪽으로 이야기를 해보죠.

저는 프론트 엔드에 Angular를 사용하고 있습니다. 
지금은 6버전으로 개발중인데 9버전 소식까지 들리고 있으니... 넘나 빠른것.

저는 Angular를 2016년도 12월부터 접해서 쭈욱 사용하고 있는 개발자입니다. 
뷰는 안해봤고 리액트는 잠깐 써봤는데 Angular가 훨씬 구조적으로 단조롭고 가독성이 좋아서 Angular만 쓰고 있습니다. 물론, 제 주관적인 입장입니다. 

요 Angular를 배우던 당시에 자바 스프링을 배우고 있었습니다. 
근데 이 Angular 구조를 잘 들여다보면 마치 자바 스프링의 MVC패턴이 보입니다.
라우팅을 맡는 곳이 있고, 화면을 보여주는 html,css 파일이 있고, 뒷단에서 뷰와 바인딩되어 데이터를 퍼다 나르는 ts 파일이 있죠. 
둘의 형세가 완벽하게 일치한다고 볼 수는 없지만 꽤나 흡사하다고 느껴졌습니다. 
위와 같은 특징과 더불어
Angular 2버전 이상에서 보여주는 강력한 모듈 시스템은 마치 레고를 조립하는 듯한 착각까지 일으킬 정도였답니다. 


# 3. 프론트와 백의 진정한 통일. 
저는 그리 똑똑하지 못해서 와 앵귤러 좋다~ 밖에 생각을 못했습니다.

하지만 세상엔 참 대단하신 분들이 많죠. 
Angular의 모듈시스템과 구조적 아름다움을 Node 단에 가져가서 구현해내고자 하는 운동이 있었으니, 바로 Nest js 입니다. 


nest js 를 개발중인 분들입니다. 4명? 당신들은 도덕책을 걍 씹어드셨습니까?
사실 이분들은 앵귤러 개발자들이라고 합니다. 맨 위에 계신 리비오 브루너(?) 라는 분도 리포지토리를 보면 Angular 에 참여했다는 것을 알 수 있거든요. 




우와우!! 어쨌든!
저는 이걸 Angular 오픈 채팅방에서 처음 접했는데, 그저 할 말을 잃고 말았습니다.


생각을 해보세요. 
앞단에서 쓰던 언어는 물론이고 그 프레임워크까지 백단에서 쓴다????
거기다 Angular는 어플까지 제작되는 Native script와 Ionic 프레임워크도 있습니다. 
앱, 웹, 서버까지 모두 한 언어 한 프레임워크 형태로 제작할 수 있는 그런 시대가 왔다는 것입니다.  그래서 지금은 조그마하게 아이오닉과 네스트를 이용해서 웹 앱과 모바일 어플을 만들어보고 있습니다. 이 어플은 조만간 소개해드리도록 하죠. 



Introduction

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript (preserves compatibility with pure JavaScript) and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Reactive Programming).
Under the hood, Nest makes use of Express, but also provides compatibility with a wide range of other libraries (e.g. Fastify). This allows for easy use of the myriad third-party plugins which are available.



자 이건 Nest js 홈페이지에 있는 소개글입니다. 
다른 라이브러리랑 호환도 잘되도록 만들었다고 합니다. 
https://docs.nestjs.com/ 
여기로 가시면 원본 글을 보실 수 있습니다. 


얼마나 대단한 놈인지 한번 코드를 까보도록 하겠습니다. 
먼저 기존 Angular의 코드를 가져오겠습니다. 
그중에서도 Ionic으로 생성한 Angular 코드입니다.
Angular를 모르시는 분은 그냥 모듈이라는게 있다고만 알고 보셔도 되겠습니다. 
프론트 단의 코드


@NgModule이라는 데코레이터를 사용해서
여러가지 설정값을 부여한후에 AppModule을 Export 하고 있습니다.

다음으로, Nest js로 생성한 서버단의 메인 파일을 볼까요.
백 단의 코드


Angular가 말했다. "어딜 보시는거죠? 그건 제 잔상입니다만?"


어떤가요?
전반적으로 같은 코드라고 할만큼 비슷한 모습을 하고 있습니다. 
생산성이 엄청날 것 같다는 거지요. 특히 이 모듈시스템은 협업 끝판왕입니다.. ㅠㅠ

Angular 하나면 웹, 앱, 서버 다 할 수 있어.
생산성 그냥 끝장난다!! 이 말입니다! 여러분!

다만 단점이라면 국내 Angular 유저가 굉장히 적다는 것과 
한글 레퍼런스가 많이 없다는 점이겠죠. 

Angular는 러닝커브가 높다고 악명이 높은데요. 저는 오히려 기존에 자바 스프링을 하셨던 분들이라면 더 친숙하게 하실 수 있지 않나 싶습니다. 

노드와 다른 언어간의 퍼포먼스에는 따로 이야기를 하지 않겠습니다. 

적어도 새로 공부하시는 분들이라면, 1인 창업을 생각하시는 분들이라면 
Angular 한 번 파보시는게 어떨까요? 정말 좋거든요.



Angular 진영이 많이많이 흥하면 좋겠습니다. 



댓글

  1. 잘 읽었습니다.
    Angular가 러닝커브가 심한건 사실인데, 개인적으로는 angular.js를 처음 접했을 때보단 훠~~얼씬 쉽더군요.
    또 말하시는 것처럼, 레고 블럭처럼 모듈을 조립하는 듯한 느낌은 참 깔끔하다고 해야 하나요? ㅎ
    느낌은 마치, frontend에서의 spring같은 느낌이라서 더 좋기도 하구요~~
    그나저나 저도 nest.js를 함 해봐야것네요~~!!! ㅎ

    답글삭제
    답글
    1. 정말 그렇죠. 하나 배워두면 여러모로 쓸데가 많아서 정말좋습니다. nest 한번 해보세요! 저는 강의도 준비해볼생각입니닷 ㅋㅋㅋ

      삭제
  2. 이번에 nest js에 관심이 있었는데 글을 잘 읽었습니다.
    저도 angular를 16년 말 부터 계속 사용해왔는데요. 정형화된 코드스타일이 무척 마음에 들더군요.
    대규모 협업을 할 때도 누가 코드를 짜더라도 알아보기 편해서요.
    그리고 spring을 했더라면 DI 개념도 있으니 더욱 접근하기도 쉽구요.
    러닝커브가 심하다곤 하지만 어디까지나 typescript와 rxjs를 같이 더 해야된다는 것이 있기 때문에 그런 오해가 있지 않았나 싶네요. 그렇게 따져도 다른 프론트엔드 기술도 redux, hook, mobx, vuex등 더 해야되니 이젠 러닝커브 심하단건 옛말이 아닐까 생각이 듭니다.
    저도 angular 진영이 더 흥했으면 좋겠네요.

    답글삭제
    답글
    1. 저도 시작을 스프링으로 했던지라 접근이 쉬웠습니다. 같은 생각을 가진 분을 만나니 정말 반갑네요 ㅋㅋㅋㅋㅋ 간만에 개발 지식좀 다시 풀어봐야겠습니다. 답글을 달아주시니 감사드려요!

      삭제
  3. 저희도 스타트업인데 angular 쓰면서 node로 개발하니까 프론트앤드에서도 백앤드 이해가 쉽고 혹시나 백앤드가 바빠서 API서버 개발이 더뎌도 프론트개발자분이 간단한거 알아서 바꾸시더라구요 ㅎㅎ
    가성비가 좋은 언어라서 js/ts 기반으로 풀스택 개발중이었는데 nestjs 요런애가 있었군요!

    angular가 아무래도 RN때문에 인기가 떨어지긴 하지만 ㅠㅠ 구글이 버리지 않고 계속 개발을 해줘서 퍼포먼스도 RN이나 flutter 수준으로 좀 개선을 해주거나 flutter 기술을 angular에 이식을 좀 해줬으면 좋겠다능요 ㅎㅎ...

    답글삭제

댓글 쓰기

이 블로그의 인기 게시물

iframe 보안 문제 우회 및 해결법 1

iframe 보안 문제 우회 및 해결법 2

개발팀장이 되면서 겪게된 점들 1