brunch

You can make anything
by writing

C.S.Lewis

by 리플러스 Feb 02. 2023

개발 스택 (stack)의 중요성

똑같은 서비스를 만든다해도, 무엇을 쓰는가에 따라 결과물이 달라진다


일반적으로 개발 언어나, 별도 라이브러리에 대해 공부하는 사람들은 많지 않다. 특히 개발자가 아닌 사람들이라면 자연스럽게 이 부분이 왜 중요한지를 알기도 어렵다. 이건 서비스 기획자들도 마찬가지다. 하지만 그 누구라도  개발스택이라는 지점이 얼마나 중요한지 체감할 수 있는 방법이 있다. 바로 '잘못된 개발 스택'으로 개발을 해서, 서비스가 무너져내리는 경험을 해보는 것이다.



1.

내가 새 회사에 들어갔을 때. 그곳에서는 자체적인 서비스를 제작하여 현재 서비스중인 상태였다. 무슨 서비스를 만들었는지, 기반은 무엇인지를 체크해보니, 황당한 결과가 나왔다.  난생 처음 들어보는 기술 스택을 기반으로 앱 서비스를 만들었다는 거였다.




PHP로 앱서비스를 만들었다고?
서버 사이드만 만든것도 아니고 '앱'을 ?




처음에는 내가 잘못들은게 아닌가 싶었다. 일반적으로 PHP는 여러 동일 규격의 웹페이지를 양산, 복사해내는데에 좋은 언어다. 그러나 태생적으로 오래된 언어이고, 웹페이지 제작 외에는 크게 권장하지 않는 언어다. (워드프레스 또한 PHP 기반으로 만들어진 웹빌더 / CMS 솔루션이다.) 그럼에도 불구하고 누군가가 PHP를 기반으로 앱 서비스를 만들었다는 걸 알았을 때. 나는 놀라움을 넘어서 공포를 느꼈다. 대체 어떤 정신나간 이들이 PHP로 앱을 만든단 말인가? 불안한 마음으로 실제 PHP 기반 서비스 사례들을 찾아보기 시작했고, 그 걱정은 이유있는 의문으로 이어졌다. 웹페이지라면 몰라도, PHP를 '앱'에 사용하는 경우는 사실상 찾아보기 힘들었기 때문이다.


우리가 가장 익숙하게 알고있는 안드로이드는 Java 언어를 기반으로 만들어졌다. 그렇기 때문에 대부분의 안드로이드 개발자들은 자바 기반에 스프링 등의 백엔드 기술 스택에 익숙해져있다. 실제로 안드로이드와 자바 + 스프링 기반 백엔드 작업을 함께 처리하는 개발자들도 많다. 이런 것이 가능한 이유는 개발 언어가 같거나, 유사하다는 특징이 있기 때문이다. 그러나 PHP는 다르다. 앱서비스를 위해 만들어진 규격도 아니며, 그런 기술이 시장에서 널리 활용되지도 않는다. 그렇다면 대체 '왜' PHP로 앱을 만들려했던 사람이 이 회사에 있단 말인가?


그 이유를 확인해보니, 기존에 근무하던 개발자가 PHP 전공 출신이었고. 새로운 언어를 배우기에는 무리라고 생각했던 모양이었다. 개발을 잘 알지 못하는 대표나, 회사 담당자들에게 PHP 기반으로 프로젝트를 해내겠다고 설득한 결과가 그 내용이었다. 실제로 확인해보니 PHP 기반으로 앱 서비스를 만드는게 물리적으로 불가능한 것은 아니었다.대표적인 케이스가 페이스북이었는데, 정작 페이스북은 2021년 기준부터 새로운 오픈소스 개발언어인 'hack'을 만들어서 사용중이었다. 심지어 그들이 PHP를 사용한건, 과거에 만들어진 개발 소스를 새로 고쳐쓰기엔 돈과 시간이 너무 많이 들기에 선택한 내용이었다.



2.

PHP는 굉장히 독특한 언어다. 자체적으로 프론트엔드 단의 내용을 다루면서, 동시에 백엔드의 DB와의 통신도 함께 다룰 수있다. 그렇기에 앱이나 웹 플랫폼이 따로 있는 경우에도, DB와 연결되는 별도의 API를 만들 필요가 없다. 그러니 개발자 한 명이 정말 유능한 사람이라면 나름대로 효율적인 개발방식이 될 수 있다. 하지만 다른 언어의 API 구현 방식에 비해 속도가 느리고, 개발코드의 형식이 현대적인 프론트엔드 / 백엔드 언어와 차이점이 크다. 그렇다보니 새로 들어온 개발자들이 기존의 개발코드를 읽어내고, 수정하는건 거의 불가능에 가까웠다. 내용을 봐도, 언어형식이나 구현방법이 달라 문법적으로 해석이 어렵기 때문이었다.


PHP의 가장 큰 문제는 그 특성인 프론트엔드 / 백엔드 부분을 한꺼번에 다룬다는 점이다. PHP 전문 개발자가 아니라면 프론트엔드 개발자가 그 지점을 수정할 수도 없고. 다른 백엔드 개발자가 기존 코드를 다루기에도 어려운, 양날의 검이 된다. 한가지 언어로 모든걸 해결하는 형식이다보니, 프론트엔드와 백엔드 양쪽을 모두 이해하고있어야한다. 하지만 요즘 실무에서 보면 React 프레임워크를 써서 웹페이지를 만드는 경우가 많다. 백엔드는 Java와 스프링 기반이 많으니, PHP를 아는 개발자를 찾기가 쉽지 않다. 그러니 React기반의 프론트 개발자나, 일반적인 Java 기반 백엔드 개발자는 PHP 앞에서 둘다 멘붕이 올 수 밖에 없다.


심지어 PHP 기반의 앱을 만들 경우, 구글이나 애플스토어의 '네이티브 코드' 기준을 통과하지 못한다. 그러니 다른 무언가와 섞어 하이브리드 형태의 앱을 만들어야하는 상황이 된다. 여기에 쓰이는 특정 프레임워크 (예 : Phonegap 프레임워크) 는 그 자체가 배우기 어려운데다, 사용자 수가 많지도 않으니 문제가 생겼을 때 유지보수 하기가 매우 어려워진다. 애초에 앱서비스를 만들기 위한 언어가 아니기 때문에, 매우 기형적인 기술들을 여러개 사용해야하는 것이다. 이렇게 만들어진 서비스가 업데이트를 하려면, 작업한 본인이 아닌 이상 어려운게 당연한 이야기다. 그러나 이런 말도안되는 상황들은 생각보다 자주 일어난다.



3.

개발자의 세계는 생각보다 매우 잔혹하다. 기술 언어를 잘못 선택하면, 5년정도만 지나도 해당 기술을 업계에서 더이상 사용하지 않는다. 그러면 기존에 그 기술을 배웠던 개발자들은 어떻게될까? 갈곳을 잃고, 새로운 기술을 배워야하는 상황에 놓인다. 그러나 새로운 기술을 배우기는 어려우니, 꼼수를 쓰게된다. 개발을 잘 알지 못하는 고객이나, 회사에 들어가서 자신의 기술을 그대로 쓰게되는 것이다. 내가 겪게된 내용도 바로 이 지점이었다. 이런 '퇴물 개발자'들이 개발지식이 많지 않은 사람을 대상으로 사기를 친 거였다.


개발을 잘 알지 못하니, 해당 언어가 어디에 쓰이는지, 어떤 한계를 갖고있는지를 모른다. 그런 대상에게 '내가 맡아서 처리하겠다'고 말하며 시간을 보낸 결과. 위험천만한 결과가 나온게 바로 PHP 기반 앱이었다. 이런 PHP 앱은 당장은 잘 돌아갈 수는 있어도, 나중에 터질 폭탄을 달고있는 것과 마찬가지다. 앱서비스에서는 현재 사용하는 프레임워크나, 특정 기능들이 신규 OS 기능과 충돌하게되는 순간이 온다. 네이티브 코드가 아니기 때문에 OS 업데이트나, 기능 호출 등의 지점이 동작하지 않을수도 있다는 거다.


결국, 회사는 기존에 만들었던 PHP 앱을 버리고 새 언어로 앱서비스를 만들기로 했다. 누군가가 의도적으로 기술의 한계점을 숨기고 앱을 만들었기 때문에 생긴 문제였다.



4.

이처럼 개발 언어의 특징이나, 고유한 특성 등을 고려하지 않고 서비스를 만들면 나중가서 문제가 커지기 쉽다. 유지보수를 위해 새로운 개발자를 뽑더라도, 인력을 찾는것도 쉽지않고 그 인력을 대체하기도 어렵다. 이런 상황을 본인이 PM을 맡은 서비스에서 만나게된다면 어떻게될까? 당연히 그 책임은 본인에게 돌아오게된다. 그러니 서비스를 만드는 입장에서는 각각의 기술스택과, 기존 인원들의 기술 숙련도를 꼭 확인해야한다. 최악의 경우, 개발비만 버리고 제대로 돌아가지도 않는 코드 덩어리를 얻게될 수도 있다.


이런 상황을 미리 방지하려면, 믿을 수 있을만한 개발리더를 보유해야한다. 하지만 소규모이거나, 아직 스타트업인 회사 입장에서는 누가 좋은 개발자인지를 구분하기가 어렵다. 그러니 이 경우에는 기획자가 이 역할을 대신할 수 밖에 없다. 그들이 사용하는 개발스택이 최신의 형태인지. 또 일반적으로 쓰이는 개발 목적에 알맞은 도구인지. 그 특성이나 장단점이 무엇인지도 파악해둬야한다. 정말 안타까운 이야기이지만, 이미 죽어버린 언어를 붙잡고 있는 개발자들이 있다. 이런 '퇴물 개발자'들은 그 언어가 여전히 쓸모있다고 이야기하지만, 현실적으로는 말도안되는 소리다. 미리 알고 이런 사람들은 걸러내야한다.


그렇다면 대체 어떻게 주요 개발언어나 솔루션 등을 확인할 수 있을까? 가장 좋은 방법은 대기업들이 뽑는 개발자 구인의 기준을 보는 것이다. 카카오나 네이버, 배달의 민족 등 유명한 업체에서 쓰는 서비스 공고를 확인해보자. 그러면 그들이 쓰고있는 개발 스택이 무엇인지를 알 수 있다. 일반적으로 좋은 회사에서 쓰는 개발 스택은 '다른 업체들에서도 자주 사용되는' 경우가 많다. 그러니 '이 개발 언어를 쓰면 더 저렴하고, 빠르게 개발을 할 수 있다'는 이야기보다. 많은 사람들이 사용해 안전하고 검증되어있는 개발언어를 선택하는게 좋다. 이렇게 하면 인원뽑기도 쉬워지니 나중가서 퇴사자가 생기거나, 몸이 아픈 사람이 생겨도 문제를 해결하기 쉽다.



예시) 카카오의 백엔드 개발자 구인공고

https://www.wanted.co.kr/wd/96350



-


스타트업이나 중소기업 입장에서 좋은 개발리더를 찾는건 매우 어려운 일이다. 그러나 그런 상황일수록 좋은 개발자의 기준이 될 수 있는 개발스택과, 그들이 실제 작업했던 프로젝트들을 꼭 확인해봐야한다. 개발자는 그 사람의 성격보다도 그들이 사용하는 언어가 더 중요하다. 심지어 그런 개발스택이 프로젝트의 성공 여부를 결정짓기도 한다. 그러니 본인이 만약 회사에 개발자를 들여야하거나. 새로운 서비스를 제작해야할 때는 - 개발자들이 자주 사용하는 주요 개발스택에 대해서 꼭 확인해보자.  





매거진의 이전글 B2B 서비스 : 의류생산 매칭 플랫폼
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari