병렬처리에 대한 개념은 대학에서 처음 접했지만 실제로 이를 사용해보기까지는 상당한 시일이 필요했던 것 같습니다. 제가 프로그램을
처음 배울 당시만 하더라도 병렬 프로그래밍을 하기 위해서는 아이다(AIDA)와 같은 특별한 언어를 사용해서만 가능했기에 접하기도
쉽지 않았을 뿐만 아니라 이를 구현하기 위해서는 하드웨어의 지원이 선행적으로 필요한데 PC의 경우에는 CPU가 이를 지원하지
않았기 때문에 꽤 오랫동안 대중화되지 못한 개념이었습니다. 그러다가 이러한 병렬처리에 대한 개념이 보다 대중화되기 시작한 데에는
인텔(Intel)의 중앙처리장치(CPU)가 큰 역할을 했는데, 이와 더불어 병렬처리를 쉽게 프로그래밍할 수 있는 언어의 등장
또한 매우 중요한 역할을 했다고 봅니다. 아마도 그 중 가장 큰 역할을 한 것에 대해 많은 분들이 아마도 자바(Java)의
등장을 손꼽지 않을까 합니다.
자바는 초기 버전부터 쓰레드(Thread)를 지원해서 기초적이지만 가상적인
병렬처리를 지원하기 시작했는데, 최근에 와서는 다중 중앙처리장치를 지원하는 수준에까지 발전을 해서 진정한 의미로의 병렬처리를
지원하고 있다고 할 수 있을 것 같습니다. 통상적으로 병렬처리는 멀티 쓰레딩(Multi-Treading) 방식과 멀티 프로세싱
(Multi-Processing) 방식으로 나뉠 수 있는데 전자의 경우에는 하나의 중앙처리장치에서 처리되는 반면 후자의 경우에는
여러 개의 중앙처리장치에서 별도로 프로그램이 운영될 수 있도록 할 수 있기에 진정한 의미의 병렬처리의 시작이라고 볼 수 있을 것
같습니다. 이러한 병렬처리는 최근에는 더욱 더 발전을 해서 여러 개의 서버를 이용하는 클러스터(Cluster) 개념까지 확대되고
있는데, 이 중 이에 가장 적극적으로 활용되고 있는 OS가 펭귄 그림으로 대표되는 리눅스(Linux)라고 생각됩니다.
아
무래도 여러 대의 서버가 필요한 경우에는 상당한 비용이 발생하게 되는데 이를 저렴하게 운영하기 위해 많은 다양한 시도들이
수행되었습니다. 그 중에서 값싼 PC들을 이용하여 서버를 구축하고 이를 연결하는 방식이 가장 상당히 저렴했기 때문에 시장에서
성공할 수 있었고, 이 개념을 더욱 발전시킨 구글(Google)과 같은 기업의 등장으로 이 방식이 더욱 많은 이들의 관심을 갖게
된 방식이라고 생각됩니다. 물론, 구글이 사용하는 방식을 이용해보기 위해서는 구글과 관련된 업무를 하거나 구글에 입사를 해야
하는데, 모든 사람들이 그렇게 할 수는 없으므로 그와 가장 유사한 방식으로 처리되는 소프트웨어를 사용해 보는 것이 대안이 될 수
있을 것 같습니다. 그러한 대안으로 최근에는 가장 많이 회자되고 있는 것은 하둡 (Hadoop)이라는 시스템인데, 구글의 시스템과 매우 유사한 구조를 가지고 있어 병렬처리를 배우는데 좋은 역할을 하고 있다고 생각합니다.
개
인적으로 병렬처리에 직접적으로 관여를 하게 된 것은 시스템 엔지니어에서 좀 더 업무영역을 넓혀 시스템 관련 컨설턴트로
활동하면서인데, 그 중에서도 금융권과 관련된 업무를 수행하면서 병렬처리에 대한 일을 본격적으로 배우게 된 것 같습니다.
통상적으로 대규모 데이터를 처리하는 업무는 통신이나 금융권에 많이 발생하게 되는데, 보통 일반적인 제조업에서 발생하는 연간
데이터 량 이상의 데이터를 한 달 이내에 발생시키는 경우가 많아 이 분야들에서 병렬처리는 상당히 중요하다고 생각됩니다. 물론,
이러한 프로그램 방식 자체가 배우기도 매우 어렵고 아직은 안정성에 문제가 있는 경우도 있어 금융권 등에서 아직은 꺼려하고 있는
것처럼 보이나, 제가 보기에는 반드시 도입을 해야 하는 솔루션이라고 생각합니다.
제가 관여한 프로젝트의 경우에는
대략 1개월 동안 사용된 데이터를 이용하여 각 상품별 손익분석을 하는 시스템을 구축하는 것이었는데, 이 업무를 기존의 메인
프레임에서 COBOL로 작성을 할 경우 약 20일 이상의 시간이 소요되어 기존에는 분석이 거의 불가능한 수준이었으나, 새로
시스템을 구축하면서 병렬처리방식의 프로그램 기법을 도입하여 기술적으로는 2일 이내 업무적으로는 3일 이내에 처리가 가능할 정도로
구현이 되었습니다. 덕분에 재무 마감이 된 뒤 대략 일주일 이내에 개별 상품별 손익분석을 볼 수 있는 리포트들을 업무 담당자들이
볼 수 있었는데, 아마도 병렬처리 프로그램의 개념을 도입하지 않고서는 도저히 나타날 수 없는 성과가 아닐까 생각됩니다.
당
시에 저는 개발이 아닌 시스템 엔지니어로서 참여를 했기에 개발을 담당하셨던 분과 많은 이야기를 나누면서 튜닝작업을 진행습니다.
서로의 경험을 살려 모니터링을 하면서 관련 프로그램들의 메모리 사용량 및 디스크 사용량 변화에 대한 정보를 제공함으로써 담당
개발자 분이 상당한 튜닝 효과를 만들어내었는데, 그러한 결과를 만들어내는데 일조를 했다는 것에 대해 당시 엔지니어로서 큰 보람을
갖게 되었던 것 같습니다. 나중에 제가 다시 IT 분야로 돌아가게 된다면 아마도 관심을 가지고 집중할 분야가 될 것 같은데,
아직까지는 한국에서는 미지의 세계라고 생각하기에 시간을 가지고 꾸준히 노력을 한다면 충분히 경쟁력을 가질 수 있는 분야라고
생각합니다.