wooinwoo

풀스택 개발자

개발자에게 은총알은 없다

#개발#기술 선택

은총알은 늑대인간을 한 방에 잡는 무기에서 나온 표현이다. 어려운 문제를 단번에 해결해주는 방법이라는 뜻으로 쓰인다.

프레더릭 브룩스의 「No Silver Bullet」은 단일 기술이나 관리 기법 하나로 개발을 획기적으로 개선할 해법은 보이지 않는다는 글이다. 이 글이 모든 선택의 장단점을 말하는 건 아니지만, 도구가 좋아져도 뭘 만들고 어떻게 맞물리게 할지 고민하는 일은 남는다는 설명에 공감한다.

개발도 처음부터 이런 선택의 연속이다. 요구사항을 다 정하고 시작하려면 끝이 없고, 일단 만들면 뒤늦게 나온 조건 때문에 뜯어고친다. 빨리 만들어서 확인할 부분도 있고, 데이터가 쌓이기 전에 정해둬야 할 부분도 있다.

코드 중복을 없애려고 공통 함수로 묶었는데 예외 처리 옵션이 계속 늘어날 수 있다. 나중을 생각해서 구조를 나눴더니 지금 기능 하나 붙이는 데 여러 파일을 따라가야 할 수도 있다. 깔끔하게 만든다는 게 뭘 기준으로 깔끔한 건지부터 애매하다.

테스트와 배포 자동화도 시간을 들여 만들어두면 이후 작업이 편해진다. 얼마나 자주 고치고 배포할지, 잘못됐을 때 얼마나 곤란한지에 따라 먼저 투자할 곳은 다를 것이다. 권한이 잘못되는 문제와 버튼 간격이 어긋나는 문제를 똑같이 확인할 수는 없으니까.

운영할 때는 자원을 알뜰하게 쓰려고 계속 관리할지, 돈을 더 내고 여유 있게 띄울지도 골라야 한다. 관리형 서비스를 쓰면 직접 챙길 일은 줄지만 사용료와 제약이 생긴다. 직접 하면 그 일을 내가 맡는다.

서버비를 아끼려고 하루 종일 설정을 만졌다고 해보자. 한 달에 몇만 원 줄었다면 잘한 걸까. 그 시간에 밀린 기능 하나 만드는 게 나았을 수도 있다. 반대로 매달 수백만 원이 줄어든다면 해볼 만하다. 같은 최적화인데 계산이 다르다.

큰 서버를 쓴다고 장애까지 없어지는 건 아니다. 뭘 더 내고 어떤 수고를 덜려는 건지는 알아야 한다. 작은 팀에서 사람을 계속 붙여야 하는 구성을 가져오면, 기술보다 관리하는 일이 더 커질 수도 있다.

완벽한 결정은 없다고 생각한다. 개발 시간도 돈이고, 관리할 수 있는 사람도 한정돼 있다. 그래서 어떤 기술이 좋다는 얘기를 들으면 그걸 쓰는 데 사람이 얼마나 붙어 있는지도 궁금하다. 우리도 그만큼 쓸 수 있는지까지 알아야 고를 수 있을 것 같다.