일반적으로 하나의 플랫폼 혹은 서비스를 만들기 위해 아래와 같은 업무 영역을 정의할 수 있다.
첫째, 서버 개발 (Back-end)
둘째, 데이터베이스 개발
셋째, 웹 개발 (Front-End)
넷째, 모바일 앱(Application) 개발 (IOS, Android)
다섯째, PC 앱(Application) 개발 (Windows, Mac)
서버 개발
이 영역은 사용자들이 화면단에서 요청하는 내용을 처리하는 역할을 한다 라고 보면 쉬울 것 같다.
즉, 화면단에서 어떤 요청이 있을 때 주로 그에 대한 답변 혹은 데이타 변경 처리에 대한 업무가 주 업무라 보면 된다.
당연히 데이터 제공 및 변경에 대한 업무가 주 이기에 디자이너랑 같이 일하는 업무는 아니고 주로 데이터베이스 개발자 혹은 해당 데이터를 요청하는 화면(프런트) 개발자랑 같이 업무를 진행을 한다.
초창기를 거슬러 올라가면 웹사이트 = 홈페이지라는 개념이 있을 때가 있었다.
이때는 단순히 HTML 내용을 화면에 보여준 단순 기능만 있었기에 서버 개발의 영역이 거의 없던 시대였지만 지금의 모든 웹사이트는 데이터 처리 없이 정적인 정보만 제공하는 사이트는 없으리라 본다.
하지만, 기술에 발전과 좀 더 빠른 개발을 하기 위한 개발자들의 욕심에 의해 요즘 들어 서버리스(Serverless) 아키텍처 개념이 많이 나타나고 있다.
말 그대로 서버 없이 플랫폼을 구축한다는 개념인데, 물리적 서버는 있지만 개발자들이 서버 사이드 개발을 하지 않아도 된다는 의미로 해석하면 될 것이다.
그럼 서버쪽 개발은 누가 하느냐, 그건 Google이나 AWS와 같은 업체에서 화면(프런트) 개발자가 서버 개념없이 직접 자사의 데이터 베이스에 접근할 수 있는 언어를 제공하고 개발자들은 단순하게 화면(프런트) 개발만으로 원하는 데이터를 접근해서 원하는 서비스를 개발할 수 있게 제공하는 개념이라 보면 될 것이다.
하지만 모든 기술에는 일장일단이 있듯이 기업에 목적에 맞게 취사선택이 되어야 될 것으로 생각이 든다.
데이터베이스 개발
이 영역은 작은 스타트업에는 없는 영역이다.
작은 스타트업인 경우 주로 서버 개발자가 경량의 데이터베이스를 설치해서 단순히 사용을 하는 업무로만 그치는 정도이지만 조금 큰 기업인 경우 데이터 처리가 큰 비중을 차지하기에 전문 인력이 담당하고 있다.
특히 Oracle을 사용한다면 관련 자격증이 있을 정도로 환경 설정부터 성능 튜닝, 유지보수가 고난이도 지식을 요하는 부분이라 신입 사원이 바로 손댈 수 있는 영역은 아니고 주로 관련 자격증은 기본적으로 가지고 있는 상태에서 입사 후 어느 정도 선임에 가르침과 노하우를 몇 년 배우면서 성장을 하는 영역이라 볼 수 있다.
상대적으로 러닝 커브가 높고 다른 영역보다는 노하우와 지식이 퇴보하지 않는 영역 이기에 이쪽 영역에 전문가들은 연봉이 수억 원대가 된다.
웹 개발
비전공자들이 가장 쉽게 접근할 수 있는 영역이 화면(프런트) 개발 영역이 아닌가 싶다.
수요도 가장 많고 초창기 홈페이지라는 용어가 생겨났을 때부터 있었던 영역이 화면(프런트) 영역이다 보니 가장 입김도 쎈게 없지 않아 있어 보인다.
아마 전 세계 개발자들 대상으로 업무를 나누더라도 가장 많은 개발자들이 포진되어 있는 영역이 아닌가 싶다.
그래서 그런지 웹 개발자의 욕심(?) 은 점점 커지고 있어 최근에는 PWA(Progressive Web App)이라는 개념도 도입하면서 점차 앱의 영역을 침투하고 있다.
일부러 투입한다 라기보다는 기존에 앱 개발에 대한 피로도가 생각보다 심하기에 웹에서 해답을 찾으려고 한 게 아닌가 싶다.
개발자들의 특징은 본능적으로 어려운 걸 피하고 쉬운 걸 찾으려고 하는 습성이 있다.
그러다 보니 언어의 변천사가 좀 더 쉽고 빠르게 라는 개념으로 하나하나 새로운 게 쌓여가고 있는 게 아닌가 싶다.
사실 깊게 파고들면 공부해야 될게 많은 부분은 있겠지만 그나마 생각보다 러닝 커브가 높지 않다.
앱 개발(모바일)
주로 전공자들이 많이 접근하는 영역이다.
그중에서 가장 쉽게 접근하는 영역은 Android이고 조금 더 관심이 있다면 IOS가 될 수 있다.
Google과 Apple이 자사의 앱스토어를 제공하면서 생긴 영역이 아닌가 싶다.
특성상 Android와 IOS의 OS가 업그레이드됨에 따라 개발된 자사의 앱의 유지보수도 같이 되어야 되기에 개발 대비 비용(Cost)이 높은 영역이라 볼 수 있다.
해당 영역은 개발 난이도를 떠나서 개발 후 배포 심사에 대한 스트레스로 골머리를 앓은 영역이다.
아무래도 앱스토어에 배포를 하다 보니 아주 사소한 걸로 반려가 될 수도 있고 사실 개발에만 신경 써도 힘든 마당에 배포에 대한 스트레스, OS 업그레이드에 대한 스트레스를 항상 가지고 가야 된다는 점에서 많은 도전이 필요한 업무 영역이다.
그만큼 러닝 커브가 높은 영역이다.
지금 이 시대는 모든게 모바일 앱을 이용하는 시대라고 해도 과언이 아니다.
앱스토어가 나왔던 초창기처럼 앱스토어 다운로드 비중이 높지는 않지만 그래도 새로운 서비스를 출시했을 때 항상 따라오는 게 앱 개발이 될 수 있다.
단언컨대, 앞으로 메타버스 시대가 도래하면 그 메타버스 OS에 구동되는 앱스토어에 배포되는 각종 프로그램 개발이 주가 되는 시대가 될 거라 생각이 든다.
그러면 또 다른 형태에 OS 개발자 업무가 생기지 않을까 한다.
그렇게 되면 발 빠르게 메타버스 OS언어를 습득해서 개발을 해야 하는 상황이 생길 것이다.
무조건 최신 트렌드를 따라가는게 정답은 아니지만 거기에 수요가 있고 새로운 비즈니스가 있기에 주시해야 될것 같다.
앱 개발(PC)
맥이 활성화되기 전에 윈도우 PC 환경에서 설치 프로그램 형식에 응용프로그램(Application) 이 주가 되던 시대가 있었다.
물론 지금도 대중적으로는 윈도우 PC가 주가 이루긴 하지만 윈도우 앱은 응용프로그램이라고 불리며 보통 마이크로소프트에서 제공하는 개발 언어로 개발을 하고 이걸 사용자가 사용할 수 있게 설치 패키지를 만들어 배포하는 형태가 주로 이루었다.
앱스토어가 따로 있는게 아니었기에 결국 개발자는 응용프로그램 개발 + 설치 패키지(초기 설치 + 업그레이드 가능)를 같이 만들고 자사 사이트에 올려놔서 사용자들이 다운로드 받아 설치할 수 있게 하는 형태이다.
최근 들어 웹으로 비중이 많이 넘어가긴 했으나 아직 윈도우 응용프로그램이 사장되지 않고 있기는 하다.
하지만 웹의 욕심(?) 은 PC용 앱에도 미치고 있다.
혹 디스코드라는 메신저 아니면 개발자 툴인 Visual Studio Code라는 응용 프로그램을 들어보신 적이 있다면 해당 프로그램이 웹 플랫폼(일종의 웹사이트)라는 사실을 아는 이는 많지 않을 것이다.
마치 윈도우에 설치돼서 실행되는 것처럼 보이지만 해당 프로그램은 크롬 브라우저를 사용한 웹 프로그램이다.
아무래도 웹이라는 언어는 Cost입장에서 다른 영역보다는 낮기에 많이 활용이 되지 않나 싶다.
하지만 아직도 병원, 관공서, 증권사, 은행, 기업 내 사내 프로그램 등등은 아직도 응용프로그램 방식을 사용하고 있다는 것은 잊지 말아야 될것 같다.
예전에 이런 글을 봤다.
다들 개발자들이 최신 트렌드에 쫓아가다 보니 특정 증권사에서 오래전에 만든 코볼이라는 언어를 유지 보수할 수 있는 인력이 없어서 전 세계적으로 개발자를 수소문하고 있다고..
기업 특성상 기존에 사용하고 있는 프로그램 형식을 바꾸는게 쉽지는 않다.
특히 돈과 연관된 기업인 경우...
그러다 보니 옛날 언어를 사용하는게 귀하게 되는 시대가 될 수도 있다는 생각이 든다.
모든 건 수요와 공급의 원칙이 있는 세상이다.
아무리 최신 트렌드가 뭐가 되든 기존에 사용하고 있는 프로그램을 유지보수할 수 있는 능력이 전 세계에 몇 명 없다면 그 사람의 몸값은 가늠할 수 없을 듯하다.
난 어떤 개발자, 어떤 업무 영역이 맞을지 고민을 해볼때 중요한 대목이 되지 않나 싶다
마지막으로 풀스텍 개발자
풀스텍이라는 용어가 과거에는 모든 언어를 섭렵한 극의 초사이이언 개발자를 의미했다.
예를 들어, 앱, 웹, 서버, 데이터베이스를 사용하기 위한 모든 언어를 다 섭렵한..
경력 20년 차 되시는 분들은 과거 여러 변천사 경험을 다 하고 오셨기에 이런 분도 풀스텍이라 부르긴 하지만 요즘 시대에 풀스텍은 어떤 서비스를 혼자서 다 할 수 있는 걸 통칭하기도 한다.
혼자서 다 하려면 앞서 설명한 저 언어들을 다 섭렵해야 된다는 말 아니냐 라고 하시는 분도 있겠지만 시대가 시대 인지라 앞서서 잠깐 언급한 서버리스(Serverless) 개념기반에 웹 언어 하나 개발만 신경 쓰고 나머진 Cloud로 Google이나 AWS를 사용해서 충분히 대응이 가능한 시대에 살고 있다.
근대 앱은 안되지 않느냐 하시는 분도 계시겠지만, 앱은 앞서 언급한 것 처럼 PWA (Progressive Web App) 으로 어느정도 대응이 가능하다.
대표적인 구조가 PWA + (Vue.js | React | Angular) + Firebase조합 정도면 웹 개발자 한 명이 전체 플랫폼 하나는 다 만들 수 있는 구조가 될 수 있을 것 같다.
그리고 최근 들어 PWA 형태로 만든 웹사이트가 점차 나오고 있는건 예의 주시할 필요가 있다.
필자도 PWA 형태로 만든 웹사이트가 하나 있다.
형태를 보면 아래와 같이 될 수가 있다.
우선 사이트에 접속을 한다.
그러면 아래와 같이 웹사이트임에도 불구하고 설치 Dialog가 뜨게 할 수 있다.
여기서 "Install" 버튼을 클릭하면 크롬 브라우저에서 제공하는 설치 Dialog를 호출할 수가 있다.
아래와 같이.. 아마 크롬 브라우저에 이런 모양 아이콘이 있었다는걸 아는 이는 많지 않을것 같다.
이렇게 설치를 하면 일반 앱처럼(모바일, PC 둘 다) 사용을 할 수 있다.
앱스토어 없이.
그렇다면 우리는 무조건 다 이렇게 변경을 해야 될것인가? 라고 했을때 이것이 정답은 아니다.
기업에 서비스 형태에 따라 위와 같은 형태가 맞을수도 있고 아닐수도 있으니..
예를 들어, 모바일 특유의 기능(카메라 제어, 디스플레이 제어 등등) 은 아직까지 위와 같은 형태로 대응이 안될 뿐더러 은행 혹은 증권사처럼 초당 몇억 건씩 트래픽이 일어나야 되는 서비스도 위와 같은 클라우드 형태가 맞지 않다.
하지만 초기 스타트업을 창업 하는 서비스가 위와 같은 서비스가 아닌 경우임에도 불구하고 자사 혹은 장비를 구매해서 IDC센터를 통해서 대응하는 방식을 고민하고 있다면 다시 생각을 해보라고 말하고 싶다.
제공되는 프로그램 기능과 안정화에 집중을 해도 될똥 말똥인데 하드웨어 장비, 메모리, 네트워크, 디스크 장애 , 이중화 및 버그 픽스 등등을 동시에 대응할 여유가 어디 있으랴.
대기업에서도 일부 서비스에 대해 조금씩 클라우드에 눈을 돌리고 있는 건 세계적인 트렌드가 아닐까 싶다.