달력

12

« 2024/12 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

늘은 이것 저것 생각하다가, 예전일이 생각이 났다.


내가 nodeJS 처음으로 사용하기 시작한 것은 2년전 어느 이른 봄으로 기억이 된다.

당시의 나는 쏟아져 나오는 새로운 기술들과 Cloud기반의 서버 기술들을 들여다 보면서, 어떤 것을 공부를 해야할지 수 개월째 맴돌고 있었던 시기로 기억된다. 


하루가 다르게  쏟아져 나오는 새로운 기술들이 눈과 귀를 즐겁게 하였지만

   "무엇을 공부해야할까?" 

   "무엇을 배워야 할까?"

 

대해서 나름 심각하게 고민하고 스스로에게 물어 보는 시간이 많았다.

AI와 머신러닝, ReactJava, Java 8, Lamda, 함수형 프로그래밍,  V8 엔진을 기반으로한 Javascript 기반의 서버 프로그래밍 등등 말이다


이러한 고민의 시작은 사실, 90년대에 서버 클라이언트 프로그래밍을 시작으로 2000년대 초반에는 3 Tier기반의 서버 개발로 할 때는, 모든 서버의 설치와 구성 및 설정을 위해 개발자는 당연하게  사전에 검토와 분석을 기반으로 설계를 하고 개발을 하고 운영까지 하였다. 그리고 당연하게 개발을 위한 소프트웨어 스택과 라이브러리에 대한 기능도 세세하게 검토하고, 버전을 확정한후에 개발을 시작하였다.


하지만, 현재의  AWS와 같은 Cloud 환경과 Spring과 같은 휼륭한 Framework를 사용하거나 완성도가 높은 오픈 소스를 사용하게 되면, 수개월에 걸쳐서 검토하고 기능을 익혔던 과정은 불필요한 작업이 되었다.

내 생각을 덧붙이자면, 누구나 쉽게 개발할 수 있는 환경이 된 것이다. 

이전에 MSDN CD 또는 DVD를 통해서 학습했던 내용들은 인터넷을 이용하면 바로 바로 이용가능한 예제와 설명들을 찾을 수 있다. 


새로운 시대가 도래한 것이다.

그런데, 어떻게 나는 무엇부터 시작을 해야 할지, 알수가 없었다. 몇몇 사람들과 이야기를 나누어 보았는데, 나와 비슷한 고민을 하는 사람들이 있었다. 

알파고의 파도가 지나간지 얼마 되지 않았기에 AI를 공부하고 싶다는 생각이 들었지만, 나는 엔지니어적인 관점에서 접근하고 싶었다. 내가 DB엔진을 만지지않고, DB를 사용하는 것과 마찮가지로 AI와 머신러닝이 어는 정도 성숙된 이후에 공부하고 싶었다. (요즘이 그 때인것 같다.) 


이러 저러한 여러 가지 생각을 하다가, 아무것도 시작을 못하고 있었는데,  

그러다가 내린 나의 생각은 이랬다.  

 

결론은


무엇이 되었던, 일단 한가지씩 시작해 보는 것이다


별다른 고민을 하지 않고, 크지 않은 새로운 과제에 nodeJS 사용해 보기로 하였다

마침 VS Code를 사용하면서, NodeJS와도 궁합이 잘 맞는다는 것을 알았기 때문에, 바로 사용을 할 수 있었던 것 같다. 


꼭 NodeJS 사용해서 원하는 작업을 해야만 하는 것은 아니었다. 

Perl 또는 Python 또는 Groovy 이용해서 Batch 스크립트를 만들어도 되는 간단한 작업 이었기 때문에,
그리고, 새로운 언어를 하나 더 배울 수 있다라는 측면과 호기심에서 시작을 하게 되었다.

아~ 갑자기 생각났다. 그때 AWS에 새로운 가능으로 Lamda가 추가되었는데, 지원하는 언어중에 하나가 바로 NodeJS 였다.   


그때 해야 했던 작업은 배치작업을 만들어야 했는데, RestAPI 정기적으로 호출해서 DB 테이블에 비어 있는

필드를 채워서 테이블을 확인하고 업데이트 하는 것이었다.

NodeJS의 비동기적인 동작에 대해서 잘 알지 못하는 상황이어서, Async와 I/O Non-Blocking에 대해서 작업이 필요한 상황이었다. (지금이라면, 굳이 NodeJS를 사용하지 않습니다. ) 


작업순서는 다음과 같았다.

먼저 AWS S3 에서 로그를 다운로드 받는다. 다운로드 받은 로그를 약간의 분석을 위해서 메모리에 Map형태로 잘 말아서 올린다. 그리고, DB Table 비어 있는 필드를 찾아서 업데이트 하는 작업과 Rest API를 호출해서 DB상의 테이블의 구멍난 부분을 찾아서 채워는 작업이었다.


기본적으로 배치로 돌기 때문에, 시간적으로는 제한을 받지 않기 때문에 기존의 Sync 작업으로 진행해도 되었지만, NodeJS 사용한다라는 것은,  Async 대한 기본적이 고민이 선행될 필요가 있다. (물론, 지금이라면 await async 키워드를 이용하거나, Promise 사용하면 되겠지만...)


비동기 처리는 

내가 원하는 작업 순서에 따라서 로그를 찍지 않는다, 파일을 읽어 올때나, DB에서 쿼리를 실행해 결과를 가져올

때나, 서버로 부터 API 호출하고 Response를 받을때도, 비동기로 찍어주는 로그는 내 예상과 다른 순서와 시점에 로그를 까만 화면에 번쩍이면서 찍고내고  있었다.


사실 비동기 프로그램은 비주얼 베이직에서 이벤트를 받아 처리하거나, 콜백 함수를 이용한 메소드의 실행 측면으로 이해한다면, 이해적인 측면에서 쉬울 수 있지만, 순차에 따른 호출을 하고 싶은 경우에는 중복된 콜백 메소드의 호출을 보게된다.  call-back hell이라고 부르는 그것을 말이다. 


Call-Back Hell을 피하기 위해서 메시지 루프와 같은 형태로 Event를 처리하는 방법을 사용해서 피해보기도 하였으나, 마음에 들지 않는 방식이었다. 


그러다가, 네트워크 작업과 DB 쿼리가 비동기로 호출되는 상황에 대해서 고민을 하면서만들어 솔루션은 

 Task 큐에 넣고, 호출하고, 결과를 비교하는 콜백 함수를 이용하는 방식으로 마무리 하였.

 
그리고, 동기처리가 필요한 작업순서를 지정하기 위한 방식으로 Perl 이용했었다.

순전히 Call-Back을 중첩하여 사용하기 싫어서 사용한 방법이었는데, 나름 메시지 큐를 만들고, 들어오는 결과를 처리하는 방식이어서, 간단하지만 좋은 방식이었다.


만약, 지금이라면 다른 방식으로 해결할 것인데, 공부하는 측면에서는 도움이 많이 되었다.

NodeJS는 장점도 많지만, 단점도 많다, 하지만 장점이 워낙 커서 단점을 가릴 정도로 훌륭하다.



'행복 > 나의 생각' 카테고리의 다른 글

하루를 반문하다.  (0) 2011.10.24
변화의 시절의 내가 살아가는 것.  (0) 2011.07.30
사진없는 독일 출장기 (2)  (0) 2011.07.30
사진없는 독일 출장기 (1)  (0) 2011.01.16
벌써 1년이 지났다. 앞으로는...  (2) 2010.10.31
:
Posted by 행복상자
2011. 10. 24. 22:40

하루를 반문하다. 행복/나의 생각2011. 10. 24. 22:40

개발자라면, 나이가 차고 직급이 올라가면
대부분의 사람들이 듣는 말이 있다.
관리하실 건가요? 개발 하실 건가요?

단지 돈만을 벌고 일하는 사람이 아니라면,
또한 본인이 하고 있는 일을 사랑하는 사람이라면,
별고 고민하지 않고 이야기 할 것이다.

최근의 스티브 잡스의 죽음으로 많은 사람들이
이러 저러한 생각들을 했을 것이다.
내가 살고 있은 이땅에 인류에 도움이 되는
뭔가를 남기는 것만큼의 가치를 가지고 일을 할 것인가?
혹은 자신의 자리를 지키고자 일을 하고 있는지?

나는 어떻게 살고 있는지 하루를 반문한다.

"단지 나는 내가 하는 일에 애정을 갖고,
 쏟고, 붇고, 힘쓰고
싶을 뿐이다." 
:
Posted by 행복상자
"시간이 흐른다는 것을" 인지하는 순간부터, 이전의 나와 다르다는 것을 알게된다.
물론 "나는 변하지 않고, 주변의 것들이 이전과는 다르다."라고 말할수는 있지만, 이는 내가 속한 세계의 변화를 인지하지 못하는 것일 것이다.

지금, NOW, 정말로 많은 것들이 빠르게 변화하고 있고, 이러한 변화들을 이전에 제한 적이었던 것들 까지도 바꾸고 있다. 특히 IT기술이라고 하는 것들은, 여러가지 변화를 이끄는 것들 중에서도 가장 두드러 진다. 

범인들은 모르지만, "나만은 이것을 알고 있어" 라고 발빠른 개발자들로부터 수년전부터 회자 되는 기술들과 용어들은 어느덧, 신문과 광고에서 흔하게 보게 된다. 그리고, 그 해의 트랜드를 이끌어가던 기술 용어와 세미나에 주제도 다루어졌던 주제들은 자연스럽게 삶속에 녹여들어가던지, 다른 새로운 용어로 대체되고 있다.

기술의 전환과 습득이 너무나도 자연스럽게 이루어 질수 있었고, 학습 능력과 경헝의 깊이에 따라서 얼마든지 새로운 트랜드를 자신 만의 것으로 바꾸고 변화시길 수 있었다.

이처럼, 얼마전까지만 해도, 최신 IT의 트랜드에 따라서 기술 습득이 가능했었다. 그러나, 지금은 이러한 습득화 학습이 쉽지 않은 시대로 가고 있다. 이전과는 다른 새로운 기술들은 분산화와 대량화라는 측면에서 비용과 안전성에 대해서 방향을 잡고 있는데, 기존 기술들이 성숙기 들어서면서 새로운 기술적인 요구사항이 나오면서 새로운 기술적 트랜드와 요구가 만들어진 것이다.

이전에는 개인이 PC한대면, 자신이 필요한 툴들과 WAS 그리고 DB까지 설치해서 개발이 가능한 시대였으나, 이제는 여러대의 PC로 구성된 분산 환경하에서 개발 요구사항들을 한가지 한가지 끝을 내야 하는 것이다. 그리고, 이러한 환경은 아직 성숙기의 기술들이 아니라, 성장기에 있기 때문에 개발자들이 좀더 세부적인 기능과 구성과 Architecture까지도 들여다 보아야 한다는 말이다.
DBMS와 같이 성숙과 안정화에 들어가 기술들은 영역의 구분이 명확하지만, 이는 그렇지 못하기 때문에 더욱 원하는 만큼의 기술 습득과 성장이 쉽지않고, 새로운 기능을 추가하거나 사용성을 개선하는 것은 이를 이용하는 개발자와 프로젝트의 몫이기 때문에, 신규 적용에 대한 부담을 지고 가야하다. 

그리고, 지금은 분산환경에 대한 하둡, 카산드라, MongoDB, Redis와 같은 기술들을 쓰기 위해서 많은 업체와 기업들이 검토와 연구를 하고 있지만, 성숙기로 접어드면 이러한 기술들도 경쟁 가운데서 몇몇만 살아남게 될 것이 때문에, 많은 주의가 필요하다. 그리고 이들을 적용하기 위해서 규모가 있는 투자가 선행되면 다른 것으로 바꾸기 어렵기 때문에, 결정에 많은 시간과 사전 분석.검토가 필요하다.

한명의 개발자가 일어서기는 점점 어려운 시간으로 접어 들어가고 있다. 
기술의 규모와 성장은 이전과 다른 방향에서 진행되고 왔지만, 이를 적용하는 것은 너무나도 부지부식간에 일어난다. 무엇을 해야할지에 대한 고민도 더 많아지고 있다. 이는 이전에 어셈블러에서 C로 전환되는 것과 같이 큰 변화의 기로에서, 이전 것은 선택할지 아니면, 새로운 것을 선택할지에 대해서 요구되는 것과 유사하다. (물론 어셈블러를 더이상 쓸일이 없다는 말이 아니다.)  

새로운 것들을 알고 적용하는 것은 적지않은 노력과 시간을 요구한다.
작년 이맘때부터 준비하던 것들이 있었는데, 여러가지 이유로 제대로 적용을 하지 못했다. 
하지만, 가야할 길들이기 때문에 다시 하나씩 준비를 시작하려고 한다. 



:
Posted by 행복상자
2011. 7. 30. 09:18

사진없는 독일 출장기 (2) 행복/나의 생각2011. 7. 30. 09:18

작년에 쓰다가 만 들인데...그냥 남기기로 했다.

인천 공항에 독일행 비행기 티켓을 발권을 하고는, 비행기 타는 시간까지 남은 두여시간 동안, 환전도 하고, 로밍 서비스 등록을 했다. 아직도 2G폰을 사용하는 나에게 해외로 출장을 갈때 자동 로밍이 되지 않는 점이 제일 불편한 점이다. 
한동안 연락이 끊어졌던 친구들과 지인들이 예전 전화번호를 잊지않고, 전화를 했을 때에 언제나 처럼 내가 받는다는 장점 빼고는 더 나은 점도 없는데 나는 아직도 고집아닌 고집을 부린다.

비행기를 올라탔다, 여느 때처럼 비행기 출입구에 비치된 여러종의 신문들을 각각 하나씩 챙겨 들고는 복도쪽으로 예약되어 있는 내 자리로 갔다. 비행기는 가운데에 4개의 좌석이 좌우로 3개의 좌석을 갖추고 있었는데, 탐승객은 별로 많아 보이지 않았다. 전체 좌석수의 절반 정도였다.

독일까지는 약 11시간동안 비행을 하게 된다.
비행기에서 틀어 주는 영화들은 화질이 별로 좋지 않았기 때문에, 사실 그 동안 잘 보지 않았는데 그동안 시스템들을 보강을 했는지 제법 깨끗한 영상을 제공하고 있었다. 덕분에 프랑크푸르트 도착까지 영화를 5편이나 섭렵 할 수 있었고, 가져간 노트북과 책은 별 다른 도움이 되지 못했다.

드디어, 프랑크푸르트 공항.
도착 시간은 현지 시간으로 오후 5시경. 프랑크푸르트 공항을 그렇게 붐비거나 복잡하지 않았다.
독일 초행인 나를 챙겨 주겠다고 나온 후배가 차를 가지고 기다리고 있었다. 
차를 호텔까지 데리고 가는데, 많은 눈들로 뒤 덥힌 들판과 도로들이 어둠속에서 희미하게 보였다.
6시가 안된 시간인데도 겨울이라 그런지 한밤처럼 어둠이 가득했다.




'행복 > 나의 생각' 카테고리의 다른 글

하루를 반문하다.  (0) 2011.10.24
변화의 시절의 내가 살아가는 것.  (0) 2011.07.30
사진없는 독일 출장기 (1)  (0) 2011.01.16
벌써 1년이 지났다. 앞으로는...  (2) 2010.10.31
어떤 리더십을 원하는가?  (0) 2009.09.30
:
Posted by 행복상자