본문 바로가기
블로그 이미지

방문해 주셔서 감사합니다! 항상 행복하세요!

  
   - 문의사항은 메일 또는 댓글로 언제든 연락주세요.
   - "해줘","답 내놔" 같은 질문은 답변드리지 않습니다.
   - 메일주소 : lts06069@naver.com


기타

신입 백엔드 웹(Backend Web) 개발자가 되기 위해 필요한 순서

야근없는 행복한 삶을 위해 ~
by 마샤와 곰 2021. 8. 25.

 

 

 

백엔드 개발자는 일반적으로 UI(사용자 인터페이스)가 간단하거나 존재하지 않으면서 다양한 데이터를 처리하며 관리하는 개발자를 의미 합니다.

그 중에서 웹(web)에 대해 좀 더 집중하는 개발자를 백엔드 웹 개발자라고 적어 보았습니다.

웹 어플리케이션 서버 기능에서 브라우저 화면구성에 필요한 기능을 제외한 나머지를 구현하는 개발자가 아닐까요..?

* 물론 "백엔드 웹 개발자" 라는 명칭이 공식적으로(?) 사용되는 것은 아닙니다. ^-^

 

 

#순서1

백엔드 웹 개발자를 하시려면 내가 하고자 하는 개발 언어를 선택해야 합니다.
백엔드 웹 개발시 주로 사용되는 언어로는 Java, php, python, Javascript(node.js) 등이 있습니다.
이 중 1가지를 선택하여 공부를 시작해야 합니다.
처음에 힘든 부분이 "개발환경 구성" 입니다.
개발환경을 내가 사용중인 컴퓨터에 맞게 설치하는지를 충분히 준비하고 진행 하여야 합니다.


#순서2
프로그래밍 언어에 조금 익숙해지고 즐거움(?)을 느낄 때 운영체제에 대해서 공부 합니다.
운영체제는 컴퓨터를 동작시키는 가장 기초의 프로그램으로 윈도우, 안드로이드 및 맥os 등을 예로 들 수 있습니다.
또한 운영체제와 관련된 내용을 공부하다보면 자연스럽게 유닉스, 리눅스 형태의 운영체제를 만날 수 있습니다.
기본적으로 윈도우(or 맥os)를 먼저 알아본 뒤에 리눅스(유닉스)에 대해서 알아야 합니다.
내가 사용중인 개발언어도 결국 운영체제라는 곳에서 동작 하기 때문 입니다.
조금 더 깊은 지식을 위해서는 컴퓨터 구조론을 공부해도 좋습니다.


#순서3
프로그래밍 언어와 운영체제가 무엇인지 이해가 된 상태라면 데이터베이스에 친숙해져야 합니다.
데이터베이스는 각종 데이터를 저장하는 서버를 의미 합니다.
일반적으로 mysql, mssql, oracle, mongodb등이 존재 합니다.
관계형 데이터베이스가 주로 사용되므로 mysql, mssql, oracle 등 원하는 관계형 데이터베이스를 익히도록 합니다.
#순서1과 마찬가지로 설치하는데 많은 신경을 써야 합니다.


#순서4
#순서1에서 익힌 개발언어와 #순서3에서 익힌 데이터베이스를 함께 연동하는 법을 숙달합니다.
예를 들면 Java 라는 개발 언어를 통해서 mysql에 접속하기, php를 통해서 oracle에 데이터 넣기 등등 이러한 연동 방법에 대해서 알아야 합니다.
일반적으로 데이터 가져오기, 데이터 입력하기, 데이터 수정하기, 데이터 삭제하기 등 4가지 기능에 대해서 할 줄 알아야 합니다.
아마 그러면서 자연스럽게 "페이징 알고리즘"에 대해서 공부를 하게 될 것 입니다.


#순서5
내가 공부하고 있는 개발언어가 유닉스, 리눅스 형태의 운영체제에서 어떻게 해야 동작하게 할 수 있는지 연습 해 보아야 합니다.
일반적으로 리눅스 계열의 운영체제인 우분투, 센트OS라는 운영체제를 버추얼박스나 VM웨어라는 가상 프로그램을 통해서 구동 해 볼 수 있습니다.
 * 물론 도커, 쿠버네티스를 사용하여도 됩니다.
내가 개발한 프로그램이 리눅스계열에서 어떻게 해야 동작을 시킬 수 있는지 반드시 연습을 해 보아야 합니다.


#순서6
알고리즘에 대해 알아야 합니다.
정렬, 순열, 탐색 등등 백그라운드 개발자는 이러한 알고리즘을 반드시 공부해야 합니다.
컴퓨터의 한정적인 자원을 어떻게 하면 효율적으로 사용 할 수 있는지, 최적화된 기능을 구현하기위한 방법이 무엇인지를 알 기 위해서는 알고리즘은 필수 입니다.
알고리즘을 의사코드로 공부하는 것도 좋지만 내가 사용하고 있는 개발언어를 가지고 실제 구현하는 것이 더욱 좋습니다.
좀 더 깊은 지식을 필요로 한 다면, 자료구조에 대해서 배우는 것도 좋습니다.
 * 글쓴이 또한 실력이 부족하여 항상 노력중입니다...ㅠ


#순서7
운영체제와 알고리즘을 이해 하였다면 네트워크에 대해서 좀 더 자세히 알아야 합니다.
아마 #순서5에서 가상머신을 사용하기 위해 어느정도 숙달 하였을 것 입니다.
네트워크 계층은 어떻게 되어 있는지, tcp/ip, udp가 무엇인지 sftp가뭔지 등등 실제 데이터를 주고받고 처리하기 위한 여러 통신 규칙, 사용방법 등에 대해서 공부해야 합니다.


#순서8
다양한 외부 기술(라이브러리, 프레임워크)들을 내가 사용하는 개발 언어로 연동하는 법을 익혀야 합니다.
예를들어 영상처리 기술, 네이버로그인 기술, 파이어베이스 기술 등등 공식문서등을 읽어가며 사용하는 법을 숙달하여야 합니다.
* 위 기술은 단순한 예제 입니다. 저 내용의 기술을 연동하라는 의미는 아닙니다.
백그라운드 웹 개발자분들은 이러한 외부기술을 연동하는 작업을 하는 경우가 무척 많습니다.


#순서9
여러 기술들과 연동하는 작업을 하다보면 특정 패턴들을 만날 수 있습니다.
프로그래밍언어는 컴퓨터를 위한 언어가 아니라 사람(개발자)을 위한 언어 입니다.
기계는 단순히 숫자 0과 1만 가지고 동작을 합니다.
그러한 프로그래밍언어는 사람(개발자)들이 사용 하므로 이해하기 쉬운 표현을 사용 합니다.
예를들어 getName 이라는 기능이 있다고 가정하여 봅니다.
이름에서 알 수 있듯이 getName은 무언가 이름(Name)이라는 값을 가질수(get) 있을 것 같습니다.
사람(개발자)들이 개발할 때 특정 규칙과 방법을 정리한 것이 "디자인패턴" 입니다.
* 디자인패턴은 법이 아니라 일종의 예절이라 볼 수 있습니다.
자신의 개발언어에 맞는 디자인패턴에 대해서 공부하면 다른 사람들과의 협업에서 효율성을 보장받을 수 있습니다.


#순서10
백그라운드 개발을 하다보면 좀 더 깊은 수준의 라이브러리를 사용하거나, 연동하는 경우가 있습니다.
이를 위해서 C나 C++언어를 공부해야 합니다.
금융 계열 회사나 병원 같은 곳 에서는 C나 C++로 만들어진 라이브러리를 연동하여 처리하는 경우가 종종 있습니다.
C와 C++은 위에 언급한 Java, python, php, node.js 등 이러한 프로그래밍 언어 보다도 난이도가 상당히 높습니다.
자유 자재로 사용하면 커리어에서 +a의 개념이 될 수 있습니다. 
적어도 한번쯤은 개발환경을 구성해서 단순한 작업을 경험하는 정도까지는 해 보아야 합니다.


#순서11
이제 웹(web)이 무엇인지 알아야 합니다.
운영체제와 네트워크를 통해서 "서버"라는 개념이 생겼을 것 입니다.
웹(web)이 무엇인지 또한 웹서버가 무엇인지 알아야 합니다.
웹서버의 예로는 아파치, nginx등이 있습니다.


#순서12
HTML, Javascript가 무엇인지 알아야 합니다.
해당 기능은 프론트 개발자가 하지만 백그라운드 웹 개발자가 전혀 모르는 경우는 본 적이 없습니다.
html파일이 뭔지, js파일이 뭔지 등등 해당 파일에 대한 기능과 역할을 알아야 합니다.
내가 만든 웹 서버에서 화면을 구성 해 줄 기능에 대해서 자유롭게 쓰지는 못 하더라도 무엇인지 알고는 있어야 합니다.


#순서13
이제 웹서버를 구성하는 기능(어플리케이션)을 만들 줄 알아야 합니다.
일반적인 웹 서버는 기존의 잘 구현된 http서버를 대부분 사용 합니다.
톰캣, 아파치, nginx, jboss 등등 이러한 서버를 활용하여 동작을 하는 어플리케이션 영역을 만들 줄 알아야 합니다.


#순서14
웹 서버 기반의 프레임워크에 대해서 알아야 합니다.
Java는 스프링이라는 프레임워크가, python은 플라스크, node.js는 express등등..
각각의 개발 언어에서 대표하는 프레임워크가 있습니다.
프레임워크는 웹 서버 개발을 좀 더 효율적으로, 쉽게 도와주는 기능입니다.
이러한 프레임워크는 개발시 다양한 사람들과 다양한 방법을 통해서 실시 합니다.


#순서15
간단한 tcp/ip 서버와 클라이언트를 만들 줄 알아야 합니다.
브라우저에서 동작하는 프로토콜인 http, https는 아니지만 이러한 서버와 클라이언트를 구성하는 기능을 한번쯤 만들어 보는 것이 필요 합니다.
필수는 아니지만 경험 해 볼 만한 일 입니다.


#순서16
형상관리가 무엇인지 알아야 합니다.
git, github, svn등등..협업에서 사용하는 주요 프로그램이 무엇인지 반드시 알아야 합니다.

 

주관적인 생각 위주로 정리를 하여 보았습니다.

좀 더 좋은 의견이 있으시면 댓글 또는 메일로 부탁드립니다. 👻

 

 

* 신입 프론트엔드 개발자가 되기 위해 필요한 순서

https://lts0606.tistory.com/515

 

반응형
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)

댓글