서비스 스케일업 양날의 검, '빅코드'
'빅코드'.
말 그대로 방대한 양의 코드를 의미한다. 이 용어는 주로 빅데이터와 관련되어 쓰였지만, 이제는 말 그대로 방대한 코드를 의미한다. 대략 속성이 이런 단일 또는 다수의 프로젝트의 조합을 의미할 거다. 수십만줄에 이르는, 다양한 언어로 구사되었으며, 다양한 데이터 구조를 활용하고, 상위 여러 프로젝트에 종속성을 가진 코드.
뭐가 문제야, 싶은 이 빅코드가 요즘 다시 화두다. 깃허브 코파일럿, 챗GPT 등이 '코딩을 해준다'는 AI들을 개발해 내고, 사람들이 이렇게 '생성된 코드'를 활용하면서 문제라고 한다. 코드가 무슨 기능을 하는지는 어떻게 어떻게 알겠는데 '무슨 말을 하고 있는지는 이해하지 못하기 때문이다.'
그런데 빅코드는 AI 코딩과 더불어서 발생했다기 보다는.. 서비스가 고도화되면서 공통적으로 발생할 수 있는 일이다. 굳이 AI가 만든 코드가 아니라 어떤 사람이 만든 코드라고 했을 때도, 이해하지 못하는 문제는 항상 동일하게 발생한다. 모두가 코드에 대해 같은 이해도를 갖기 어렵기 때문이다.
오히려 진짜 문제는 '빅코드로 인한 챌린지'이다. 좋은 개발자들은 코드를 잘 이해하고, 코드를 잘 이해되게 쓴다. 확장성을 고려하며 구조를 짜고, 다른 것을 갖다 붙이고 떼는 것을 깔끔히 처리한다. 반대로 정교하게 구조를 고려하여 설계되지 않은 빅코드는.. 확장이 '불가능하다'. 어느 시점에 타는 데이터가 많아져서 문제가 생겼지만, 그 문제를 해결할 수 없다. 기능을 붙이거나 수정하려고 하면 사이드 이펙트가 너무 많이 발생해 QA하는 데 시간을 더 많이 사용해야한다. 개발 속도는 점점 늦어지고, 개발자들은 더 못하겠다고 줄퇴사를 할 것이다.
거대한 코드를 구조적으로 관리한다는 것은, 온전히 CTO 역량에 달렸다. 때문에 핵심역량의 개발자 인적 빌드업을 잘한 회사에는 극도의 '차별성'을, 그렇지 못한 회사에는 스케일업의 발목을 잡는 크나큰 '챌린지'가 된다. 서비스 고도화와 더불어 필연적으로 생기는 빅코드, 결국 스케일업을 위한 양날의 검인 셈이다. 바꾸어 말하면, 빅코드를 차별점으로 가져갈 수 있는 조직만이 스케일업이 가능하다는 것이다. 빅코드 챌린지에 놓인 조직은 이 문제를 오랜시간에 걸쳐 해결하거나, 스케일업에 실패하는 선택지밖에 없다.
그렇다면 코드를 잘 알지 못하는 사람들은, 어떻게 커질 조직과 커지지 못할 조직을 구분할 수 있을까? 코드를 까봐야 아는 것은 아니다. 단순히 웹이나 모바일에서 볼 수 있는 것은 뜨는 데 걸리는 시간을 보면 된다. 데이터를 빠르게 잘 가져오는 지, 화면이 빠르게 안깨지고 뜨는지. 간혹 혁신적으로 빠른 느낌을 받는다?(물론 UI/UX를 위한 의도적 속도제어를 의미하는 것은 아니다) 아주 좋은 개발자가 프로덕트를 리드하고 있을 가능성이 높다. 기초적인 것 같지만 가장 중요한 요소다.
조금 더 자세히 보려면 데이터베이스 구조를 보면 된다. 개념이 테이블로 잘 정의되지 않았을 때, 난잡한 코드가 시작된다. 중복되고 이상한 이름의 선언이 반복되고, 개발 효율은 그만큼 떨어진다. 예를 들어 본다. 한 지인이 어느 날 데이터 분석이 어렵다며 상담을 요청했다. 도대체 뭘 봐야하는 거냐고 묻길래 어떤 테이블들이 있냐고 물었다. 그랬더니 몇 개의 테이블을 얘기하는게 아니라.. 말 자체를 주저하는 것이었다. 전체 테이블 개수를 다시 물었다. 200개. 이 수가 의미하는 것은 무엇이었을까. 생각대로 중복되고, 이상한 이름, 이상한 관계설정, 안쓰는 컬럼과 테이블이 천지였다. 살포시 수첩을 덮을 수 밖에 없었다.
(메이코더스가 운영하는 서비스는 서비스당 테이블 50개 이내로 운영된다. 게다가 그 상담을 요청한 서비스들이 우리 회사가 운영하는 서비스랑 크기가 그렇게 차이가 나지 않는 규모의 것이었다면..?)
코딩 잘하는 거 뭐, 그게 대수인가요?
앱 눌러서 1초만에 뜨는 거랑 3초만에 뜨는 거랑 사람들은 구분 못해요.
한 경영대 출신 VC가 나에게 한 말이다. 데이터를 본다는 CEO와 개발을 잘한다는 CTO를 보유한 우리팀을 강조하면 돌아온 말. 그때는 저 말이 왜 이렇게 날선 비지니스의 냉혹함을 보여준다고 생각했는지 모르겠다. 창업 0년 차의 나는 어리버리하게 "그렇군요...." 하며 할 말과 자신감을 잃고 말았지만, 창업 4년차의 나는 다른 대답을 내놓을 수 있다.
지금 3초만에 뜨죠? 한국에서만 해도 이런데, 해외 확장이 가능할까요? 동남아시아에서는 뜨긴 뜰까요?
지금 3초만에 뜬다는 것은 이미 코드가 잘못 짜여진 거예요. 조금 더 데이터를 타면 원인을 모르는 에러로 개발팀들이 리소스를 엄청 잡아 먹을 겁니다.
지금 3초만에 뜬다는 것은 핵심역량을 가진 사람들이 개발과 최적화에 학습이 덜 되었다는 의미입니다. 그런데 이미 사람들이 쓰고 있다고요? 일단 엄청난 CTO를 데리고 와서 코드 한 번 보여주세요. 그 사람 온다고 하는지 안온다고 하는지. 혹시라도 파격적 조건으로 엄청난 개발자가 온다고 해도 지금 3초만에 뜨는 화면 말고, 안보이는 곳 고치는 데만 6개월 이상 걸립니다.
위와 같은 이유에서 비지니스적으로도, 3초안에 안뜨는 애플리케이션을 그렇지 않은 애플리케이션과 큰 차이가 없다고 말하는 것 자체가 모순이다. 심지어 여기는 한국이다! 우리나라와 같은 네트워크 상태에서 3초만에 뜬다는 것은... (물론 딥테크이거나.. 신기술이 엄청나게 들어간 경우는 제외이다. 지극히 서비스 관점) 빅코드 챌린지 중인 조직이라는 것이고, 오랜 시간에 걸쳐 이 문제를 해결해야만 하거나 스케일업이 불가능한 조직이라는 것을 함의한다.
참고:
https://www.itprotoday.com/devops-and-software-development/code-challenges-coping-era-big-code
https://www.ciokorea.com/news/288997