반응형

지난 2월 28일에 자바 컨퍼런스를 다녀 왔다.


강의 스케줄은 다음과 같다.
이중에서 나는 1. Head First Hadoop, 2. Enterprise Modeling을 통한 Business Agility 실현, 3. 차세대 배치 시스템 구축 성공 전략, 4. Android Run-Time 분석 부분을 들었다.

1. Head First Hadoop
현재의 구글을 있게한 대용량 병렬처리 기술은 MapReduce라는 방법을 통해서 만들어졌다고 한다. 구글의 MapReduce는 실제 사용은 불가능하지만 구글의 MapReduce에 대한 논문을 통해서 Hadoop이라는 오픈 소스가 만들어져 있고 Yahoo의 지원을 통하여 Apache Project로 진행되고 있다.
Hadoop은 DataNode에 대한 Replication을 지원하여 Fault-Tolerant하지만 Name-Node는 Single-Point-Of_Failure로 Secondary Namenode로 전환하는 동안에 데이터 유실이 가능하며 Name-Node는 메모리에 DataNode에 대한 정보들을 저장하게 되어 메모리에 Scalability가 의존된다.
MapReduce는 key/value pair로 표시할수 있는 데이터를 병렬 처리하는 것으로 데이터를 적당한 기준의 Key를 나누어서 처리한 다음 이 처리한 결과를 Reduce 작업을 통해서 모으는 방법이다. 아래 그림 참고.

Hive는 이런 MapReduce 어플리케이션의 개발의 복잡함을 SQL Query와 유사한 방식으로 수행이 가능하도록 만들어진 Data Warehousing Platform이다.
Case Study로 MapReduce를 이용한 구글의 PageRank의 구현 방식에 대하여 설명하였다. PageRank는 Outlink를 가지고 웹 페이지의 중요도를 측정하는 것이다.(http://www.hardoopsource.com에 Full source가 존재..)
또하나의 Case Study로는 NHN의 Hadoop Pool에 대해서 설명하였다. 기존 Hadoop은 모든 리소스에 대하여 선점형으로 동작하는데 비해서 NHN의 Hadoop Pool은 멀티 사용자가 쉽게 사용이 가능하도록 비선점형으로 구성되도록 하였다. Hadoop은 Multi-user 지원이 약한데, 이를 보완하여 R&D 목적으로 만들었다고 한다. Job간의 Resource 독립을 위하여 Xen 기술을 이용하였다고 한다.
 
2. Enterprise Modeling을 통한 Business Agility 실현
Business Agility는 "변화된 비지니스 환경에 대응하여 빠르고 비용 효율적으로 대응하는 능력"이라고 정이가 된다. 강사는 Business Agility에 대한 솔루션으로 Enterprise Architecture에 대해서 이야기 하였다. EA는 "기업 비전/전략 달성을 위해(전락과 일치) 비지니스/데이터/어플리케이션/기술인프라와(EA구성요소) 이 요소들이 연계되는 모습을(통합성) 현재의 상태와 목표에 대하여(Baseline & Target) 명확히 정의한 것(Blueprint,Framework,Model)"이라고 한다.
EA를 위한 방법으로 Enterprise Modeling을 이야기 하였다.
그리고 이를 위한 툴인 PowerDesigner(Sybase)에 대해서 설명하였다. PowerDesigner는 요구사항 모델, 비지니스 프로세스 모델, 논리적 데이터 모델, 물리 데이터 모델, XML 모델, UML 모델 등을 디자인 가능하며 각 모델들은 실제 툴들과 연계되어 소스, 스키마 등을 제너레이션 가능한 툴이다.

3. 차세대 배치 시스템 구축 성공 전략
배치 프로세스 하면 아주 Legacy한 프로그래밍 모듈로 C나 Cobol로 이루어져 있고 직접 개발한 개발자만 이해가 가능한 프로그램들로 생각하기가 쉽다. 하지만 온라인/정보계/대외계등의 기술은 지속적으로 발전하고 있고 비지니스 변화에 빨리 대응하고 저비용-고품질을 이루기 위해서는 차세대 시스템을 완성하는 마지막 한 조각인 고도화된 배치 어플리케이션 프레임 워크가 필요하다.
강사는 보험사에서 Spring Batch를 확장하여 전사 표준으로 적용한 사례에 대해서 설명한다.
SpringBatch는 ItemReader를 통해서 대상을 읽고, Step이라는 단계적 프로세스를 통해 가곡하고 ItemWrite를 통해서 결과를 기록하는 프레임 워크이다. 강사는 이 SpringBatch의 개념을 확대하여 Step에 Site에 맞는 정형화된 Step들을 만들고, 이 Step 들이 이용하는 Connector로 Dao/Service/Rule Connector등을 패턴화 하였다. 그리고 관리 시스템과 연계한 코드 생성을 이야기 하였다. (다음 그림 참고)
 이 부분은 매우 인상적으로 생각이 되었다. 관리 시스템을 통한 설계와 코드 생성기 그리고 구조화 템플릿 코드를 통한 배치 구동은 어둡고 칙칙하게만 느껴지는 배치 프로그램을 산뜻하게 만들어 주는것 같았다.^^

4. Android Run-Time 분석 
안드로이드는 구글의 모바일 운영체제로 알려져 있다. 실제 안드로이드는 Linux Kernel 위에 돌아가는 RunTime과 그에 따른 라이브러리라고 보아야 한다. 물론 모바일 플랫폼에 맞게 리눅스 커널이 패치되기는 하지만 운영체제의 기본적은 core는 Linux라고 봐야 할 것이다.
위 그림중 초록색 부분이 C/C++ 구성 부분이고 파란색 부분이 Java로 구성된 부분이다. Android Runtime은 Dalvik 이라는 VM과 Core libraries로 구성되어 있다. Linux Kernel은 ashmem(android shared memory)이라고 불리는 Shared Memeroy 부분하고 Binder Driver 부분이 모바일 플랫폼에 맞게 만들어져 있다. Binder는 프로세스간 통신하는 Overhead를 줄이기 위해서 만들어져 있고 Power Management는 기존의 리눅스에서 사용되는 모듈을 사용하지 않고 모바일 환경에 맞도록 개발된 모듈을 가지고 있다.
Android 라이브러리는 GNU 기반의 소스를 사용하지 않는다. 이는 상용화에 제약이 없도록 GPL 로 부터 해방되기 위함이다. 이에 libC도 glibc를 사용하지 않고 있다.
Android의 개발은 Eclipse의 ADT Plug-in을 통해서 Java로 컴파일 되고 class와 resource가 Dx 컨버터를 통해서 Android App(.apk)로 만들어지며 이 apk가 Dalvik VM위에서 동작하게 된다.
안드로이드 개발 환경은 eclipse와 제공되는 emulator를 가지고 가능하며 emulator는 실제 Chip위에 올라가는 것 같이 만들어져 있다. 안드로이드는 어플리케이션을 빠르게 구동하기 위해서 zygote라는 미리 구동되어 있는 프로세스를 가지고 있으며 이 프로세스는 특정 어플리케이션과 Binding되어 동작하기 전의 상태로 즉 중립적인 상태를 유지한다.
Dalvik Virtual Machine은 Register기반의 가상 머신으로 모바일 환경에 맞게 구성된 VM이고 더 효율적인 인터피리터이다.
워낙 내용이 많아서 추상적으로 요약을 했다. 자세한 부분은 http://www.kandroid.org 를 보아도 될듯.

5. 전시 부스
전시 부스에는 Sun, 마이크로소프트 Cubrid, Redhat, Postgress, SoftwareFX, 한빛 미디어, 원더풀소프트, DevMento 등이 있었다. 이중 기억에 남는 것은 MS의 Surface computing에 대한 전시이다. 서페이스 컴퓨터는 거실 탁자 같이 생겼는데, 상위에 멀티 터치 스크린을 가지고 있다.
일반적으로 손을 사용하는 터치의 경우 감압식을 사용하는데 특이하게 화면 아래의 5개의 카메라를 통해서 터치를 감지한다. 마이너러티 리포트에 나오듯이 손으로 휙휙 사진과 동영상등을 돌리는 장면은 매우 인상적이였다. 여기에 사용된 UI는 MS의 차세대 .NET 프레임워크의 UX 기술인 WPF를 기반으로 되어 있다고 한다. 간만에 잼난 물건을 만들어 낸듯..

이번 세미나는 그래도 차분하게 진행된것 같다. 간만에 관심있어하던 주제들에 대해서 조금이나마 알게 되고 또 더 관심을 갖게 되어서 더 값진 세미나 였던것 같다.

반응형
Posted by alias
,