S/W 개발자로서 미래에 대한 대처... 잡생각

제목은 거창하지만, 제가 요즘 검토하고 공부하는 자료들에 대해 정리할 시간이 거의 없어서, 그 중 추천하고 싶은 글들을 올려 놓겠습니다.
전에 쓴 글 중에 "미래개발자에게 가장 중요한 3가지 패러다임 변화" 와 연관된 얘기입니다.

거기에 보면, 병렬 프로그래밍에 대해 언급이 나와 있는데, 왜 병렬 프로그래밍이 필요하고, S/W 개발자가 어떻게 대처해야 하는지에 대해서는 깊은 설명이나, 논거가 없었지요. 요번에는 병렬 프로그래밍이 왜 필요하고, 어떤 대처를 해야 할지에 대해 자세히 쓴 글을 소개하겠습니다.

원문 : A Fundamental Turn Toward Concurrency in Software by Dr.Bobb's
요약 : 공짜 점심의 끝 (윗 글에 대한 번역과 기타 관련 글들을 자세하고, 쉽게 설명한 글입니다)

대강 요약하자면...

1. H/W 처리 속도 증가가 더 이상 진전도 없고, 가능하지도 않다.
2. 결국 CPU의 처리속도 증가 경쟁은 포기하고, Core를 늘리는 방향 (동시에 여러 작업을 처리)으로 선회하고 있다.
3. 이에 S/W 개발자도 순차적, 동기적 프로그래밍에서 병렬, 비동기적 프로그래밍 기법을 사용해서 개발해야 한다.
4. 근데 병렬 프로그래밍은 기존 프로그래밍과는 달리 개념부터 달리 잡아야 한다.^^

==> 너무 겁주는 것 같지만, .NET 4 의 TPL (Task Parallel Library) 를 공부하다보면, 별거 아닙니다. 걱정마시길...
==> 다만, 아직도 기존 방식만을 고수하게 된다면, 2~3년 안에 도태될 가능성이 높습니다.

위의 Core를 하나의 컴퓨터 안에서만 생각하지 말고, 전세계 인터넷에 연결된 모든 CPU의 Core라면?? 그게 Grid Computing이고, Cloud Computing일 것입니다. 앞으로는 Network으로 연결된 모든 자원이, 작업 분배에 따라 활용도가 극대화될 것입니다.

구글의 BigTable, 아파치 Hadoop, Microsoft 의 Dryad LINQ 등이 요런 일을 하지요.