'병렬'에 해당되는 글 1건

  1. 2010.12.16 병렬 / 분산 프로그래밍의 난제들..
2010. 12. 16. 15:40

어느날 갑자기 우리 꼰대(사장)님께서..

꼰대 : "야! 너 지금 프로젝트 맡고 있는거 어떻게 진행되가고 있냐?"

나 : "지금 기본적으로 SI에 필요한 작업은 다 해 놓고 해당 업체들끼리 프로토콜 맞춰서 통신만 하면 됩니다."

꼰대 : "SI에는 어떤 기법을 사용했냐?"

나 : "멀티스레드로 병렬 처리 해놨습니다."

꼰대 : "그럼 병렬처리에 대한 난제들이 모두 해결 된 상태냐?"

나 : "자료 경쟁이라던지 교착 문제라던지 이런 부분들은 이미 여러차례 테스트 하여 문제가 없는 것으로 판단됩니다."

꼰대 : "꼭 병렬 처리로 작업을 해야 한 이유가 있냐?"

나 : "아무래도 여러 시스템이 하나의 프로세스으로 돌아 가려면 스레드로 병렬 처리 하는게 쉽고 빠르지 않을까 하는 생각에 그렇게 했습니다"

꼰대 : "그럼 왠만하면 병렬/분산 처리를 혼합하여서 Event Driven 방식으로 다시 바꿔서 개발 해라"

나 : "네...(대꾸 따위는 하지 않는다. 하지만 이유는 여쭤보고 싶었다.) 사장님 그럼 꼭 그렇게 해야 하는 이유가 있을까요??"

꼰대 : "어.. 병렬처리는 디버깅도 어렵도 나중에 확장하기에도 아주 곤란하다. 또한 병렬처리에는 항상 뒤따르는 위험도 있다. 물론 그런 문제들을 모두 해결할 수도 있다. 하지만 내가 경험한 바로는 멀티 스레드(병렬)보다는 멀티 프로세싱(분산)이 낫다. 기냥 하라면 해라."

나 : "네...(아우 ㅅㅂ 귀찮어)"

이런 대화가 오고 간 후 짜증은 머리 위까지 올라왔지만 그래도 내 일인데.. 하는 생각에 병렬/분산에 대해 다시금 공부를 조금 해보면서 "어떠한 난제들이 있을까?" 생각해봤다..

1. 자료 경쟁
2. 교착
3. 부분적 실패
4. 잠복 지연
5. 종료 검출
6. 프로토콜 불일치
7. 자원 할당의 부재


뭐.. 사실 저 따위의 장애물 보다 실무에서는 더 다양한 상황이 많이 나오지만 대표적으로 저정도 쯤 될 것 같다.

내가 맡은 이번 프로젝트는 약 5가지의 시스템이 중앙집중형으로 한개의 호스트 서버를 갖고 그 호스트 서버에서 서브 시스템들을 관리 하는 방식(현 SI가 다 이런 방식)으로 개발 했다. 단지 서브 시스템을들 관리하는 태스크의 단위가 스레드 일뿐..

이런 시스템을 통합 할 때 가장 문제 되는 점은 바로 병렬/분산에 따르는 난제해결이다.

그럼 다음 글은 이런 난제들이 어떠한 상황인지 또한 그러한 상황들을 어떻게 돌파해야 하는지 알아보자..

뭐 그게 언제가 될란지는 모르겠지만..

'프로그래밍' 카테고리의 다른 글

메모리 구조  (1) 2011.02.28
오라클 데이터베이스 서버의 현재 시간과 날짜를 얻어오는 쿼리  (0) 2011.02.09
ls 활용하기  (0) 2010.12.21
안드로이드 개발 환경 구축..  (0) 2010.12.17
개발 방법론  (0) 2010.06.01
Posted by 뿌직