웹개발의 다섯가지 특징
요즘들어 젊은 개발자들과 대화할 기회가 많이 생기면서 제가 생각하는 웹개발에 대해 한 번 정리할 필요를 느꼈습니다. 제가 웹개발을 잘 아는 것은 아니지만 정리해가면서 배우는 것도 있으니까요. 일단은 특징에 대해 정리하고 차차 웹개발 프로세스에 대해서도 정리할 생각입니다.
제가 생각하는 웹 개발의 특징은 다음과 같습니다. 스테이트가 없는 것도 특징이지만, 너무 당연한 듯해서 제외했습니다.
- 데이터 처리가 중심이다.
- 비동기로 움직인다.
- 다양한 사용자층이 있다.
- 다양한 개발자/회사들이 참여하고 있다.
- 계속 발전한다.
데이터 처리가 중심이다
웹에는 이미 fancy한 것들이 넘치기때문에 컨텐츠가 없는 사이트는 매력이 없습니다. 많은 초보 개발자 분들이 언어나 프레임웍을 공부를 하느라 데이터 관리에는 소홀하신 모습을 보이시는데, ORM으로 가든, NoSQL로 가든, Machine Learning으로 가든 데이터의 본질적인 특성을 이해해야 좋은 서비스를 만들 수 있다는 사실엔 변함이 없습니다. 자주 변경되는 필드를 정규화한다던가, 자주 검색되는 필드에 인덱싱을 건다던가 캐싱을 한다던가 하는 DB 관리도 중요하지만, 정말 필요한 데이터를 수집하고 있는지, 어떤 식으로 보여주어야 하는지에 대한 고민도 해야합니다. MySQL의 스펙을 빠삭하게 아는 것만으로는 현장에서 필요한 개발자가 될 수 없습니다. 물론 MySQL의 스펙을 열심히 공부하는 개발자는 데이터의 특성에 대해서도 이해하려고 노력하는 경우가 대부분이죠.
비동기로 움직인다
모던 웹브라우저는 이미 비동기 방식으로 동작하고 있습니다. 개발하기엔 동기방식이 편하지만 사용자 경험(UX)을 높히기 위해서는 비동기를 도입할 필요가 있습니다. 즉시 즉시 처리해야 사용자들의 만족도가 올라가니까요. 요즘은 서버쪽도 비동기 방식이 각광을 받고 있습니다. NGINX + PHP-FPM이 인기인데는 다 이유가 있습니다. 비동기 동작을 모르고 웹개발 하기는 점점 더 어려워 질테니 지금 당장 뭔가 배우는 것을 추천합니다. 예를 들자면 RxJS.
다양한 사용자층이 있다.
웹의 오픈성은 세상 모든 계층의 유저를 불러모읍니다. 유저마다 요구하는 것이 다르고, 다양한 요구를 반영하기 위해 설계가 복잡해질 가능성이 높은데다, 실제로 써보지 않으면 필요한지 아닌지 알 수 없는 부분도 많습니다. 그러므로 일단 빨리 올리고 유저의 피드백을 모아 기민하게 반응할 필요가 있습니다. 심지어 클라이언트가 원하는 소프트웨어를 구현하는 SI라 하더라도 초기 기획서 대로 개발되는 일은 많지 않습니다. 그러므로 웹개발자라면 사양 변경에 따른 수정은 당연한 것으로 생각하고 미리 대비가 되어있어야 합니다. 또 하나 주의해야할 점은 웹서비스는 어떠한 접근도 가능하기 때문에 해킹이나 잘못된 입력에 대한 체크는 기본 중의 기본이라는 것입니다. e-commerce나 유저의 개인정보를 취급하는 사이트라면 더더욱 주의가 필요합니다.
다양한 개발자/회사들이 참여하고 있다.
페이스북, 구글, 아마존같은 실리콘밸리 대기업이 웹업계를 대표하고 있긴 하지만, 전 세계적으로 다양한 회사와 개발자들이 존재하고 그 시장 규모도 어마어마합니다. 예를 들어 도쿄브랜치는 현재 일본 시장에서 소규모 개발 프로젝트를 다수 진행하고 있는 중인데, 아직 안망하고 있습니다. 한국에서 IT개발하면 자바로 하는 SI가 전부인 것같지만 다양한 개발 커뮤니티가 존재합니다. 이런 상황에서 어떤 식으로 개발하는 것이 좋을지, 혹은 어떻게 개발 경력을 쌓아야 할지 결정하는 일은 쉽지 않습니다. 회사가 정해준다면 그걸 따르기만 하면 되지만, 개발 경력을 쌓다보면 자기가 스택을 선택해야할 상황이 옵니다. 지금 새로운 웹서비스를 개발할때 Angular vs React vs Vue.js vs jQuery, Ruby on Rails vs PHP vs Go vs Java Spring이라면 어떤 선택이 최선일까요? 단가가 중요한 경우라면 빠르고 안정적으로 개발할수 있는 기술을 선택하는 것이 베스트겠지만, 거대 IT회사가 개발했거나, 시장에서 주로 쓰이는 기술을 선택하는 것이 더 유리할 수도 있습니다.
계속 발전한다.
웹업계란 마치 끊임없이 레이즈를 해야하는 포커판과 같습니다. 지금도 계속 새로운 서비스가 나오고 있고, 온라인 상에서는 어떻게 하면 유저에게 더 좋은 서비스를 제공할수 있을지 활발한 토론이 계속 되고 있습니다. 프론트엔드로 치면 처음엔 jQuery면 되었는데 Backbone이 나오고 Angular가 나오고 React가 나오는 식입니다. 기능이 추가되면서 한번에 구현해야할 요구사항도 늘어나고 있기 때문에 개발은 점점 더 복잡해지고 있고 앞으로도 이 추세는 계속 될 것입니다. 이런 상황에서 웹개발자가 할 일은 프로젝트의 복잡성을 낮추는 기법을 연구하고 기술 자체보다는 UX를 우선으로 생각하는 일일 것입니다.
간단하게 제가 매일 겪고있는 웹개발의 이슈들을 정리해봤습니다. 업계에 종사하는 분들이 보면 별것 아닌 뻔한 이야기지만 웹개발을 시작하시는 분들에게 조금이라도 도움이 되었으면 합니다.
유용한 정보 감사합니다~~!
큰 도움이 되었습니다.
좋은 글 감사합니다.
감사합니다 ^^