POOOLING FOREST
웹개발의 본질: 화려한 프레임워크 뒤에 숨은 기본기 이야기 - 기술 트렌드보다 중요한 웹개발의 본질과 기본기에 대한 이야기입니다. 사용자 가치 전달을 위한 지속 가능한 개
Engineering & Tech

웹개발의 본질: 화려한 프레임워크 뒤에 숨은 기본기 이야기

기술 트렌드보다 중요한 웹개발의 본질과 기본기에 대한 이야기입니다. 사용자 가치 전달을 위한 지속 가능한 개발 원칙과 실무 체크리스트를 공유합니다.

송찬영

CTO

"CTO님, 요즘 프론트엔드 트렌드는 이거라는데 저희도 도입해야 하지 않을까요?"

이런 질문을 받을 때마다 저는 잠시 멈칫하게 됩니다. 화려한 기술 스택, 최신 프레임워크, 그리고 끊임없이 쏟아져 나오는 라이브러리들. 개발자라면 누구나 새로운 기술에 대한 호기심과 갈증이 있습니다. 저 역시 주니어 시절에는 그랬습니다. 남들이 안 쓰는 최신 기술을 도입해서 프로젝트를 완성했을 때의 그 짜릿함은 무엇과도 바꿀 수 없었죠. 하지만 솔직히 고백하자면, 그 시절 제가 만들었던 수많은 '최신 기술 집약체'들은 지금 대부분 레거시라는 이름의 기술 부채가 되어 누군가를 괴롭히고 있을지도 모릅니다.

오늘은 기술 리더로서, 그리고 수많은 시행착오를 겪어온 선배 개발자로서 웹개발의 진짜 본질에 대해 이야기해 보려 합니다. 단순히 코드를 짜고 화면을 띄우는 행위를 넘어, 우리가 놓치고 있었던 '기본'에 대한 이야기입니다.

화려함에 취해 기본을 놓치다

몇 년 전, 꽤 규모가 큰 프로젝트의 리딩을 맡았을 때의 일입니다. 당시 팀원들은 의욕이 넘쳤고, 우리는 당시 가장 핫하다는 프레임워크와 상태 관리 라이브러리, 그리고 복잡한 아키텍처 패턴을 모두 도입하기로 결정했습니다. 초기에는 모든 것이 순조로워 보였습니다. 개발 속도는 빨랐고, 최신 기술을 쓴다는 자부심에 팀 분위기도 좋았죠.

문제는 서비스가 런칭되고 트래픽이 몰리기 시작하면서 터졌습니다. 사용자가 조금만 몰려도 페이지 로딩 속도가 현저히 느려졌고, 특정 디바이스에서는 레이아웃이 깨지는 현상이 발생했습니다. 더 심각한 건, 유지보수 단계였습니다. 너무 복잡하게 얽힌 최신 기술 스택 덕분에 간단한 버그 하나를 잡는 데에도 며칠씩 걸리기 일쑤였습니다. "이 코드는 누가 짰지?", "이 라이브러리 내부 동작 방식이 도대체 뭐야?" 회의실에서는 건설적인 논의 대신 한숨과 원망 섞인 질문들만 오갔습니다.

그때 뼈저리게 느꼈습니다. 우리가 웹개발이라는 단어 뒤에 숨은 진짜 목적, 바로 '사용자에게 가치를 전달하는 것'을 잊고 있었다는 사실을요. 우리는 기술을 위한 기술을 하고 있었던 겁니다.

왜(Why)에서 다시 시작하기

그 사건 이후, 저는 팀의 엔지니어링 문화를 완전히 뜯어고쳤습니다. 새로운 기술을 도입할 때는 반드시 "왜?"라는 질문에 답할 수 있어야 한다는 원칙을 세웠습니다.

"이 프레임워크를 도입하면 우리 서비스의 로딩 속도가 0.5초 빨라지나요?" "이 아키텍처가 우리 팀의 현재 인력으로 감당 가능한 수준인가요?" "사용자가 겪는 불편함을 이 기술이 정말로 해결해 주나요?"

이 질문들에 명확히 답하지 못한다면, 아무리 핫한 기술이라도 과감히 배제했습니다. 그리고 다시 기본으로 돌아갔습니다. 브라우저가 어떻게 렌더링을 하는지, HTTP 통신은 어떻게 이루어지는지, 시멘틱 마크업이 검색 엔진 최적화(SEO)와 접근성에 어떤 영향을 미치는지. 화려한 라이브러리 사용법을 익히는 대신, 웹의 근간이 되는 원리를 다시 공부했습니다.

놀랍게도, 기본에 충실했을 때 결과물은 더 훌륭했습니다. 불필요한 라이브러리를 걷어내니 번들 사이즈가 줄어들었고, 웹 표준을 준수하니 별다른 노력 없이도 다양한 브라우저 호환성 문제가 해결되었습니다. 무엇보다 코드가 단순해지니 팀원 간의 커뮤니케이션 비용이 획기적으로 줄어들었습니다.

지속 가능한 웹개발을 위한 체크리스트

지금 이 순간에도 어떤 기술을 써야 할지 고민하는 주니어 개발자, 혹은 프로젝트의 방향성을 고민하는 스타트업 동료들을 위해 제가 실무에서 중요하게 여기는 몇 가지 기준을 공유합니다.

  1. 사용자 경험(UX)이 최우선인가?
    개발자의 편의성보다 사용자의 경험이 우선입니다. 아무리 개발하기 편한 도구라도 사용자에게 느린 로딩 속도나 불안정한 경험을 준다면 그것은 나쁜 기술입니다. Web Vitals 지표를 주기적으로 확인하고, 실제 사용 환경에서의 성능을 모니터링하세요.

  2. 표준 기술을 충분히 활용하고 있는가?
    외부 라이브러리에 의존하기 전에 브라우저의 기본 API로 해결할 수 있는 문제인지 먼저 검토해 보세요. 최근의 브라우저들은 생각보다 훨씬 강력한 기능들을 내장하고 있습니다. fetch, Intersection Observer, Grid Layout 등 표준 기술만 잘 활용해도 무거운 라이브러리 없이 가볍고 빠른 웹을 만들 수 있습니다.

  3. 코드의 가독성과 유지보수성을 고려했는가?
    "나만 알아보는 천재적인 코드"는 팀 프로젝트에서 재앙입니다. 오늘 작성한 코드를 6개월 뒤의 나와 내 동료가 이해할 수 있을지 고민하세요. 변수명 하나, 함수 분리 하나에도 고민이 담겨야 합니다. 클린 코드는 단순히 예쁜 코드가 아니라, 생존을 위한 코드입니다.

  4. 비즈니스 임팩트와 연결되는가?
    우리가 작성하는 코드는 결국 비즈니스의 목표를 달성하기 위한 수단입니다. 기술적인 챌린지도 좋지만, 그것이 회사의 성장과 어떻게 연결되는지 항상 의식해야 합니다. 때로는 빠르고 거칠게 개발해서 시장 반응을 보는 것이, 완벽한 아키텍처를 설계하느라 몇 달을 보내는 것보다 나을 수 있습니다.

기술은 도구일 뿐, 본질은 가치 전달입니다

최근 AI 기술이 발전하면서 웹개발의 진입 장벽이 낮아지고 있다는 이야기가 들립니다. Cursor나 GitHub Copilot 같은 도구들이 코드를 대신 짜주는 시대니까요. 하지만 저는 오히려 그렇기 때문에 '기본기'가 더 중요해졌다고 생각합니다. AI가 짜준 코드가 보안상 문제가 없는지, 성능에 악영향을 주지는 않는지 판단할 수 있는 눈은 결국 탄탄한 기본기에서 나오기 때문입니다.

화려한 트렌드만 쫓다 보면 길을 잃기 쉽습니다. 하지만 웹의 본질적인 원리와 사용자 가치에 집중한다면, 기술의 파도가 아무리 거세게 몰아쳐도 흔들리지 않을 것입니다. 오늘 여러분이 작성한 코드 한 줄이 사용자에게 어떤 가치를 전달하고 있는지, 다시 한번 생각해 보는 하루가 되었으면 좋겠습니다. 기술보다 중요한 건, 결국 문제를 해결하려는 여러분의 그 마음가짐이니까요.

지금 읽으신 내용, 귀사에 적용해보고 싶으신가요?

상황과 목표를 알려주시면 가능한 옵션과 현실적인 도입 경로를 제안해드립니다.