웹 시스템 계층에 따라 각기 다른 개발자의 기술이 필요
이제 본격적으로 개발자에 대해 이야기할 수 있게 되었다. 필자가 처음 개발할 당시는 클라이언트 - 서버 환경이었다. 지금은 화면과 업무 처리 로직 프로그래밍이 분리되어 있지만, 그때는 화면에 업무처리 로직이 같이 있었다. 따라서 화면개발이 개발의 대부분이었다.
화면 색상이나 폰트 같은 디자인도 별로 중요시하는 시절이 아니라 디자이너도 따로 없었다. 약간 감각 있는(?) 개발자가 디자인 표준을 만들어 그대로 사용했던 것 같다. 개발자는 모두 같은 개발자였고, 개발자는 자기가 맡은 업무의 화면에서 서버 프로그램, DB 처리에 이르기까지 혼자 개발했다.
하지만 세상이 다양해지고 복잡해진 것처럼 IT도 너무 복잡해졌다. 특히 웹 시스템은 더 복잡하다. 지금은 옛날처럼 개발자 혼자서 웹을 개발할 수 없다. 웹 화면 하나를 여러 부류의 개발자가 같이 개발해야 한다. 각기 개발한 것들이 서로 연계되어 작동하기 때문에 상호 간의 협력이 필수다. 그래서 혼자 업무를 다 개발하던 예전에 비해 여럿이 하나를 같이 개발하는 웹 개발은 더욱 복잡하고 시간과 비용이 많이 든다.
"9편 웹 시스템 구축을 위한 모든 것"에서 웹 시스템 구축을 위한 참여자들을 살펴봤다. 참여자들이 어떻게 웹 개발을 하는지 개발과정 중심으로 알아보자.
UI/UX의 화면 기획과 디자인 작업이 끝나면 본격적인 개발 과정이 된다. 최소 5단계를 거쳐야 동작하는 화면 하나가 완성된다. 개발 과정도 세 단계로 나누어 진행되며, 각 단계별 독립적인 개발자가 있다. 독립적으로 개발된 프로그래밍은 서로 간에 조합을 맞추어야 한다. 화면에서 전달된 데이터가 서버 프로그램에 정확하게 전달되어야 하고, 서버는 화면 즉 클라이언트가 요구하는 대로 정확하게 데이터를 처리하고 결과를 전달해야 제대로 된 웹 서비스가 가능하다.
각기 독립된 개발자들이 한 사람처럼 움직여야 한다. 이것이 얼마나 어려운지를 여러분도 알 것이다. 개발자 간에 사이가 안 좋아 소통이 안되거나, 한쪽이 실력이 안되어 못 따라오면 다하도록 손 놓고 기다려야 한다. 이럴 때 현장 분위기는 좋을 수 없다. (이런 것 보면 예전에 혼자 뚝딱뚝딱 개발할 때가 좋았다는 생각^^. 많은 사람들이 협력해서 일해야 하기 때문에 협력을 도와주는 방법론이나 툴들이 많이 발전해 있다)
[그림:웹 개발과정]에서 보면 웹 개발자에 '웹 퍼블리셔', '프런트개발자', '서버 개발자'로 나누어져 있다. 각자의 역할이 어떻게 다른 지도 대강 이해할 수 있다. 웹 시스템 구조를 통해 각각의 개발자의 역할 전반을 조금 더 살펴보자.
웹 서비스 시스템 구조는 웹 서버 - 웹 애플리케이션 서버(WAS) - DB서버로 구성된다. 웹 개발은 '웹 화면'과 웹 화면 뒤에서 처리하는 '서버 프로그램'으로 구분할 수 있다. 웹 화면은 브라우즈 화면에서 보이는 웹 페이지고, 서버 프로그램은 화면에서 조회, 이체 등과 같은 버튼을 클릭할 때 처리되는 과정이라고 보면 된다.
이들 웹 화면과 서버 프로그램은 한 곳에 있지 않고, 웹 화면은 웹 서버에 서버 프로그램은 웹 애플리케이션 서버에 위치한다. 따라서 개발자들이 개발하는 웹 화면과 서버 프로그램은 웹 서버와 웹 애플리케이션 서버에 올라가므로 이들 서버가 개발자가 개발한 프로그램이 적재되는 서버다. DB서버는 개발자가 개발하는 영역이 아니다. DB는 워드나 엑셀 같은 이미 만들어진 SW가 돌아가는 곳이다. 우리가 이미 만들어진 워드나 엑셀을 이용하듯 DB도 데이터 관리를 위해 이미 만들어진 SW이다.
웹 퍼블리셔와 프런트 개발자의 프로그램은 웹 서버에
서버 개발자의 프로그램은 웹 애플리케이션 서버에 위치한다
웹 화면은 웹 퍼블리셔와 프런트 개발자(그냥 화면 개발자라고 하기도 한다)가 개발한다. 화면에서 호출하는 서버 프로그램을 개발자를 백 엔드 개발자 또는 서버 개발자(*)라고 한다. 웹 퍼블리셔는 html화면을 만들고, 프런트 개발자는 웹 퍼블리셔가 만든 html화면에 화면 데이터 처리나 서버 프로그램을 호출하는 개발을 한다. 서버 개발자는 서버에서 많은 것을 처리하는 프로그래밍을 개발한다. 각종 다른 시스템과 연동, DB에 접속하여 정보를 처리한 후 결과를 프런트로 전달한다.
'서버 개발자'라는 용어를 다르게 사용되는 경우도 있다. 그러나 필자가 경험한 대부분 현장에서 서버 업무 로직을 개발하는 개발자를 '서버 개발자'라고 한다. 그래서 백엔드 개발자와 서버 개발자를 동일한 용어로 간주한다.
왜 이렇게 개발자들이 나누어져 있나 하는 생각이 들 것이다. 그 이유는 개발자 한 사람이 다 하기에는 기술의 내용이나 스펙이 다르기 때문이다. 이들 개발자가 사용하는 프로그래밍 언어, 개발 환경과 툴이 제각기 다르다(웹 퍼블리셔와 프런트 개발자는 겹치는 부분이 있다 - 뒤에 자세히). 그래서 하나의 개발자로 묶기가 쉽지 않다.
물론 이것도 잘하고 저것도 다 잘하는 개발자도 있다. 그러나 대규모 시스템 개발 프로젝트에서는 일의 양도 많고 전문성을 더 요구하기 때문에 엄격하게 개발자를 구분한다. 그러나 작은 프로젝트에서는 조금 기술이 모자라도 두루두루 잘하는 개발자가 적합할 수 있다.
다음 편에서는 개발자 하나하나에 대해 자세히 살펴볼 것이다. 여러분이 개발자가 된다면 어떤 개발자가 되고 싶은가? 먼저 웹 퍼블리셔와 프런트 개발자에 대해 알아보자.
체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.
교보문고
나에게 맞는 IT 직업 찾기
예스24
나에게 맞는 IT 직업 찾기
알라딘
나에게 맞는 IT 직업 찾기