kaffeit 2020. 2. 26. 13:40
반응형

일을 같이 하다 보면 특정 프로그래밍 언어를 맹신하는 사람을 꼭 만나게 된다.

예를 들어 데이터 분석 서비스를 개발하는 데 Java을 고집한다던지, 웹 서비스 개발하는 데 자기는 무조건 Ruby만 쓸 거라든지...

 

이런 얘기를 하는 이유는 최근 서비스 개선 논의가 나온 과정에서, 누군가가 앞으로 늘어날 트래픽을 견디기 위해서는 꼭 Go로 갈아타야 한다는 언급을 시작하면서였다(우리는 백엔드로 Node를 사용 중이었다).

 

node vs golang
어딜 가나 Golang

 

근데 정말 웃긴 건, 이전 회사에서도 똑같은 얘기를 하는 사람이 있었다는 것이다(당시 백엔드는 Python).

 

그런 주장을 하는 게 특별한 건 아니었다. 사실 Go가 대용량 트래픽 처리에 좋다는 건 널리 알려진 사실이었고, Google, Uber등에서도 메인 언어로 사용하면서 안정성 또한 증명되었다.

 

그런데 과연 언어를 바꾸면 문제가 해결될 것인가?

 

언어나 프레임워크를 바꾼다는 건 생각보다 쉬운 문제가 아니다. 관련된 팀원 전체가 익숙해질 때까지 학습시간이 필요한 것은 물론이고, 서비스의 전체 프로세스를 처음부터 다시 테스트하고 그 동안 쌓아온 노하우들을 새 언어에 맞춰 다시 적용시켜야 한다. 그것보다 중요한 것은, 아마도 위와 같은 문제들을 감수할 만큼 성능 향상이 이루어지진 않을 것이기 때문이다.

 

예를 들어 사용자가 naver.com을 친다고 하면

- https://naver.com의 IP를 찾고

- IP를 따라 서버로 가고

- 네이버 메인의 정보에 필요한 API들을 호출하면

- API에서 필요한 정보들을 DB에서 꺼내서

- Response로 데이터를 웹에 전달하면

- JSON/XML형식의 데이터를 DOM에 끼워서

- 뙁! 하고 보여주는

이런 과정을 거칠 것이다.

 

여기까진 모놀리식 서비스의 얘기고, 아마 네이버에서도 마이크로서비스 아키텍처를 채용하고 있을 듯한데, 그러면 각 도메인끼리 서로서로 지지고 볶는 과정이 추가될 것이고, 여기에 인공지능에 의한 맞춤형 서비스를 제공한다고 하면...이 이상 설명은 생략.

 

마이크로서비스 구조
마이크로서비스라면, 대략 요런 식

 

여기에서 언어를 바꾼다는 게, 얼마나 영향을 미칠까 싶다. 언어의 개선으로 정말 큰 성능 향상을 얻을 수 있다면 Instagram이 흔히 성능 상 '느리다'고 얘기하는 Python을 계속 유지할 리도 없고(Django의 플래티넘 후원자 이기도 하다), GitHub가 Ruby를 쓰고 있을 이유도 없을 것이다.

 

https://medium.com/pyslackers/yes-python-is-slow-and-i-dont-care-13763980b5a1

('Python이 느리다'는 말에 대한 반박(반박이라기 보다, 그게 서비스에 지장을 주지 않는다는 내용)인데, 개인적으로 공감하는 글이다.)

 

그리고, 이런 주장을 하는 사람들의 상당수(내 경험에 의하면 90% 이상)은 정말 서비스의 개선을 생각해서라기 보다는, 자기가 쓰고 싶기 때문에 하자는 경우가 대부분이다(현재 5번째 회사에서 일하는 중인데, 이런 사람들 진짜 어딜 가나 있다). 요샌 뭐가 쿨하네, 뭐가 빠르네 하면서 구글링해서 찾은 벤치마크나 깃허브 트렌드 등을 보여주고 쓰자 바꾸자 하는데...

정말 서비스의 개선을 생각한다면 하다못해 데모 버전을 준비해서, 간단하게 나마 직접적으로 성능 향상의 결과를 보여주고, 그 외 가능하다면 동료들의 적응을 돕는 문서화까지 준비하는 정도의 정성은 들여야 하지 않나...

 

그러고 싶으면 그냥 자기 개인 프로젝트에서 실컷 했으면 좋겠다.

일의 영역에까지 자기 취향 끌고 오지 말고.

 

그래서 결론은? 그냥 상황 따라서, 팀 따라서 쓰자.

지금 만드는 서비스가 1억명의 유저를 모을지, 100명도 못 모으고 망할지 누가 아나.

반응형