If all you have is a hammer, everything looks like a nail
만약 당신이 가지고 있는 유일한 도구가 망치라면, 모든 문제가 못으로 보일 것이다

- Abraham Maslow, 1966

매슬로의 망치, 또는 도구의 법칙(Law of the instrument)은 자신의 지식으로만 모든 것을 바라보고, 그 안에서 해결하려는 편향을 말한다.

 

예를 들어 나사못이 있을 때, 내가 쓸 줄 아는게 망치 뿐이라면 나사못도 못으로 보고 망치질을 한다는 말이다

물론 망치로도 나무에 박을 순 있지만, 매우 비효율적일 것이다

 

특히 개발자들에게 이런 문제가 많이 생긴다.

 

예를 들면 ansible, terraform이 있다.

terraform은 인프라 프로비저닝 툴이고, ansible은 인프라 자동화 툴이다. 각각의 툴이 전문 분야가 있는 것이다. VM 생성, 삭제 등의 작업은 terraform을 쓰는게 적합하고, VM 내에서 jdk 설치, logrotate 설치 등 작업은 ansible을 사용하는게 적합하다.

하지만 ansible만 아는 사람이 인프라 구축까지 ansible을 써서 하려고 하면 aws module, playbook으로 할수야 있지만 매우 번거로울 것이다. terraform만 아는 사람이 각종 config management를 terraform으로만 하려고 한다면 역시 불가능할것이다. local-exec 등의 provisioner를 써야 할 것이며, terraform이 권장하는 방식은 아니다.

각 툴마다 선언적, 절차적이라는 차이가 있고 각각 적합한 유즈케이스가 있을텐데, 억지로 자기가 아는 것에만 끼워 맞추려니 문제가 발생한다.

 

바람직한 방법은 도구에 문제를 맞추지 말고, 문제에 맞는 도구를 찾는 것이다.


얼마전에 게임 서버를 호스팅할 때 별 생각 없이 Google Cloud Run으로 배포를 했다. 문제는 컨테이너 실행 시간이 15~60분이 되면 컨테이너가 종료된다는 것이다. App Engine으로도 해봤는데 비슷한 제한 사항들이 있다. filesystem 접근이 안되며, 네트워크 설정이 자유롭지 않고, 컨테이너 최대 실행 시간이 30초다. 이 서비스들은 서버리스 + 웹앱에 적합한거지, 데몬을 계속 띄워둬야 하는 게임 서버 용도로는 쓰기 어렵다.

예전에 Cloud Run으로 서버리스 웹앱을 띄운 지식이 있어서 무작정 써본건데, 잘못된 해결방안이었다. AWS Fargate는 컨테이너 종료 시간 제한이 없다고 하니 그 편이 적합할 수 있겠다.

먼저 문제가 무엇인지, 어떤 요구조건이 있는지 정의하고 시작했다면 여러가지 삽질을 안해도 됐을 것 같다.

반응형

'일상 > Note' 카테고리의 다른 글

2024 새해목표  (0) 2023.12.24
zsh 정리  (0) 2023.08.01
2023 공군 27예비단 2교육대 예비군 후기  (2) 2023.06.03
0 대신 O를 쓰는 이유가 뭔가요?  (0) 2022.11.10
프로그래머스 코딩역량인증시험 출시 (PCCP, PCCE)  (0) 2022.09.05