기사 주소: http://www.dt.co.kr/contents.html?article_no=2012092702011831742001
[알아봅시다] ITU 전권회의

4년마다 세계 전문가 3000명 한자리
전파 규칙 제정ㆍ기술표준 채택 담당
2014년 부산 개최… 국제 위상 강화


지난 10일 하마둔 뚜레 ITU사무총장이 방한해 방송통신위원회와 제 19차 ITU 전권회의의 성공적인 개최 준비를 위한 양해각서(MOU)를 체결했습니다. 제 19차 ITU 전권회의는 2014년 10월 부산에서 개최될 예정입니다. 아시아에서는 일본에 이어 두 번째로 우리나라에서 열리는 ITU 전권회의는 IT 분야의 올림픽이라 불릴 정도의 대규모 행사로, 전 세계 IT 분야에서 우리나라의 위상을 높일 수 있는 좋은 기회로 여겨지고 있습니다.

◇ITU 구성=ITU(International Telecommunications Uion)는 우리나라 말로 국제전기통신연합이라고 부릅니다. ITU는 UN 산하의 ICT 전문 국제 기구로서 국제 주파수 및 위성 궤도의 관리, 전기통신 기술표준 개발 등을 통해 정보통신 기술과 네트워크의 발전, 전 세계 ICT 확산을 주도하고 있습니다.

ITU는 1865년 유럽 유선 전신의 국제 협력을 위해 만국전선연합으로 출발했으며 1947년 UN의 정보통신 전문 기구가 된 세계에서 가장 오래된 국제 기구입니다. 현재 193개 회원국과 770여개 산업ㆍ연구ㆍ학계 민간 회원이 활동하고 있으며 스위스 제네바 본부와 11개 지역 사무소를 운영하고 있습니다.

ITU는 전기통신 서비스 품질 향상과 전기통신 기술표준화 등의 업무를 담당하고 있습니다. 주파수 할당과 관리, 국제 전파규칙 관리, 개발도상국의 ICT 발전과 정보 격차 해소를 위한 기술 및 망 구축 지원 등이 주요 역할입니다. ITU에서는 그동안 4G 주파수 분배 및 기술 표준 채택, 지상파DMB 및 디지털음성방송 표준 채택 등의 표준화 활동을 진행해 왔습니다.

ITU의 조직은 사무총국(General Secretariat)과 전기통신표준화국(ITU-T), 전파통신국(ITU-R), 전기통신개발국(ITU-D) 등 3개 부문(Bereau)으로 구성됩니다. ITU-T는 전기통신 표준화 작업을 위해 기술, 운영 및 요금 문제 등을 연구하고 이에 대한 권고를 채택합니다. 또한 전기통신설비와 서비스의 개선, 합리적인 이용, 범 세계적인 전기통신 표준화를 촉진합니다. ITU-R은 전파통신 분야 전반에 대한 국제 전파 규칙의 제정과 관리를 맡고 있습니다. 전파통신 기술 발전 등을 위한 연구/권고, 표준 채택 및 주파수, 위성궤도 등록 및 관리 기능도 담당합니다. ITU-D는 개도국 인력자원 개발, 개발 계획 기획 및 관리, 자원 동원 및 연구 개발 강화를 맡고 있습니다. 개도국의 전기통신망과 서비스의 발전, 확장 및 운영 촉진을 위한 국제협력 추진도 ITU-D에서 하는 일입니다.

전권회의(Plenipotentiary Conference)는 ITU 최고 의결 회의로서 4년마다 개최되며 사무총장ㆍ차장, 부문국장의 선출과 헌장ㆍ협약의 개정 등을 의결하게 됩니다.

이사회(Council)는 전권회의에서 선출된 48개 이사국이 참가해 매년 개최하는 행사로 ITU의 연간 사업 계획과 예산 및 결산 등을 승인하게 됩니다. ITU 이사국은 미주, 서유럽, 동유럽, 아프리카, 아시아태평양 등 5개 권역별로 전권회의에서 선출합니다.

이밖에 ITU는 각 부문별 업무 추진을 위해 부문별 총회, 지역회의, 자문반, 연구반ㆍ작업반 회의 등을 개최하고 있습니다.

ITU 사무총장은 말리의 하마둔 뚜레, 사무차장은 중국의 훌린 짜오가 맡고 있습니다. ITU-T 국장은 영국의 말콤 존슨, ITU-R 국장은 프랑스의 프랑스와 랑시, ITU-D 국장은 브루키나파소의 브라히마 사노우가 각각 맡고 있습니다.

우리나라는 1952년 1월 31일 ITU에 가입했습니다. 주관청은 방송통신위원회이며 13개 민간 기업과 단체가 각 부문별 회원으로 활동하고 있습니다. 우리나라는 1989년 이사국으로 피선된 이후 현재 6선 이사국입니다. 북한은 1975년 9월 24일 ITU에 가입했습니다.

◇전권회의에 전 세계 3000여명 참석=ITU 최고 의사 결정 회의인 전권 회의는 4년마다 열립니다. 19차 회의는 2014년 10월 20일부터 11월 7일까지 3주간 부산 벡스코 일원에서 개최될 예정입니다. ITU와 방송통신위원회가 주최, 주관하며 회원국 정부 대표단과 글로벌 ICT 기업인 등 3000여명이 참석할 것으로 예상됩니다. 2014년 부산 ITU 전권회의는 지난 2010년 멕시코 전권회의에서 결정됐습니다. 방통위는 이번 전권회의에 월드 ICT 정상회의 및 ICT 전시회, 스마트 한류 체험행사 등 다채로운 이벤트를 마련한다는 계획입니다. 이를 위해 방통위는 사전 준비단을 구성하고 관련 부처와 협의를 통해 공식준비 조직을 마련하고 있습니다.

2014년 ITU 전권회의에서는 전 세계적으로 주파수 부족 문제가 심화됨에 따라 주파수 자원 확보를 위한 주파수 경쟁이 화두로 등장할 전망입니다. 세계 각국은 자국에 유리한 주파수가 글로벌 주파수 대역으로 선정되기 위해 치열한 외교전을 펼칠 것으로 보입니다.

또한 최근 주요 IT 기업의 표준, 특허 전쟁이 격화되면서 글로벌 표준 특허 경쟁도 심화될 것으로 예상됩니다. ICT를 통해 전 세계 동반 성장을 추진하자는 안도 2014년 전권 회의에서 주요 의제로 채택될 전망입니다.

우리나라는 전권회의 개최를 계기로, 글로벌 ICT 정책을 주도한다는 계획입니다. 또한 ITU 고위직 진출을 통해 ICT 강국에서 ICT 외교 강국으로 전환하겠다는 목표도 갖고 있습니다.

ITU 전권회의에는 전 세계 정책 결정권자와 글로벌 기업이 참석함으로써 국내 기업의 해외진출 기회를 확대할 수도 있습니다. K팝, 드라마 등 한류와 ICT가 결부된 새로운 스마트 한류의 세계화도 도모할 수 있습니다. 방통위는 전권회의 기간 중 유럽의 국제 모바일 전시회(MWC)나 북미 전자제품박람회(CES)와 같은 대규모 ICT 전시회를 동반 개최하는 방안을 검토하고 있습니다. 또한 다양한 한류 공연과 관광 프로그램을 제공해 전 세계 대표단이 한국 문화를 체험할 수 있는 축제의 장을 마련한다는 복안입니다.

부산시는 이번 ITU 전권회의를 개최함으로써 3161억원의 경제 효과와 5000명 이상의 고용 유발 효과를 기대하고 있습니다. 방통위는 전권회의를 개최함으로써 ICT 강국 국민이라는 국민적 자긍심을 고취하고 ICT를 통한 전 세계 공동 발전을 선도하는 등 국격을 제고할 수 있을 것으로 전망하고 있습니다.
강희종기자 mindle@

[칼럼] IT장애, 왜 반복되는가?
최영석BSI코리아 심사위원 YoungSug.Choi@bsigroup.com 2009.04.17 / AM 10:17

칼럼니스트 : 최영석

이메일

ganariysc@gmail.com

코너명

문제점을 통해 들여다보는 IT이야기

약력

IT칼럼니스트, IT서비스, 정보보안, 비즈니스연속성 분야의 심사원/강사, 비즈니스와 IT세상을 폭넓게 들여다보고자 하는 경험주의와 미래 예측을 위한 이상주의를 동시에 실현하고자 하는 사람

[지디넷코리아]IT조직에게 ‘장애’는 두려운 존재다. 장애가 발생하는 경우 IT조직의 무능함을 질타하는 사용자 측의 비난을 만나게 된다. 들 불처럼 일어나는 장애에 대한 관심도 IT조직의 입장에서 부담스럽다. 그런데 이렇게 두려운 장애임에도 불구하고, 장애에 대응하는 일부 IT조직의 접근법은 나이브(naïve)하기 그지없다.

이들 IT조직들은 장애의 직접적인 발생원인을 찾아내는 데에만 집중할 뿐, 장애가 발생하게 된 다양한 원인들을 찾아내는 활동은 게을리하고 있다. 장애에 대한 단순한 대응은, 유사한 원인으로 인한 장애의 재발을 막을 수가 없다. 단순한 장애 대응으로 IT장애를 반복하고 있는 IT조직에 대해서 이야기 해보겠다.

장애 대응의 사례

A회사 IT조직의 장애 기록을 검토하면서 발견한 장애 대응 사례를 하나 소개하겠다.

업무시간 중에 회사 내에서 여러 개의 어플리케이션을 동시에 사용하지 못하는 장애가 발생했다. 사용자로부터 많은 신고 전화가 들어왔고, IT조직에서는 장애를 유발한 곳이 어딘지 찾기 시작했다.

우여곡절 끝에 이 IT조직은 신규로 들여온 네트워크 장비가 장애를 유발한 것이라는 것을 알아냈다. 네트워크 장비의 설정 파일 값이 잘못 입력되어 있었던 것이다.

이 IT조직이 장애의 원인을 찾아내는 동안, 장애로 인한 사용자들의 불만이 쏟아졌으나, 장애의 원인이 된 네트워크 장비의 설정 파일 값을 수정한 이후로는, 사용자들의 불만이 잦아들었고, 정상 상황이라고 판단한 IT조직은 이 장애를 종결 처리하였다.

이 IT조직이 작성한 장애의 기록은 여기까지다.

장애 기록에는 장애의 근본원인을 분석하는 공간이 있었으나 비어있었고, 장애의 원인을 찾았으니 장애의 종료는 당연한 것이 아니냐 하는 담당자의 반문 섞인 설명이 뒤따랐다.

데자뷰(déjà vu)?

이 IT조직의 장애 대응 방식은 우리 사회 어디에서 본듯한 모습이 아닌가? 남대문화재, 대구지하철사고, 물류창고 화재사고 등 우리 나라의 재해를 다루는 모습과 겹쳐진다고 생각하지 않는가?

재해가 발생하면 재해의 발생 원인을 찾느라 호들갑을 떨다가 어느 정도 소명이 되는 발생 원인을 찾게 되고, (웃긴 건지 슬픈 건지 모르겠지만, 우리나라는 주로 처벌을 목적으로 발생 원인을 찾는다.) 희생자 처리와 담당자 처벌이 완료되면 해당 재해는 자연스럽게 종료되어 버린다. 유사한 재해가 또다시 반복되고 있고, 앞으로도 반복될 수 밖에 없는 운명이다.

위에서 언급한 장애대응 사례는 대한민국 사회의 ‘후진국형 재해 대응 방식’과 너무나 닮아있다.

무엇이 문제인가?

장애의 원인은 장애를 유발하게 만든 ‘직접적인 원인’과 그 직접적인 원인을 유발하게 하는 ‘환경적인 원인’으로 나뉜다.

장애의 ‘직접적인 원인’은 IT조직뿐만 아니라, 사용자 측에서 워낙 관심이 많기 때문에 IT조직입장에서는 반드시 찾아내서 소명해야만 한다.

반면에 ‘환경적인 원인’은 IT조직 ‘내부’의 프로세스나 업무 방식에 관련된 것이기 때문에 IT조직의 외부, 즉 사용자 측에서는 별 관심이 없는 경우가 대부분이다. 따라서 사용자 측에 대한 ‘대응’에만 유독 집중하는 IT조직의 경우, 굳이 환경적인 원인까지 찾아낼 필요성을 크게 느끼지 못하게 된다.

장애의 ‘재발’은 이러한 장애의 ‘환경적인 원인’을 등에 업고 발생하게 된다. 환경적인 원인을 찾아내서 제거하지 못하면 유사한 장애의 재발을 막는 것은 불가능하다.

위에서 언급한 장애 대응 사례의 경우, 직접적인 원인은 ‘네트워크 장비의 설정 값 오류’라고 할 수 있다. 하지만 네트워크 장비의 설정 값 오류를 일으킨 ‘환경적인 원인’은 밝혀내려고 시도 조차하지 않은 것이 문제이다.

‘부실한 변경 프로세스’가 환경적인 원인

그러면 이 장애의 경우 ‘환경적인 원인’은 무엇일까? 이를 확인하기 위해서는 장비를 설치할 당시로 거슬러 올라가야 한다.

이 IT조직은 장비설치를 할 때는 반드시 ‘변경 프로세스’를 거치도록 규정하고 있다. 그래서 해당 네트워크 장비의 변경 기록을 검토해 보았다.

변경 기록에는 장비의 ‘설치 계획’과 ‘설치 결과’가 포함이 되어 있었다. 그러나 설치 계획과 설치 결과의 내용이 너무 빈약했고, 설치 결과에는 ‘정상’이라고만 기술되어 있었다. 단순하게 생각해보자. 설치 결과가 ‘정상’인데, 왜 네트워크 설정 파일 값이 잘못 설정되어 장애가 발생했을까?

이미 짐작한 사람이 있겠지만, 이 IT조직의 ‘변경 프로세스’ ‘수준’으로는 네트워크 설정 파일 값의 오류를 사전에 ‘검증’할 수가 없다는 것이 그 이유이다.

설치계획에는 언제 어떤 순서로 누가 설치하겠다는 정도로만 기술이 되어 있고, 설치 이후에는 네트워크 장비가 잘 ‘작동’된다는 점만을 확인하여 설치 결과를 기록하고 있기 때문에, 이 IT조직에서는 ‘정상적인 네트워크 설정 파일 값’이 무엇이며, 설치과정에서 제대로 설정했는지를 확인할 수 있는 방법이 없다.

변경 프로세스의 ‘디테일’을 강화하지 않는 한 위와 같은 유사한 장애의 재발을 방지할 수가 없다는 얘기다.
이 장애대응사례의 경우, 결국 IT조직 내부의 부실한 변경 프로세스가 장애의 ‘환경적인 원인’인 것이다.
반복되는 장애의 배경에는 이처럼 IT조직 내부의 ‘부실한 프로세스들’이 또아리를 틀고 있다.

장애의 선진 사례- 장애 사후 검토(Post incident review)

단순한 장애대응에서 벗어나 적극적으로 장애를 대응하기 위해, 선진국이나 선진 기업에서 도입하고 있는 방법 중에 하나가 ‘장애 사후 검토’ 활동이다.

‘장애 사후 검토’ 활동은 ISO 20000 표준과 ITIL에서 다루고 있는 문제 관리 프로세스(Problem management process)를 좀더 확장한 것이라고 보면 된다.

문제 관리 프로세스는 ‘밝혀지지 않은’ 장애의 ‘근본 원인’을 조사하는 것이 목적인 반면에, 장애 사후 검토 활동은 밝혀지지 않은 장애의 근본 원인뿐만 아니라, 위에서 언급한 ‘환경적인 원인’과 장애 발생 이후 IT조직의 대응 과정이 예상대로 또는 성공적으로 진행이 되었는지 여부도 검토하는 것이다.

문제관리 프로세스를 잘 운영하고 있는 IT조직은 별도로 장애사후검토 활동을 가질 필요가 없이, 기존 문제관리 프로세스의 검토항목을 추가한다면 장애 사후 검토 활동의 이득을 모두 누릴 수가 있다.

장애를 대하는 태도가 바뀌어야 한다

장애를 뿌리뽑겠다고 선언하는 IT조직을 종종 만나게 된다. 그러나 ‘의욕’은 장애의 환경적인 원인이라는 강력한 암초를 만나면서 꺾이는 경우를 보게 된다.

환경적인 원인을 찾아야 한다는 필요성을 이해하고, 환경적인 원인을 찾아내는 데까지는 성공했으나, 그 원인을 제거하기 위해서는 결국 부실한 내부 IT 프로세스에 ‘메스’를 데야 한다는 사실을 알게 되는 순간, 들고 있는 ‘메스’를 주머니에 다시 집어넣어버리는 IT조직을 경험한 적이 있다.

발생한 장애는 어쩔 수 없다. 그러나 유사한 장애가 재발하지 않도록 하는 것은 IT조직이 사용자들에게 지켜야 하는 의무이자 약속이다.

이 약속을 지키기 위해서는, 어떤 희생을 치르더라도 IT조직 내부의 프로세스를 과감하게 뜯어고치겠다는 결심이 뒤따라야 한다는 ‘냉정한’ 현실을 IT조직은 분명히 알아야 한다. 이 정도의 노력과 용기도 없이 ‘무 장애’ 선언과 같은 ‘공수표’를 날리지 말라는 말이다.

기사 주소: http://www.dt.co.kr/contents.html?article_no=2009061602011760744002
[알아봅시다] IT서비스관리 (ITSM)

온라인으로 물건을 판매하는 업체에게 있어 인터넷 서비스가 끊어진다는 것은 곧 기업활동에 막대한 피해를 의미합니다. 웹사이트를 통해 고객의 주문을 받고 배송을 확인하는 마지막 순간까지 모두 인터넷을 통해 이루어지기 때문입니다. 이밖에도 전세계 증시상황을 실시간으로 모니터링 해야 하는 증권업계, 외부 고객관계관리(CRM) 서비스를 이용하는 기업 등 안정적인 IT 서비스의 중요성은 점점 더 중요해지고 있습니다.

IT서비스관리(ITSM)의 출발점은 바로 여기였습니다. `합리적인 비용 범위 내에서 합의된 품질 수준의 서비스를 제공할 수 있도록 프로세스, 자원, 기술을 종합적으로 관리하기 위한 IT 관리체계를 만드는 것이 ITSM의 목표입니다.

◇IT 서비스 향상의 핵심 키워드=ITSM의 중요성은 더 커지고 있습니다. 기업활동은 점점 온라인 공간으로 이동하고 있고 일부 기업들은 IT 인프라 전체를 아웃소싱하기도 합니다. 시스템 다운타임의 허용범위, 제공받는 관리 서비스의 범위 등을 명확히 하는 것은 기업은 물론 IT서비스 전문업체에게도 매우 중요한 일로 자리잡고 있습니다.

ITSM을 실현하기 위한 모델로는 흔히 ITIL(IT Infrastructure Library), eSCM(eSourcing Capability Model) 등이 거론됩니다. 소프트웨어의 품질 보증 기준으로 널리 사용하는 CMM(Capability Maturity Model)의 확장 모델인 CMMi(CMM integration), 마이크로소프트의 독자 ITSM 프레임워크인 MOF(Microsoft Operation Framework) 등도 있지만 지난 1989년 영국에서 만들어진 ITIL이 ITSM을 위한 업계 표준으로 널리 인정받고 있습니다.

ITIL은 IT 서비스를 관리하기 위한 대표 성공사례(Best Practice)들을 모은 책자 형태의 지침입니다. 고객과의 서비스 수준 계약 및 서비스 수준 모니터링에 필요한 제반 프로세스를 정의한 `Service Delivery` 영역과 이 프로세스를 운영ㆍ지원하기 위한 `Service Support ` 영역으로 구분돼 있으며 이 지침대로 서비스를 구축하면 ISO9001, BS15000과 같은 세계적인 품질 인증을 획득할 수 있습니다.

◇시스템 다운 손실 97% 절감=사용자들은 SLA에 기초한 맞춤형 IT 서비스를 일관성 있는 품질로 제공받을 수 있습니다. IT 서비스 접촉 창구가 명확해져 IT 조직과의 커뮤니케이션이 개선되는 효과도 기대할 수 있습니다.

기업 입장에서도 보다 명확한 IT 프로세스를 갖출 수 있고 개별 IT 서비스 구성 요소에 대한 효과적인 아웃소싱이 가능해집니다. 시장조사업체인 가트너그룹에 따르면 ITSM 도입 후 시스템 다운타임으로 인한 비용손실이 97%까지 줄었다고 합니다.

이에 따라 국내에서도 ITSM에 대한 관심이 높아지고 있습니다. 국내 ITSM 시장은 매년 두자리수 이상 성장을 거듭해 지난해 소프트웨어 분야에서만 150억원 시장을 형성했고 올해에도 고속 성장이 기대됩니다. 대형 프로젝트도 잇달아 예고돼 있습니다. 40~50억원대 규모로 알려진 우정사업본부 프로젝트를 비롯해 예금보험공사, 방위청 고도화 사업 등입니다. 지경부는 올해 웹기반 소프트웨어 개발 지원 사업을 ITSM으로 확대해 지정했습니다.

◇ITAM, IT거버넌스 등으로 확대=전문가들은 현재의 ITSM이 향후 IT자산관리(ITAM, Asset Management), IT 거버넌스(IT Governance) 등으로 확대될 것으로 전망하고 있습니다.

ITAM이란 기업내 각종 IT자산을 구입부터 폐기까지 관리하는 개념으로, 초기에는 IT 자산의 수와 위치 정보 등 자산 현황 파악에 초점이 맞춰졌으나 자산관리 데이터베이스 구축, 재무정보와의 통합 등으로 발전하고 있습니다. 특히 그동안 자산관리의 사각지대에 놓여있던 소프트웨어의 경우 지재권 관련 법안이 강화되면서 기업들의 새로운 경영리스크로 부상하고 있습니다.

IT거버넌스도 ITSM과 ITAM과 함께 주목받고 있는 분야입니다. IT 거버넌스란 IT 자원과 정보, 조직을 회사 전체의 경영 전략이나 목표와 연계해 경쟁 우위를 확보할 수 있도록 하는 것을 의미합니다. 그동안 IT는 일반 경영자들이 통제하기 힘든 일종의 블랙박스 영역으로 간주됐으나 IT가 기업활동에서 차지하는 비중이 커지면서 IT에 대한 가시성을 확보하고 전체 기업경영 관점에서 IT를 제어할 수 있는 수단으로 IT 거버넌스를 고민하는 것입니다.

IT 서비스를 최상의 상태로 유지하기 위한 활동이 ITSM이라면, IT 거버넌스는 이를 위해 필요한 모든 프로세스를 계획하고 통제하며 적절한 방향으로 나아가도록 의사결정을 하는 일련의 과정을 의미한다는 점에서 상호 보완적인 측면이 있습니다.

◇성급한 접근은 금물=국내 ITSM 시장은 매년 30% 이상의 높은 성장률을 보이고 있습니다. 현재는 주로 IT 인프라 중심으로 구축되고 있지만 장기적으로는 ITAM과 거버넌스 측면에서 인프라와 애플리케이션을 통합하는 ITSM으로 발전할 것으로 보입니다. 전문가들은 IT 서비스 성과를 하루아침에 높인다는 성급한 마음으로 접근하면 또 다른 요식 행위로 이어질 가능성이 높다고 지적합니다. 따라서 글로벌 프로세스 모델을 참조해 기존의 자사 IT 관리 프로세스 중 강점을 유지한 채 부족한 점을 보완할 수 있도록 추진해야 한다고 충고합니다.

박상훈기자 nanugi@

자료참조=전자부품연구원

ITIL을 통한 효과적인 장애·문제 관리

많은 기업들이 ITSM의 필요성을 인식하고 있지만, 어디서부터 어떻게 적용해야 할 지 막막해하는 경우가 많다. 이런 기업들의 고민은 ITSM을 실현하는 대표적인 방법론인 ITIL(IT Infrastructure Library) 도입을 통해 해결할 수 있다. 여기에서는 ITIL 도입의 첫 번째 단추라고 할 수 있는 장애·문제 관리 영역을 실무에서 어떻게 적용할 수 있는지에 대해 살펴보자.

양진섭 | 한국CA 수석 컨설턴트

기술 지원 관리자가 ITIL을 실무에 적용하다 보면, 여러 가지 어려운 입장에 빠지게 된다. 변화란 쉬운 일이 아니기 때문이다. 기업의 기존 프로세스가 건실하고 유능한 담당자를 두고 있을 경우, 변화에 대한 필요성을 느끼지 못하기 때문에 서비스 개선에 대한 반발이 일어나는 경우가 발생한다. 특히, 변화를 받아들여야하는 서비스 데스크 직원들이 거부 반응을 나타내는 경우가 많은데, 대부분 "왜 하필 저를 귀찮게 하시는 겁니까?"란 물음으로 반감을 표시한다. 자신들의 기존 업무 방식을 완전히 고치는 데 대해 사람들이 격렬하게 반응하는 것은 그리 놀랄 일이 아니다.

비교적 구현이 쉬운 장애·문제 관리 영역부터
우선 서비스 데스크 직원들이 던진 "왜 저입니까?" "서비스 데스크부터 ITIL을 시작해야 하는 이유가 무엇입니까?"라는 질문에 답해보자. 대답은 간단하다. ITIL 서비스 데스크, 그 중에서도 ITIL 장애·문제 관리 영역의 구현이 비교적 쉽기 때문이다. ITIL의 다른 모델들과 비교해 아마도 '상대적으로 용이하다'는 것이 적합한 표현일 것이다. 그렇다면 이 영역이 다른 영역에 비해 쉽게 구현될 수 있는 있는 이유는 무엇인가?
체계적인 조직을 갖춘 기업의 지원 그룹은 이미 일정한 형식을 따르고 있는 모델을 적용해 장애나 문제 관리를 시행하고 있다. 그 모델이 비즈니스 가치에 의해 문제의 우선순위를 정하고 근본 원인을 해결하고 있다면, 이미 ITIL 모델에 접근한 것으로 볼 수 있다. 때문에 이런 지원 그룹들은 관련 용어를 상당히 변경해야 할 수도 있지만, 타 그룹에 비해 기존 업무처리 방식의 변경이 용이하게 이뤄질 수 있다.
기업 내 각 그룹 간 공동 작업이 필요한 경우에는 단일 그룹 내에서는 해결할 수 없는 한계에 부딪히는 경우가 있다. 이런 문제를 해결하기 위해서는 장소나 시간을 선정하는 것부터 책임 이관을 놓고 벌이는 격렬한 영역 다툼까지, 크고 작은 잡음이 끊이질 않는다. 이에 비해 ITIL 장애·문제 관리의 구현은 독립적으로 이뤄지기 때문에, 그 실무 변경 작업이 지원 그룹으로 한정돼 큰 무리없이 진행될 수 있다.
결과적으로 ITIL 장애 ·문제 관리 구현은 성공 가능성이 매우 높다고 할 수 있다. 또한 그 구현은 보통 참여자에 의해 빠르게 이뤄지고 쉽게 받아들여진다. 기업이 상당히 폭넓은 영역에 걸쳐 ITIL을 구현할 계획을 가지고 있다면, 특히나 ITIL의 장애나 문제 관리에서의 성공을 바탕으로 전사적인 ITIL 도입을 추진해야 한다. 이로 인해 대부분의 컨설턴트들은 ITIL 구현을 장애·문제 관리에서 시작하라고 제시한다.

비즈니스 서비스와의 조화를 위한 효율적 지원 제공
그렇다면 전형적인 기술 지원 데스크와는 달리 ITIL을 통한 장애·문제 관리는 어떻게 이뤄지는가?
지원 데스크는 1선 혹은 2선 그룹을 가지고 있다. 대개 1선에서 전화호출을 접수받아 해결하고, 1선에서 해결되지 못한 나머지 문제들은 2선에서 담당한다. 통상적으로 1선과 2선 그룹은 자체 데스크에서 업무를 수행하는데, 현장 지원이 필요할 경우에는 현장 기술자가 파견돼 고장난 부품을 교체하거나 현장에서 요구하는 업무를 수행하게 된다.
이런 전통적인 기술 지원 데스크와 달리 ITIL에서는 비즈니스 서비스와 잘 부합되도록 효율적인 지원을 제공한다. ITIL 장애 관리는 기술 지원 데스크의 1선과 비슷하다고 볼 수 있다. 장애 관리자가 서비스 데스크의 1선이 돼 무엇이 잘못됐다는 소식을 최초로 접수받게 되는데, 이때 이들의 역할을 문제 해결이 아니라 신속하게 서비스를 복원하는 것이다.
전통적인 서비스 지원 방식에서는 비용 절감이나 문제를 즉시 해결하기 위한 사전 예방적인 발견이나 원인 제거를 강조한다. 지원 관리자는 서비스가 복원된 뒤에는 문제를 해결할 시간이 결코 없다고 말할 것이다. 그때가 되면 또 다른 장애 처리에 모든 에너지와 신경을 빼앗긴다고 생각한다. 따라서 장애가 접수된 상태에서 문제를 해결하는 것이 최선의 방법이라고 생각한다.
ITIL은 이런 전통적인 방식을 비판하는 것이 아니라 적절한 단계에서 제대로 수행될 수 있도록 하는 것에 중점을 둔다. 즉, 중요 서비스가 손상되면 서비스 복원이 최우선순위가 되는 것이다. 서비스가 복원된 뒤에도 문제를 해결할 시간은 충분하기 때문이다.
아울러 ITIL은 '문제 관리'라는 별도의 프로세스를 통해 문제 해결을 위한 시간 부족을 해결한다. 문제 관리자는 전통적인 방식에서의 2선 기술자를 가리키는 또 다른 이름이 아니다. ITIL이 구현되지 않은 전통적인 방식에서 2선 기술자는 보다 어려운 문제를 해결하기 위한 숙련된 기술을 가진 뛰어난 1선 기술자를 일컫는다. 따라서 수석 장애 관리자의 기술적 숙련도는 적어도 수석 문제 관리자의 숙련도와 동일해야 한다. 그리고 장애 관리자는 단시간 내 기술적 난이도가 높은 상황을 정확하게 평가하고 서비스를 복원하기 위한 절차를 시작해야 한다.
이처럼 장애와 문제 관리에 대한 결정은 대개 일반적인 장애와 심각한 위기를 구분하는 분기점이 된다. 하지만 모든 업무가 장애 관리가 시작됨과 동시에 문제 관리를 수행하는 것은 아니다. 문제 관리에는 보다 높은 수준의 정교함이 필요한데, 지원 그룹이 건실하고 사전 예방적인 지원 정책을 가지고 있을 때 손쉽게 구현될 수 있다.
문제 관리는 즉각적인 결정을 내리는 것이 아니다. 장애 관리 그룹이 서비스를 복원한 후 문제 관리자가 개입하고, 문제의 원인을 찾아 결함을 수정해 향후 장애를 예방하는 것이 일반적이다. 문제에 대한 조치 방법은 알려진 오류 형태로 문서화하고 복구절차를 설명하는 것처럼 간단할 수도 있고, 시스템 구성요소를 교체하거나 재구성이 필요할 때도 있다.
일부 기업에서는 문제 관리 그룹이 이런 구현 업무를 자체적으로 떠맡기도 한다. 하지만 문제 관리 그룹에서 업무를 하든 다른 그룹이 실행하든, 시스템 구성 변경은 변경 관리 프로세스를 통해 통제돼야 하고, 모든 변경 내용은 적절하게 기록되고 승인돼야 한다. 운영 시스템이 중단 없이 가동되도록 보장해야 함은 물론이다.

핵심성과지표 기반의 장애·문제 관리
ITIL 장애·문제 관리는 대개 전형적인 비 ITIL 지표와는 다른 핵심성과지표(KPI)를 기반으로 한다. 즉, 각 장애 지원 활동마다 비용이 소요되는데, 가장 비용이 낮은 장애는 지식을 참조해 사용자가 스스로 해결하도록 유도하는 것이다. 그 다음으로 비용이 낮은 장애는 서비스 데스크에 전화 호출을 하지 않고 최종 사용자가 입력한 서비스 장애에 대해 1선 그룹에서 먼저 응답해 해결한다. 만일 호출이 요구되는 경우에 비용은 다시 상승하지만, 최초 호출에서 문제가 해결되면 비용이 최소화된다.
일반적인 실무에서 지원 그룹은 두 가지의 경성 핵심성과지표를 갖는데, 하나는 장애를 가능한 신속하게 해결하는 것이고, 또 다른 하나는 문제 해결 비용을 가능한 낮게 유지하는 것이다. 고객 만족은 연성 핵심성과지표이지만, 대부분의 그룹에는 여전히 중요하다. 장애를 낮은 비용으로 즉시 해결하고 사용자가 만족하도록 유지하는 지원 그룹은 성공한 것이다.
ITIL의 기본 목표는 비즈니스 서비스에 부합하지 않는 성과지표를 가려내는 것이다. '신속하고 비용이 낮은' 핵심성과지표는 일반적으로 쉽게 목표를 달성하지만, 비즈니스 서비스와는 부합하지 않는 경우가 많다. ITIL을 구현할 때, 이런 일반적인 KPI는 비즈니스 서비스 상의 서비스 수준과 명확하게 관련되는 핵심성과지표로 교체된다. '중요 비즈니스 서버 상의 장애 해결시간 최소화'가 좋은 핵심성과지표의 사례가 될 수 있다. 이런 핵심성과지표 하에서, 비즈니스 서버 장애가 발생하지 않은 지원 그룹에는 보상이 이루어지며, 이것은 서비스가 중단되지 않아야 한다는 비즈니스 서비스 요구사항에 정확히 부합하는 것이다.
이것은 팀원들이 장애를 즉시 복구하고 향후의 서비스 중단을 피하도록 문제 관리를 훌륭하게 수행하도록 하는 동기가 된다. 전통적인 핵심성과지표는 일반적인 지침만 제공할 뿐, 중요 비즈니스 서비스 이슈와 직접적으로 관련되지 않는다.

인재의 효율적인 배치 중요
서비스 복원은 누구에게나 중요하다. 이에 많은 기술 지원 그룹들이 ITIL 모델과 유사하게 자신들의 고유한 서비스 운영체제를 발전시켜 왔다. 또 대부분의 기술 지원 그룹이 중요 비즈니스 서비스에 주목하며, 장애에 높은 우선순위를 부여하고 있다. 그리고 대부분의 지원 그룹은 중요한 장애를 사전에 예방하기 위해 다양한 노력을 기울이고 있다.
ITIL 장애·문제 관리는 이러한 기존 업무처리 방식을 바꾸는 대신, 자신들의 실무에 적용 가능하도록 지원 조직을 위한 맞춤형 프레임워크를 제공한다.
ITIL을 구현할 때 가장 혼란스러운 측면은 장애 관리자와 문제 관리자의 역할에 대한 혼동이다. 각 그룹은 문제 관리를 2선으로 간주하고, 최상의 기술자를 배치해야 한다고 착각한다. 앞에서도 언급했듯이, 사실 장애 관리는 문제 관리 수준보다 뛰어난 기술 인재를 필요로 하는 경우도 있다.
훌륭한 지원 관리자는 이런 착각을 떨쳐내고 인재를 신중하게 배치하기 위해 열심히 노력해 ITIL 구현이 라벨만 바꿔 단 낡은 업무 관행이 되는 상황을 피하게 된다. ITIL이 단순한 용어에 지나지 않을 때는 구현 비용에서 수익을 내기가 매우 어려워지기 때문이다.
지원 담당자가 적절한 훈련을 받아 ITIL의 목표를 이해하고, 비즈니스에 부합하도록 ITIL 관점의 핵심성과지표에 동기가 부여되는 경우, 성공 가능성은 증가하고 지원 그룹은 전사적인 목표 달성에서 보다 중요한 참여자가 될 것이다.


- 박스 기사 -
ITSM 분야의 새 바람 'ITIL 버전 3'

IT 서비스 관리 분야에서 사실상 표준으로 자리잡은 ITIL(IT Infrastructure Library)의 차기 버전 출시로, ITSM 시장이 또 다시 활기를 띨 전망이다. 이번에 선보일 버전 3은 더욱 다양해지고 변화된 IT 환경을 반영했음은 물론 기존의 프로세스 중심에서 서비스 라이프 사이클로 무게중심을 옮겨, 이를 둘러싼 업계의 기대를 더욱 증폭시키고 있다.
ITIL을 제정한 영국 정부상거래국(Office of Government Commerce, 이하 OGC)에 따르면, ITIL 버전 3은 이전버전의 내용을 60% 정도 수용하면서 기존 자산과 환경을 ITIL에 어떻게 통합할 것인가에 대한 대안이 수록돼 있다고 한다. 또한 전체 라이브러리를 탐색할 수 있고 일관된 구조를 제공함으로써 사용이 더욱 쉬워졌으며, 서비스 관리 개념도 확대됐다. 특히 기존 버전에서 다소 미흡했던 투자대비효과(ROI) 부분을 보완해 ITIL이 제공하는 가치를 증명하고자 했다. 이외에 SMB 기업에도 적용할 수 있도록 개선했으며, IT 거버넌스 참조 모델인 COBIT, 6시그마와 같은 다른 표준이나 모범사례들과도 통합·연계된다.
ITIL 버전 3은 핵심(Core), 보충(Complementary), 웹(Web)의 세 가지로 구성된다. 이 중에서 ITIL 사용자에게 웹 기반 콘텐츠를 제공하는 '웹(Web)' 영역이 일반인에게 가장 먼저 선보일 예정이다. 여기에는 프로세스 맵과 정의, ITIL 정의 관련 내용은 물론 회의록과 역할 정의, 사례 연구, 주제별 자료, ITIL 양식 샘플 등과 같은 공통적인 요구를 위한 다양한 자료가 포함돼 있다.
ITIL 버전 3에서 가장 중요한 영역은 '핵심'이다. 총 5권의 책으로 구성된 핵심 영역은 비즈니스 요구부터 서비스 최적화까지 IT 서비스 라이프 사이클을 5단계로 구분했으며, 내년 2월에 출간될 계획이다.
핵심 영역의 첫 번째 책은 이 영역의 허브 역할을 하는 것으로, '서비스 전략'에 대해 다루고 있다. 여기에는 비즈니스와 IT 전략의 연계 이해, 비즈니스 변화에 대한 대응과 인식, 그리고 산업, 규제환경, 기업 규모 등에 기초한 우수사례 등이 수록돼 있다.
두 번째 책자는 '서비스 설계' 부분으로, 아웃소싱(outsourcing)과 인소싱(in-sourcing), 코소싱(co-sourcing) 등을 고려해 IT 서비스와 아키텍처 모델을 설계할 수 있도록 도와 준다.
세 번째 책자는 '서비스 도입' 부분이다. 서비스 설계를 운영환경에 적응하기 위한 이행 전략을 수립하고, 서비스 모델이나 설계를 운영환경으로 전환하기 위한 체크리스트, 변경과 릴리즈에 관한 내용을 포함하고 있다. 그리고 네 번째 책자는 일상적인 관리 이슈나 장애 조치 방안, 품질 지표 개발 혹은 모니터링 방안, 반응적 요소와 프로세스 관리 등 실제 운영 환경에서의 서비스 관리 방안에 대한 '서비스 운영' 내용을 담고 있으며, 마지막 책자에는 ITIL을 적용할 때 '서비스 개선' 방안이 수록돼 있다.
ITIL 버전 3의 새로운 특징은 특정 시장이나 기술, 규제에 따른 일반적 핵심 지침서로 적용할 수 있다는 것이다. 이를 위해 OGC에서는 '보충' 버전을 출판해 연간 분기별로 필요에 따라 다르게 적용할 수 있도록 할 방침이다. 보충 버전은 산업별 혹은 기업 규모에 따른 구현 지침을 제공하며, 시장 세분화에 따른 특정 지침을 포함할 예정이다.
ITIL 버전 3은 효과적이고 경제적으로 비즈니스 문제를 해결하기 위한 IT 산업 표준화의 핵심 도구라 할 수 있다. 또한 새로운 버전은 ITIL 인증을 위한 핵심 요건으로 자리잡을 것임은 물론 그간 많은 기업들이 고민해오던 ITIL 채택의 필요성에 대한 해답을 제시해 줄 수 있을 것으로 보인다. 특히 ITIL 자격증 프로그램을 관리하는 기관인 영국의 ISEB나 네덜란드의 EXIN 등도 ITIL 버전 3의 내용을 이미 반영하고 있고, 새로운 ISO20000 인증이나 감시체계와 같이 ITIL 버전 3의 변경 사항을 반영한 새로운 인증 프로그램을 준비하고 있어 기업들 사이에 빠르게 도입될 것으로 전망된다.
ITIL의 새로운 개정판은 특정한 요구사항에 맞도록 상세한 지침을 제공하며, 커스터마이징이 용이하도록 만들어질 것이다. ITIL 버전 3의 목표가 명확한 규범화와 그 동안의 ITIL에 대한 공통적인 불만을 해소시키는 것이기 때문이다. 또한 이전과는 다르게 COBIT과 같은 다른 표준이나 베스트 프랙티스와 통합해 ITIL 구현이 이뤄질 수 있도록 지원할 계획이다.
따라서 지금까지 ITIL 도입을 연기해왔다면, 지금 새롭게 도입을 시작하기를 권한다. 또한 ITIL을 이미 구현중이라면 새로운 버전이 제공하는 이점과 변화된 내용들에 대한 이해를 바탕으로 새롭게 불고 있는 변화의 물결에 동참하기를 바란다.

월간 온더넷 2006년 9월호

Hadoop HDFS BASIC Usage Over View : 하둡 사용 개요

 

 

출처 : 국가생물자원정보관리센터 (KOBIC ) - 조수안 연구원

Hadoop Installation Guide

Rockscluster 기반하에서 설명된 메뉴얼임을 알림.>

(# - > root, $ -> hadoop )

* 설치를 시작하기전에 JDK1.5 이상 System에 설치되어 있어야 함.

Step1) 계정 생성

# useradd hadoop(hadoop 계정을 생성해 준다)

# passwd hadoop(hadoop 계정의 password를 설정한다)

# rocks-user-sync(frontend와 노드간의 sync를 맞춰준다.

이작업을 하면 frontend에서 노드로 비번없이 접근이 가능함)

Step2) Hadoop System 폴더 생성

# mkdir /data/hadoop/hdfs(Hadoop관련 디렉토리를 생성한다.

(hdfs이후로는 절대 폴더를 생성하지 않아야함)

# chown -R hadoop.hadoop /data(폴더에 hadoop권한을 준다)

Step3) Hadoop Download

$ wget http://ftp.apache-kr.org/lucene/hadoop/hadoop-$version.tar.gz

(hadoop 홈폴더 안에 Download)

$ tar zxvf hadoop-$version.tar.gz(압축을 품)

$ cd hadoop-$version(압축 푼 폴더로 이동)

$ ant package(설치 command)

Step4) 설정파일 편집

$ vi ./conf/hadoop-env.sh

: 아래와 같이 JAVA_HOME 경로, slaves 설정 파일 경로를 편집합니다.

HADOOP_HOME 은 실제로 hadoop이 설치된 경로를 설정합니다.

export JAVA_HOME=/usr/java/jdk_$version

export HADOOP_HOME=/home/hadoop/HADOOP

export HADOOP_SLAVES=${HADOOP_HOME}/conf/slaves

export HADOOP_LOG_DIR=${HADOOP_HOME}/logs

$ vi conf/hadoop-site.xml(붉은 부분이 실제 자신의 환경에 맞게 편집할 부분임)

fs.default.name

clustome.kobic.re.kr:9000

The name of the default file system. Either the literal string

"local" or a host:port for NDFS.

mapred.job.tracker

clustome.kobic.re.kr:9001

The host and port that the MapReduce job tracker runs at. If

"local", then jobs are run in-process as a single map and

reduce task.

mapred.map.tasks

4

define mapred.map tasks to be number of slave hosts

mapred.reduce.tasks

1

define mapred.reduce tasks to be number of slave hosts

dfs.name.dir

/data/hadoop/hdfs/name

dfs.data.dir

/data/hadoop/hdfs/data

mapred.system.dir

/data/hadoop/hdfs/mapreduce/system

mapred.local.dir

/data/hadoop/hdfs/mapreduce/local

dfs.replication

2

$ vi conf/slaves(실제 slave노드들의 호스트 네임을 적어놓는다)

c0-1

c0-2

c0-3

.

.

.

Step5) 방화벽 설정

# vi /etc/sysconfig/iptables (Master Node)

-A INPUT -m state --state NEW -p tcp --dport 9000 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 9001 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50010 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50030 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50040 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50050 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50060 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50070 -j ACCEPT

# /etc/init.d/iptables restart

# vi /etc/sysconfig/iptables(Slave Node)

-A INPUT -m state --state NEW -p tcp --dport 50010 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50040 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50050 -j ACCEPT

-A INPUT -m state --state NEW -p tcp --dport 50060 -j ACCEPT

# /etc/init.d/iptables restart

Step6) ssh key 생성

* Rocks 시스템의 경우 rocks-user-sync만 해주면 됨.

* 일반 리눅스 시스템일 경우엔 기존 ssh key 설정 방법과 같음.

Step7) NameNode Format

$ ./bin/hadoop namenode -format(해당 command를 실행 후 y를 누르면 포맷이 완료됨.)

Step8) 데몬 실행

$ ./bin/start-all.sh(마스터와 슬레이브의 모든 데몬을 한꺼번에 실행)

Step9) 실행 확인

* 웹브라우져에서 다음의 주소로 확인한다.

ex) http://clustome.kobic.re.kr:50030 (Hadoop Map/Reduce Administration)

ex) http://clustome.kobic.re.kr:50070 (Data Node Information)

Hadoop Operation Guide

○ Hadoop Startup

* Hadoop cluster를 시작하기 위해서는 HDFS와 Map-Reduce cluster를 구동시켜야 한다.

$ bin/hadoop namenode -format(새로운 분산파일시스템 포맷)

$ bin/start-dfs.sh(HDFS 구동(NameNode))

* bin/start-dfs.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 DataNode 데몬을 구동시킨다.

$ bin/start-mapred.sh(Map-Reduce 구동(JobTracker))

* bin/start-mapred.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 TaskTracker 데몬을 구동시킨다.

Hadoop Shutdown

$ bin/stop-dfs.sh(HDFS 중지(NameNode)

* bin/stop-dfs.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 DataNode 데몬을 중지시킨다.

$ bin/stop-mapred.sh(Map-Reduce 중지(JobTracker))

* bin/stop-mapred.sh script 파일은 ${HADOOP_CONF_DIR}/slaves 파일에 리스팅 되어있는 모든

노드의 TaskTracker 데몬을 중지시킨다.

★ 위의 모든 작업을 해주는 스크립트가 ./bin/start-all.sh 와 ./bin/stop-all.sh 이다.

Hadoop FSShell Usage

* Usage: java FsShell

[-fs ]

[-conf ]

[-D <[property=value>]

[-ls ]

[-lsr ]

[-du ]

[-dus ]

[-mv ]

[-cp ]

[-rm ]

[-rmr ]

[-expunge]

[-put ]

[-copyFromLocal ]

[-moveFromLocal ]

[-get [-crc] ]

[-getmerge [addnl]]

[-cat ]

[-copyToLocal [-crc] ]

[-moveTo!Local [-crc] ]

[-mkdir ]

[-setrep [-R] ]

○ Hadoop FSShell Example

* jar 파일 실행

[hadoop@clustome HADOOP]$ bin/hadoop jar hadoop-bioliterext.jar medline_2000 medline_2000_result

- hadoop-bioliterext.jar 파일은 파라미터로 input_dir 과 output_dir 을 받는다.

여기서는 medline_2000 이 input_dir, medline_2000_result 가 output_dir 이다.

* 리눅스 ls 명령 실행

[hadoop@clustome HADOOP]$ bin/hadoop dfs -ls

* 리눅스 로컬 데이터를 분산파일시스템으로 복사

[hadoop@clustome HADOOP]$ bin/hadoop dfs -copyFromLocal sample dfs_sample

- sample 이라는 디렉토리를 HDFS(Hadoop Distributed File System)의 dfs_sample 이라는

디렉토리로 복사하는 명령

* 분산파일시스템의 데이터를 로컬 디스크로 복사

[hadoop@clustome HADOOP]$ bin/hadoop dfs -copyToLocal dfs_sample sample

- dfs_sample 이라는 HDFS(Hadoop Distributed File System)의 디렉토리를 로컬 디스크의

sample로 복사하라는 명령

===================================

===================================

======= Fuse installing =============

====================================

리눅스 시스템으로 마운팅해서 일반 리눅스에서 사용하기

hdfs 를 리눅스 파일시스템으로 마운트 시키기 위해 준비해야 할 것은 다음과 같다

Fuse-Hadoop Installation Guide

<Hadoop 0.16.2 Version / Fuse-2.7.3 / Fuse-j-hadoopfs / Fuse-j-2.4를 기준으로 작성된 매뉴얼이며 Rockscluster 기반하에서 설명된 메뉴얼임을 알림.>

(# - > root, $ -> hadoop )

* 설치를 시작하기전에 JDK1.5 이상 System에 설치되어 있어야 함.

* 모든 설치가 끝난 후 마운트 전엔 반드시 Hadoop Demon이 올라와 있어야 함.

Step1) 설치파일 다운

$ mkdir /$Hadoop_Home/fuse

$ cd fuse

$ wget http://jaist.dl.sourceforge.net/sourceforge/fuse/fuse-2.7.3.tar.gz

-> Fuse-2.7.3

$ wget http://jaist.dl.sourceforge.net/sourceforge/fuse-j/fuse-j-2.4-prerelease1.tar.gz

-> Fuse-j-2.4

$ wget http://issues.apache.org/jira/secure/attachment/12371549/fuse-j-hadoopfs-03.tar.gz

->Fuse-j-hadoopfs

Step2) Fuse-2.7.3 설치

$ tar xvfz fuse-2.7.3(압축을 푼다.)

$ cd fuse-2.7.3(해당 패키지 폴더로 이동)

# ./configure(환경설정 및 make 파일 체크)

# make(반드시 root로 해야함. 이유는 /usr/local/lib 와 /usr/local/include에 관련 파일을 쓰기 때문)

# make install

# modprobe fuse

Step3) Fuse-j-2.4 설치

$ tar xvfz fuse-j-2.4(압축을 품)

$ cd fuse-j-2.4(해당 패키지 폴더로 이동)

$ vi build.conf(설정파일 편집)

- JDK_HOME=자신의 머신에 맞게 설정

- FUSE-HOME=자신의 머신에 맞게 설정

$ ant(빌드함)

$ make

Step4) Fuse-j-hadoopfs

$ tar xvfz fuse-j-hadoopfs(압축을 품)

$ cd fuse-j-hadoopfs(해당 패키지 폴더로 이동)

$ vi build.properties(설정파일 편집)

- JDK_HOME=/usr/java/jdk1.5.0_07(자바경로 설정)

- HADOOP_HOME=/home/hadoop/HADOOP(hadoop 경로설정)

- FUSE_HOME=/home/hadoop/fuse/(fuse 홈 설정)

- FUSE_J_HOME=/home/hadoop/fuse/fuse-j-2.4-prerelease1(fuse-j 홈 설정)

- FUSE_J_DOWNLOAD_URL=http://www.jaql.org/fuse-j/fuse-j.tar.gz

(fuse-j 다운로드 설정: 이 구문 설정을 해놓으면 fuse-j 가 없을 경우 자동으로 다운 받게 해줌.)

$ cp fuse-2.7.3/lib/.lib/libfuse.so.2 fuse-j-2.4/jni(해당 lib 복사)

$ ant compile -Dbuild-fuse-j-hadoopfs=1(컴파일 함)

# chown hadoop.hadoop /dev/fuse(hadoop관련 마운트 디바이스 파일을 hadoop 계정으로 줌)

$ ./hadoofs_fuse_mount.sh [마운트포인트]

(마운트 포인트는 / 및에 아무곳이라도 상관없다. 단, hadoop권한이 있어야 함.)

= 정말 수백번의 삽질 끝에 알아낸 설치 정보이다. 삽질결과 다음과 같은 정보를 뽑아낼 수 있었음.=

설치 후 리눅스 기본 명령어 테스트 결과 (cp, mkdir, scp ,rsync, rm, ls, vi... 등등) 잘 됨.

단, df 명령어를 하였을 경우 hadoop 파일시스템으로 마운트 된 정보는 나오질 않음

하지만 데이터가 실제로 들어가는지에 대한 확인 및 관리는 다음의 url로 확인이 가능함.

(http://clustome2.kobic.re.kr:50070)

remote 네트워크 파일 copy 수행 결과 평균 속도 30M ~ 35M를 유지하고 있으며 현재까진 안정적이다.

fuse-hadoop-0.1.0_fuse-j.2.4_hadoop.0.5.0 패키지를 이용하여 마운트를 하는 방법도 있지만

필자가 테스트 해본 결과 위의 방식이 가장 안정적이며 속도 또한 잘 나온다.

오픈 소스 클라우드 분석

IaaS(Infrastructure as a Service)를 위한 빌딩 블록

M. Tim Jones, Consultant Engineer, Emulex Corp.

요약: 이제 더 이상 신생 기술이 아닌 클라우드 컴퓨팅은 애플리케이션을 사용하고 개발하는 방법을 근본적으로 바꿔 놓은 유용하고 중요한 기술입니다. 예상대로 Linux®와 오픈 소스가 클라우드의 기반(공용 및 개인용 인프라를 위한)을 제공합니다. 이 기사에서는 클라우드, 클라우드의 아키텍처 및 이러한 동적이고 확장 가능한 컴퓨팅 및 저장소 플랫폼을 개발하는 데 사용된 오픈 소스 기술에 대해 자세히 설명합니다.

이 기사에 태그: 개요, 클라우드

원문 게재일: 2010 년 3 월 09 일 번역 게재일: 2010 년 4 월 13 일
난이도: 중급 영어로: 보기
페이지뷰: 8376 회
의견: 0 (보기 | 의견 추가 - 로그인)

평균 평가 등급 4 개 총 5표 평균 평가 등급 (5 투표수)
아티클 순위

분산 시스템 즉, 인터넷에서는 클라우드를 추상적 개념으로 사용하는 것이 매우 일반화되어 있다. 하지만 지난 몇 년 동안 이 추상적 개념은 로컬 또는 원격으로 손쉽게 서비스로 제공할 수 있는 높은 수준의 가상화된 확장 가능한 인프라로 확장되었다. 이 기사에서는 클라우드 아키텍처에 대한 자세한 정의와 장점에 대해서는 다루지 않는다. 대신 참고자료 섹션을 참조하기 바란다.

클라우드 컴퓨팅 분석

이 기사에서는 먼저 클라우드 아키텍처의 핵심 추상적 개념인 IaaS(Infrastructure as a Service)부터 시작하여 빌딩 블록을 거쳐서 높은 수준의 통합 솔루션까지 살펴본다.

자주 사용하는 약어

  • API: Application programming interface
  • I/O: Input/output
  • SLA: Service-level agreement
  • UI: User interface

요구사항은 아닐지라도 가상화는 동적으로 확장 가능한 아키텍처를 빌드하는 데 도움이 되는 고유한 장점을 제공한다. 확장성 외에도 가상화는 로드 밸런싱을 위해 실제 서버 간에 VM(virtual machine)을 마이그레이션하는 기능도 제공한다. 그림 1에서는 VMM(virtual machine monitor)이라고도 하는 하이퍼바이저라는 소프트웨어 계층에서 가상화 구성 요소를 제공하는 것을 볼 수 있다. 이 계층에서는 하나의 물리적 시스템에서 여러 운영 체제(및 해당 애플리케이션)를 동시에 실행할 수 있는 기능을 제공한다. 하이퍼바이저 위에는 가상 머신이라는 오브젝트가 있으며, 이 오브젝트에는 운영 체제, 애플리케이션 및 구성이 포함되어 있다. 선택적으로 장치 에뮬레이션을 하이퍼바이저에서 또는 VM으로서 제공할 수 있다. 마지막으로, 가상화의 새로운 동적 특성과 가상화의 새로운 기능을 관리하기 위한 새로운 관리 스키마가 필요하다. 이 관리는 서버에서의 로컬 관리를 통해 계층에서 가장 적합하며, 뿐만 아니라 상위 레벨 인프라 관리를 가상 환경에 대한 전체적인 조정 기능을 통해 상위 레벨 인프라 관리에도 적합하다.


그림 1. 클라우드에 있는 노드의 핵심 요소
핵심 클라우드 요소의 계층 보기를 보여 주는 아키텍처 도표

공유 스토리지를 사용하는 실제 네트워크에 그림 1과 같은 노드를 여러 개 배치하고, 전체 인프라에 대한 관리를 조정하고, 캐싱 및 필터링을 통해 수신 연결(개인용 또는 공용 설정에 상관 없이)에 대한 프론트엔드 로드 밸런싱을 제공하면 클라우드라는 가상 환경이 완성된다. 그림 2에서는 이 새로운 구조를 보여 준다. 이 구조에서 유휴 시스템은 추가 계산 성능이 필요할 때까지 유휴 상태로 유지될 수 있으며(전력 효율 향상) VM을 통해 각 노드의 개별 로드에 따라 노드간 밸런스가 조정되며, 심지어는 동적으로도 조정된다.


그림 2. 클라우드 컴퓨팅 인프라
실제 네트워크/스토리지부터 시작하여 사용자/인터넷까지의 클라우드의 다양한 상호 작용 계층을 보여 주는 다이어그램

클라우드의 기본 아키텍처를 정의했으므로 이제 동적 클라우드 인프라를 구축할 때 오픈 소스가 적용되는 부분을 살펴보자.


핵심 오픈 소스 기술

Linux 환경에서는 클라우드 소프트웨어 패키지의 가상화, 관리 및 대규모 통합을 위한 가상화된 인프라에 중점을 둔 개발의 물결이 나타나고 있다. 먼저 개별 노드 레벨에서의 오픈 소스를 살펴본 다음 인프라 레벨에서 어떤 변화가 나타나고 있는지 살펴보자.

하이퍼바이저

노드 레벨에서의 클라우드의 기본은 하이퍼바이저이다. 가상화는 요구사항이 아니다. 그렇다고 하더라도 가상화가 확장 가능하고 전력 효율이 높은 아키텍처에 필요한 기능을 제공한다는 데는 논쟁의 여지가 없다. 수많은 오픈 소스 가상화 솔루션이 있기는 하지만 Linux 운영 체제를 하이퍼바이저로 변환하는 두 가지 주요 솔루션으로는 Linux KVM(Kernel VirtualMachine)과 Lguest가 있다. KVM은 프로덕션 환경에 전개된 공식 하이퍼바이저 솔루션이며, Lguest는 Linux VM만을 실행하는 Linux 중심적 솔루션이지만 커널에 통합되어 있으며 더 많이 사용되고 있다.

Linux를 하이퍼바이저로 변환하는 솔루션 외에 게스트 VM 중심적 방법을 사용하는 다른 솔루션도 있다. UML(User-Mode Linux)은 게스트 Linux 커널을 수정하여 하이퍼바이저 확장 없이 다른 Linux 운영 체제에서 실행되도록 수정하는 또 다른 접근법이다. 대부분의 사용자가 수정되지 않은 커널을 실행하기를 원하기 때문에 전체 가상화 솔루션(예를 들어, KVM)이 주로 사용된다.

이 UML 접근법도 많이 사용되고 있기는 하지만 가상화된 하드웨어(예를 들어, 콘솔, 가상 디스크 및 네트워크)가 필요하다.

장치 에뮬레이션

하이퍼바이저는 여러 운영 체제에서 CPU를 공유할 수 있는 방법을 제공한다(CPU 가상화). 하지만 전체 가상화를 제공하기 위해서는 VM에 대해 전체 환경이 가상화되어야 한다. 시스템 또는 플랫폼 에뮬레이션은 여러 가지 방법으로 수행될 수 있지만 수많은 하이퍼바이저를 지원하는 인기 있는 오픈 소스 패키지로는 QEMU가 있다. QEMU는 완전한 에뮬레이터이자 하이퍼바이저이다. 하지만 KVM에서는 장치 에뮬레이션을 위해 사용자 공간에 있는 별도의 프로세스로서 QEMU를 사용한다(그림 1 참조). QEMU의 한 가지 흥미로운 특징은 QEMU가 디스크 에뮬레이션을 제공하기(QCOW 형식을 통해) 때문에 스냅샷 및 라이브 VM 마이그레이션 등의 다른 고급 기능도 제공한다는 것이다.

KVM에서는 커널 2.6.25 이후부터 I/O 가상화 성능을 최적화하는 방법으로 virtio를 사용하고 있다. Virtio는 게스트의 후크를 사용하여 의사 가상화된 드라이버를 하이퍼바이저에 도입하여 실제 장치에 가까운 수준의 성능을 제공하는 방식으로 최적화를 수행한다. 이 방법은 이 목적을 위해 운영 체제를 수정할 수 있는 경우에만 사용할 수 있지만 Linux 하이퍼바이저에서 실행되는 Linux 게스트 시나리오에서 사례를 찾아볼 수 있다.

오늘날에는 virtio와 QEMU가 함께 작동하므로 사용자 공간에 있는 Linux 게스트와 QEMU 에뮬레이터 간에 에뮬레이트된 장치 트랜잭션을 최적화할 수 있다.

가상 네트워킹

VM이 실제 서버에 통합됨에 따라 플랫폼에 대한 네트워킹 요구가 높아지고 있다. 하지만 VM의 모든 네트워킹을 플랫폼의 실제 계층에서 처리하는 대신 로컬 통신 자체를 가상화할 수 있다. VM 간의 네트워크 통신을 최적화하기 위해 가상 스위치가 도입되었다. vSwitch는 실제 스위치처럼 동작하지만 플랫폼 내에 가상화되어 있다(그림 3 참조). 이 그림에서는 VM에 연결된 가상화된 인터페이스(VIF)가 가상 스위치를 통해 실제 인터페이스(PIF)와 통신한다.


그림 3. Open vSwitch와 가상 및 실제 인터페이스
실제 도메인, 실제 인터페이스, 가상 인터페이스 및 VM이 아래부터 차례대로 쌓여 있는 계층을 보여 주는 다이어그램

오픈 소스는 매우 흥미로운 솔루션인 Open vSwitch를 사용하여 이 문제를 효과적으로 해결하고 있다. vSwitch는 가상 환경을 위한 가상 스위치를 제공할 뿐만 아니라 실제 플랫폼을 통합하고 VLAN(virtual local area network), 우선순위 기반 QoS(Quality of Service), 트렁크 및 하드웨어 가속 지원(예를 들어, 단일 루트 IOV(I/O virtualization) 네트워크 어댑터) 등의 엔터프라이즈 레벨 기능도 제공할 수 있다. Open vSwitch는 현재 2.6.15 커널에서 사용할 수 있으며 다양한 Linux 기반 가상화 솔루션(Xen, KVM, VirtualBox) 및 관리 표준(RSPAN(Remote Switched Port Analyzer), NetFlow 등)을 지원한다.

VM 도구 및 기술

VM은 운영 체제, 루트 파일 시스템 및 구성의 집합체이므로 도구 개발을 위한 공간으로 충분히 사용할 수 있다. 하지만 VM 및 도구의 모든 가능성을 실현하려면 VM 및 도구를 조립할 수 있는 이식 가능한 방법이 필요하다. 최신 방법인 OVF(Open Virtualization Format)는 유연하고, 효율적이며, 이식 가능한 VM 구조이다. OVF는 VM의 구성을 정의하는 XML 랩퍼로 가상 디스크 이미지를 랩핑하며, 이 구성에는 네트워킹 구성과 프로세서 및 메모리 요구사항을 비롯하여 이미지 및 플랫폼 요구사항을 추가로 정의하기 위한 확장 가능한 다양한 메타데이터가 포함된다. OVF의 주요 기능은 하이퍼바이저에 관계 없이 VM을 분배할 수 있는 이식성이다.

VMI(VM image)를 관리하고 다른 형식으로 변환하는 기능을 제공하는 수많은 유틸리티가 있다. VMware의 ovftool은 VMI 변환을(예를 들어, VMDK(VMware Virtual Disk Development Kit) 형식을 OVF로 변환) 위해 사용할 수 있는 유용한 도구이다. 이 도구를 비롯한 여러 도구는 VMI가 있을 때만 유용하다. 하지만 실제 서버를 VMI로 변환하려는 경우에는 어떤 도구를 사용해야 할까? 이 목적에 적합한 Clonezilla라는 유용한 도구를 사용할 수 있다. 이 도구는 원래 재해 복구를 위한 디스크 복제 도구로 개발되었지만 실제 서버 인스턴스를 VM으로 변환하여 가상화된 인프라에 쉽게 전개할 때도 사용할 수 있다. OVF 형식이 채택되면서 변환 및 관리를 위한 여러 다른 도구(예를 들어, libvirt 기반의 유틸리티)가 개발되었거나 개발 중에 있다.

로컬 관리

이 기사에서는 두 가지 관점에서 관리를 살펴본다. 이 섹션에서는 플랫폼 관리를 설명하며, 다음 섹션에서는 상위 레벨의 인프라 관리에 대해 설명한다.

Red Hat에서는 libvirt 라이브러리를 플랫폼 가상화(하이퍼바이저 및 VM)를 관리하기 위한 API로 도입했다. Libvirt가 흥미로운 이유는 수많은 하이퍼바이저 솔루션(KVM 및 Xen 등)을 지원하고 수많은 언어(예를 들어, C, Python 및 Ruby)에 대한 API 바인딩을 제공하기 때문이다. Libvirt는 플랫폼 하이퍼바이저와의 직접적인 인터페이스를 통해 API를 더 큰 인프라 관리 솔루션으로 확장하는 "최종 관리 단계"를 제공한다. Libvirt를 사용하면 VM을 쉽게 시작하고 중지할 수 있을 뿐만 아니라 API를 사용하여 플랫폼 간에 VM을 마이그레이트하는 등의 고급 작업도 수행할 수 있다. 또한 libvirt 기반의 쉘인 virsh도 사용할 수 있다.


인프라 오픈 소스 기술

지금까지 가상화된 노드 레벨의 오픈 소스 솔루션 중 일부를 살펴보았으며 이제부터는 이 인프라를 지원하는 다른 몇 가지 오픈 소스 애플리케이션을 살펴보자. 이 기사에서는 세 가지 범주를 살펴본다. 처음 두 범주는 앞에서 설명한 솔루션을 보완하는 인프라 레벨 기술이다. 세 번째 범주는 손쉽게 전개할 수 있도록 모든 기능을 모아 놓은 통합 솔루션으로 구성되어 있다.

I/O 기술

확장 가능하고 밸런스가 잘 잡힌 웹 아키텍처를 개발하기 위해서는 백엔드 기능을 구현한 서버 간의 웹 트래픽에 대한 밸런스를 조정하는 기능의 역할이 중요하다. 수많은 로드 밸런싱 솔루션이 있지만 최근에 Yahoo!에서 Traffic Server라는 솔루션의 소스를 공개했다. Traffic Server는 세션 관리, 인증, 필터링, 로드 밸런싱 및 라우팅을 비롯하여 클라우드 인프라에 필요한 수많은 기능을 하나의 패키지로 묶어 놓았다는 점이 흥미롭다. Yahoo!에서는 처음에 이 제품을 Inktomi로부터 인수한 이후 제품을 확장하여 오픈 소스로 공개했다.

인프라 관리

대규모 인프라 관리(많은 하이퍼바이저 및 추가 VM 관리)는 수많은 방법으로 수행할 수 있으며, 그 중에서 동일한 플랫폼(libvirt)을 기반으로 개발된 일반적인 두 가지 솔루션이 있다. oVirt 패키지는 소수의 VM에서부터 시작하여 수백 개의 호스트에서 실행되는 수천 개의 VM으로 확장할 수 있는 오픈 VM 관리 도구이다. Red Hat에서 개발한 oVirt 패키지는 일반적인 관리 기능과 함께 자동화된 클러스터링 및 로드 밸런싱 기능도 지원하는 웹 기반 관리 콘솔이다. oVirt 도구는 Python 언어로 작성되었다. 마찬가지로 Red Hat에서 libvirt를 기반으로 개발한 VirtManager는 웹 기반인 oVirt와는 달리 GTK+ UI를 사용하는 애플리케이션이다. VirtManager는 훨씬 더 많은 그래픽 기능을 제공하며(실시간 성능 및 자원 활용을 위해) 원격 VM에 대한 전체 그래픽 콘솔로 사용할 수 있는 VNC 클라이언트 뷰어를 포함하고 있다.

그리고 Puppet은 데이터 센터 인프라(클라우드)를 위해 설계된 또 하나의 오픈 소스 패키지이다. 가상화된 인프라만을 위해 설계된 것은 아니지만 이 제품을 사용하면 피어 운영 체제의 세부 사항을 추상화하여 대형 인프라 관리를 단순화할 수 있다. 이 작업은 Puppet 언어를 사용하여 수행된다. Puppet은 많은 수의 서버에 대한 관리 작업을 자동화하는 데 이상적이며 오늘날 널리 사용되고 있다.


통합 IaaS 솔루션

다음과 같은 오픈 소스 패키지에서는 모든 필수 기능(가상화, 관리, 인터페이스 및 보안 포함)을 단일 패키지로 통합하는 포괄적인 방법을 사용한다. 이러한 패키지를 서버 및 스토리지 네트워크에 추가하면 유연한 클라우드 컴퓨팅 및 스토리지 인프라(IaaS)를 구축할 수 있다. 이러한 플랫폼에 대한 자세한 정보는 참고자료를 참조하기 바란다.

Eucalyptus

Eucalyptus(Elastic Utility Computing Architecture for Linking Your Programs to Useful Systems)는 클라우드 컴퓨팅 인프라를 구축하는 데 사용되는 가장 인기 있는 오픈 소스 패키지 중 하나이다. 이 패키지의 독특한 점은 인터페이스가 Amazon의 클라우드 컴퓨팅 인터페이스인 Amazon EC2(Amazon Elastic Compute Cloud)와 호환된다는 점이다. 또한 Eucalyptus에는 Amazon의 클라우드 스토리지 인터페이스인 Amazon S3(Amazon Simple Storage Service)와 호환되는 Walrus가 포함되어 있다.

Eucalyptus는 하이퍼바이저를 위해 KVM/Linux 및 Xen을 지원하며 클러스터 관리를 위한 Rocks 클러스터 배포판을 포함하고 있다.

OpenNebula

OpenNebula는 Universidad Complutense de Madrid에서 개발한 또 하나의 흥미로운 오픈 소스 애플리케이션이다(Apache 라이센스를 따름). OpenNebula는 개인용 클라우드 구조를 지원할 뿐만 아니라 하이브리드 클라우드라는 아이디어도 지원한다. 하이브리드 클라우드는 개인용 클라우드 인프라와 공용 클라우드 인프라(예를 들어, Amazon)를 결합하여 확장 수준을 한층 더 높일 수 있다.

OpenNebula는 Xen, KVM/Linux 및 VMware를 지원하며 libvirt와 같은 요소를 사용하여 관리 및 검사 작업을 수행한다.

Nimbus

Nimbus는 과학적 컴퓨팅에 중점을 둔 또 하나의 IaaS 솔루션이다. Nimbus를 사용하면 Amazon EC2에서 제공하는 것과 같은 원격 자원을 임대한 후 로컬에서 이들 자원을 관리할 수 있다(구성, VM 전개, 모니터링 등). Nimbus는 Globus.org의 일부인 Workspace Service 프로젝트의 변형이며, Amazon EC2를 이용하여 Xen과 KVM/Linux를 지원한다.

Xen Cloud Platform

Citrix에서는 Xen을 IaaS 플랫폼에 통합했으며, 이때 Open vSwitch 등의 다른 오픈 소스 기능을 통합하는 동안 Xen을 하이퍼바이저로 사용했다. Xen 솔루션의 흥미로운 장점은 Kensho 프로젝트의 표준 기반 관리(OVF, DTMF(Distributed Management Task Force), CIM(Common Information Model) 및 VMAN(Virtualization Management Initiative) 포함)에 중점을 두고 있다는 점이다. Xen 관리 스택은 SLA 보증과 함께 비용 정산(charge-back)을 위한 세부 기준도 지원한다.

OpenQRM

마지막으로 소개하지만 중요한 솔루션인 OpenQRM은 데이터 센터 관리 플랫폼을 분류된다. OpenQRM은 가상화된 전체 데이터 센터를 관리하는 단일 콘솔로 써드파티 도구를 통합할 수 있는 플러그인 가능한 아키텍처로 구성되어 있다. OpenQRM은 고가용성을 위한 지원(중복성 활용)이 통합하고 KVM/Linux, Xen, VMware 및 Linux VServer를 포함한 다양한 하이퍼바이저를 지원한다.


추가 주제

클라우드 및 가상화 도메인에서 오픈 소스가 주도적인 역할을 담당하고 있는 분야에 대해 할 말은 많지만 이 기사에서는 오늘날 사용할 수 있고 인기가 높은 가시적인 일부 솔루션만을 간략히 소개했다. 자신의 고유한 요구사항에 따라 개별 구성 요소부터 클라우드를 구축하려거나 처음부터 작동하는 종합적인 솔루션을 원하든지 상관 없이 오픈 소스를 통해 모든 것을 구할 수 있다. 여기에서 설명한 솔루션을 포함한 여러 솔루션에 대한 자세한 정보를 보려면 참고자료를 참조하기 바란다.


참고자료

교육

제품 및 기술 얻기

토론

필자소개

M. Tim Jones는 임베디드 펌웨어 아키텍트이자 Artificial Intelligence: A Systems Approach, GNU/Linux Application Programming(현재 2판), AI Application Programming(현재 2판) 및 BSD Sockets Programming from a Multilanguage Perspective의 저자이다. 정지 위성을 위한 커널 개발에서 시작해 임베디드 시스템 아키텍처와 네트워크 프로토콜 개발에 이르기까지 다양한 분야에 대한 공학 지식을 가지고 있다. 콜로라도주 롱몬트 소재의 Emulex Corp.에서 컨설턴트 엔지니어로 활약하고 있다.

재해복구 시장 변화시키는 ‘클라우드 기반 DR 시스템’
제품 ·서비스 속속 출현, 저렴한 비용이 장점
2012년 05월 01일 (화) 10:10:41 고수연 기자going@itdaily.kr

재해복구(DR) 시장이 서서히 변하고 있다. 대기업의 전유물로 여겼던 DR이 중소·중견기업(SMB)까지 확대하고 있는 것이다. 이러한 시장 변화의 중심에는 클라우드가 있다. 최근 클라우드를 적용해 솔루션이나 서비스 형태로 DR 구축이 가능해지면서 필요성은 인정하면서도 높은 비용 때문에 구축에 나서지 못했던 중소중견업체들이 재해복구 시스템에 관심을 보이고 있다. 클라우드를 적용한 재해복구는 클라우드의 장점을 DR에 융합시킨 것으로 저렴한 비용 외에도 네트워크 회선만 있으면 장소에 구애받지 않고 사용할 수 있으며, 사용한 만큼만 비용을 지불한다는 장점이 있다.
이미 지난해 11월 IBM은 재해복구 솔루션인 ‘스마트클라우드 매니지드 백업 서비스’와 가상화 및 클라우드 환경에서 비즈니스 연속성을 위한 재해복구서비스인 ‘스마트클라우드 VSR 서비스’를 선보였다. 또한 호스트웨이와 팔콘스토어가 합작으로 클라우드 재해복구 서비스인 ‘플렉스 클라우드 데이터 프로텍터’를 출시했다. 호스트웨이는 이 서비스가 SMB를 겨냥하겠다고 공언한 만큼 DR 시장이 대기업에서 중소·중견기업으로까지 범위가 확대되는 촉매제로 작용할 것으로 전망된다.


재해복구(DR)는 지진을 비롯하여 태풍, 테러, 화재 등 예기치 못한 대규모 재난재해로 인한 피해를 최소화하고 지속적인 기업 활동을 보장하고자 하는 시스템이다.

정보화 시대가 가속화되면서 재난재해로 인한 피해는 물리적인 인프라보다 복구가 어려운 ‘정보 데이터’분야에서 훨씬 더 크게 나타나고 있다. 중요한 산업의 경우 재해복구 시스템 구축을 의무화하고 있는 것도 이런 이유 때문이다. 우리나라도 금융기관의 재해복구 시스템 구축을 의무화했고 이미 구축한 경우도 전산센터의 업무 중 80% 이상을 복구하도록 센터의 실효성 기준을 높였다.

하지만 실제 운영 능력이나 인력 등은 아직 부족한 실정이고, 정보 관리의 필요성을 인지하고 있더라도 실제 실행에 옮기는 곳은 많지 않은 것이 현실이다. 사실 DR은 대기업들에게는 막대한 금액을 투자해야하는 대규모 프로젝트로 인식되고 있으며, 중견 기업들은 비용 때문에 가장 중요한 정보만 최소한으로 안전하게 보호하기 위한 도구로 활용하고 있다. 많은 기업들은 DR에 대한 과감한 투자보다는 사고가 없기를 바라면서 최소한의 조치만을 취하는 경향이 있다. 통계상으로 보더라도 자연재해는 각종 재난재해 중 10% 미만으로 극히 미비하기 때문에 이런 형상을 더욱 부추기고 있다.

게다가 IT 발전 속도에 비해 IT 예산이 턱없이 부족한 것도 DR을 소홀히 하는 한 원인이 되고 있다. 예산절감을 요구하는 환경에서 막대한 비용이 들어가는 DR을 구축하기란 쉽지 않은 일이다.


재해복구에 날개를 달아준 ‘클라우드’

클라우드가 DR의 한계를 단숨에 바꿔 놓았다. 그동안 막대한 예산을 투입하지 않는 한 DR센터를 구축하는 것은 쉽지 않았다. 그러나 DR가 클라우드를 만남으로 인해 고객사가 직접 DR센터를 구축해야 하는 고민을 덜어주게 됐다.

IBM이 내놓은 스마트클라우드 매니지드 백업 서비스는 고객의 데이터센터에 백업 인프라를 설치하고, 프라이빗 클라우드 형태로 제공하는 백업 서비스인 ‘온사이트 데이터 보호’와 IBM의 데이터센터를 이용하는 퍼블릭 클라우드 형태의 백업 서비스인 ‘원격 데이터 보호’로 구별되어 다양한 고객에게 솔루션을 제공한다.

또한 호스트웨이가 팔콘스토어와 공동으로 내놓은 ‘플렉스클라우드 프로텍터’는 클라우드 기반 DR 서비스로 분당 야탑동 호스트웨이 IDC 내부에 서버를 두고 월과금 형태로 저렴하게 이용할 수 있게 했다.


일본 지진과 농협 전산망 장애로 DR 관심 고조

기업들의 IT 투자가 위축되면서 앞으로 일어날 수 있는 재해, 재난, 사고에 대비해 미리 투자하는 보험 성격의 DR 시스템은 투자 우선순위에서 밀리는 경우가 많았다. 그러나 커뮤니케이션의 활성화, 고객 관리의 중요성 증대에 따른 24시간 무정지 서비스가 비즈니스에 필수적인 요소인 만큼 재해의 발생을 예상하고, 이에 대비하는 전산 인프라를 구축하는 것 또한 IT 및 비즈니스에 매우 중요한 일이다.

기업 입장에서 재난에 의한 비즈니스 중단 및 이를 복구하기 위하여 소요되는 시간과 인력 등의 리소소를 감안한다면 언제 닥칠지 모르는 재난재해에 대비하기 위한 IT 인프라는 업무연속을 위한 기본적인 요건이라 할 수 있다.

<이하 상세 내용은 컴퓨터월드 5월 호 참조>

Visual studio 2010 에서 소스파일을 UTF-8 로 자동변환

 

[출처] http://nving.tistory.com/66

hack/etc

Visual C++ 10은 기본적으로 ASCII 인코딩으로 파일을 만든다. (VC#은 기본적으로 유니코드 파일로 생성된다는거 같다)

근데 이게 git와 함께 쓰이면 gitweb 등에서 한글이 깨져보이는 현상이 발생하는데 이는 gitweb이 UTF-8 인코딩을 기본 인코딩으로 보여주기때문이다.

이를 위해 소스파일들의 인코딩을 변경해줘야되는데 메뉴의 File -> Advanced Save Options에서 Encoding을 UTF-8로 변경해야하는 번거로움을 감수해야한다.

그만좀 보고싶다.


프로그래머의 힘은 자동화다. 언제까지 이 노가다를 할텐가?
자동화 방법은 다음과 같다.

매크로 에디터에 들어가 EnviromentEvents에서 코드 맨 윗부분의 Module들을 Imports 하는 부분에

Option Strict Off

Option Explicit Off

Imports System

Imports EnvDTE

Imports EnvDTE80

Imports EnvDTE90

Imports EnvDTE90a

Imports EnvDTE100
Imports System.Diagnostics '여기까지 기존 모듈

Imports System.IO

위와 같이 System.IO 모듈을 포함시키고 Automatically generated code, do not modify 다음에 다음 코드를 붙여넣고 저장한다.


Sub MakeUTF8File(ByVal path As String)

Dim input As New FileStream(path, FileMode.Open)

 

'Check BOM

Dim isUTF8 As Boolean = (input.ReadByte = &HEF And input.ReadByte = &HBB And input.ReadByte = &HBF)

input.Close()

 

If (Not isUTF8) Then

Dim s As String

s = File.ReadAllText(path, System.Text.Encoding.Default)

File.WriteAllText(path, s, System.Text.Encoding.UTF8)

End If

End Sub

 

Public Sub DocumentEvents_DocumentSaved(ByVal Document As EnvDTE.Document) Handles DocumentEvents.DocumentSaved

Dim path As String = Document.FullName

MakeUTF8File(path)

End Sub


'이 핸들러는 왠만하면 빼는게 좋다. 라이브러리 파일들을 디버깅 차원에서 열때 자동으로 바꿔버리면 조금 곤란할듯

Public Sub DocumentEvents_DocumentOpening(ByVal path As String, ByVal flag As Boolean) Handles DocumentEvents.DocumentOpening

MakeUTF8File(path)

End Sub

이제 다음과 같은 상황에서 파일이 UTF-8 인코딩으로 자동변환이 된다.

1. 파일을 열때
2. 파일을 생성 (생성할때 자동으로 열리니까)
3. 파일을 저장할때

이제 UTF-8 BOM과 함께하는(?) 코딩을 하면 된다.

추가내용1:
@waan26
님이 알려주신 새파일 생성시 UTF-8을 적용하는 좀 더 좋은 방법이 있다. (C++ Class 생성에는 안먹힌다)
위 방법을 사용시 새 파일을 생성하면 파일 변환이 변환됬다는 메세지 박스가 무조건 뜨게 되는데 (파일 로딩 후에 변환을 시도하는거 같다)
새 파일 생성시 무조건 UTF-8 파일을 생성하는 좀 더 깔끔한 해법으로 다음과 같은 방법이 있다.

1. Visual Studio 설치된 위치(보통 C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcprojectitems)에 간다.
2. hfile.h, newc++file.cpp 과 같은 템플릿 파일의 인코딩을 UTF-8로 변경한다
3. 그 뒤로는 항상 UTF-8 파일이 생성된다.


추가내용2: 클래스 템플릿을 따로 만드는 방법도 있다. 이건 좀 있다가 해보고 적어야지 [...]

P.S. 그건 그렇고 코드를 이쁘게 보여줘야되는데.. ( --)

지식라이브러리 : 전문가 칼럼
전문가칼럼 보기
 
제목 스마트 컨버전스가 미래를 바꾼다
분류 Etc 조회수 83
작성일자 2012.08.10 출처 월간마이크로소프트웨어
첨부파일 작성자 dbguide

급변하는 ICT 산업의 미래

스마트 컨버전스가 미래를 바꾼다

ICT가 타 산업과 결합하는 것을 ICT 융합이라고 한다. ICT는 이미 ICT 산업을 넘어서 모든 산업 분야에서 혁신의 근간이 되고 있다. 이에 세계 각국은 ICT 융합 기술 개발을 미래의 주요 과제로 삼고 기존 전통 산업에 ICT 기술을 접목시켜 새로운 고부가가치 산업으로 육성 중 이며, 이는 생산, 고용, 부가가치 창출이 가능한 신성장 동력이 되고 있다.

최근 화두인 ICT 융합은전통 기술과는 다른 여러 속성을 가지고 있다. ICT 융합은 두 가지 이상의 기술이 혼합돼 전혀 새로운 제3의 기술을 창조한다. 기존 기술의 특성을 그대로 온전하면서 새로운 기술의 특성이나 장점을 가미해 ICT 융합이 완성되기도 하나 이는 진정한 ICT 융 합이라고 할 수 없다. ICT 융합은 일상적으로 화학적 결합이라 말하는 새로운 창출과 출현을 가져와야만 의미가 있으며, 새로운 가치 창출이 요구된다.

과거의 기술과 달리 오늘날 ICT 융합은 고객과 사용자의 가치를 증진시켜야만 기술로서의 존재 의의가 있다. 많은 기술의 실패 사례는 연구실에서 기술 또는 엔지니어 위주의 기술만을 강조한 데 원인이 있다. 이런 문제점을 인식해 새로운 ICT 융합이 사용 자 관점에서 가치를 창출할 수 있어야 한다.

또한 ICT 융합은 현재의 추세와 새로운 트렌드를 반영해야 한 다. ICT 융합이 일상을 혁신적으로 변화시키고 새로운 가치 창 출을 하기 위해서는 거시적인 환경의 변화, 개방과 참여라는 고 객의 변화, 트렌드 반영이 필수적이다. 더불어 ICT 융합은 다른 산업의 기초가 되고 기존 산업의 가치 사슬을 변화시켜야 한다.



ICT 융합 서비스


미래의 지식공유와 지능정보화 사회에서는 시공간을 넘는 가 상공간, 가상현실이 실현될 것이다. 미래 산업 사회에서의 ICT 융합은 모든 기술의 신경 조직과 같은 인프라 기술로서 존재하 며, 끊임없는 ICT 내의 융합이나 타 산업과의 융합으로 새로운 산업 기술을 탄생시킬 것이다. ICT가 타 산업과의 결합을 ICT 융합이라고 한다. ICT는 이미 ICT 산업을 넘어서 타 산업과의 융합으로 새로운 시너지를 창출할 혁신의 바탕이 되고 있다. 이 에 따라 세계 각국은 ICT 융합을 미래의 주요 과제로 삼고 있다. 기존 전통 산업에 ICT 기술을 접목해 고부가가치 산업을 창출시 키고 생산, 고용, 부가가치 창출이 가능한 새로운 산업군을 개척 하고 있다. ICT 융합은 산업적인 면을 넘어 인간의 삶의 질을 높 이기 위한 필수 기술로 인식되고 있다.

● 자동차 ICT : 자동차 반도체, 임베디드 SW, 텔레매틱스, 인간-차량인
터페이스(HMI), 자동주행 제어 가능한 지능형 서비스 등
● 조선 ICT : 설계, 생산, 첨단운항 기술의 국산화, 선박 유지보수 글로 벌화 등
● 건설 ICT: 실시간 모니터용 다용도 센서, 건설자동화 로봇, 소재기술, 물류 공정 관리 기술, 에너지 절감, 친환경, 지능화 기술 등
● 섬유 ICT : 지능형 스마트 섬유 개발, 자가 발전 텍스타일 등
● 국방 ICT : 통신·관제 시스템 핵심 기술 개발, UAV(무인항공기), 감 시정찰체계(ISR), 지휘통제체계(C4I), 정밀타격체계(PGM)의 보안, 감시, 정찰 등 ● 항공 ICT : 레이더 설비, 관제, 비행, 지능형 공항, 레이더 소자, 센서 및 송수신 모듈, 위치정보송수신 단말기 ● 의료 ICT : 차세대 의료용 진단기기 기술개발, 바이오기술을 응용한 진단검사용 지능형 로봇, 혈관치료용 마이크로 로봇, 헬스케어 로봇 기술 개발 등 고부가 바이오 메디컬 신산업 ● 교육 ICT : 온라인 미디어와 통합학습 콘텐츠의 저작 및 관리를 위한 개방형 플랫폼 개발, 협력 학습이 가능한 다목적 실감 융합 학습 시스템

앞선 분야 외에도 ICT 제품 간 유망기술의 융합이 활발해지 고 있다. HD급 실시간 영상인식과 실시간 외국어 자동번역이 가능한 통신, 스마트 기기, 디스플레이, 고성능 반도체 기술이 융합된 ICT 제품이 출현하고 있다. 이를 구현하는 데는 필수적 인 SoC는 SET(Single-Electron Transistor), CNT(탄소 나노 튜브는 나노구조를 지닌 탄소 동소체), CMOS logic 소자 및 optical interconnect, Tera-Flash/MRAM/PRAM 및 THz Cash/RTD SRAM 등이며, 향후 초저소비 전력, Tera-bit급 집 적도, 초고속 트랜지스터로 진보가 이뤄질 것이다. 유무선통신 네트워크 서비스 간 융합이 이미 전개되며 향후 통신 인프라로서 신경조직과 같은 역할을 담당할 것으로 전망된다.



스마트 모바일과 ICT 융합


스마트 모바일과 ICT 융합은 ICT를 근간으로 단순화되고 기 업과 소비자의 즉각적인 경험이 가능하게 변화하고 있다. 구글의 Michael Lock은 가장 성공적인 앱은 쉽고 단순하지만 소비자로 하여금 선택하게 만들 것이라고 강조했다. 보다 쉬운 ICT를 이 끌 핵심 요소로 클라우드 컴퓨팅, 스마트 모바일 인터넷, 사용자 인터페이스, 도구 및 표준의 단순화가 꼽히고 있다.

예컨대 HTML5는 새로운 스마트 모바일의 웹 표준으로 양질 의 콘텐츠 제공을 비롯해 서비스와 앱의 성장을 주도할 것으로 전망된다. 10억 개 이상의 오픈소스를 활용한 프로그래밍으로 혁신적인 앱과 비즈니스 개발의 장이 마련되고 스마트 모바일 기 술의 지능화가 가속화되며 지능화로 인한 데이터의 폭증으로 저 장된 데이터의 분석을 통해 미래의 위험을 예측·관리할 수 있는 기술에 대한 필요성이 증대되고 있다.

개인-데이터-문맥 간 데이터를 결합하고 사회적 차원의 정보 가 추가됨에 따라 가까운 미래에 대한 예측력을 제고하는 분석 기술로 진화할 것이다. 현재 문맥인식 컴퓨팅은 공개된 개인정보 에 기반해 맞춤형 광고를 제공하는 폐쇄적 구조에서 향후 개인정 보에 SNS 등록정보와 같은 사회적 차원의 정보를 활용해 문맥 을 통해 개인이 행동까지 실시간 예측할 수 있는 개방형 구조로 발전할 것이다.

가트너는 소셜 네트워크 분석(사회적 영향력, 가치네트워크 분석), 문맥 분석(행동, 위치 분석), 센티멘트 분석(순위, 인기, 평판 등)을 통합한 새로운 형태의 분석 기술이 등장할 것으로 예 측하고 일반 대중이 기업 내부 인력을 대체하는 현상, 제품이나 지식의 생성과 서비스 과정에 대중이 참여함으로써 문제를 해결 할 수 있는 크라우드소싱(Crowdsourcing)의 등장을 예고했다.

ICT 융합을 통해 생태계간 융합을 이끌 핵심 트렌드는 EaaS(Everything as a Service), ICT 인프라의 상품화, 콘텐츠 중심의 ICT 생태계 구축, 시스템과 시설의 결합 등이다. Eaas는 SaaS, PaaS, IaaS 등 데이터 저장소의 부하를 줄여 XaaS에 대 한 광범위한 수용이 이뤄지며 경쟁이 가속화될 것이다.

또한 ICT 기술은 나노, 생명공학, 환경 기술, 항공우주 기술, 문화 기술 등의 기술과 융합하면서 다양한 기술, 제품 및 서비스 를 창출하고 있고, 그 속도도 점점 가속되고 있다. ICT 산업과 바 이오, 나노 등 타 산업간의 융합으로 경쟁력을 갖춘 제품이 개발 되고 블루 오션이 창출될 것으로 예상되고 있다.



ICT 융합의 미래


정치, 경제, 기술, 사회 등 모든 분야에서 변화의 폭과 속도가 커질수록 미래 예측은 더 힘들다. 그러나 그 중요성 역시 증대하 고 미래는 정해진 것이 아니라 가능성의 한 부분으로, 어떻게 설 계하고 준비하느냐에 따라 달라질 수 있다. 그러므로 미래의 가 능성에 대해 상상력과 희망을 가지고 넓고, 다양하고, 멀리 준비 하는 시각이 필요하다.

융합이 ICT, 나노 기술, 생명공학 기술 등 신기술간 또는 이들 과 기존 제품, 산업, 학문, 문학 간의 상승적인 조합과 결합을 통 해 경제·사회적 파급 및 미래 수요 충족을 위한 창조적 가치를 창출하는 기술로서 새로이 정의됨에 따라 기존의 ICT, 나노 기 술, 생명공학 기술 등 첨단 신기술간 물리·화학적 결합의 의미 로까지 확장되고 있다. 새로운 정의에 의한 범위 확장은 ICT 융 합에서 그 진면목을 확인할 수 있다.

지금 세계 경제는 글로벌화(WTO), 인구구조의 변화(고령화), 환경·자원 희소화, ICT 기술의 진보, 규제 지형의 변화(FTA) 란 다섯 가지 글로벌 트렌드에 크게 영향을 받고 있다. 이런 글로 벌 트렌드가 야기하는 다양하고 새로운 기술 니즈에 대한 정확한 분석을 바탕으로 한 미래기술이야 말로 격동의 시기에 파괴되지 않고 극적인 방향전환의 기회를 제공할 것이다.

이런 관점에서 미래 유망 ICT 융합기술은 우리의 강점을 살려 경제적 난국을 타파할 수 있는 최선의 선택이자 기회로 성큼 다 가오고 있다.









출처 : 월간마이크로소프트 7월호

제공 : DB포탈사이트 DBguide.net

 

 

 

포커스

 

 

 

 

 

게임 가상화 기술 동향

 

 

홍강운* 윤장우** 류원***

 

컴퓨터 게임은 저장 매체 유통에서 PC통신/인터넷을 통한 배포로의 진화를 거쳐 원격에서 실행 되는 게임영상을 게이머에게 전달하는 스트리밍 게임 서비스로 발전하고 있다. 하지만, 사용자 입 력에 대한 높은 반응성, 고화질 게임영상에 대한 욕구, 가변적인 네트워크 상태에서도 서비스 품질 유지, 비용 효율적인 서비스 시스템 구축 및 운용 등에 대한 스트리밍 게임 서비스의 한계를 극복 해야 한다[1]. 이에 대한 발전된 형태로서 대규모 클라우드 서버에서 게임코드를 실행시키고 하드 웨어 기반 호스트 렌더링을 이용하여 네트워크를 통해 고화질의 영상을 제공하는 클라우드 기반 게임 스트리밍 기술이 제시되고 있다. 플랫폼 독립적인 사용자 환경 지원, 동적 자원할당을 위한 가상화 환경 구축 등의 클라우드 기술을 활용할 수 있고, 통신망의 넓은 대역폭과 인코딩 및 스트 리밍 기술의 발전을 통해 지연시간을 개선할 수 있다. 본 고에서는 클라우드 기반 게임 스트리밍 서비스의 게임 가상화 기술을 정리하고 관련 업계 동향을 살펴보고자 한다.

 

 

I. 서 론

 

 

 

Ⅰ. 서 론

 

Ⅱ. 게임 가상화란

 

Ⅲ. 게임 가상화 요소기술 Ⅳ. 국내외 기술 동향

V. 결 론

 

 

 

 

 

 

 

 

* ETRI 가상화플랫폼연구팀/선임연구원

** ETRI 가상화플랫폼연구팀/팀장

*** ETRI 스마트스크린융합연구부/부장

클라우드 컴퓨팅은 사용자가 네트워크

에 접속할 수 있다면 시간과 장소에 구애 받지 않고 데이터 공유와 협업이 가능할 뿐 아니라 비용 효율적인 컴퓨팅 자원으로 활용할 수 있어, 웹하드에 개인 데이터를 저장하는 것부터 다국적 기업의 직원간 협 업에 이르기까지 광범위하게 활용되고 있다. 이와 함께, 초고속 인터넷 및 고사양의 개인 스마트 단말의 급속한 보급, 고품질 멀티미디어 서비스로의 소비자 기호 변화, 인터넷을 이용한 혁신적이고 개방적인 콘 텐츠 유통방식 등에 따라 원격에서 원하는 멀티미디어 콘텐츠를 제공하는 클라우드

 

 

 

기반 비디오 서비스가 빠르게 확산되고 있다.

최근에는 컴퓨터 게임 유통에도 활용되어 비디오 서비스에 한정하지 않고 게임 응용 및 컴퓨팅 자원 가상화를 통해 고품질의 게임을 제공하는 클라우드 기반 게임 스트리밍 서비스가 개발되기에 이르렀다. 본 고에서는 클라우드 기반 게임 스트리밍 서비스에서 필 요로 하는 게임 가상화 기술을 요소기술별로 정리하고 관련 업계 동향을 살펴보고자 한다.

 

 

II. 게임 가상화란

 

게임 가상화란 클라우드 기반의 게임 서비스를 제공하는데 필요한 구성요소인 게임 서 버, 전송 네트워크, 게임 단말 각각의 기능을 추상화함으로써 전체적인 서비스의 flexibility, efficiency, elasticity 향상을 추구하는 기술이다. 즉, 비용 효율적인 클라우드 기반의 게임 스트리밍을 제공하려면 다양한 게임 서비스 플랫폼과 많은 수의 가입자를 수용하기 위해

서버, GPU, 네트워크, 입력장치를 추상화하는 게임 가상화 기술이 필요하다.

 

 

 

CLINET

SERVER

 

 

 

 

 

 

 

 

 

Rendering

Keyboard/ Mouse

 

Decoding

 

NIC

 

IP Network

 

NIC    CPU

 

 

 

Encoding    Rendering

 

 

Capturing

 

 

(그림 1) 게임 가상화 개념도[2]

 

 

 

III. 게임 가상화 요소기술

 

 

1. 서버 가상화

 

서버 가상화 기술은 단일 물리 서버를 다수의 가상 서버로 분할하여 가상 서버별로 서 로 다른 운영체제와 응용을 실행시킬 수 있도록 하는 기술이다. 가상 서버들은 가상 머신 모니터(Virtual Machine Monitor)의 중재를 통해 서버의 가상화된 자원을 공유한다.

 

 

 

Control Plane Software

User

Software

User

Software

User

Software

 

 

 

Guest OS (XenoLinux)

Xeno-Aware

Device Drivers

Guest OS (XenoLinux)

Xeno-Aware

Device Drivers

Guest OS (XenoBSD)

Xeno-Aware

Device Drivers

Guest OS (XenoXP)

Xeno-Aware

Device Drivers

 

 

 

Domain0

Control

Interface

Virtual

X86 CPU

Virtual

Phy mem

 

Virtual network

 

Virtual blockdev

 

 

 

H/W(SMP x86, phy mem, enet, SCS/IDE)

 

(그림 2) 서버 가상화 개념도[10]

 

보통 단일 서버에서 독립적인 다수의 웹 서버를 운용하는데 사용되는 서버 가상화 기

술은 서버 자원의 efficiency, utilization, flexibility 를 극대화시킬 수 있다. 또한, 더 적은 수의 물리 서버를 사용하여 서비스에 필요한 성능을 제공할 수 있어 하드웨어 유지보수와 운용에 소요되는 비용을 감소시킬 수 있다.

서버 가상화는 컴퓨팅 자원의 추상화 수준에 따라 ISA(Instruction Set Architecture) 수준 가상화, HAL(Hardware Abstraction Layer), OS, 라이브러리, Programming Language 의 수준 가상화로 분류될 수 있다. ISA 수준 가상화는 QEMU, Bochs 와 같이 게스트 아 키텍처의 인스트럭션을 호스트 아키텍처에 대응되는 인스트럭션으로 변환하는 에뮬레이터 형태로 구현된다. OS 수준 가상화는 Jail, Linux Kernel-mode 가상화와 같이 가상화된 시 스템 콜 인터페이스를 통해 구현되고, 라이브러리 수준 가상화는 WINE, WABI 와 같이 응용에서 호출하는 API 를 후킹하는 방식으로 구현되며, Programming Language 수준 가상화는 JVM, Microsoft .NET CLI 와 같이 응용으로 가상화를 구현하는 방식이다. 마지 막으로, HAL 수준 가상화는 가상 머신 모니터가 하드웨어와 OS 사이에서 구현되어 OS 에 가상화된 하드웨어를 제공하고, ISA 수준 가상화 에뮬레이터에 비해 인스트럭션 변환 시의 지연시간을 감소시킬 수 있어 대부분의 상용 가상화 솔루션이 이 방식을 따른다[8]. 하드웨어 기반 가상화 기술은 가상화된 플랫폼의 기능을 가속함으로써 기존 소프트웨

어 기반 가상화 솔루션의 유연성과 견고성을 향상시킨다. 구체적으로, 게스트 OS 와 VMM 사이의 플랫폼 제어 전송 속도를 향상시키고 VMM 이 특정 I/O 장치를 특정 게스트 OS

 

 

 

에 안전하게 할당할 수 있도록 하며 어댑터 기반 가속화를 통해 가상화 네트워크 최적화

를 지원한다.

 

 

2. GPU 가상화

 

GPU 가속기능을 활용한 가상 데스크탑 환경(VDI)은 최근 은행, 기업, 공공기관에서 스마트워크 환경으로서 활용되고 있으며 모바일 환경에서도 빠르게 확산되고 있다. 따라 서, GPU 가상화를 통해 GPU 가속기능을 효율적으로 호스트 렌터링에 적용하는 것이 중 요하다. 또한, VDI 외에 고성능을 요구하는 게임이나 CAD 와 같은 그래픽 분야에서도 VM-to-GPU consolidation ratio 를 개선하여 경제성을 높이기 위해 GPU 가상화를 필요 로 한다[2],[7].

GPU 를 가상화 하기 위해서는 여러 제조사의 서로 다른 제품에 대해 공통 GPU 형상 을 정의하기 위해 GPU 를 모델링할 필요가 있다. 하지만, GPU 는 구조상 매우 복잡할 뿐 만 아니라 GPU 세대마다 급격하게 변화하는 양상을 띠고 있어 반가상화 형태로 GPU 가 상화를 구현하는 것이 효율적이다.

GPU 가상화는 에뮬레이션 모드와 Pass-Through 모드로 구분된다. 에뮬레이션 모드 는 게스트로부터 전달된 Graphic API Call 이 호스트나 하이퍼바이저에서 동작하는 그래 픽 드라이버를 통해 GPU 에 전달되는 방식이고, Pass-Through 모드는 CPU 의 가상화

지원기능을 통해 VM 내 그래픽 드라이버와 GPU 가 연결되는 방식이다.

 

 

 

Management Domain

VM

GPU Application

VM

GPU Application

 

 

 

Traditional Device Drivers

 

Mgmt Extension

 

GPU Backend

CUDAAPI GPU Frontend Guest OS

CUDAAPI GPU Frontend Guest OS

 

 

Hypervisor

 

General purpose Multicores

 

NVIDIA GPUs    Traditional Devices

 

 

(그림 3) GPU 가상화 개념도[9]

 

 

 

반가상화에서는 VM 과 하이퍼바이저 간의 직접 연동을 위해 게스트 OS 의 소스코드

를 수정할 필요가 있다. 하지만, Microsoft Windows 와 같이 상용 OS 의 소스코드 변경이 불가능한 경우에는 게스트 OS 로서 사용할 수 없는 심각한 문제가 발생한다. 대신, 게스트 OS 의 소스코드 수정없이 바이너리 코드를 변환하여 사용할 수도 있지만, 반가상화 방식 보다도 성능 오버헤드가 증가하는 단점이 있다. 또한, CPU 제조사들은 Pass Through 모 드를 지원함으로써 반가상화와 바이너리 코드 변환 과정을 없앨 수 있다.

 

 

3. 입력장치 가상화

 

입력장치 가상화는 게임 서버와 단말이 물리적으로 떨어져있는 환경에서 원격 단말에 연결된 게임 패드와 같은 입력장치로부터의 키 눌림 등의 정보를 게임 서버로 전달하여 처리하기 위해 필요한 기술이다. 입력장치 가상화는 USB 리디렉션 방식으로 구현되며 입 력정보는 리모트 디스플레이 프로토콜의 가상 채널을 통해 전달된다.

 

 

(그림 4) VMware Architecture[13]

 

 

IV. 국내외 기술 동향

 

 

1. 서버 가상화

 

가. VMware

 

VMware 는 하드웨어 에뮬레이션 방식으로 x86 기반 가상화 솔루션을 출시한 이후 지속적으로 기술을 주도해 왔으며, 호스트 기반 가상화(Workstation, VMware Server)와 하이퍼바이저 기반 가상화(ESX Server) 솔루션을 갖추고 있다.

VMware 의 VirtualCenter 는 가상화 환경 관리 도구로서 가상머신 관리 및 권한설정, 서버 간 부하 통합, 가상머신의 동적 이동을 위한 VMotion, 하드웨어 자원의 동적 이동을 위한 DRS 을 제공한다. VMware 는 게스트 OS 로서 Windows 95/98/NT/2K/2003/XP/

3.1/MS-DOS6, Linux(Red Hat, SUSE, Mandrake, Caldera), FreeBSD(3.x, 4.0-4.9), Novell(NetWare 4, 5, 6)을 지원하며, 관리자는 VirtualCenter 를 이용하여 수천 개의 Windows NT, Windows 2000, Windows 2003, Linux, NetWare 서버를 관리할 수 있다.

 

 

(그림 5) Xen Architecture[18]

 

 

 

나. Xen

 

Xen 은 오픈소스로서 일반적으로 오픈 소스 프로젝트는 폐쇄형 제품과 상충될 수 있으 나 Intel, AMD, RedHat, Novell, Microsoft 등의 벤더들이 Xen 을 지원한다[5].

Xen 의 하이퍼바이저는 소프트웨어 추상화 계층으로서 CPU 스케줄링과 메모리 분할을 수행한다. 하지만, 네트워크 장치나 저장 장치에 대한 I/O 명령은 관여하지 않는다. I/O 자 원 접근에 대해서는 Domain0 가상머신에서 게스트 가상머신과의 통신을 통해 처리된다. 일반 가상머신인 DomainU 은 하이퍼바이저나 Domain0 를 통해 하드웨어에 접근할 수 있다. 또한, DomainU 는 반가상화와 전가상화로 구분되며, 반가상화는 게스트 OS 커널이 수정되어야 하고 CPU 와 메모리 자원은 hypercall 을 통해 하이퍼바이저에서 처리된다. 전가상화는 게스트 OS 커널이 수정될 필요가 없고 게스트 OS 와 하드웨어 사이의 통신을

가로채는 작업이 필요하며 Intel-VT 나 AMD-V 기능을 지원하는 CPU 가 필요하다[10].

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

(그림 6) Hyper-V Architecture[10]

 

 

다. Microsoft Hyper-V

 

Hyper-V 는 서버 가상화를 위한 관리도구를 제공한다. 주요기능으로는 64 비트 기본 Hypervisor 기반 가상화, 32 비트 및 64 비트 가상 컴퓨터를 동시에 실행하는 기능, 단일

 

 

 

프로세서 및 다중 프로세서 가상 컴퓨터, 실행 중인 가상 컴퓨터의 상태, 데이터 및 하드

웨어 구성을 캡처하는 가상 컴퓨터 스냅숏, 대용량 가상 컴퓨터 메모리 지원, VLAN(가상 LAN) 지원, MMC(Microsoft Management Console) 관리 스냅인, 스크립팅 및 관리를 위해 문서화된 WMI(Windows Management Instrumentation) 인터페이스가 있다.

또한, Windows Server 2008 R2 의 Hyper-V 에는 실시간 마이그레이션, 동적 가상 컴퓨터 저장소, 향상된 프로세서 지원, 향상된 네트워킹 지원 기능이 추가되었다.

 

라. Intel 과 AMD 의 하드웨어 기반 가상화 기술 지원

 

Intel 의 VT 기술은 Intel 프로세서 기술에 기반한 서버 플랫폼의 모든 측면을 지원하 며, FlexMigration 과 FlexPriority 가상화 기술이 적용되어 워크로드 마이그레이션을 지 원하고, Direct I/O 를 위한 가상화 기술(VT-d)을 통해 데이터 이동 속도를 향상시키고 가 상화 성능 오버헤드를 감소시킨다. 또한, 연결성을 위한 가상화 기술(VT-c)을 이용하여 CPU Utilization 과 시스템 지연시간을 감소시킨다[4],[11].

AMD 의 AMD-V 기술은 현재 버전 2.0 으로서 x86 시스템 아키텍처의 하드웨어 확장 을 통해 x86 명령어 세트에 대한 가상화를 확장하여 소프트웨어 솔루션보다 효율적인 가

 

(그림 7) Nvidia VGX Software Architecture[17]

 

 

 

상머신 생성 및 실행 기능을 제공하고, 가상머신 간의 효율적인 전환을 통한 빠른 애플리

케이션 응답성을 제공하여 하드웨어 기반으로 가상머신의 메모리를 관리하며 가상머신의 실시간 마이그레이션이 가능하다. 또한, 하이퍼바이저를 통하지 않고 가상머신에서의 장치 에 대한 Directed I/O 가상화 성능을 향상시킨다[3].

 

 

2. GPU 가상화

 

학술논문이나 발표자료가 아닌 전시회에서 공개되는 클라우드 기반 게임 스트리밍 업 체의 시연을 보는 것만으로는 해당 업체에서 GPU 가상화 이슈를 어떻게 해결하고 있는 지를 파악하기 어렵다. 단지, 서버 가상화 기술이나 Remote Display Protocol 기술 현황 등을 통해 GPU 를 가상화하는지 아닌지 정도를 짐작할 수 있고, 이를 통해 업체마다 서 로 다른 기술로 GPU 가상화 이슈에 대응하고 있음을 알 수 있다.

이러한 상황에서 Nvidia 는 최근 GPU Technology Conference 2012(GTC2012)에서 주목할 만한 솔루션을 공개하였다. 이 행사에서 Nvidia 는 향후 로드맵을 제시하였으며, 기존 GPU 의 적용 분야를 그래픽과 컴퓨팅에서 클라우드로 확장하는 것과 클라우드 지원 을 위한 클라우드 GPU 기술을 소개하였다. 특히, Nvidia GPU 의 클라우드 기술을 활용하 기 위한 공통 소프트웨어 구조인 VGX 소프트웨어 구조는 단순 응용부터 디자인까지 다 양한 VDI 분야에 적용될 수 있는 GPU 가상화 방안을 제시한다. VGX 소프트웨어 구조에 서 VGX Hypervisor 는 서로 다른 VM 간에 GPU 를 공유할 수 있도록 중재하는 기능을

 

 

(그림 8) Nvidia GeForce GRID[12]

 

 

 

 

(그림 9) Nvidia Cloud GPU Ecosystem

 

담당한다. VGX Hypervisor 는 Nvidia VGX 에 의존적인 기능이므로 VMWare, Citrix 등

은 Nvidia 와 협력하여 VGX Hypervisor 를 기존 서버 가상화 솔루션에 포함시킬 예정이다.

Nvidia 는 이에 그치지 않고 VGX 구조를 적용하여 GeForce GRID 라는 라이선스 기 반의 GPU 가상화 솔루션을 제공할 예정이다. 이를 통해 Nvidia 는 서버 OEM 업체, 서버 가상화 솔루션 업체와 함께 가상화 서비스를 제공하고, 게임 개발사, 클라우드 게임 미들 웨어 업체와 함께 클라우드 서비스를 제공하는 사업모델을 구축한다.

 

 

3. 입력장치 가상화

 

Microsoft RDP 7.1 with RemoteFX 는 RemoteFX USB Redirection 기능에서 마우스,

 

(그림 10) HP RGS 의 입력장치 가상화[15]

 

 

 

키보드 등의 USB 장치를 RDP 의 가상 채널을 통해 호스트로 리디렉션한다. 호스트에서

는 장치에 대한 드라이버를 구동하기 때문에 통일성 있는 인터페이스를 제공할 수 있고 클라이언트에서는 장치 드라이버를 구동할 필요가 없이 장치를 사용할 수 있다[19]. 또한, Citrix HDX 는 Plug-n-Play 기능에서 클라이언트에 연결된 MP3 플레이어, 디지털 카메 라, 스마트폰, 스캐너 등 주변 장치에 대한 연결을 가상화된 환경에서 제공한다. 그 외에 도 Quest EOP, VMware PCoIP, HP RGS 등의 프로토콜에서도 원격의 USB 장치에 대한 연결성을 지원한다.

 

 

4. 클라우드 기반 게임 스트리밍 기술 동향

 

게임 스트리밍 서비스의 선도기업인 OnLive 는 Full Game 서비스 제공을 목적으로 서 버에서 게임을 구동하여 렌더링을 수행한 후 데이터를 인코딩하여 사용자에게 전송하고 단말에 전용 클라이언트를 설치하여 게임 서비스를 제공한다. 서비스 지연시간을 줄이기 위해 자체 하드웨어 가속기를 이용하고 서버와 단말 간의 거리를 제한함으로써 네트워크 지연시간을 개선한다.

최근 소니에 피인수된 GaiKai 는 서버 상에서 비디오 게임을 실행시키며, 영상과 음향 을 동시에 인코딩하여 인터넷을 통해 사용자에게 전달한다. 사용자가 별도의 다운로드 없 이 정해진 시간에 게임의 데모를 직접 체험해보고 구매 결정을 도와주는 것을 목적으로

(그림 11) OnLive 솔루션[16]

 

 

 

(그림 12) LG 전자 스마트 TV 에서 시연중인 GaiKai 솔루션[6]

 

한다. GTC2012 의 keynote 연설에서 게임 스트리밍 기술을 시연하기도 했던 GaiKai 는

LG 전자 및 삼성전자 등 스마트 TV 제조업체와 협력하여 스마트 TV 사용자에게 가상 게 임 콘솔을 제공하는 솔루션을 개발중에 있다.

 

 

V. 결 론

 

인프라 환경과 서비스에 대한 개인 선호도가 변화함에 따라 클라우드 컴퓨팅 기술은 비디오 서비스에 활용되는 것에 그치지 않고, 높은 반응성, 고화질, 비용 효율적인 게임서 버 구축/운용이 요구되는 게임 스트리밍 서비스에도 적용되고 있다. 따라서, 게임 스트리 밍 서비스에서는 서버, GPU, 입력장치 등에 대한 게임 가상화 기술이 중요하다. 이에 본 고를 통해 클라우드 기반 게임 스트리밍 서비스를 위한 게임 가상화 기술에 대해 살펴보 았다.

 

 

<참 고 문 헌>

 

[1] 임충규, 김성수, 김경일, 원종호, 박창준, "클라우드 컴퓨팅 기반의 게임 스트리밍 기술 동향," ETRI, 전자통신동향분석, 제 26 권 제 1 호, 2011. 2.

[2] 권원옥, 김학영, "고성능 VDI 프로토콜 기술 동향," 정보통신산업진흥원, 주간기술동향, 통권 1546 호,

2012. 5. 16.

[3] 김진미, 안창원, 정영우, 박종근, 고광원, 변일수, 우영춘, "차세대 컴퓨팅을 위한 가상화 기술," ETRI, 전자통신동향분석, 제 23 권 제 4 호, 2008. 2.

[4] 류승완, 이석준, 최고봉, 오동옥, "가상화 기술의 동향과 전망," 정보통신산업진흥원, 주간기술동향, 통 권 1342 호, 2008. 4. 16.

[5] "서버 가상화 기술 동향," 정보통신산업진흥원, 주간기술동향, 통권 1302 호, 2007. 6. 27.

 

 

[6] NVIDIA. 지포스 그리드 클라우드 게이밍 플랫폼 런칭. http://www.nvidia.co.kr/object/cloud-

gaming-geforce-grid-press-20120517-kr.html

[7] Micah Dowty, Jeremy Sugerman, "GPU virtualization on VMware's hosted I/O architecture,"

ACM SIGOPS Operating Systems Review, v.43 n.3, July 2009.

[8] S. Nanda and T. Chiueh, "A Survey on Virtualization Technologies," Technical Report ECSL- TR-179, SUNY at Stony Brook, Feb. 2005.

[9] Vishakha Gupta, Ada Gavrilovska, Karsten Schwan, Harshvardhan Kharche, Niraj Tolia, Vanish Talwar, Parthasarathy Ranganathan, "GViM: GPU-accelerated virtual machines," Proceedings of the 3rd ACM Workshop on System-level Virtualization for High Performance Computing, Nuremburg, Germany, March 31-31, 2009, pp.17-24.

[10] Paul Barham, Boris Dragovic, Keir Fraser, Steven Hand, Tim Harris, Alex Ho, Rolf Neugebauer, Ian Pratt, Andrew Warfield, "Xen and the art of virtualization," Proceedings of the nineteenth ACM symposium on Operating systems principles, October 19-22, 2003, Bolton Landing, NY, USA

[11]R. Uhlig, G. Neiger, D. Rodgers, A. L. Santoni, F. C. M. Martins, A. V. Anderson, S. M. Bennett, A.

Kagi, F. H. Leung, L. Smith, "Intel virtualization technology," Computer, Vol.38, No.5, May 2005, pp.48-56.

[12] F. Diard. Accelerating Cloud Graphics. http://developer.download.nvidia.com/GTC/PDF/ GTC2012/PresentationPDF/S0627-GTC2012-Accelerated-Cloud-Graphics.pdf.

[13] VMware. Virtualization Overview. http://www.vmware.com/pdf/virtualization.pdf

[14]Microsoft. Hyper-V Architecture. http://technet.microsoft.com/en-us/library/cc768520(BTS.10). aspx

[15] HP. Advantages and implementation of HP Remote Graphics Software. http://h20331.www2.hp.com/Hpsub/downloads/RGS_WP_April09.pdf

[16] OnLive gaming in the cloud has gone live. http://www.geekwithlaptop.com/onlive-gaming-in- the-cloud-has-gone-live

[17] W. Wade. Graphics in the Cloud. http://developer.download.nvidia.com/GTC/PDF/GTC2012/ PresentationPDF/S0254-GTC2012-Graphics-Cloud.pdf.

[18] Red Hat. Xen. http://docs.redhat.com/docs/en-US/Red_Hat_Enterprise_Linux/5/html/Virtualization/

glos.html

[19] Microsoft. Microsoft RemoteFX. http://technet.microsoft.com/en-us/library/ff817578(v=ws.10). aspx

 

 

 

* 본 내용은 필자의 주관적인 의견이며 NIPA 의 공식적인 입장이 아님을 밝힙니다.

HTML5로 자신만의 3D 엔진을 만들자

[출처] http://sixrevisions.com/web-development/how-to-create-an-html5-3d-engine/

How to Create an HTML5 3D Engine

You're probably aware by now that HTML5 is game-changing. In particular, with the HTML5 canvas, there's been an outpouring of HTML5 3D JavaScript engines such as three.js released to enhance the rudimentary 2D HTML5 API. After all, 3D graphics is a lot cooler than 2D graphics, right?

It's probably fair to say that if you were to create a full-blown 3D engine–complete with three dimensional matrix transformations, point objects, plane objects, shading, ray tracing, and other spatial computations–it would be quite difficult.

But what if we wanted to create an optimized, barebones 3D JavaScript engine that supports translations and rotations? How hard would it be?

What if I tell you that we can create our own simple 3D JavaScript engine with just 40 lines of code?

This guide will provide a simple and straightforward JavaScript engine that enables HTML5 3D renderings that can be used in web animation, games, and so forth.

Understanding 3D Projections

Before creating our own 3D engine, we should first understand how the illusion of 3D space is created on a 2D screen. These illusions are called 3D projections. 3D projections map points onto a two-dimensional plane. In our case, the three-dimensional points define an object we wish to render, and the two-dimensional plane is the computer screen.

As you can see in the following image, we can create a three-dimensional projection of a cube on a two-dimensional plane by drawing three irregular quadrilaterals – the top, left, and front quadrilaterals.

Plane Projections with Ellipses

Unfortunately, calculating three-dimensional projections can be quite complex to code. How can we simplify it?

Imagine looking down at a rotating rectangular plane. Its four corners would lie on the outline of a perfect circle, whose radius is equal to half the distance from opposite corners of the rectangle.

Now imagine if we were to tilt the plane in 3D space. What happens? This imaginary circle suddenly becomes an ellipse, whose height is less than its width.

This means that we could create a simple 3D projection by creating planes whose corners reside along the edges of an ellipse.

If we are defining the rotation of the plane with an angle, theta, the 3D projection calculations suddenly become quite simple!

Any point on our three-dimensional plane can be defined with the following two equations which describe a point along the edges of an ellipse:

x = A * cos(theta)

y = B * sin(theta)

where A is half of the ellipse width, and B is half of the ellipse height.

A Simple 3D Engine

If our engine simply creates planes in 3D space, we can build multiple cross-sectional planes that frame a 3D object that we wish to render.

Sample 3D Object Rendering

Cross-Sectional Planes Diagram

View demo

This particular 3D shape was created by generating three cross-sectional planes – the top, center, and bottom plane. These imaginary planes provide us with all of the points we need to render the 3D object using the HTML5 Canvas API.

By creating a straightforward function that can generate, translate, and rotate these cross-sectional planes, we have effectively created a simple 3D engine.

Here is the code for our HTML5 3D engine:

// This simple 3D engine was provided by www.Html5CanvasTutorials.com

// for the purpose of creating 3D HTML5 renderings

function Plane(centerX,centerY, planeLength, planeWidth, planeTilt, planeTheta) {

this.centerX = centerX;

this.centerY = centerY;

this.planeLength = planeLength;

this.planeTheta = planeTheta;

 

var lastPerspectiveX = null;

var lastPerspectiveX2 = null;

var planeNextCornerAngle = 2*Math.asin(planeWidth/planeLength);

 

this.rotate = function(newTheta) {

    planeTheta = newTheta - planeNextCornerAngle/2;

}

 

this.translate = function(newCenterX, newCenterY) {

    centerX = newCenterX;

    centerY = newCenterY;

}

 

this.generate = function() {

    var ovalLength = planeLength;

    var ovalWidth = ovalLength * planeTilt;

 

    var perspectiveX = (ovalLength / 2) * Math.cos(planeTheta);

    var perspectiveY = (ovalWidth / 2) * Math.sin(planeTheta);

    var perspectiveX2 = (ovalLength / 2) * Math.cos(planeTheta + planeNextCornerAngle);

    var perspectiveY2 = (ovalWidth / 2) * Math.sin(planeTheta + planeNextCornerAngle);

 

    this.topLeftX = (perspectiveX *1) + centerX;

    this.topLeftY = (perspectiveY * -1) + centerY;

    this.bottomRightX = (perspectiveX*-1) + centerX;

    this.bottomRightY = (perspectiveY*1) + centerY

    this.topRightX = (perspectiveX2 *1) + centerX;

    this.topRightY = (perspectiveY2 *-1) + centerY;

    this.bottomLeftX = (perspectiveX2 *-1) + centerX;

    this.bottomLeftY = (perspectiveY2 *1) + centerY;

}

}

This simple 3D engine is completely free to use and modify so long as you keep the commented credits in your code. Enjoy!

SQL to Mongo Mapping Chart

MySQL executable

Oracle executable

Mongo executable

mysqld

oracle

{{mongod}}

mysql

sqlplus

mongo

MySQL term

Mongo term/concept

database

database

table

collection

index

index

row

BSON document

column

BSON field

join

embedding and linking

primary key

_id field

group by

aggregation

MongoDB queries are expressed as JSON (BSON) objects.  The following chart shows examples as both SQL and in Mongo Query Language syntax. 

The query expression in MongoDB (and other things, such as index key patterns) is represented as JSON (BSON). However, the actual verb (e.g. "find") is done in one's regular programming language; thus the exact forms of these verbs vary by language.  The examples below are Javascript and can be executed from the mongo shell.

SQL Statement

Mongo Statement

CREATE TABLE USERS (a

Number, b Number)

implicit; can also be done explicitly with

db.createCollection("mycoll")

  

ALTER TABLE users ADD ...

implicit

  

  

INSERT INTO USERS VALUES(3,5)

db.users.insert({a:3,b:5})

  

  

SELECT a,b FROM users

db.users.find({}, {a:1,b:1})

SELECT * FROM users

db.users.find()

SELECT * FROM users WHERE age=33

db.users.find({age:33})

SELECT a,b FROM users WHERE age=33

db.users.find({age:33}, {a:1,b:1})

SELECT * FROM users WHERE age=33 ORDER BY name

db.users.find({age:33}).sort({name:1})

SELECT * FROM users WHERE age>33

db.users.find({age:{$gt:33}})

SELECT * FROM users WHERE age!=33

db.users.find({age:{$ne:33}})

SELECT * FROM users WHERE name LIKE

"%Joe%"

db.users.find({name:/Joe/})

SELECT * FROM users WHERE name LIKE

"Joe%"

db.users.find({name:/^Joe/})

SELECT * FROM users WHERE age>

33 AND age<=40

db.users.find({'age':{$gt:33,$lte:40}})

SELECT * FROM users ORDER BY name DESC

db.users.find().sort({name:-1})

SELECT * FROM users WHERE a=1 and b='q'

db.users.find({a:1,b:'q'})

SELECT * FROM users LIMIT 10 SKIP 20

db.users.find().limit(10).skip(20)

SELECT * FROM users WHERE a=1 or b=2

db.users.find( { $or : [ { a : 1 } , { b : 2 } ] } )

SELECT * FROM users LIMIT 1

db.users.findOne()

SELECT order_id FROM orders o, order_line_items li WHERE li.order_id=o.order_id AND li.sku=12345

db.orders.find({"items.sku":12345},{_id:1})

SELECT customer.name FROM customers,orders WHERE orders.id=

"q179" AND orders.custid=customer.id

var o = db.orders.findOne({_id:"q179"});

var name = db.customers.findOne({_id:o.custid})

  

  

SELECT DISTINCT last_name FROM users

db.users.distinct('last_name')

SELECT COUNT(*y)

FROM users

db.users.count()

SELECT COUNT(*y)

FROM users where AGE > 30

db.users.find({age: {'$gt': 30}}).count()

SELECT COUNT(AGE) from users

db.users.find({age: {'$exists': true}}).count()

  

  

CREATE INDEX myindexname ON users(name)

db.users.ensureIndex({name:1})

CREATE INDEX myindexname ON users(name,ts DESC)

db.users.ensureIndex({name:1,ts:-1})

  

  

EXPLAIN SELECT * FROM users WHERE z=3

db.users.find({z:3}).explain()

  

  

UPDATE users SET a=1 WHERE b='q'

db.users.update({b:'q'}, {$set:{a:1}}, false, true)

UPDATE users SET a=a+2 WHERE b='q'

db.users.update({b:'q'}, {$inc:{a:2}}, false, true)

  

  

DELETE FROM users WHERE z=

"abc"

db.users.remove({z:'abc'});

More examples, specifically aggregation examples, here

See Also

+ Recent posts