[2024/2025 회고] (8) 뒷심이 없는 코드와 살아가는 법
나는 솔직히 Python이 싫다. 아니, Python은 좋지만 Python 개발자가 싫다.
10년 전 Angular를 앞세워 ES6를 찬양하던 그들처럼, 이제는 AI와 FastAPI를 앞세워 Python을 찬양하는 사람들이 있다.
내가 틀딱 Java 개발자라서 하는 소리는 아니다. 나도 Python이 서브 언어고, 내 개인 프로젝트는 거의 7할이 Python이다.
그럼에도 불구하고 나는 Python 개발자가 싫다. 정확히 말하자면 Only-Python 개발자가 싫다.
나는 지금까지 20개가 넘는 프로젝트에 공식, 비공식적으로 참여해 왔다. 그래서 생긴 편견이긴 하나, Python으로 개발한 프로젝트는 4할 가까이 운영으로 넘어가지 못했고, 넘어가더라도 고도화 단계에서는 전부 Java나 C#(dotnet)으로 전환되었다.
왜냐고 묻는다면 각자의 이유가 있고 각자의 해명이 있겠지만, 가장 큰 스펙트럼으로 말하자면 '뒷심이 없다'는 게 문제였다.
컨테이너 환경에 친숙 하지 못한 개발자와 명세
그놈의 Pytorch. CPU 모드로 돌아가는 모델이라도 최소 1GB는 먹고 시작한다. 그것만 있으면 다행이지, 빌드 단계부터 리눅스 배포판이 달라지면 의존성 하나하나가 오류를 뿜어낸다.
제발 의존성은 특정 버전을 명시해서 쓰라고, 망할. 아님 poetry, uv라도 써.
미숙함을 간편함으로 포장하는 사람들과 문화
기능만 개발해서 잘 돌아가면 된다는 생각. 그거 진짜 잘 돌아가는 거 맞아?
너 자리에서야 잘 돌아가겠지. OS 뭐 쓰는데? Python 3.8 이상은 쓰는 거야?
이미지 한번 말아보자. 어라, 이거 환경변수 주입 안 하면 죽어버리는데?
값이 비어있으면 체크(Validation)를 해야지, 그걸 로직에 그냥 넘기면 어째?
뭐야, 이거 왜 로그에 Trace 안 찍혀?
Enterprise 수준의 요구사항을 구식 또는 파괴해야할 대상으로 보는 시각
OAuth 썼다고? 혹시 이메일이 고유키로 정의된 건 아니겠지? 왜 눈을 피해?
DB 접속만 하면 되는 게 아니잖아. HA 구성할 때 배치 처리 어떻게 할 건데?
ORM 쓴다고 쿼리를 안 써도 된다는 게 아니잖아. 왜 테이블을 7개나 조인하는 건데?
이건 구식이 아니라 표준이야! 네가 경험하지 못한 사고를 이 규칙은 알고 있다고!
외전) 로그 Retention 은 왜 안하는거야?
오늘 고객사 점검 가보니까 app.log가 25GB 더라. 이거 뭐냐?
로그를 지우라고? 운영계인데?
날짜별, 당일 실행별, worker별 로그 분리하라고.
로그 레벨은 왜 debug로 소스코드에 고정된 거야?
내가 쓴 글이 누군가에게는 코웃음거리일 수 있고, 누구에게는 비아냥거리일 수 있다. 하지만 나처럼 한 번쯤이라도 겪어본 사람은 다르게 느낄 것이다.
나는 TA를 맡은 프로젝트에서 위의 모든 상황을 대처해야만 했다. 미숙한 설계와 나이브한 코딩이 유지보수에는 최악의 가시밭길을 만들어버린다.
문제는 내가 투입되지 못했던 또 다른 금융권 AI 프로젝트가 위의 이유와 겹쳐 원 개발자들이 모두 도망가버렸다는 것. 절망적이다.
코드를 받아든 내 심정, 인수인계를 받은 주임의 얼굴이 썩어 들어가는 걸 보면서 나는 참담한 심정이었다.
그래도 어쩌랴, 계약은 계약. 헤쳐 나가야 한다. 아무튼.