System Compleat.

'node.js'에 해당되는 글 2건

  1. 세월 빠르네 2
  2. Beagle Board

세월 빠르네

Techs


(younjin.jeong@gmail.com, 정윤진) 


회사를 옮긴지 벌써 10개월 정도 되어간다. 그동안 여러가지 일들이 많았지만, 역시 엔터프라이즈를 주로 상대하다 보니 이전보다는 업무의 밀도는 조금 낮아진 것 같은 느낌이 드는 것이 사실이다. 글쎄, 하고 있는 일과 해야 하는일, 그리고 그것들이 하고 싶은 일과 잘 맞물림에도 불구하고 뭔가 스스로 삐걱대는 느낌을 지울 수 없다. 그것은 현재 변하고 있는 기술의 패러다임 때문일까, 아니면 보다 편한것을 포기해야 직성이 풀리는 성격 때문일까, 아니면 새로운 도전의 즐거움 뒤에는 격한 스트레스가 있다는 것을 너무 잘 알기 때문일까. 





취미인 무선 조종은 점점 취미가 아닌것 처럼 되어간다. 60불 짜리 윙스팬 2.4미터 짜리 비행기에는 이제 라스베리 파이라던가, 아두이노라던가, 센서들 그리고 날아야 하는 숙명으로 비행기에 필요한 기본적인 것들까지 주렁주렁 붙어서 이제 무선 조종이라고 말하기도 뭐할 지경이 됬다. 거기에 2 axis 짐벌까지 하단으로 달아두고 생각해 보니 이게 과연 이렇게 계속 만들어도 좋을지 어쩔지 무선 통신기사 자격증이라도 확보해야 할 것 같은 느낌. 이거 더 만들다가 NASA Flight Research Center 에 취직하면 어쩌나 걱정할 지경. (은 농담) 





음... 일로서 최근에 많이 보고 있는 것이라면 아무래도 역시 기술이 소프트웨어로 많이 옮겨가고 있다는 사실인것 같다. 이전에는 그저 사서쓰면 되는 것들이 많았는데, 이제는 뭐 사업이 곧 소프트웨어 또는 소프트웨어 기반 서비스다 보니 개발자들 구인에 대한 이야기도 많고, 또 이런 개발자 분들이 일하는 문화, 도구에 대한 것들이 많다. 신사업은 곧 개발자 없이 하기는 불가능하니까, 이제는 SI 수준이 아닌 서비스, 즉 프로젝트 레벨에서 프로덕트 레벨로의 전환이 많이 이야기가 되고, 그 방법에 대해 물어오는 곳이 많기도 하다. 


아울러 이제는 누구나 이야기 하고 있는 마이크로 서비스 같은것들. 근데 이게 다들 이야기 하고 있는데 정작 중요한 것들을 이야기 하고 있지 않는것 같다. 마이크로 서비스가 좋기는 하지만, 일단 어떻게 만들어야 하는지 아는 사람이 거의 없고, 솔직히 국내에서 그것을 경험했을 만한 회사가 많지 않은데 너도나도 전문가 코스프레 하는것 같다는 느낌. 공부가 나쁜건 아니지만 그래도 그건 이렇게 해야 해요 하고 말할때는 경험이 있어야 하지 않나 싶고, 특히 마이크로 서비스의 구성 같은것은 그 키워드가 "재사용성" 에 기반해야 할 정도임에도 불구하고 그 경험을 말하는 이는 별로 없는 느낌. 죄 어디서 외국 블로그 주워다가 같다 붙이기나 하고. 하지만 뭐 그럴 수 밖에 없는것이 어디 국내에서 그렇게 만들려고 하는데가 있어야 경험도 할 것 아니겠냐 말이지. 


음, 주목할 만한 것으로는 뭐랄까 예전부터 팀을 구성할때는 서로 다른 역할이 모여야 한다고 생각한 적이 많았는데, 요새 들어서는 그 팀의 모양이 더 구체화 되는 느낌이다. UX 는 UX 끼리 DBA 는 DBA 끼리 서로서로 팀짜고 앉아서 일하면 더 잘된다고 생각하시는 분들이 많은것 같은데, 예전에 아마존의 Zocalo, 아 지금은 이름이 바뀌었지. Workdocs 같은거를 오픈스택 Swift 기반으로 만든적이 있는데, 기본은 Node.js, 사용자나 오브젝트 디비 같은건 몽고, 스토리지는 키스톤에 스위프트 정도로 엔터프라이즈용 파일 공유 솔루션 같은걸 만드는데 3달 정도 걸렸던것 같다. 그때 구성이 백엔드도 하는 프론트엔드, 프론트도 좀 하는 백엔드, 그리고 필요한 스택과 라이브러리 그리고 인프라를 준비하는 나님셀프. 똑똑한 사람들과 일하는 것은 아주 즐거운 일이다. 내가 삽질하지 않아야 다른 사람도 퍼포먼스가 나고, 개선이 필요한 부분에 어디를 손보면 좋을지 서로 퍼리가 팍팍 돌아가는 소리가 들리는 것은 좋은 경험이라는 것이지. 이제는 그런 팀의 모양이 마이크로 서비스와 맞물려서 Conway's law 같은 것으로 이야기가 되기도 하지만, 어쨌든 작은팀이 효율적이고 돌아가게 만드는 것이 요새 많은 조직에서 물어오는 내용이기도 하다. 이자리를 빌어서 파이어준과 성열형에게 좋은 경험 함께해줘서 감사. 


이제는 다들 회사를 옮기고 당시 프로젝트는 오픈소스화 되었는데 이젠 시간도 오래 지나서 보는 분들이 있을까 모르겠지만. 레포 주소는 여기. 

https://github.com/younjinjeong/thevelox 


그리고 이건 당시 오픈할때 준호형의 블로그 뽀스팅 

http://firejune.com/1771/The+Velox+%ED%94%84%EB%A1%9C%EC%A0%9D%ED%8A%B8+%EA%B3%B5%EA%B0%9C+%EA%B7%B8%EB%A6%AC%EA%B3%A0+%ED%81%B4%EB%A1%9C%EC%A6%88+%EB%B2%A0%ED%83%80?stag=thevelox.com 


요새 보니까 누가 Node.js 의 콜백지옥이 어쩌니 async 가 어쩌니 하시던데 뭔가 알파고 나오니 빅데이터 전문가 한분 탄생하신 그런 느낌? ㅋ 


그리고, 요새 제일 많이 이야기 하고 있는 클라우드 파운더리. 

이게 참 뭐가 뭔지 모르겠다 어쩌고 하고 말이 많은데, 이게 무슨 문제를 해결하는 도구인고 하면, 바로 


"지금 80/443 포트에서 동작하는 웹 앱을 돌리기 위해 얼마나 많은 일을 하고 계심까?" 


에 더하여 


"그런 일을 계속 반복해야 할텐데, 그거 사고도 많이 나고 힘들지 않슴까?" 


의 문제를 해결하는 도구라는 점. 

기술 좋아 하시는 분들은 다커랑 큐버네티스 그런거 좋아하실테니 그 조합의 장점은 다 알고 계실 테지만 그거 어디 프로덕션에 돌리겠어요? 게다가 CVE 터지면 어쩔 것인지도 뭐 확실하지 않고, 내가 보니까 glibc 나 커널 업데이트 못해서 지금 난리가 날 것 같은 상태의 보안 취약점으로 돌아가는 서비스들이 한두개가 아닌데 말이지. 그러지 말고 클라우드 파운더리 써 봅시다. 뭐 설치하지 말고 뭐하지 말고 그냥 http://run.pivotal.io 가면 60일 계정 줌. 그리고 오픈소스 버전도 있는데 그것은 YAML 지옥이라 아직까지는 꽤 공부해야 사용이 가능할 것이란 말. 


거기에 자동화 된 테스트, 모바일 자동 테스트 그런것들도 주제가 많은데 언제고 시간이 되면 각각 디테일하게 써 보는 것으로. 


오랜만에 블로그 와서 여기저기 고장난것도 좀 고치고 방명록에 알 수 없는 러시아 말도 좀 지우고 포스팅도 한건 해줘야 할 것 같아서... 

누구든 조만간 소주 한잔 합시다용 


회사 블로그도 업데이트 해야 하는데... 

http://blog.pivotal.io/kr 


(younjin.jeong@gmail.com, 정윤진) 









Beagle Board

Techs
( younjin.jeong@gmail.com, 정윤진 ) 

최근 클라우드 스토리지 관련해서 어떤 시스템을 구축이 가능 할 것인가에 대해서 살펴보던 도중, 급작스럽게 임베디드 분야를 검색해 보기 시작했다. 이 와중에 아주 흥미로운 제품을 발견했는데, 제품의 이름은 귀엽게도 무려 "Beagle Board".

 
홈페이지는 위의 그림과 같다.

이들이 발매한 Beagle Bone v1 보드 제품은 $89 에 판매되고 있는데,  기본으로 Angstrom Linux 가 탑재되어 USB를 연결하기만 하면 동작한다. 게다가 더 놀라운 사실은, 이 제품에는 Cloud9 IDE가 임베드 되어있어 바로 보드상에서 개발이 가능하다는 점.  이러한 장치에서 Cloud9 IDE 가 돌아간다는 사실은 정말 많은 의미를 내포한다. 

이 보드는 아래와 같은 스펙을 가진다. 

  • Board size: 3.4″ x 2.1″
  • Shipped with 2GB microSD card with the Angstrom Distribution with node.js and Cloud9 IDE
  • Single cable development environment with built-in FTDI-based serial/JTAG and on-board hub to give the same cable simultaneous access to a USB device port on the target processor
  • Industry standard 3.3V I/Os on the expansion headers with easy-to-use 0.1″ spacing
  • On-chip Ethernet, not off of USB
  • 256MB of DDR2
  • 700-MHz super-scalar ARM Cortex™-A8
  • Easier to clone thanks to larger pitch on BGA devices (0.8mm vs. 0.4mm), no package-on-package memories, standard DDR2 vs. LPDDR, integrated USB PHYs and more.

또한, 이 보드가 지원하는 기능 및 이에 대한 장점은 아래와 같다. 

 Features Benefits 
 More than 1,400 Dhrystone MIPS using TI's superscalar AM335x ARM Cortex-A8 microprocessors up to 720 MHz Runs full Linux operating system with full-featured web servers, native compilers and scripting languages, video analytics libraries and much more 
 Two 48-pin, two-row, 0.1-inch spaced female expansion headers  Enables developers easily add off-the-shelf expansion hardware or directly breadboard connections to countless readily available peripherals
 Multipurpose USB device connection with on-board hub, USB-to-serial/JTAG conversion device with software reset and reprogrammable high-speed USB device interface Developers can plug in just one cable to power, debug and interface to their applications and not needing a JTAG emulator saves additional cost 
 Open GL  ES 2.0 capable 3D graphics accelerator Achieves photo-realistic, real-time pixel-shaded graphics for gaming and 3D user interface acceleration
 USB 2.0 host port that supports low, full and high speeds Can be used for USB peripherals like keyboard, mouse, WiFi, Bluetooth, Web cameras or USB hubs for additional expansion via con-chip USB PHY 
 microSD connector Adds multiple gigabytes of storage for your boot image and data 
 On-chip 10/100Mbit Gigabit Ethernet Network your network and the internet with minimal software stacks 
 Four on-board LEDs Provide user status without the need to add additional hardware 

결과를 추려서 한 문장으로 정리 해 보자면, 

- Node.js 를 돌릴 수 있는 저렴한 임베디드 베이스 보드. 

이는, 원하는 거의 모든 오픈소스 패키지의 설치 및 실행이 가능하다고 할 수 있으며, 필요한 경우 스테핑 모터의 연결, 또 이 스테핑 모터를 자바스크립트 코드를 통해 노드로 제어하는 것이 가능하다는 말이 되겠다. 

이러한 임베디드 장치의 출현은 이전에 소개한 Raspberry 프로젝트와 유사하기는 하지만, Beagle Board 의 강점은 사용하기 편리한, 그리고 모든 OS의 기능이 동작하는 ARM 기반의 멋진 임베디드 보드라는 것이다.

이 보드를 가지고 무엇을 할 수 있는지 가만히 생각해 보자. 
여러분은 여기에 카메라 모듈을 붙일 수도, 일반적인 키보드 마우스 모니터를 붙일 수도, 바코드 리더를 붙일 수도, 기타 등등의 상상할 수 있는 모든 임베디드 장치의 형태를 구현 해 낼 수 있게 된다. 

네트워크와 바로 물려있는 카드 결재모듈을 탑재한 POS 장비의 메인 보드로서, 스키장 또는 놀이 동산의 입장권 및 서비스 사용을 위한 바코드 인식, 일반 사용자가 거주하기 힘든 지역의 데이터 수집등등 헤아릴 수 없이 많은 것들이 가능해 진다. 단순히 C 를 사용하는 로우레벨의 개발자가 아니더라도 이런 것들이 가능해 질 것이며, 이는 node.js 모듈만 있다면 자바 스크립트 개발자도 충분히 좋은, 아니 더 멋진 애플리케이션의 작성이 가능해 질 지도 모르겠다. 

http://beagleboard.org/buy


이 간단한 장치에는 단순히 리눅스만 동작 가능한 것이 아니다. 이 장치로 진행중인 다른 프로젝트를 간단히 살펴 보자. 

Android Rowboat Project
Arrow Windows Embedded Bundle
Ubuntu on the BeagleBoard
Ångström Distribution of Linux
XBMC Media Center
RISC OS
Symbian
Gentoo
QNX Neutrino
DesignSomething.org


외국인 아자씨가 소개하는 영상도 한번 보자.
 



이런 장치를 볼 때마다, 정말 세상이 빠르게 변하고 있음을 느낀다. 이전에 ARM 베이스 프로그래밍을 배우고 싶다면 대학에만 할인되는 LED, LCD 모니터가 달린 ARM 보드를 엄청난 고가에 구매해야 했지만, 이제는 더 쉬운 인터페이스와 보다 고 수준의 언어, 그리고 일반적인 OS 가 동작하는 임베디드 보드의 사용이 가능하며, 저렴한 가격에 누구나 구입하여 테스트 해 볼 수 있을 것이다. 


빨리 하나 구매해서 이것저것 해 보고 싶다. 
'프로젝트만 끝나면.'  ㅠㅠ 

참조 
http://beagleboard.org/
http://elinux.org/BeagleBoardUbuntu



( younjin.jeong@gmail.com, 정윤진 ) 

#include <test.h>int x = foo();  /* This is a comment  Continuation of comment */
int y = bar();