백엔드 커리어 로드맵 - 어떤 백엔드 개발자가 되고 싶은지
- 백엔드 개발자 로드맵
해당 그림을 보면 저걸 언제 다하지? 라는 의문이 들정도로 로드맵은 위와 같이 정의가 되어 있다.
하나씩 큰 그림을 기준으로 살펴보자
1. 인터넷
- 백엔드 개발자는 프런트 개발자와 HTTP 라는 인터넷 프로토콜 통신을 통하여 소통을 한다.
- DNS, 도메인, 호스팅, HTTP 란 무엇인지는 기본 지식으로 알고 있어야 프런트 개발자와 작업 시 소통이 가능하다.
2. 기본적인 프론트엔드 지식
- 백엔드 개발자가 직접 프론트를 구현할 일은 없겠지만 경험상 Javascript, HTML의 지식이 있다면 업무 진행 시 원활한 소통이 가능하
다.
3. os 및 일반적인 지식
- 백엔드 서버는 Window, Linux 와 같은 O/S 환경에서 기동이 되기 때문에 환경 구성 및 서버를 관리하는 부분에서 기본 명령어 및 서버
에 대한 지식은 어느정도 갖춰져야 문제 발생 시 대체가 가능하다.
4. 언어배우기
- 언어가 다양하기 때문에 다 배울 수 없으므로 추천을 드린다면 가장 많이 사용되는 언어를 선택하여 공부하는 것을 추천한다.
저의 경우에는 Golang 이라는 언어를 기반으로 백엔드 개발을 주로 해왔다. 후회되는 점은 Java + Spring
Framework 로 했더라면 취업이 더 수월했을 텐데 지방은 거의 Java + Spring Framework를 쓰다 보니 취업에 어려운 점이 있다.
5. Git 기본 사용법
- 예전에는 날짜별로 소스를 백업하는 시절이 있었다. 문제는 백업을 하더라도 소스 변경사항에 대한 트래킹이 어려웠다.
git의 장점은 버전관리를 해주면서 소스를 백업할 필요가 없고 언제든지 해당 버전에 대한 소스를 받아서 작업을 할 수 있다라는 점과
같은 프로젝트를 여러 사람과 진행 시 유용하다는 점이다. 그렇기 때문에 기본 사용법을 숙지 하는게 필요하다.
6. 관계형 데이터 베이스
- RDBMS 라고 하며 보편적으로 사용하는 Oracle, Mysql, MariaDB 등이 해당된다.
- 데이터를 효과적으로 관리하기 위해 만들어진 플랫폼으로 기본적인 SQL을 알아야 하며 백엔드 서버 개발자는 프론트에서 요청한 데이
터를 해당 플랫폼을 이용하여 쉽게 관리할 수 있는 장점이 있다.
- ERD를 구성할 수 있는 능력을 갖춰야 한다.
- 데이터는 정형데이터를 저장한다.
7. NoSql 데이터 베이스
- 빅데이터 시대에는 데이터가 비정형데이터이면서 데이터량이 많다보니 관계형 데이터 베이스로 한계가 있다.
- 해당 데이터 베이스는 실시간으로 많은 데이터를 빠르게 저장하기 위해 만들어진 데이터로 로그, 히스토리, 통계 추출을 위한 방대한 데
이터를 저장하는 용도로 사용한다.
- 장점은 key,value 구조이기 때문에 데이터 형식이 달라도 하나의 document에서 관리가 가능하다.
8. API에 대해서 배우기
- 프론트 개발자와 작업을 위해서는 백엔드 개발자는 API를 제공해야 하는데 일반적으로는 Rest API를 이용한다.
- GET(select), POST(insert), PUT, PATCH(update), DELETE(delete) 의 method를 이용하여 API를 구현한다.
기본적으로 이정도만 지식이 있다고 하면 백엔드 개발자로 시작은 가능하다고 생각합니다.

- 어떤 백엔드 개발자가 되고 싶은가?
1. 커뮤니케이션이 잘 되는 개발자가 되고 싶습니다.
개발 능력이 우수하지만 동료와의 협업이 안되는 개발자는 회사 내부에서 적응이 어렵다고 생각합니다. 커뮤니케이션을 하다보면
어려운 문제가 쉽게 해결되는 경우도 발생합니다. 그만큼 소통이 중요하다고 생각합니다.
2. 아키텍처를 잘 구성하는 개발자가 되고 싶습니다.
대표적으로 ERD를 예를 들면 기획서 기반에서 데이터 베이스를 구성하는데 잘못된 ERD를 구성하게 되면 CRUD 성능이 저하되고
그렇다 보면 latency 가 증가하게 되는 경우 해당 서비스를 고객이 사용하는데 불편함을 제공하게 됩니다. latency를 최소하 하기
위한 아키텍처를 잘 구성한다면 위와 같은 문제를 최소화 할 수 있다고 생각합니다. 그렇기 때문에 설계 단계에서 많은 시간을 소비
합니다.
3. 상황에 맞게 대처를 잘하는 백엔드 개발자가 되고 싶습니다.
상황에 따라서 서버가 장애가 나는 경우가 많습니다. 이게 소스상 버그인지 아니면 급격한 요청으로 인해 서버의 리소스 부족이 원인
지를 빠르게 판단할 수 있는 능력을 갖춘다면 서비스 장애를 복구하는데 큰 도움이 되고 백엔드 개발자에게는 필수 능력이라고 생각
합니다.
4. 코드 구현 시 가독성이 좋고 쉽게 이해할 수 있는 코드를 작성하는 백엔드 개발자가 되고 싶습니다.
내가 구현한 코드를 평생 유지보수를 한다고 하면 내 마음대로 구현해도 나쁘지 않다고 생각합니다. 하지만 해당 코드는 추후에 다른
사람이 인수인계를 받는다고 생각한다면 그 분은 아마 나를 엄청 욕할 것이다. 그리고 몇 주 지나서 해당 코드를 다시 보았을 때 저 또
한 이해를 못해서 다시 디버깅을 하면서 이해하는 상황이 발생 할 수 있다. 클린코드라는 책으로 스터디를 했을 때 느꼈던 점은 함수
는 하나의 기능만 해야하며 코드는 100줄 이상 넘어가지 않도록 구현한다. 라는 문구가 기억에 남는다.
코드 한 줄을 작성하더라도 개발을 하는 누구든지 와도 이해할 수 있도록 구현하는 개발자가 되도록 노력하고 있다.