3fa8c332e4d13da760f2d0b917c56935ca9069c16510516d10e18c2c4a7a5f169eb7ac

종이비행기 장인의 최후 항해


어느 평화로운 마을에 **'종이비행기'**가 있었습니다. 이 비행기는 아주 훌륭했습니다. 가볍고, 단순하고, 옆집 우편함까지 휙 던지기엔 최고였죠. 사람들은 이 종이비행기를 참 좋아했습니다. 그게 PHP의 황금기였습니다.

시간이 흘러 마을은 거대해졌습니다. 사람들은 이제 종이 쪽지가 아니라, **'무거운 화물(현대의 실시간성, 상태 유지, 고부하 처리)'**을 대양 건너로 실어 날라야 했습니다.

현명한 사람들은 말했습니다. *"이제 종이비행기는 그만두고, 튼튼한 강철로 **'배'*를 만듭시다. 수천 톤의 화물을 버틸 수 있는 엔진과, 엔진을 식힐 냉각 시스템(GC, 메모리 관리)을 갖춘 거대한 배 말입니다."

그런데, 마을 한구석에 모여 있던 **'종이비행기 신봉자들'**은 화를 냈습니다. "배? 그게 얼마나 복잡한지 알아? 엔진도 배워야 하고, 용접도 배워야 하잖아! 그렇게 복잡한 걸 왜 해? 우리에겐 종이비행기가 있잖아!"

그들은 배를 배우는 대신, 자신들의 종이비행기를 '개조'하기 시작했습니다.

  1. 로켓 엔진을 스테이플러로 박았습니다: 비행기가 너무 느리니 비동기 엔진(Swoole, ReactPHP 등)을 억지로 쑤셔 넣었습니다. 비행기가 무게를 못 이겨 찢어질 것 같으니 테이프를 칭칭 감았습니다.

  2. 날개를 계속 새로 접었습니다: 낡은 종이는 금방 너덜너덜해지니, 조금만 날다가 비행기를 버리고 새 종이비행기를 펴는 방식을 택했습니다. (PHP-FPM 프로세스 모델) 사람들은 이걸 보며 "우리는 메모리 누수를 아주 완벽하게 해결했어!"라며 자화자찬했습니다.

  3. 바닥에 바퀴를 달았습니다: 비행기가 바퀴를 달고 활주로를 달려야 하니, 온갖 '누더기(Wrapper)' 라이브러리를 가져와 억지로 바퀴를 고정했습니다. 비행기가 아니라 '날개 달린 자동차'가 되어버렸죠.

그들의 비행기는 겉보기엔 그럴듯하게 날아다니는 것처럼 보였습니다. 하지만 사실 그들은 비행기가 한 번 뜰 때마다 땔감을 트럭째로 쏟아붓고 있었습니다. 종이비행기 한 대를 띄우기 위해 거대한 로켓 연료를 쏟아붓는 기이한 상황이었습니다.

그들이 계속 종이비행기를 고집하는 진짜 심리는 무엇이었을까요?

  • 두려움: 사실 그들은 '배'를 만드는 법(Java, Node에서 쓰이는 정상적인 웹 서버 아키텍처)을 배울 지능적 여유도, 의지도 없었습니다. 배를 만드는 법을 배우려면 밑바닥부터 다시 시작해야 하는데, 그게 너무 무서웠던 겁니다.

  • 자기합리화: 그들은 배를 만드는 사람들을 보며 비웃었습니다. "저 사람들은 너무 과하게 설계해(Over-engineering)! 우리는 이 종이비행기에 테이프만 몇 번 더 감으면 충분해!" 그렇게 '누더기'를 만드는 솜씨를 '실용주의'라고 포장했습니다.

  • 지적 오만: 그들은 스테이플러로 엔진을 고정하는 비정상적인 과정을 '기술적 묘기'라고 착각했습니다. 남들이 보기에 그건 그냥 미친 짓이었지만, 그들에겐 'PHP의 한계를 극복하는 천재적인 해킹'이었습니다.

결국 그들의 종이비행기는 폭풍우가 치는 대양 한가운데서 엔진 무게를 못 이기고 바다에 처박혔습니다. 비행기가 가라앉는 와중에도 그들은 끝까지 외쳤습니다.

"봐, 종이비행기는 문제없었어! 우리가 쓴 테이프가 좀 싸구려였을 뿐이야! 다음엔 더 비싼 테이프를 가져와!"

그들은 여전히 젖은 종이를 줍고 있습니다. 바닷가 너머에는 이미 강철 배들이 수만 톤의 화물을 싣고 유유히 지나가고 있는데도 말이죠.