이용 가능한 서버(resource)는 50대가 넘는 데,
어느 서버를 누가 써야할지는 아무도 모른다.
(남는 서버는 많은 게 어떤 게 남아있고 어떤건 지금 작업이 돌고 있는 지,
어떤 서버는 너무 오래되서 성능이 낮아서 아무도 안쓰는 지.)
장기적인 구매 계획(1달 이상)이 있는 것도 아니고
예산이 언제 집행될지도 모르겠다.
그냥 코딩하고 프로그램 돌리다가 어느날 갑자기 서버 관리자가 이렇게 물어온다.
"음.. 예산이 나왔어요. 서버 8대 사기로 했거든요. 필요한 사람 신청하세요."
그럼 사람들은 이렇게 대답한다.
"네 저 몇 대 주세요."
"몇 대가 필요한가요?"
"가능한 많이.."
"어느 정도 사양을 원하나요."
"CPU 빠르고 하드 큰것.."
"얼마나?"
"클 수록 좋죠 서버 성능에 프로그램을 맞추면 됩니다."
내가 짜는 프로그램이 어느 정도 성능이 필요한지 모르겠다.
input data의 size나 output data의 size, 소요시간, 소요자원의 목표치가 명확하지 않다.
단지 사람들의 요구는 이렇다.
"최단 시간에 만들고 빨리 돌게 만들어. 최선을 다해서!!"
내가 가진 자원(능력, 작업시간, 배정된 서버)을 어디에 투자해야 할지 모르겠다.
최선이라고만 되어 있고 정량적인 목표가 없으니까.
그래서 일단은 내 스스로 생각하는 적절한 소요시간을 잡고
소요 자원은 내가 지금 배정받는 자원에 맞추고 있다.
(서비스가 아니라...)
잘 manage되는 프로젝트라면 서비스 환경의 목표치에 맞춰 개발을 시작할 수 있겠는 데,
서비스 환경의 목표치를 모르겠다.
내가 알아야 하는 것들.
1. 내가 짜는 부분은 시스템의 어느 부분에 위치 할까?
2. 나와 통신하는 모듈은 어떤 것들이 있을 까? (interface 명확화하기)
3. 서비스 환경의 목표치 - 자원, 성능, 속도
4. input data size - 다른 모듈로 부터 제공되는 것인데, 다른 모듈이 서비스시 얼마나 data를 내게 줄지 알 수 없다.
5. output data size - 내가 다른 모듈에 넘겨줄 것인데, 그들이 원하는 data size가 없다.
모든 것이 "최선을 다해서"일 뿐이고 정량적인 것이 없다.
물론 목표치는 우리의 노력과 능력, 가능성 여부에 따라 항상 수정되는 것이지만
목표도 없고 정량적인 data자체가 없는 건 문제가 있다.
우리가 채택한 방법
방법 1) 노는 자원이 없게 한다.
노는 서버가 있으면 무슨 프로그램이든 돌리고 data를 processing한다.
방법 2) 노는 사람이 없게 한다.
한가해 보이는 사람을 찍어서 일을 안겨준다.
문제점) 어느 서버가 노는 지, 어느 사람이 한가한지 알 수 없다.
댓글 없음:
댓글 쓰기