brunch

You can make anything
by writing

C.S.Lewis

by OurStellar Mar 22. 2023

13. 백엔드 개발자, 서비스 개발의 핵심

컴퓨터가 제공하는 실질적인 기능 개발

백엔드란


프런트엔드가 사용자가 직접 사용하는 화면인 반면, 백엔드는 화면에서 사용자가 요청하는 서비스를 수행하는 사용자의 눈에 보이지 않는 부분이다. 서비스는 주로 데이터 조회, 입력 데이터의 저장과 같은 것이다. 일반적으로 웹 서버 뒷 단 시스템을 백엔드라고 한다. 백엔드는 사용자가 원하는 서비스를 만들기 위해 데이터를 처리하는 곳이라고 보면 된다.


프런트 엔드와 백엔드



백엔드 개발자


백엔드 개발자는 서버에서 작동하는 프로그램을 개발하므로 서버 개발자라고도 한다. 화면을 개발하는 웹 퍼블리셔와 프런트 개발자의 결과물이 웹 서버에 올라가고, 백엔드 개발자가 개발한 프로그램은 애플리케이션 서버(WAS)에 위치하여 구동된다. 



수행 업무|


백엔드 개발자의 개발


백엔드 개발자는 화면에서 사용자가 요청한 데이터를 처리하는 서비스 프로그램을 개발한다. 사용자가 요구하는 행위를 실질적으로 수행하는 프로그램을 개발하는 개발자이다. 


서버 프로그램은 DB에 데이터 조회, 저장 뿐만 아니라 다른 시스템과의 연동을 하여야 한다. 사용자가 원하는 서비스는 하나의 시스템에서 이루어지는 일이 극히 드물다. 따라서 서버 프로그램은 DB연동, 타 시스템과의 연동을 통해 사용자가 원하는 처리를 한 번에 해서 처리 결과를 사용자에게 전달하여야 한다. 그래서 프로그램이 복잡하고 난도가 높은 경우가 많다.


타 시스템과의 연동이 많은 서버 프로그램


서버개발자는 단순히 DB에서 데이터를 조회하고 저장하는 일뿐만 아니라 다양한 내외부 시스템과의 연동이 필요하다. 다른 시스템과의 연동을 인터페이스라고 한다. 인터페이스 개발은 서버 개발에 있어 많은 부분을 차지한다. 이 기종의 시스템과의 연계는 어렵다. 연계하는 시스템간 많은 협의가 필요하고 개발 후에도 테스트가 많이 필요한 작업이다.


[타 시스템과의 연동이 많은 서버 프로그램] 그림에서 보듯 '로그인'이라는 서비스를 개발하기 위해서는 먼저 사용자 인증을 위해 인증을 담당하는 서버에 ID와 암호를 전달하여 인증 결과를 받아야 한다. 승인을 받으면 사용자 정보를 DB에서 조회하여 데이터를 가져오고, 사용자의 항공 마일리지를 조회하기 위해 외부에 있는 항공사 서버에 연결하여 마일리지 정보를 가져와야 한다. 사용자 화면에 표시될 정보가 다 갖추어지면 데이터를 처리할 것을 처리하여 데이터를 클라이언트로 전달한다.(서버에서 전달된 데이터를 사용자가 원하는 형태로 화면에 보여준다 - 프런트개발자의 역할)


로그인 처리과정이 많은 단계로 구성되어 있지만 모든 과정은 하나로 끊김 없이 처리되어야 한다. 과정 중간에 오류가 난다면 하나의 서비스는 완료될 수 없다. 그래서 중간에 오류가 나는 경우 등 서비스가 완벽할 수 있도록 프로그로그램 되어야 하고 오류가 나는 경우 데이터 처리에 문제가 없도록 서비스가 완벽할 수 있게 프로그래밍이 되어야 한다. (이체를 하는 경우 송금자의 계좌는 마이너스했는데, 수령자 계좌에 플러스하는 중 오류가 났다면 어떻게 해야 할까?)


서버개발자는 기본적으로 DB와 연동하여 데이터를 처리하고, 다양한 외부 시스템과의 인터페이스를 하는 프로그램을 개발한다. 서비스의 요구사항이 복잡하고 시스템의 규모가 커질수록 연동 되는 시스템의 수도 많아지고 개발의 난이도가 높아진다. 요구사항을 구현할 수 있는 개발 실력과 경험이 필요하다.(물론 단순 개발 양도 많이 있어 실력과 경험에 따라 개발자를 배치한다.)

 


|필요한 기술


백엔드 개발자가 되기 위해서는 많은 개발 지식이 필요하다. 컴퓨터가 가져다주는 프로그래밍의 혜택이 실질적으로 구현되는 영역이다 보니 필요한 지식의 스펙트럼도 다양하고 종류도 많다. 그 많은 것을 간단하게 정리할 수 없다. 개발 경험이 쌓이다 보면 하나둘씩 실력이 쌓인다. 또 어떤 기술과 지식은 시간이 지나면서 도태하는 경우도 많다. 여기서는 현재 기업형 웹 서비스를 위한 개발의 관점에서 꼭 필요한 기술, 시작하는 시점에서 갖추어야 할 핵심 기술을 기술고자 한다.



자바(Java)

자바는 개발언어이다. 개발자에게 있어 주력 언어를 어떤 것을 할지는 매우 중요하다. 예전 필자가 개발을 처음 배웠을 때 C가 기본이었다면, 최근 기본 언어는 자바라고 생각한다. 자바가 가장 인기언어라고 할 수 없지만, 국내에서는 자바가 대세다. 따라서 자바를 기본적으로 할 수 있어야 한다. 이후에 다른 언어들을 하나씩 섭렵하는 것이 좋다.


스프링(Spring) 프레임워크

자바기반의 서버 개발 프레임워크이다. 앞서 프런트엔드 개발을 편리하게 하는 프런트엔드 개발 프레임워크가 기억 날 것이다. 프레임워크란, 개발자가 애플리케이션의 핵심 로직을 개발하는 것에 집중할 수 있도록 기본적인 프로그래밍을 위한 틀이나 구조를 제공하는 것이라 했다.


스프링은 자바 서버개발을 위한 프레임워크이다. 자바는 단지 개발 언어다. 자바 언어로 개발을 하는 방법은 여러 가지가 있다. 자바만 안다고 해서 기업형 웹 애플리케이션을 개발하기는 거의 불가능하다. 현재 많은 기업에서 자바로 언어로 개발할 때 스프링기반 개발 환경을 이용한다. 스프링 프레임워크는 개발자의 필수 사항이다. 자바는 잘하지만 스프링은 모른다면 개발자로 채용되기 쉽지 않다.


SQL(Structured Query Language)

DB에서 자료를 처리하는 용도로 사용되는 구조적 데이터 질의언어를 SQL이라고 한다. 서버 프로그램에서 가장 많은 일이 데이터베이스에 연결하여 데이터를 처리하는 일이다. 데이터를 조회하고 저장하고 갱신하는 일이 매우 많다. 이때 사용하는 DB에 질문을 하고 실행을 하도록 하는  언어가 SQL이다. 


실 프로그램에서는 복잡한 조건이 있는 데이터처리가 필요하다.(예를 들어 부산에 사는 30대 이하 여성 평균 포인트 점수를 추출) 복잡한 데이터를 처리하기 위한 SQL 실력은 필수이다. 흔히 개발자들이 자바와 같은 개발 언어만 열심히 하는데 현장에서는 SQL실력으로 개발자의 실력이 판가름 난다. SQL을 어떻게 작성하는가는 프로그램 성능에 많은 영향을 미친다. 효율적이고 짧고 간결한 SQL 프로그램을 할 수 있는 실력이 있다면 그 가치를 인정받을 수 있다. SQL공부를 아무리 많이 한다고 해도 결코 지나치지 않다.



|갖추면 좋은 것들


백엔드 개발자는 뒷 단에서 일어나는 일을 모두 처리해서 그 결과를 클라이언트에 전달해야 한다. 따라서 개발 언어 이외도 다양한 IT 기술과 환경을 안다면 더욱 실력 있는 개발자가 될 수 있을 것이다.


자바 이외의 프로그램 언어 습득

개발자는 주특기 언어가 있고, 그 외 부가적으로 하나 내지 두 개 정도의 언어를 할 수 있어야 한다. 자바 이외에 최근에 사용이 많이 사용하는 Python, C#과 같은 언어를 할 수 있다면 다양한 사이트에 문제없이 개발을 할 수 있을 것이다.


주요 DBMS(Data Base Management System)에 대한 이해

데이터를 저장하는 DB는 IT 서비스에 있어 가장 중요하다. IT 서비스의 가장 중요한 역할이 데이터를 처리하고 저장하는 것이라고 할 때, DB는 가장 핵심 시스템이다. IT에서 사용하는 DBMS는 몇 가지 정해져 있다. 각 DBMS에 따라 약간 달라지는 것이 있다. 고급 개발자가 되기 위해서는 이런 특성들을 잘 안다면 도움이 될 것이다.


인접한 개발에 대한 기술

백엔드 개발자는 서비스를 호출하는 프런트엔드를 이해하고 있어야 한다. 프런트엔드 자바스크립트를 잘 알고 있다면 개발 현장에 많은 도움이 될 것이다. 백엔드 개발자가 알아야 할 것은 너무 방대하다. 리더 개발자가 되기 위해서는 서버와 같은 하드웨어, 네트워크 및 보안에 대한 기본적인 지식을 두루 갖추고 있어야 한다.


백엔드 개발자가 갖추어야 할 것에 대해 생각해 보니 너무 많아 여기서 일일이 기술할 수 없다. 어려운 용어와 개념도 많이 있어 간단하게 설명할 수 없는 것들이 많다. 한 술에 배부를 수 없듯 하나하나 섭력해야 할 것이다. 그래서 필자의 경험에서 바라본, 시작하는 시점에서 꼭 해야 할 것 몇 가지만 기술한 것이니 그리 알고 이해하기 바란다.



|백엔드 개발자의 특징


백엔드의 개발은 실질적 업무를 프로그래밍하는 개발자이다. 프런트엔드 개발자의 프로그램에서 발생하는 오류는 화면에서 보여주는 것에 대한 것이라 그 오류의 심각성은 덜하다. 하지만 백엔드 개발자 프로그램의 오류는 치명적이다. 데이터를 잘 못 갱신한다던지, 데이터를 처리를 하는 서비스가 중도에 끊겨 데이터가 맞지 않는다면 문제가 크다. 따라서 많은 테스트를 통해 검증되어야 한다. 끈질긴 테스트를 할 수 있는 인내가 필요하다.


우리가 일반적인 개발자라고 한다면 백엔드 개발자를 지칭한다. 백엔드 개발자의 분야는 다양하고 방대하다.  방대한 만큼 한 분야에 전문성이 필요하다. 전문성 못지않게 IT전반적인 지식을 두루 갖춘다면 실력 있는 개발자가 될 수 있을 것이다. 개발 지식 못지않게 업무에 대한 지식을 가진다면 더할 나위 없다. 어느 정도 실력을 갖춘 개발자라면 어느 분야의 업무(금융, 통신, 제조와 같은)를 잘 아는 것에 의해 개발자의 평가가 달라진다는 것을 알아야 할 것이다.


IT 엔지니어링과 새로운 기술을 좋아한다면 백엔드 개발자에 도전할 만하다. 개발 기술이 방대하다고 하나 현장에서는 많은 개발자가 있다. 운전이 어렵지만 운전하는 사람이 많듯 개발자도 많다. 진심  IT에 관심이 있다면 개발자에 도전하시라. 그리고 IT 기술, 개발이라는 것에 매력을 느껴 보기를 바란다. 내가 짠 프로그램이 제대로 돌아, 사람들이 이용해서 편리함을 얻는 것을 본다면 색다른 즐거움을 느낄 수 있다.




체계적이고 보완된 내용으로 브런치 글과 같은 이름으로 출간을 하게되었습니다. 아래의 링크를 통해 자세한 내용을 확인할 수 있습니다.



교보문고
나에게 맞는 IT 직업 찾기



예스24
나에게 맞는 IT 직업 찾기


알라딘
나에게 맞는 IT 직업 찾기





 


매거진의 이전글 12. 프런트 엔드 개발자, 동작하는 화면의 개발
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari