병렬처리에 대한 개념은 대학에서 처음 접했지만 실제로 이를 사용해보기까지는 상당한 시일이 필요했던 것 같습니다. 제가 프로그램을 처음 배울 당시만 하더라도 병렬 프로그래밍을 하기 위해서는 아이다(AIDA)와 같은 특별한 언어를 사용해서만 가능했기에 접하기도 쉽지 않았을 뿐만 아니라 이를 구현하기 위해서는 하드웨어의 지원이 선행적으로 필요한데 PC의 경우에는 CPU가 이를 지원하지 않았기 때문에 꽤 오랫동안 대중화되지 못한 개념이었습니다. 그러다가 이러한 병렬처리에 대한 개념이 보다 대중화되기 시작한 데에는 인텔(Intel)의 중앙처리장치(CPU)가 큰 역할을 했는데, 이와 더불어 병렬처리를 쉽게 프로그래밍할 수 있는 언어의 등장 또한 매우 중요한 역할을 했다고 봅니다. 아마도 그 중 가장 큰 역할을 한 것에 대해 많은 분들이 아마도 자바(Java)의 등장을 손꼽지 않을까 합니다.

자바는 초기 버전부터 쓰레드 (Thread)를 지원해서 기초적이지만 가상적인 병렬처리를 지원하기 시작했는데, 최근에 와서는 다중 중앙처리장치를 지원하는 수준에까지 발전을 해서 진정한 의미로의 병렬처리를 지원하고 있다고 할 수 있을 것 같습니다. 통상적으로 병렬처리는 멀티 쓰레딩 (Multi-Treading) 방식과 멀티 프로세싱 (Multi-Processing) 방식으로 나뉠 수 있는데 전자의 경우에는 하나의 중앙처리장치에서 처리되는 반면 후자의 경우에는 여러 개의 중앙처리장치에서 별도로 프로그램이 운영될 수 있도록 할 수 있기에 진정한 의미의 병렬처리의 시작이라고 볼 수 있을 것 같습니다. 이러한 병렬처리는 최근에는 더욱 더 발전을 해서 여러 개의 서버를 이용하는 클러스터(Cluster) 개념까지 확대되고 있는데, 이 중 이에 가장 적극적으로 활용되고 있는 OS가 펭귄 그림으로 대표되는 리눅스(Linux)라고 생각됩니다.

아무래도 여러 대의 서버가 필요한 경우에는 상당한 비용이 발생하게 되는데 이를 저렴하게 운영하기 위해 많은 다양한 시도들이 수행되었습니다. 그 중에서 값싼 PC들을 이용하여 서버를 구축하고 이를 연결하는 방식이 가장 상당히 저렴했기 때문에 시장에서 성공할 수 있었고, 이 개념을 더욱 발전시킨 구글(Google)과 같은 기업의 등장으로 이 방식이 더욱 많은 이들의 관심을 갖게 된 방식이라고 생각됩니다. 물론, 구글이 사용하는 방식을 이용해보기 위해서는 구글과 관련된 업무를 하거나 구글에 입사를 해야 하는데, 모든 사람들이 그렇게 할 수는 없으므로 그와 가장 유사한 방식으로 처리되는 소프트웨어를 사용해 보는 것이 대안이 될 수 있을 것 같습니다. 그러한 대안으로 최근에는 가장 많이 회자되고 있는 것은 하둡 (Hadoop)이라는 시스템인데, 구글의 시스템과 매우 유사한 구조를 가지고 있어 병렬처리를 배우는데 좋은 역할을 하고 있다고 생각합니다.

개인적으로 병렬처리에 직접적으로 관여를 하게 된 것은 시스템 엔지니어에서 좀 더 업무영역을 넓혀 시스템 관련 컨설턴트로 활동하면서인데, 그 중에서도 금융권과 관련된 업무를 수행하면서 병렬처리에 대한 일을 본격적으로 배우게 된 것 같습니다. 통상적으로 대규모 데이터를 처리하는 업무는 통신이나 금융권에 많이 발생하게 되는데, 보통 일반적인 제조업에서 발생하는 연간 데이터 량 이상의 데이터를 한 달 이내에 발생시키는 경우가 많아 이 분야들에서 병렬처리는 상당히 중요하다고 생각됩니다. 물론, 이러한 프로그램 방식 자체가 배우기도 매우 어렵고 아직은 안정성에 문제가 있는 경우도 있어 금융권 등에서 아직은 꺼려하고 있는 것처럼 보이나, 제가 보기에는 반드시 도입을 해야 하는 솔루션이라고 생각합니다.

제가 관여한 프로젝트의 경우에는 대략 1개월 동안 사용된 데이터를 이용하여 각 상품별 손익분석을 하는 시스템을 구축하는 것이었는데, 이 업무를 기존의 메인 프레임에서 COBOL로 작성을 할 경우 약 20일 이상의 시간이 소요되어 기존에는 분석이 거의 불가능한 수준이었으나, 새로 시스템을 구축하면서 병렬처리방식의 프로그램 기법을 도입하여 기술적으로는 2일 이내 업무적으로는 3일 이내에 처리가 가능할 정도로 구현이 되었습니다. 덕분에 재무 마감이 된 뒤 대략 일주일 이내에 개별 상품별 손익분석을 볼 수 있는 리포트들을 업무 담당자들이 볼 수 있었는데, 아마도 병렬처리 프로그램의 개념을 도입하지 않고서는 도저히 나타날 수 없는 성과가 아닐까 생각됩니다.

당시에 저는 개발이 아닌 시스템 엔지니어로서 참여를 했기에 개발을 담당하셨던 분과 많은 이야기를 나누면서 튜닝작업을 진행습니다. 서로의 경험을 살려 모니터링을 하면서 관련 프로그램들의 메모리 사용량 및 디스크 사용량 변화에 대한 정보를 제공함으로써 담당 개발자 분이 상당한 튜닝 효과를 만들어내었는데, 그러한 결과를 만들어내는데 일조를 했다는 것에 대해 당시 엔지니어로서 큰 보람을 갖게 되었던 것 같습니다. 나중에 제가 다시 IT 분야로 돌아가게 된다면 아마도 관심을 가지고 집중할 분야가 될 것 같은데, 아직까지는 한국에서는 미지의 세계라고 생각하기에 시간을 가지고 꾸준히 노력을 한다면 충분히 경쟁력을 가질 수 있는 분야라고 생각합니다.

댓글을 달아 주세요

  1. Favicon of http://jeminency.tistory.com BlogIcon Eminency  수정/삭제  댓글쓰기

    중앙처리장치란게 CPU를 말씀하시는 거 아닌가요? 멀티 쓰레드도 다중 CPU를 쓰는데요.
    멀티 프로세스가 멀티 쓰레드보다 오래 된 개념입니다.

    2009.08.26 09:36
    • Favicon of https://mbastory.tistory.com BlogIcon 5throck  수정/삭제

      지금은 멀티쓰레드도 다중 CPU를 지원하는 것으로 알고 있습니다만, 제가 배울 때만 하더라도 멀티쓰레드가 다중 CPU를 지원하지 못했던 것으로 알고 있습니다. 아마도 제가 인텔 기준으로 이야기 드려서 그런 것 같기는 한데, 그 당시에도 다른 CPU에서 가능했는지는 모르겠습니다.

      말씀하신대로 멀티 프로세스가 멀티 쓰레드보다 오래된 개념은 맞는데, 제가 인텔 기준으로 생각을 하다보니 그렇게 글을 적은 것 같습니다. 좋은 지적 감사합니다.

      2009.08.26 12:49 신고
  2. Favicon of http://blog.happyseeker.net BlogIcon 해피씨커  수정/삭제  댓글쓰기

    대학 4년때 개인적으로 관심가지고 논문들을 찾아 보던것이 기억 나네요.
    그 당시는 실습(!)을 해 볼 수 없어, 그냥 이론상으로만 습득했어고, 그 이후로는 역시 접할 일이 없어서..
    직접 경험해보셨다니 부럽네요 -ㅅ-

    2009.08.26 14:50
    • Favicon of https://mbastory.tistory.com BlogIcon 5throck  수정/삭제

      만약 경험을 해보시고 싶다면 하둡을 이용해서 해볼 수 있을 것 같아요. 내부에 하둡 전문가가 있으신 것으로 알고 있는데 한번 확인해 보세요...

      2009.08.26 15:43 신고
  3. Favicon of https://rageworx.pe.kr BlogIcon rageworx  수정/삭제  댓글쓰기

    Thread 는 프로세스 하나에 해당하는 종속된 task 와 같은 것이라 보셔도 됩니다. JAVA 에서의 Thread 는 해당 가상머신에 종속적 입니다. 실제로 요즘에 사용되는 다중 CPU core 에서 구동되는 thread를 구현 하려면 이를 지원하는 compiler model 을 사용해야 합니다. 의미가 여러모로 다른 것들이 많다고 봐야 겠네요 ...

    2010.11.08 21:18 신고
    • Favicon of https://mbastory.tistory.com BlogIcon 5throck  수정/삭제

      JAVA에서의 멀티태스킹과 관련해서는 우연치 않게 SUN 본사를 방문할 기회가 있어 2005년에 대략적인 개념을 배운 것 같습니다. 기억력이 워낙 나빠 내용을 다 기억하지는 못하지만, 그 당시 JAVA에서 멀티태스킹이 가능할까에 대해 고민을 하던 차라 재미있게 보았던 것 같습니다. ^^

      2010.11.08 21:54 신고

카테고리

나누어보기 (648)
스타트업 & 벤처 (15)
컨설팅이야기 (239)
MBA이야기 (39)
CC Korea 이야기 (36)
문화 이야기 (92)
세상사는 이야기 (188)
IT 이야기 (39)
Statistics Graph
BLOG main image
세상을 보는 또 다른 시선
때로는 '사실'보다 '희망'이 더 절박할 때가 있습니다. 적절한 희망이야말로 사람을 움직이게 하는 원동력이 되고, 사람이 움직이면 희망은 곧 사실로 바뀌게 됩니다.
by 5throck

세상을 보는 또 다른 시선

5throck's Blog is powered by Tattertools / Supported by TNM Media
Copyright by 5throck [ http://mbastory.tistory.com/ ]. All rights reserved.

Tattertools TNM Media DesignMyself!