본문 바로가기

이야기/SI

낯선 프레임워크를 접하며 든 생각

비주류 프레임워크는 다양하다. 대부분 특정한 목적을 달성하기 위하여 대중성을 포기한 대가로 목적을 달성하는 것에 초점을 둔 프레임워크다.

한국에는 특히 이런 프레임워크가 상당히 많다. HTML, CSS 대신 컴포넌트 단위로 드래그 & 드롭 형식으로 화면을 꾸미는 프레임워크가 특히 상당히 많다.

아마도 디자인이라는, 개발자에게는 낯설 수밖에 없는 영역을, 디자이너에게 의존하지 않고 해결하기 위한 도구로 보인다. 더불어 숙련도 낮은 개발자 혹은 유지보수 관리자가 특정한 화면을 개발하기 위한 목적도 있다고 본다.

 

이런 프레임워크는 깊이 파고들 이유가 전혀 없다.

하나의 제품에 불과하며 보편성을 갖추고자 노력하지도 않는다. 단지 자신의 제품을 소모하는 물주 몇몇을 붙잡고 그들의 입맛에 맞는 제품을 유지할 뿐인 기업의, 일그러진 자화상이 아닐까.

기업의 솔루션이지만 그걸 개발한 개발자들도 알고 있다. 핵심 영역이 아니라는 것을. 그래서 그럴까? 처음 쓰는 사람도 쉽게 발견할 수 있는 오류를 그냥 그런 오류가 있으니 알아서 대처하라는 방식으로 넘어가는 경우가 태반이다.

한 번 만들었지만 그걸 지속적으로 개선할 의지가 없는 것이다.

 

스프링 프레임워크가 인기가 있는 이유가 무엇인가?

단순하다. 목적 자체가 뚜렷하고, 그 목적을 향해서 지속적으로 개선하기 때문이다.

개발자가 지속적으로 개선하니 그것을 믿고 서드파티도 다양하게 등장한다.

훌륭한 서드파티는 스프링 프레임워크의 일부가 되어서 하나의 생태계를 이룬다.

생태계 구성되니 여기저기서 다양한 개발자가 쉽게 접근하고 그것을 활용하여 훌륭한 결과물을 만든다.

아주 이상적이다.

 

반면에 스프링 프레임워크 자체가 너무 보편적으로 쓰이고, 스프링 레거시에서 더 이상 나아가지 않으려는 몇몇 개발자들 때문에 혐오의 대상이 되기도 한다.

스프링 프레임워크를 쓰는 것만으로 폄하하는 개발자가 있으니 말이다.

구체적으로 그 개발자도 스프링 프레임워크 자체를 폄하하기 보다도, 지속적으로 발전하지 않는 개발자를 혐오한다.

앞서 말했듯, 스프링 프레임워크의 핵심은 [지속적인 개선]이다.

스프링 레거시는, 스프링부트가 등장하고 그것이 안정화된 이후로 사실상 쓸 이유가 없다.

단지 예전에 만들었고 잘 돌아가는 것을 건들 이유가 없으니 존재하는 것 뿐이다.

 

그렇다면 최신 기술만 알면 될까?

고작 1년도 안되는 경험으로 상황을 재단하는 것은 어리석음의 극치일 수 있으나, 그래도 판단을 내려보면...

적어도 한국에서는 레거시는 반드시 알아야 한다고 본다.

단, 이는 레거시에 숙달될 필요가 있다는 것이 아니다.

다른 문제가 아니라, 기존에 작성된 코드를 읽을 줄 알아야 하기 때문이다.

 

이미 수년 동안 영업을 한 기업에서는 반드시 레거시 코드가 존재할 수밖에 없다.

그 코드는 당연히 레거시 기반이다.

사용자에게 비슷한, 혹은 더 나은 경험을 주기 위해서라도 반드시 레거시 코드를 해석할 줄 알아야 한다.

 

한국 기업은 코로나를 기점으로 최신 기술에 대한 수요가 급증하고 있는 상황이다.

그말인즉슨, 코로나 이전에는 최신 기술에 대한 수요가 적었고, 수요가 적으니 당연히 그런 기술로 제품을 만들지 않았다는 것이다.

 

"기존 기술로도 다 만들 수 있는데 굳이 돈과 시간을 투자해서 새로운 기술을?"

 

저 말... 비슷한 늬앙스로 짧은 기간에 상당히 많이 들었다.

저 말에 대한 현시대의 대답은 간단하다.

 

"만들 수 있는 것이 경쟁력이 아닌 시대니까요."

 

무슨 분야든 처음에는 할 줄만 알면 된다.

하지만 분야에 인재가 쌓이고 기술이 축적되고 새로운 사람들이 유입되면...

경쟁력이 필요해진다.

남과 다른 무언가는 어디에서 나오는가?

 

일반적으로 효율이다.

효율은 개발자 개인의 숙련도에서 차이가 날 수도 있지만,

체계 자체를 바꿔서 모든 개발자의 능률을 향상시킬 수도 있다.

설정을 해야만 하는 도구에서,

설정을 자동으로 해주는 도구를 사용한다면,

설정을 하는 시간만큼,

설정을 할 줄 아는 개발자를 고용하는 비용만큼,

효율이 상승한다.

 

두번째로 퀄리티다.

다소 비효율적이라도, 0.1초에 보여줄 것이 0.08초만에 보여줬다고 해보자.

고작 그걸로 뭐가 다른가?

못 느낄 수 있다.

하지만 프로그램은 기본적으로 수많은 동작의 집합체다.

그 관절마다 0.02초의 차이가, 결과적으로 2초의 차이가 될 수도 있다.

그 2초는 반복되면 소비자로 하여금 UX 측면에서 퀄리티 차이가 난다고 느낄 수도 있다.

보편적인 상황과 비상상황에서도 그 운명이 갈릴 수 있다.

보편적인 상황에서 차이를 거의 느끼기 힘든데,

각종 재난 상황에서 하나는 정상적으로 돌아가고,

다른 하나는 안 돌아간다면,

이미 게임은 끝이 아닌가?

재난 상황 한두 시간, 하루 이틀, 일이 주가 중요한 게 아니다.

그것을 겪은 사용자는 이미 두 제품 간 우열을 명확하게 인지한다.

인지된 우열은 강한 임팩트가 아닌 이상 바꿀 수 없다.

 

돌고돌아,

프레임워크 이야기를 마무리 짓자.

결국 지금 SI에서 임시방편으로 쓰고 있는 수많은 프레임워크는 수명이 정해져있다고 본다.

효율성도, 퀄리티도 그걸 개발하는 기업에서조차 관심이 없다.

한 번 만들고 그것에 대해서 정확히 모르는

혹은 그 정도면 충분하다고 생각하는 물주를 상대로 급전을 버는 것에만 관심이 있다.

언제나 최소한으로 돌아갈 수 있을 정도로만 업데이트를 진행한다.

하루라도 개발자를 제품을 개선하는 데 투자하는 것이 너무나 돈이 아깝다고 생각하는 것 같다.

 

10년 전 한국 게임업계가 떠오른다.

중국 게임 따위는 결코 한국 게임의 퀄리티를 쫓아올 수 없다고 호언장담했던 시절이 있다.

지금은 한국 게임은 거대한 도박장과 P2E을 위한 노가다 장소라고 부른다.

반면에 중국 게임은 수많은 글로벌 기업을 배출했다.

놀라운 것은 퀄리티로 승부했다는 것이다.

양대 스토어에서 P2W을 제외한 게임 중 한국 게임은 없다.

 

이미 썩어버린 것인지,

썩어가는 과정인 것인지,

그나마 정화하는 과정인 것인지...

궁금하다.