자바 개발자 컨퍼런스에 참가한 신입 매니저들의 후기! 들어보세요~

13회 자바 개발자 컨퍼런스가 2/23일 토요일에 코엑스에서 열렸습니다. SK플래닛에서도 ‘Push 메시징 서비스 개발개발자센터의 활용‘ 이라는 주제로 두 분이 발표해주셨습니다.

SK플래닛의 신입 매니저들이 컨퍼런스에 참여하여 세션 강의도 듣고, 다른 회사에서 오신 개발자 분들과도 만날   수 있는 자리였는데요, 몇 분  신입 매니저의 세션 후기 및 그날의  느낀 점을 간략하게 공유합니다.

간단 명료 웹 어플리케이션 개발! 구글의 AngularJS 시작하세요‘ – 대우정보시스템 고재도님

위 강의를 듣고  우준희 신입 매니저가 작성한 후기 입니다.

Backbone.js, Meteor.js, Knockout.js 등 빠르고 편리하게 웹앱을 개발할 수 있는 프레임워크들이 정말 많이 나왔습니다. 하지만 어렵고 전혀 새로운 문법, 타 프레임워크와의 배타성, 데이터 컨트롤 및 설계 방법 차이 등 종류가 많은 만큼 도입 시 고려해야 할 것도 많은 것이 현실입니다.

구글이 개발한 Angular.js는 웹어플리케이션을 위한 Structure Framework 인데요, Structure Framework은 무엇일까요? 구조를 제공해주는 프레임웍, 곧 CRUD 어플리케이션을 개발할 때 정말 필요한 기능만을 개발할 수 있게 미리 기반들을 제공하는 것입니다. 이것이 Angular.js의 역할입니다. 구글은 Angular.js를 MVW라 설명합니다. Model, View, Whatever! 모델과 뷰, 그리고 또 존재하는 나머지(보통은 Controller)를 무엇이라 불러도 좋다는 의미의, Angular.js의 특징을 나타내는 구글스러운 설명입니다.
주요 제공 기능은 양방향 데이터 바인딩, Directive를 통한 웹 컴포넌트 확장, Inversion of Control 등이 있습니다. 그렇다면 양방향 데이터바인딩은 무엇인지 볼까요? 모델과 뷰는 서로 긴밀한 관계를 가지고 있습니다.

자바스크립트 객체(모델) 가 바뀌면 -> 뷰가 바뀌는 것이 일반적인 단방향 데이터바인딩입니다. 보통 이것은 모델과 자바스크립트,그리고 템플릿 엔진이 합쳐져 구현되고, 이를 지원하는 라이브러리에는 jQuery, Mustache, Underscore 등이 있습니다.
Angular.js는 뷰가 바뀌어도, 모델이 바뀝니다. 다른 프레임웍으로도 이를 구현할 수 있지만, 특별한 처리 없이도 가능한 것이 ‘양방향 데이터 바인딩’ Angular.js의 강점이며, 코드량이 많이 줄어듭니다.

또 하나의 특징은 Directive입니다. Angular.js 는 템플릿 언어를 따로 배울 필요가 없습니다. Angular.js는 HTML 자체를 템플릿화 시켜버립니다. Angular.js는 브라우저에게 새로운 문법을 가르침으로써 개발자가 정의한 태그를 표현할 수 있게 합니다.
예를 들어, <unicorn> 태그를 유니콘 그림으로 정의해주면, 그 태그는 유니콘을 언제, 어디서든 쓸 수 있습니다. 그것도 적은 스크립트 양으로 정의가 가능합니다.
Angular.js는 테스팅 시나리오를 기술할 수 있는 Domain-specific language를 기본으로 지원합니다. 이는 완성품에 대한 시나리오를 기술하여 유닛 테스트를 수행하는 기반을 제공하는, 아주 편리한 기능입니다.

Inversion of Control에 대해 설명드리자면, 뷰나 컨트롤러가 서로를 알아야 하는, 강하게 결합할 수 밖에 없는 Javascript-DOM구조에 대해 느슨한 결합에 도움이 되는 의존관계 주입 모델을 지원합니다.

이 세션을 듣고 느낀 점을 간단하게 작성해보자면, 요즘은 간편하게 Single Page Webapp을 개발할 수 있는 수많은 프레임워크들의 전성시대입니다. 이들은 웹 및 모바일 웹 환경의 많은 종류의 서비스들을 빠르게 구현할 수 있는 장점들을 갖고 있습니다. 그래서 프로토타이핑에도 매우 유용하구요. 목업 프로그램이 아닌 Model, Controller, View의 모든 레이어가 완벽히 동작하는 진짜 프로그램이지요.

발표자 분께서도 실제 프로젝트에 적용하셨다고 세션 뒤에 개인적으로 말씀해 주셨습니다. “Angular.js는 그들과 배치되지 않고 잘 어울린다” 고.. 구글이 이 프레임웍을 얼마나 오래, 중요하게 가져갈진 모르겠지만, 네임 밸류가 어느정도 반영된 커뮤니티의 활발함과 꾸준한 업데이트도 기대해볼 만한 점인 것 같습니다.

우리들이 말하는 분산환경(itemBay Mobile Service) : itemBay 이용혁

박선 신입 매니저가 작성한 후기 공유합니다.

Mobile 중심으로 환경이 변화함에 따라 사용자의 증가, 트래픽의 증가가 예상되었고 이를 수용할 수 있도록 기존에 구축된 시스템을 어떻게 변화, 적용 시켰는지에 관하여 설명하는 세션 이었습니다.
큰 구조는 사용자의 요청에 대응하는 Web Server, 애플리케이션을 지원하는 WAS, 서비스를 위한 데이터가 저장되어 있는 DB로 구성되어 있습니다. 기본적으로 Open Source기반의 시스템을 구축하고자 노력하셨는데요, Web Server는 최근 사용자가 증가하고 있는 NGINX를 이용하였다고 합니다.
빠른 응답속도를 보장하기 위하여 캐쉬서버를 도입하였는데, 캐쉬서버는 별도의 물리적 서버를 추가하는 것이 아니라 WAS 의 남는 리소스를 활용하였습니다. 여러 대의 WAS에 분산되어있는 리소스를 캐쉬로 활용하기 위하여 Infinispan을 이용하였습니다.. Infinispan은 자바로 구현된 100% 오픈소스로서 메모리에 올라가는 분산 데이터 서버와 같은 의미입니다.
이 후에는 Infinispan을 적용하는 데모를 시연해 주셨는데, 모든 분산 서버 리스트를 수동으로 추가 해 줄 필요가 없이 Infinispan server만 추가 할 경우 자동으로 서로를 인식하는 특징을 가지고 있었습니다.
요청된 데이터가 캐시서버에 존재하지 않을 경우, 여전히 존재하는 DB 폭주 문제를 해결하기 위하여 NoSQL 방식인 mongoDB를 적용하였습니다.
현재 서비스는 분당 요청 3000 – 5000, 리소스 사용률은 mongoDB의 경우 0.4 – 0.5%, 캐시 서버의 경우 4 – 5% 를 보이고 있습니다.

관련하여 첨언하자면, Infinispan은 높은 확장성을 가진 데이터 분산 플랫폼으로써 Hadoop, MapReduce 방식의 프로그램과 연계하여 좋은 성과를 낼 수 있을 것이라 기대됩니다.
자사 서비스인 T store, 스마트 월렛, 11번가 등에서도 고객 log를 수집하고 서비스를 제공하는 방식에서 활용 가능 할 것이라 생각하게 되었습니다. 🙂

Hadoop 애플리케이션 테스트하기 – (주)클라우다인 김병곤 대표

김홍진 신입 매니저의 후기입니다.

Hadoop은 컴퓨터 클러스터에 저장된 대용량 데이터를 분산 처리할 수 있도록 도와주는 오픈 소스 프레임워크로 빅데이터를 처리하기 위해 필수라 여겨지고 있습니다. 이를 이용해 데이터를 처리하는 기업들도 이미 상당수 존재합니다. Hadoop 개발 기간은 의외로 짧습니다. Hadoop으로 개발한 프로그램의 코드를 보면 의외로 몇 줄 되지 않음을 알 수 있습니다. 그러나 Hadoop 프로그램은 테스트에서 난관에 봉착합니다. 대용량 데이터를 다루기 때문에 많은 양의 리소스를 독차지해 전체 일정을 딜레이 시키기도 하고, 분산환경에서 데이터가 빈번히 왕래하는 과정을 제대로 파악하지 못해 불완전한 테스트 셋을 만들기도 합니다. 만약 테스트가 제대로 이루어지지 않았다가 나중에 문제가 발견될 경우 데이터를 전부 전수검사를 하는 불상사가 생길 수 있습니다. 그만큼 테스트가 제대로 이루어지지 않을 경우 리스크가 큽니다.

이번 세션에서는 Hadoop을 단계별로 테스트: 단위 테스트, 통합 테스트, 성능 테스트 하는 방법에 대해 김병곤 대표님께서 노하우를 바탕으로 발표해 주셨습니다.
사실 Hadoop은 테스트를 위한 툴들을 제공합니다. 이러한 툴들을 활용하면 테스트 과정에서 실수를 줄일 수 있습니다. 먼저 단위 테스트에서는 MRUnit을 활용할 수 있습니다. MRUnit은 MapReduce를 테스트하기 위한 JUnit의 extension으로 Mapper와 Reducer로 나누어 쉽게 테스트할 수 있습니다. 통합 테스트 과정에서는 Mapper와 Reducer를 합쳐서 테스트해야 합니다. 이 과정에서는 MRUnit을 사용하기 보다 miniMRCluster를 활용하는 편이 좋습니다. 그러나 miniCluster는 아쉽게도 Hadoop 0.20 버전의 API 를 활용하고 있어 많은 제약이 있기는 합니다. 마지막으로 성능 테스트 과정에서는 Ganglia라는 가시적 테스트 툴을 활용할 수 있습니다. 또한 데이터가 아직 쌓이지 않은 신규 서비스의 경우 DFSIO를 이용하여 테스트 데이터를 생성해 사용할 수 있습니다.

이러한 툴들을 사용하더라도 Hadoop은 다루는 데이터의 크기가 커지면서 예측할 수 없는 문제들이 생기기도 합니다. 이를 방지하기 위해서는 개발자의 시스템 및 데이터에 대한 이해 또한 필수적입니다. 앞서 말씀 드린 테스트 툴 및 시스템, 데이터에 대한 이해도를 높여 모두가 Hadoop에 의해 발생할 수 있는 문제점을 막고 성공적으로 프로젝트를 완수할 수 있으면 좋겠습니다.

후기를 마무리하며..

신입 매니저들의 멋진 모습도 같이 공유합니다. SK플래닛을 이끌어 갈 멋진 신입 매니저 화이팅입니다.

SK플래닛

Facebook 

공유하기