2016년 10월 13일 목요일

중소기업의 효율적인 개발 프로젝트 관리 방안 - 3

Q: 프로젝트 관리의 의미는 대부분 잘 알고 있고 실천하려고 하는 것 같은데, 다들 프로젝트 관리는 매우 힘들다고 말하고 있습니다. 그 이유가 무엇일까요? 
말씀하신 것처럼 프로젝트 관리의 필요성이나 역할을 모르는 사람은 별로 없을 겁니다. 하지만, 프로젝트 관리를 제대로 하고 있다고 얘기할 수 있는 사람은 많지 않은 것이 사실입니다. 프로젝트 관리 항목 중 가장 명확하게 나올 것 같은 비용 산정 부분을 살펴보죠. 그림2는 소프트웨어사업 대가산정 가이드입니다. 직접인건비, 제경비, 직접경비 모두 인건비와 관련이 있습니다. 나머지 하나인 기술료도 직접인건비와 제경비 합의 20~40% 수준으로 가이드가 있습니다. 인건비로 비용을 산정하는데 실제로 이렇게 산정된 비용으로 실제 프로젝트가 운영되는 곳은 많지 않다는 것입니다. 


<그림2> 소프트웨어사업 대가산정 가이드 


프로젝트 관리 항목들은 대부분 프로젝트 팀원들이 정리한 내용으로 파악하는 것입니다. 대표적인 것이 개발 진척률이지요. 코딩을 계획 대비 80% 했다는 것은 이제 20%만 하면 되는 것인지 코딩은 다 했지만 테스트를 하기 위해 20%가 부족하다고 한 것인지, 아니면 오류 수정 중인지 물어보기 전에는 모른다는 것이죠. 더구나, 개발자에게 지금 개발하고 있는 소스코드의 진척률이 얼마인지 물어도 대답해주기가 쉽지 않지요. 


Q: 프로젝트에서 관리되는 항목들이 수치상으로 표시하기가 어렵다는 말씀인가요? 
네, 그렇습니다. 소프트웨어 개발은 시간이 지나면 생산이 되는 제조업이 아니기 때문이지요. 코딩이 80% 완료되어도 이 것이 20%만 더하면 끝나는 것이 아닌 것과 같은 얘기입니다. 인력의 경우도 마찬가지입니다. 개발 일정이 지연될 것 같으니 개발 잘하는 개발자 몇 명 더 넣으면 문제없겠지라고 생각하면 큰 오산입니다. 해당 개발자가 새로 투입되는 프로젝트의 업무를 파악하고 개발 표준이나 기존 개발자가 개발한 소스코드에 익숙해지려면 많은 시간이 필요하기 때문입니다. 소프트웨어공학 전문가들은 기존 개발자보다 10% 역량이 뛰어난 신규 개발자가 투입된다고 하면 0.6 ~ 0.8% 정도의 효과 밖에 없다고 말하고 있습니다. 그런데, 현실에서는 더 많은 효과를 가져올 것으로 기대하는 것이지요. 소프트웨어 개발에서는 예기치 못하는 상황들이 많이 발생하기 때문에 개발 기간이 지날수록 수치는 계속 올라가야 하는데 오르락내리락 한다는 것입니다. 

                                                                                   자세히 보기

메시 앱과 서비스 아키텍처의 동향 분석 - 3

마이크로 서비스 아키텍처 


마이크로 서비스 아키텍처는 하나의 애플리케이션을 여러 개의 작은 애플리케이션으로 쪼개고, 수정과 조합이 가능하도록 만든 아키텍처다. 애플리케이션을 특정 형태로 나누어 추상화하기 때문에 애플리케이션을 현 상태로 유지하면서 세부적인 구현 내용을 손쉽게 개선하고 변경할 수 있다. 모든 애플리케이션을 마이크로 서비스 아키텍처로 구성할 필요는 없다. 일반적으로 애플리케이션의 배포가 오래 걸리는 경우, 하나를 수정하면 전체 기능을 다시 살펴봐야 하는 경우, 수십 개의 기능을 포함한 애플리케이션인 경우에 마이크로 서비스 아키텍처로 구축하는 것이 좋다.  


<그림4> 마이크로 서비스 아키텍처의 예 
 
출처: slideshare - Microservice Architecture  


마이크로 서비스 아키텍처는 서비스의 규모가 커지고 복잡할수록 장점이 많아진다. 분리한 서비스(애플리케이션)가 독립적이기 때문에 변경이 용이하고 다른 서비스에 미치는 영향이 적다. 그리고, 서비스 단위 배포가 가능하여 배포 부담이 적고, 부하가 집중되는 경우 해당 서비스만 스케일 아웃하면 되기 때문에 불필요한 자원 낭비를 줄일 수 있다. 특히, 서비스 특성에 맞게 자원을 할당할 수 있어 효율적인 자원사용이 가능하다. 반면, 마이크로 서비스 아키텍처는 기존의 아키텍처에 비해 서비스 간 통신 모듈이 추가로 필요하다는 단점이 있다. 이것은 단순히 코딩 양이 늘어나는 것뿐만 아니라 사용자 요청에 대한 응답 속도에 영향을 미친다. 그리고, 데이터베이스를 분산해야 하기 때문에 트랜잭션 처리가 추가로 필요하다. 

                                                                                        자세히 보기

제 68회 SW공학 Technical 세미나 안내 - 10/20(목)