반응형
이 글은 백엔드 개발자의 진로를 읽고 개인적으로 참고하기 위해 정리한 글 입니다.
백엔드 개발자의 진로
일의 범위
- 웹 어플리케이션 개발
- 데이터 분석을 위한 엔지니어링
- 분산파일 시스템이나 DBMS와 같은 제품 생성
일의 기회
- 폭넓은 기술을 접할 수 있는 역할
- System Engineer, Front End 등의 인접한 분야의 개발자와 소통할 기회
- 한 분야에 대한 전문성을 키울 수 있는 기회
- (EX: 서비스 통계 모듈 개발 ---> 대용량 데이터 다루는 엔지니어)
보람과 고충
보람
- 시스템을 안정적이고 효율적으로 운영할 때 보람
- 내면적인 부분까지 완성도 추구하는 사람이 적합
고충
- 24시간 실행되는 서버 프로그램
향후 전망
다양한 도구와 프레임워크 개발 상황에 대하여
- 과제 늘어가는 속도 > 생산성 증가 속도
- 기존 기술을 쓰면서 깊이 있는 고민을 한다면 새로운 도구에 빠른 적응과 응용이 가능
- RDB, TCP/IP, OS, 통계 등 바탕으로 발전해왔기 때문에 여러 분야와 연결되어 발전하기 좋음.
머신러닝이나 빅데이터 기술 발달에 대하여
- 백엔드 개발에서 데이터 분석, 모델링 업무에 참여하는 경우도 더 늘어날 것
- 분석/모델링 뒷받침하는 개발
- 로그성 데이터를 어떻게 활용할지에 대한 고민
- 대용량 데이터를 다른 저장소로 옮기는 일 등
- 즉, 대용량 서비스를 개발하기 때문에 AI/빅데이터와 시대의 과제에 맞닿아 있음.
백엔드 개발에 필요한 지식
중요한 지식 및 기본적인 지식
- 웹 생태계의 스펙
- HTML, HTTP(1.1, HTTP/2)
- 기본 SDK, 라이브러리/프레임워크 이해와 활용
- 클라이언트를 위한 API설계
- 서버/컴포넌트/객체 간의 역할 분담, 의존성, 통신 방법 설계
- 저장소 활용
- DBMS 설계
- Cache 적용 (Blobal/Local cache 적용 범위, 라이프 싸이클, 솔루션 선택)
- 파일 저장 정책 및 솔루션 선택 활용
- 검색 엔진 연동 방식 설정
- 빌드 도구
- Maven/Gradle
- 배포 전략
- 성능 테스트/프로파일링/튜닝
- JVM 레벨의 튜닝(GC옵션 등)
- 웹 서버(Nginx, Tomcat)등의 설정/튜닝
- OS 설정의 주요 값 확인
- JVM 레벨의 튜닝(GC옵션 등)
- 인접 기술에 대한 이해
- DBMS, Front End 등
- 서버 개발자에만 해당하지 않는 항목
- 테스트 코드 작성, 리팩토링 기법
- 버전 관리 전략
- branch 정책 등
혼자 다 깊이 알아야 한다는 의미는 아님. 팀을 이룬 개발자들의 지식이 합쳐져서 구현 방식과 정책이 결정.
데이터베이스
한 서비스에도 다양한 저장소를 활용. 여전히 RDB가 가장 우선시.
- 쿼리의 호출 횟수나 실행 계획이 비효율적이지 않은지 확인하는 습관 필요
- 느린 쿼리를 모니터링하고 DBA와 협업하여 성능 개선 작업 필요
- join 지양
- SQL단순할수록 다른 저장소에 캐시하거나 분산 저장 쉬워짐
- Stored prodecure 지양
- 사용시 DB 병목 가능성이 커짐
- 트래픽 분산 문제
개발툴
새로운 도구가 나왔을 때 적응할 수 있는 학습력/적응력/판단력이 본질
- 레벨0: 이미 쓰고 있는 개발도구의 사용법을 알려주거나 가이드 문서를 줘도 잘 못 씀
- 레벨1: 알려주거나 같은 팀에서 만든 가이드 문서에 있는 만큼만 쓸 수 있음
- 레벨2
- 개발도구의 공식 레퍼런스를 보고 사용법을 스스로 익힐 수 있음
- 자신이 경험한 사용법을 문서화해서 팀 내에 전파할 수 있음
- 레벨3
- 여러 개발도구를 비교 분석해서 상황에 적합한 도구를 선택할 수 있음
- 공식 레퍼런스 문서에서 부족한 부분을 수정해서 기여할 수 있음
- 레벨4
- 개발도구의 문제를 소스 코드를 수정해서 Fork/패치해서 사용할 수 있음
신입사원의 경우 최소 레벨2 필요.
병렬처리(공부필요)
Servlet기반의 Java웹서버들은 기본적으로 사용자의 요청을 병렬적으로 처리. 따라서, 객체가 멀티스레드에서 공유되는 것인지, 아닌지 의식하는 일 중요.
- Tread-safe한 변수만 두면 된다는 단순 규칙만으로 문제 예방 가능.
- JAVA의 경우 Executors, ThreadPoolExecutor에 있는 많은 옵션들이 정교한 제어를 하는데 도움이 된다.
보안
아래 공격에 대처하는 방법을 알고 있어야 한다.
- XSS
- CSRF
- SQL Injection
테스트
자료구조/알고리즘
실무에서 직접 구현한다는 것보다, 구현된 솔루션을 잘 선택하고 활용하기 위해서는 그 바탕이 되는 지식이 중요.
JDK의 Collection Framework의 소스 볼 때부터, 대용량 데이터 어떻게 저장하고 탐색할지 결정할 때도 자료구조가 매우 중요.
개발 프레임워크
트렌드
JVM생태계 경우, Spring/Netty 기반의 프레임워크 꾸준히 발전
반응형
'읽고쓰고' 카테고리의 다른 글
[책] 클린코드 - 애자일 소프트웨어 장인 정신 (7, 8, 9장) (0) | 2021.04.14 |
---|---|
[책] 클린코드 - 애자일 소프트웨어 장인 정신 (4, 5, 6장) (2) | 2021.04.07 |
[책] 클린코드 - 애자일 소프트웨어 장인 정신 (1, 2, 3장) (0) | 2021.03.29 |
JIDA(지다) - Autumn Breeze (0) | 2018.03.14 |
[나는고양이로소이다] 고양이가 본 인간의 자유 (0) | 2017.10.18 |
댓글